From e12eb4be6d83cff082bdfa5fb22bf689db79c5d3 Mon Sep 17 00:00:00 2001 From: William Hua Date: Fri, 13 Jun 2014 09:50:24 -0400 Subject: Basic Fcitx support. --- lib/Makefile.am | 3 ++ lib/source.vala | 136 +++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 94 insertions(+), 45 deletions(-) (limited to 'lib') diff --git a/lib/Makefile.am b/lib/Makefile.am index a19016d9..ae9dec00 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -26,6 +26,7 @@ indicator_keyboard_service_VALAFLAGS = $(AM_VALAFLAGS) \ --pkg Xkl-1.0 \ --pkg Gkbd-3.0 \ --pkg ibus-1.0 \ + --pkg fcitx \ --pkg accountsservice \ --pkg liblightdm-gobject-1 indicator_keyboard_service_CFLAGS = $(AM_CFLAGS) \ @@ -36,6 +37,7 @@ indicator_keyboard_service_CFLAGS = $(AM_CFLAGS) \ $(LIBXKLAVIER_CFLAGS) \ $(LIBGNOMEKBD_CFLAGS) \ $(IBUS_CFLAGS) \ + $(FCITX_GCLIENT_CFLAGS) \ $(ACCOUNTSSERVICE_CFLAGS) \ $(LIGHTDM_CFLAGS) \ $(COVERAGE_CFLAGS) @@ -47,6 +49,7 @@ indicator_keyboard_service_LDFLAGS = $(AM_LDFLAGS) \ $(LIBXKLAVIER_LIBS) \ $(LIBGNOMEKBD_LIBS) \ $(IBUS_LIBS) \ + $(FCITX_GCLIENT_LIBS) \ $(ACCOUNTSSERVICE_LIBS) \ $(LIGHTDM_LIBS) \ $(COVERAGE_LDFLAGS) diff --git a/lib/source.vala b/lib/source.vala index 5fe7157d..2777f521 100644 --- a/lib/source.vala +++ b/lib/source.vala @@ -19,10 +19,12 @@ public class Indicator.Keyboard.Source : Object { private static Gnome.XkbInfo? xkb_info; - private static IBus.Bus? bus; + private static IBus.Bus? ibus_bus; + private static Fcitx.InputMethod? fcitx_proxy; private string? xkb; private string? ibus; + private string? fcitx; private string? _name; private string? _short_name; @@ -77,6 +79,10 @@ public class Indicator.Keyboard.Source : Object { get { return ibus != null; } } + public bool is_fcitx { + get { return fcitx != null; } + } + public Source (Variant variant, bool use_gtk = false) { Object (use_gtk: use_gtk); @@ -90,6 +96,8 @@ public class Indicator.Keyboard.Source : Object { xkb = name; } else if (type == "ibus") { ibus = name; + } else if (type == "fcitx") { + fcitx = name; } } else if (variant.is_of_type (new VariantType ("a{ss}"))) { VariantIter iter; @@ -103,6 +111,8 @@ public class Indicator.Keyboard.Source : Object { xkb = value; } else if (key == "ibus") { ibus = value; + } else if (key == "fcitx") { + fcitx = value; } } } @@ -116,13 +126,21 @@ public class Indicator.Keyboard.Source : Object { return (!) xkb_info; } - private static IBus.Bus get_bus () { - if (bus == null) { + private static IBus.Bus get_ibus_bus () { + if (ibus_bus == null) { IBus.init (); - bus = new IBus.Bus (); + ibus_bus = new IBus.Bus (); } - return (!) bus; + return (!) ibus_bus; + } + + private static Fcitx.InputMethod get_fcitx_proxy () throws Error { + if (fcitx_proxy == null) { + fcitx_proxy = new Fcitx.InputMethod (GLib.BusType.SESSION, GLib.DBusProxyFlags.NONE, 0); + } + + return (!) fcitx_proxy; } private IBus.EngineDesc? get_engine () { @@ -132,7 +150,7 @@ public class Indicator.Keyboard.Source : Object { var names = new string[2]; names[0] = (!) ibus; - var engines = get_bus ().get_engines_by_names (names); + var engines = get_ibus_bus ().get_engines_by_names (names); if (engines.length > 0) { engine = engines[0]; @@ -145,31 +163,7 @@ public class Indicator.Keyboard.Source : Object { protected virtual string? _get_name () { string? name = null; - var engine = get_engine (); - - if (engine != null) { - string? language = ((!) engine).get_language (); - string? display_name = ((!) engine).get_longname (); - var has_language = language != null && ((!) language).get_char () != '\0'; - var has_display_name = display_name != null && ((!) display_name).get_char () != '\0'; - - if (has_language) { - language = Xkl.get_language_name ((!) language); - has_language = language != null && ((!) language).get_char () != '\0'; - } - - if (has_language && has_display_name) { - name = @"$((!) language) ($((!) display_name))"; - } else if (has_language) { - name = language; - } else if (has_display_name) { - name = display_name; - } - } - - var has_name = name != null && ((!) name).get_char () != '\0'; - - if (!has_name && xkb != null) { + if (xkb != null) { string? display_name = null; string? layout = null; @@ -194,14 +188,53 @@ public class Indicator.Keyboard.Source : Object { name = country; } } - } - if (name == null || ((!) name).get_char () == '\0') { - if (ibus != null) { - name = ibus; - } else if (xkb != null) { + if (name == null || ((!) name).get_char () == '\0') { name = xkb; } + } else if (ibus != null) { + var engine = get_engine (); + + if (engine != null) { + string? language = ((!) engine).get_language (); + string? display_name = ((!) engine).get_longname (); + var has_language = language != null && ((!) language).get_char () != '\0'; + var has_display_name = display_name != null && ((!) display_name).get_char () != '\0'; + + if (has_language) { + language = Xkl.get_language_name ((!) language); + has_language = language != null && ((!) language).get_char () != '\0'; + } + + if (has_language && has_display_name) { + name = @"$((!) language) ($((!) display_name))"; + } else if (has_language) { + name = language; + } else if (has_display_name) { + name = display_name; + } + } + + if (name == null || ((!) name).get_char () == '\0') { + name = ibus; + } + } else if (fcitx != null) { + try { + var input_methods = get_fcitx_proxy ().get_imlist_nofree (); + + for (var i = 0; i < input_methods.length; i++) { + if (input_methods.get (i).unique_name == (!) fcitx) { + name = input_methods.get (i).name; + break; + } + } + } catch (Error error) { + warning ("error: %s", error.message); + } + + if (name == null || ((!) name).get_char () == '\0') { + name = fcitx; + } } return name; @@ -212,23 +245,36 @@ public class Indicator.Keyboard.Source : Object { if (xkb != null) { get_xkb_info ().get_layout_info ((!) xkb, null, out short_name, null, null); - } - var has_short_name = short_name != null && ((!) short_name).get_char () != '\0'; - - if (!has_short_name) { + if (short_name == null || ((!) short_name).get_char () == '\0') { + short_name = xkb; + } + } else if (ibus != null) { var engine = get_engine (); if (engine != null) { short_name = ((!) engine).get_name (); } - } - if (short_name == null || ((!) short_name).get_char () == '\0') { - if (ibus != null) { + if (short_name == null || ((!) short_name).get_char () == '\0') { short_name = ibus; - } else if (xkb != null) { - short_name = xkb; + } + } else if (fcitx != null) { + try { + var input_methods = get_fcitx_proxy ().get_imlist_nofree (); + + for (var i = 0; i < input_methods.length; i++) { + if (input_methods.get (i).unique_name == (!) fcitx) { + short_name = input_methods.get (i).langcode; + break; + } + } + } catch (Error error) { + warning ("error: %s", error.message); + } + + if (short_name == null || ((!) short_name).get_char () == '\0') { + short_name = fcitx; } } -- cgit v1.2.3 From 8800a05d7dbdfb8ba5c6ce40fba69cad7a885920 Mon Sep 17 00:00:00 2001 From: William Hua Date: Fri, 13 Jun 2014 14:13:25 -0400 Subject: Pick IBus or Fcitx. --- lib/indicator-menu.vala | 7 +++++-- lib/main.vala | 45 ++++++++++++++++++++++++++++++++------------- 2 files changed, 37 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/indicator-menu.vala b/lib/indicator-menu.vala index 8e5661e2..115adc5f 100644 --- a/lib/indicator-menu.vala +++ b/lib/indicator-menu.vala @@ -22,7 +22,8 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { NONE = 0x0, DCONF = 0x1, IBUS = 0x2, - SETTINGS = 0x4 + FCITX = 0x4, + SETTINGS = 0x8 } private Options options; @@ -76,7 +77,9 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { sources_section.remove_all (); for (var i = 0; i < sources.length; i++) { - if (!sources[i].is_ibus || (options & Options.IBUS) != Options.NONE) { + if (sources[i].is_xkb || + (sources[i].is_ibus && (options & Options.IBUS) != Options.NONE) || + (sources[i].is_fcitx && (options & Options.FCITX) != Options.NONE)) { string action; if ((options & Options.DCONF) != Options.NONE) { diff --git a/lib/main.vala b/lib/main.vala index 8d39d757..9f007170 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -145,6 +145,18 @@ public class Indicator.Keyboard.Service : Object { return Environment.get_user_name () == "lightdm"; } + [DBus (visible = false)] + private static bool is_ibus_active () { + var module = Environment.get_variable ("GTK_IM_MODULE"); + return module != null && (!) module == "ibus"; + } + + [DBus (visible = false)] + private static bool is_fcitx_active () { + var module = Environment.get_variable ("GTK_IM_MODULE"); + return module != null && (!) module == "fcitx"; + } + [DBus (visible = false)] private IBus.Bus get_ibus () { if (ibus == null) { @@ -788,30 +800,30 @@ public class Indicator.Keyboard.Service : Object { private void handle_scroll_wheel_when_locked (Variant? parameter) { if (parameter != null) { var sources = get_sources (); - var non_ibus_length = 0; + var xkb_length = 0; - /* Figure out how many non-IBus sources we have. */ + /* Figure out how many Xkb sources we have. */ foreach (var source in sources) { - if (!source.is_ibus) { - non_ibus_length++; + if (source.is_xkb) { + xkb_length++; } } - if (non_ibus_length > 1) { + if (xkb_length > 1) { var active_action = get_active_action (); var active = active_action.state.get_uint32 (); - var offset = -((!) parameter).get_int32 () % non_ibus_length; + var offset = -((!) parameter).get_int32 () % xkb_length; - /* Make offset positive modulo non_ibus_length. */ + /* Make offset positive modulo xkb_length. */ if (offset < 0) { - offset += non_ibus_length; + offset += xkb_length; } - /* We need to cycle through non-IBus sources only. */ + /* We need to cycle through Xkb sources only. */ while (offset > 0) { do { active = (active + 1) % sources.length; - } while (sources[active].is_ibus); + } while (!sources[active].is_xkb); offset--; } @@ -882,9 +894,16 @@ public class Indicator.Keyboard.Service : Object { public IndicatorMenu get_desktop_menu () { if (desktop_menu == null) { var options = IndicatorMenu.Options.DCONF - | IndicatorMenu.Options.IBUS | IndicatorMenu.Options.SETTINGS; + if (is_ibus_active ()) { + options |= IndicatorMenu.Options.IBUS; + } + + if (is_fcitx_active ()) { + options |= IndicatorMenu.Options.FCITX; + } + desktop_menu = new IndicatorMenu (get_action_group (), options); ((!) desktop_menu).set_sources (get_sources ()); ((!) desktop_menu).activate.connect ((property, state) => { @@ -1040,9 +1059,9 @@ public class Indicator.Keyboard.Service : Object { if (sources.length > 0) { var current = source_settings.get_uint ("current"); - if (current < sources.length && sources[current].is_ibus) { + if (current < sources.length && !sources[current].is_xkb) { for (var i = 0; i < sources.length; i++) { - if (!sources[i].is_ibus) { + if (sources[i].is_xkb) { get_active_action ().change_state (new Variant.uint32 (i)); break; } -- cgit v1.2.3 From 66693b52961aa9197c54c508223ec12c1156a691 Mon Sep 17 00:00:00 2001 From: William Hua Date: Tue, 17 Jun 2014 00:31:11 -0400 Subject: Disable experimental non-null. --- data/Makefile.am | 3 +-- lib/Makefile.am | 3 +-- lib/main.vala | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/data/Makefile.am b/data/Makefile.am index 03c377c7..7befb94e 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -2,8 +2,7 @@ noinst_PROGRAMS = indicator-keyboard-icon-generator AM_CFLAGS = -w -DGNOME_DESKTOP_USE_UNSTABLE_API AM_LDFLAGS = -lm -AM_VALAFLAGS = --enable-experimental-non-null \ - --metadatadir $(top_srcdir)/deps \ +AM_VALAFLAGS = --metadatadir $(top_srcdir)/deps \ --vapidir $(top_srcdir)/deps indicator_keyboard_icon_generator_SOURCES = main.vala \ diff --git a/lib/Makefile.am b/lib/Makefile.am index ae9dec00..16b8807c 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -2,8 +2,7 @@ libexec_PROGRAMS = indicator-keyboard-service AM_CFLAGS = -w -DGNOME_DESKTOP_USE_UNSTABLE_API AM_LDFLAGS = -lm -AM_VALAFLAGS = --enable-experimental-non-null \ - --metadatadir $(top_srcdir)/deps \ +AM_VALAFLAGS = --metadatadir $(top_srcdir)/deps \ --vapidir $(top_srcdir)/deps indicator_keyboard_service_SOURCES = main.vala \ diff --git a/lib/main.vala b/lib/main.vala index 9f007170..d2ea8c79 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -811,7 +811,7 @@ public class Indicator.Keyboard.Service : Object { if (xkb_length > 1) { var active_action = get_active_action (); - var active = active_action.state.get_uint32 (); + var active = active_action.get_state ().get_uint32 (); var offset = -((!) parameter).get_int32 () % xkb_length; /* Make offset positive modulo xkb_length. */ -- cgit v1.2.3 From 98e2925f8960a3f3020c43a86b9a1da140111d88 Mon Sep 17 00:00:00 2001 From: William Hua Date: Wed, 6 Aug 2014 14:25:09 +0800 Subject: Re-enable experimental non-null. --- data/Makefile.am | 3 ++- lib/Makefile.am | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/data/Makefile.am b/data/Makefile.am index bcb22cde..06ed4662 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -9,7 +9,8 @@ noinst_PROGRAMS = indicator-keyboard-icon-generator AM_CFLAGS = -w -DGNOME_DESKTOP_USE_UNSTABLE_API AM_LDFLAGS = -lm -AM_VALAFLAGS = --metadatadir $(top_srcdir)/deps \ +AM_VALAFLAGS = --enable-experimental-non-null \ + --metadatadir $(top_srcdir)/deps \ --vapidir $(top_srcdir)/deps indicator_keyboard_icon_generator_SOURCES = main.vala \ diff --git a/lib/Makefile.am b/lib/Makefile.am index 6543ccd4..14c8f1ba 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -2,7 +2,8 @@ pkglibexec_PROGRAMS = indicator-keyboard-service AM_CFLAGS = -w -DGNOME_DESKTOP_USE_UNSTABLE_API AM_LDFLAGS = -lm -AM_VALAFLAGS = --metadatadir $(top_srcdir)/deps \ +AM_VALAFLAGS = --enable-experimental-non-null \ + --metadatadir $(top_srcdir)/deps \ --vapidir $(top_srcdir)/deps indicator_keyboard_service_SOURCES = main.vala \ -- cgit v1.2.3 From 3b90f374d282578fbbb2b4e950214e73ea81e4f7 Mon Sep 17 00:00:00 2001 From: William Hua Date: Tue, 26 Aug 2014 16:52:41 -0400 Subject: Carefully ignore IBus sources when Fcitx is active and vice versa. --- lib/main.vala | 78 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 64 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index d2ea8c79..c05d0164 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -33,7 +33,7 @@ public class Indicator.Keyboard.Service : Object { private SList users; private WindowStack? window_stack; - private Gee.HashMap? window_sources; + private Gee.HashMap? window_sources; private uint focused_window_id; private IBus.Bus? ibus; @@ -606,7 +606,7 @@ public class Indicator.Keyboard.Service : Object { warning ("error: %s", error.message); } - window_sources = new Gee.HashMap (); + window_sources = new Gee.HashMap (); ((!) window_stack).focused_window_changed.connect (handle_focused_window_changed); } else { ((!) window_stack).focused_window_changed.disconnect (handle_focused_window_changed); @@ -623,21 +623,43 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private void handle_focused_window_changed (uint window_id, string app_id, uint stage) { + var sources = get_sources (); var old_current = source_settings.get_uint ("current"); - ((!) window_sources)[focused_window_id] = old_current; + if (old_current < sources.length) { + ((!) window_sources)[focused_window_id] = sources[old_current]; + } if (!(((!) window_sources).has_key (window_id))) { var default_group = per_window_settings.get_int ("default-group"); - if (default_group >= 0 && default_group != old_current) { - source_settings.set_uint ("current", (uint) default_group); + if (default_group >= 0) { + for (var offset = 0; offset < sources.length; offset++) { + var current = (default_group + offset) % sources.length; + var source = sources[current]; + + if (source.is_xkb || + (source.is_ibus && is_ibus_active ()) || + (source.is_fcitx && is_fcitx_active ())) { + if (current != old_current) { + source_settings.set_uint ("current", current); + } + + break; + } + } } } else { - var current = ((!) window_sources)[window_id]; + var source = ((!) window_sources)[window_id]; + + for (var current = 0; current < sources.length; current++) { + if (sources[current] == source) { + if (current != old_current) { + source_settings.set_uint ("current", current); + } - if (current != old_current) { - source_settings.set_uint ("current", current); + break; + } } } @@ -780,13 +802,41 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private void handle_scroll_wheel (Variant? parameter) { if (parameter != null) { - var sources = source_settings.get_value ("sources"); - var current = source_settings.get_uint ("current"); - var length = (int) sources.n_children (); + var old_current = source_settings.get_uint ("current"); + var sources = get_sources (); + var length = 0; - if (length > 0) { - var offset = ((!) parameter).get_int32 () % length; - source_settings.set_uint ("current", (current + (length - offset)) % length); + foreach (var source in sources) { + if (source.is_xkb || + (source.is_ibus && is_ibus_active ()) || + (source.is_fcitx && is_fcitx_active ())) { + length++; + } + } + + if (length > 1) { + var current = old_current; + var offset = -((!) parameter).get_int32 () % length; + + /* Go backward. */ + for (; offset < 0; offset++) { + do { + current = (current + sources.length - 1) % sources.length; + } while ((sources[current].is_ibus && !is_ibus_active ()) || + (sources[current].is_fcitx && !is_fcitx_active ())); + } + + /* Go forward. */ + for (; offset > 0; offset--) { + do { + current = (current + 1) % sources.length; + } while ((sources[current].is_ibus && !is_ibus_active ()) || + (sources[current].is_fcitx && !is_fcitx_active ())); + } + + if (current != old_current) { + source_settings.set_uint ("current", current); + } } } } -- cgit v1.2.3 From c698f44730ab005b5905303b95d6273fc53899cd Mon Sep 17 00:00:00 2001 From: William Hua Date: Wed, 27 Aug 2014 09:50:05 -0400 Subject: Forget window source when destroyed. --- lib/main.vala | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index c05d0164..b8f34599 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -607,9 +607,11 @@ public class Indicator.Keyboard.Service : Object { } window_sources = new Gee.HashMap (); + ((!) window_stack).window_destroyed.connect (handle_window_destroyed); ((!) window_stack).focused_window_changed.connect (handle_focused_window_changed); } else { ((!) window_stack).focused_window_changed.disconnect (handle_focused_window_changed); + ((!) window_stack).window_destroyed.disconnect (handle_window_destroyed); window_sources = null; } } @@ -621,6 +623,11 @@ public class Indicator.Keyboard.Service : Object { update_window_sources (); } + [DBus (visible = false)] + private void handle_window_destroyed (uint window_id, string app_id) { + ((!) window_sources).unset (window_id); + } + [DBus (visible = false)] private void handle_focused_window_changed (uint window_id, string app_id, uint stage) { var sources = get_sources (); -- cgit v1.2.3 From 449e1ab74019f4d1e9d60f3b97a31309a6f793fa Mon Sep 17 00:00:00 2001 From: William Hua Date: Fri, 12 Sep 2014 12:19:06 -0400 Subject: Use iterator () method. --- lib/main.vala | 11 +++-------- lib/source.vala | 5 ++--- 2 files changed, 5 insertions(+), 11 deletions(-) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index b8f34599..c5d4b6da 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -266,11 +266,9 @@ public class Indicator.Keyboard.Service : Object { Act.User? user = manager.get_user ((!) greeter_user); if (user != null && ((!) user).is_loaded) { - VariantIter outer; - VariantIter inner; + var outer = ((!) user).input_sources.iterator (); - var sources = ((!) user).input_sources; - sources.get ("aa{ss}", out outer); + VariantIter inner; while (outer.next ("a{ss}", out inner)) { unowned string key; @@ -460,14 +458,11 @@ public class Indicator.Keyboard.Service : Object { foreach (var user in users) { if (user.is_loaded) { + var outer = user.input_sources.iterator (); var done = false; - VariantIter outer; VariantIter inner; - var sources = user.input_sources; - sources.get ("aa{ss}", out outer); - while (outer.next ("a{ss}", out inner)) { unowned string key; unowned string source; diff --git a/lib/source.vala b/lib/source.vala index 2777f521..7850f211 100644 --- a/lib/source.vala +++ b/lib/source.vala @@ -100,12 +100,11 @@ public class Indicator.Keyboard.Source : Object { fcitx = name; } } else if (variant.is_of_type (new VariantType ("a{ss}"))) { - VariantIter iter; + var iter = variant.iterator (); + unowned string key; unowned string value; - variant.get ("a{ss}", out iter); - while (iter.next ("{&s&s}", out key, out value)) { if (key == "xkb") { xkb = value; -- cgit v1.2.3 From 506ff05f6243b34ed59485fc28ff23867f377c72 Mon Sep 17 00:00:00 2001 From: William Hua Date: Fri, 12 Sep 2014 15:38:33 -0400 Subject: Remove unnecessary namespace. --- lib/source.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/source.vala b/lib/source.vala index 7850f211..f73b4b69 100644 --- a/lib/source.vala +++ b/lib/source.vala @@ -136,7 +136,7 @@ public class Indicator.Keyboard.Source : Object { private static Fcitx.InputMethod get_fcitx_proxy () throws Error { if (fcitx_proxy == null) { - fcitx_proxy = new Fcitx.InputMethod (GLib.BusType.SESSION, GLib.DBusProxyFlags.NONE, 0); + fcitx_proxy = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0); } return (!) fcitx_proxy; -- cgit v1.2.3 From 96eb59ce4d5cdfe4c4a605258966497d8f674f5e Mon Sep 17 00:00:00 2001 From: William Hua Date: Fri, 12 Sep 2014 15:45:12 -0400 Subject: Fcitx proxy. --- lib/main.vala | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index c5d4b6da..40354786 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -41,6 +41,8 @@ public class Indicator.Keyboard.Service : Object { private ulong ibus_connected_id; private uint panel_timeout; + private Fcitx.InputMethod? fcitx; + private Source[]? sources; private SimpleActionGroup? action_group; @@ -221,6 +223,19 @@ public class Indicator.Keyboard.Service : Object { return ibus_panel; } + [DBus (visible = false)] + private Fcitx.InputMethod? get_fcitx () { + if (is_fcitx_active () && fcitx == null) { + try { + fcitx = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0); + } catch (Error error) { + warning ("error: %s", error.message); + } + } + + return fcitx; + } + [DBus (visible = false)] public void up () { if (loop == null) { -- cgit v1.2.3 From 4d9387c577ae088321f8a4f6f1f4e14532502364 Mon Sep 17 00:00:00 2001 From: William Hua Date: Mon, 15 Sep 2014 11:38:05 -0400 Subject: Use Fcitx current IM when active. --- lib/main.vala | 74 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index 40354786..748b2095 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -120,11 +120,13 @@ public class Indicator.Keyboard.Service : Object { handle_unity_name_appeared, handle_unity_name_vanished); - Bus.watch_name (BusType.SESSION, - "com.canonical.Unity.WindowStack", - BusNameWatcherFlags.NONE, - handle_window_stack_name_appeared, - handle_window_stack_name_vanished); + if (!is_fcitx_active ()) { + Bus.watch_name (BusType.SESSION, + "com.canonical.Unity.WindowStack", + BusNameWatcherFlags.NONE, + handle_window_stack_name_appeared, + handle_window_stack_name_vanished); + } } indicator_settings = new Settings ("com.canonical.indicator.keyboard"); @@ -149,12 +151,20 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private static bool is_ibus_active () { + if (is_login_user ()) { + return false; + } + var module = Environment.get_variable ("GTK_IM_MODULE"); return module != null && (!) module == "ibus"; } [DBus (visible = false)] private static bool is_fcitx_active () { + if (is_login_user ()) { + return false; + } + var module = Environment.get_variable ("GTK_IM_MODULE"); return module != null && (!) module == "fcitx"; } @@ -228,6 +238,7 @@ public class Indicator.Keyboard.Service : Object { if (is_fcitx_active () && fcitx == null) { try { fcitx = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0); + ((!) fcitx).notify["current-im"].connect ((pspec) => { handle_changed_current ("current"); }); } catch (Error error) { warning ("error: %s", error.message); } @@ -365,7 +376,7 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private void migrate_keyboard_layouts () { if (is_login_user ()) { - lightdm_current = source_settings.get_uint ("current"); + lightdm_current = get_current (); var manager = Act.UserManager.get_default (); @@ -570,7 +581,7 @@ public class Indicator.Keyboard.Service : Object { private void update_login_layout () { if (is_login_user ()) { unowned List layouts = LightDM.get_layouts (); - var current = source_settings.get_uint ("current"); + var current = get_current (); if (current < get_sources ().length) { var source = get_sources ()[current]; @@ -641,7 +652,7 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private void handle_focused_window_changed (uint window_id, string app_id, uint stage) { var sources = get_sources (); - var old_current = source_settings.get_uint ("current"); + var old_current = get_current (); if (old_current < sources.length) { ((!) window_sources)[focused_window_id] = sources[old_current]; @@ -683,6 +694,40 @@ public class Indicator.Keyboard.Service : Object { focused_window_id = window_id; } + [DBus (visible = false)] + private uint get_current () { + if (is_fcitx_active () && get_fcitx () != null) { + string? engine = ((!) get_fcitx ()).current_im; + + if (engine != null) { + var is_xkb = ((!) engine).has_prefix ("fcitx-keyboard-"); + var type = is_xkb ? "xkb" : "fcitx"; + var name = (!) engine; + + if (is_xkb) { + name = name.substring ("fcitx-keyboard-".length); + var index = name.index_of ("-"); + if (index >= 0) { + name.data[index] = '+'; + } + } + + var iter = source_settings.get_value ("sources").iterator (); + + unowned string source_type; + unowned string source_name; + + for (var i = 0; iter.next ("(&s&s)", out source_type, out source_name); i++) { + if (source_name == name && source_type == type) { + return i; + } + } + } + } + + return source_settings.get_uint ("current"); + } + [DBus (visible = false)] private Source[] get_sources () { if (sources == null) { @@ -794,7 +839,7 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private void update_active_action () { if (active_action != null) { - ((!) active_action).set_state (source_settings.get_value ("current")); + ((!) active_action).set_state (new Variant.uint32 (get_current ())); update_indicator_action (); } } @@ -802,8 +847,7 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private Action get_active_action () { if (active_action == null) { - var current = source_settings.get_value ("current"); - active_action = new SimpleAction.stateful ("active", VariantType.UINT32, current); + active_action = new SimpleAction.stateful ("active", VariantType.UINT32, new Variant.uint32 (get_current ())); ((!) active_action).activate.connect ((parameter) => { ((!) active_action).change_state (parameter); }); ((!) active_action).change_state.connect (handle_changed_active); } @@ -819,7 +863,7 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private void handle_scroll_wheel (Variant? parameter) { if (parameter != null) { - var old_current = source_settings.get_uint ("current"); + var old_current = get_current (); var sources = get_sources (); var length = 0; @@ -1051,7 +1095,7 @@ public class Indicator.Keyboard.Service : Object { string? variant = null; var sources = get_sources (); - var current = source_settings.get_uint ("current"); + var current = get_current (); if (current < sources.length) { layout = sources[current].layout; @@ -1124,7 +1168,7 @@ public class Indicator.Keyboard.Service : Object { var sources = get_sources (); if (sources.length > 0) { - var current = source_settings.get_uint ("current"); + var current = get_current (); if (current < sources.length && !sources[current].is_xkb) { for (var i = 0; i < sources.length; i++) { @@ -1137,7 +1181,7 @@ public class Indicator.Keyboard.Service : Object { } }); ((!) unity_session).unlocked.connect (() => { - get_active_action ().change_state (source_settings.get_value ("current")); + get_active_action ().change_state (new Variant.uint32 (get_current ())); }); } catch (IOError error) { warning ("error: %s", error.message); -- cgit v1.2.3 From cd8ecdbcb0d936b6e6ef2b9bdf4253162299cfd4 Mon Sep 17 00:00:00 2001 From: William Hua Date: Mon, 15 Sep 2014 12:04:59 -0400 Subject: Hide indicator menu in desktop session when Fcitx is active. --- lib/indicator-menu.vala | 19 +++++++++++-------- lib/main.vala | 18 +++++++++--------- 2 files changed, 20 insertions(+), 17 deletions(-) (limited to 'lib') diff --git a/lib/indicator-menu.vala b/lib/indicator-menu.vala index 115adc5f..a4587dd8 100644 --- a/lib/indicator-menu.vala +++ b/lib/indicator-menu.vala @@ -19,11 +19,12 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { public enum Options { - NONE = 0x0, - DCONF = 0x1, - IBUS = 0x2, - FCITX = 0x4, - SETTINGS = 0x8 + NONE = 0x00, + DCONF = 0x01, + XKB = 0x02, + IBUS = 0x04, + FCITX = 0x08, + SETTINGS = 0x10 } private Options options; @@ -77,9 +78,11 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { sources_section.remove_all (); for (var i = 0; i < sources.length; i++) { - if (sources[i].is_xkb || - (sources[i].is_ibus && (options & Options.IBUS) != Options.NONE) || - (sources[i].is_fcitx && (options & Options.FCITX) != Options.NONE)) { + var visible = (sources[i].is_xkb && (options & Options.XKB) != Options.NONE) || + (sources[i].is_ibus && (options & Options.IBUS) != Options.NONE) || + (sources[i].is_fcitx && (options & Options.FCITX) != Options.NONE); + + if (visible) { string action; if ((options & Options.DCONF) != Options.NONE) { diff --git a/lib/main.vala b/lib/main.vala index 748b2095..41ff5ff7 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -1004,15 +1004,14 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] public IndicatorMenu get_desktop_menu () { if (desktop_menu == null) { - var options = IndicatorMenu.Options.DCONF - | IndicatorMenu.Options.SETTINGS; + var options = IndicatorMenu.Options.DCONF; - if (is_ibus_active ()) { - options |= IndicatorMenu.Options.IBUS; - } + if (!is_fcitx_active ()) { + options |= IndicatorMenu.Options.XKB | IndicatorMenu.Options.SETTINGS; - if (is_fcitx_active ()) { - options |= IndicatorMenu.Options.FCITX; + if (is_ibus_active ()) { + options |= IndicatorMenu.Options.IBUS; + } } desktop_menu = new IndicatorMenu (get_action_group (), options); @@ -1036,7 +1035,8 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] public IndicatorMenu get_desktop_greeter_menu () { if (desktop_greeter_menu == null) { - var options = IndicatorMenu.Options.DCONF; + var options = IndicatorMenu.Options.DCONF | + IndicatorMenu.Options.XKB; desktop_greeter_menu = new IndicatorMenu (get_action_group (), options); ((!) desktop_greeter_menu).set_sources (get_sources ()); @@ -1048,7 +1048,7 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] public IndicatorMenu get_desktop_lockscreen_menu () { if (desktop_lockscreen_menu == null) { - var options = IndicatorMenu.Options.NONE; + var options = IndicatorMenu.Options.XKB; desktop_lockscreen_menu = new IndicatorMenu (get_action_group (), options); ((!) desktop_lockscreen_menu).set_sources (get_sources ()); -- cgit v1.2.3 From 9ec7c8f8f1d7ecb050764011114e568f558582e8 Mon Sep 17 00:00:00 2001 From: William Hua Date: Mon, 15 Sep 2014 12:22:22 -0400 Subject: Hide indicator when menu is empty. --- lib/indicator-menu.vala | 61 ++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 29 deletions(-) (limited to 'lib') diff --git a/lib/indicator-menu.vala b/lib/indicator-menu.vala index a4587dd8..209fcbf1 100644 --- a/lib/indicator-menu.vala +++ b/lib/indicator-menu.vala @@ -34,42 +34,45 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { private IBusMenu properties_section; public IndicatorMenu (ActionMap? action_map = null, Options options = Options.NONE) { - var submenu = new Menu (); + this.options = options; + indicator_menu = new Menu (); sources_section = new Menu (); - submenu.append_section (null, sources_section); - if ((options & Options.IBUS) != Options.NONE) { - properties_section = new IBusMenu (action_map); - properties_section.activate.connect ((property, state) => { activate (property, state); }); - submenu.append_section (null, properties_section); - } + if ((options & ~Options.DCONF) != Options.NONE) { + var submenu = new Menu (); - if ((options & Options.SETTINGS) != Options.NONE) { - var settings_section = new Menu (); - settings_section.append (_ ("Character Map"), "indicator.map"); - settings_section.append (_ ("Keyboard Layout Chart"), "indicator.chart"); - settings_section.append (_ ("Text Entry Settings..."), "indicator.settings"); - submenu.append_section (null, settings_section); - } + submenu.append_section (null, sources_section); - var indicator = new MenuItem.submenu (null, submenu); - indicator.set_detailed_action ("indicator.indicator"); - indicator.set_attribute ("x-canonical-type", "s", "com.canonical.indicator.root"); - - /* We need special mouse actions on the lock screen. */ - if ((options & Options.DCONF) != Options.NONE) { - indicator.set_attribute ("x-canonical-secondary-action", "s", "indicator.next"); - indicator.set_attribute ("x-canonical-scroll-action", "s", "indicator.scroll"); - } else { - indicator.set_attribute ("x-canonical-secondary-action", "s", "indicator.locked_next"); - indicator.set_attribute ("x-canonical-scroll-action", "s", "indicator.locked_scroll"); - } + if ((options & Options.IBUS) != Options.NONE) { + properties_section = new IBusMenu (action_map); + properties_section.activate.connect ((property, state) => { activate (property, state); }); + submenu.append_section (null, properties_section); + } - indicator_menu = new Menu (); - indicator_menu.append_item (indicator); + if ((options & Options.SETTINGS) != Options.NONE) { + var settings_section = new Menu (); + settings_section.append (_ ("Character Map"), "indicator.map"); + settings_section.append (_ ("Keyboard Layout Chart"), "indicator.chart"); + settings_section.append (_ ("Text Entry Settings..."), "indicator.settings"); + submenu.append_section (null, settings_section); + } - this.options = options; + var indicator = new MenuItem.submenu (null, submenu); + indicator.set_detailed_action ("indicator.indicator"); + indicator.set_attribute ("x-canonical-type", "s", "com.canonical.indicator.root"); + + /* We need special mouse actions on the lock screen. */ + if ((options & Options.DCONF) != Options.NONE) { + indicator.set_attribute ("x-canonical-secondary-action", "s", "indicator.next"); + indicator.set_attribute ("x-canonical-scroll-action", "s", "indicator.scroll"); + } else { + indicator.set_attribute ("x-canonical-secondary-action", "s", "indicator.locked_next"); + indicator.set_attribute ("x-canonical-scroll-action", "s", "indicator.locked_scroll"); + } + + indicator_menu.append_item (indicator); + } } public signal void activate (IBus.Property property, IBus.PropState state); -- cgit v1.2.3 From 548bcac9f532e4ee29d2f10a0f1a1cdd66069d5f Mon Sep 17 00:00:00 2001 From: William Hua Date: Thu, 12 Feb 2015 10:25:28 -0500 Subject: Fix type signature of GLib.MenuModel.get_item_links (). --- lib/ibus-menu.vala | 2 +- lib/indicator-menu.vala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/ibus-menu.vala b/lib/ibus-menu.vala index c0862ac3..62bd88e8 100644 --- a/lib/ibus-menu.vala +++ b/lib/ibus-menu.vala @@ -295,7 +295,7 @@ public class Indicator.Keyboard.IBusMenu : MenuModel { return menu.get_item_link (item_index, link); } - public override void get_item_links (int item_index, out HashTable? links) { + public override void get_item_links (int item_index, out HashTable links) { menu.get_item_links (item_index, out links); } diff --git a/lib/indicator-menu.vala b/lib/indicator-menu.vala index 209fcbf1..77d4512e 100644 --- a/lib/indicator-menu.vala +++ b/lib/indicator-menu.vala @@ -131,7 +131,7 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { indicator_menu.get_item_attributes (item_index, out attributes); } - public override void get_item_links (int item_index, out HashTable? links) { + public override void get_item_links (int item_index, out HashTable links) { indicator_menu.get_item_links (item_index, out links); } -- cgit v1.2.3 From b3c420d16aae3374cca092e22cee1316716a91bb Mon Sep 17 00:00:00 2001 From: William Hua Date: Tue, 17 Feb 2015 15:40:38 -0500 Subject: Use shift operator. --- lib/indicator-menu.vala | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/indicator-menu.vala b/lib/indicator-menu.vala index 77d4512e..ebc92024 100644 --- a/lib/indicator-menu.vala +++ b/lib/indicator-menu.vala @@ -19,12 +19,12 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { public enum Options { - NONE = 0x00, - DCONF = 0x01, - XKB = 0x02, - IBUS = 0x04, - FCITX = 0x08, - SETTINGS = 0x10 + NONE = 0, + DCONF = 1 << 0, + XKB = 1 << 1, + IBUS = 1 << 2, + FCITX = 1 << 3, + SETTINGS = 1 << 4 } private Options options; -- cgit v1.2.3 From c38ced78666aad06e32d5c5937b99c91b36e8729 Mon Sep 17 00:00:00 2001 From: William Hua Date: Tue, 17 Feb 2015 16:11:45 -0500 Subject: Check flags better. --- lib/indicator-menu.vala | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/indicator-menu.vala b/lib/indicator-menu.vala index ebc92024..72441546 100644 --- a/lib/indicator-menu.vala +++ b/lib/indicator-menu.vala @@ -44,13 +44,13 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { submenu.append_section (null, sources_section); - if ((options & Options.IBUS) != Options.NONE) { + if (Options.IBUS in options) { properties_section = new IBusMenu (action_map); properties_section.activate.connect ((property, state) => { activate (property, state); }); submenu.append_section (null, properties_section); } - if ((options & Options.SETTINGS) != Options.NONE) { + if (Options.SETTINGS in options) { var settings_section = new Menu (); settings_section.append (_ ("Character Map"), "indicator.map"); settings_section.append (_ ("Keyboard Layout Chart"), "indicator.chart"); @@ -63,7 +63,7 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { indicator.set_attribute ("x-canonical-type", "s", "com.canonical.indicator.root"); /* We need special mouse actions on the lock screen. */ - if ((options & Options.DCONF) != Options.NONE) { + if (Options.DCONF in options) { indicator.set_attribute ("x-canonical-secondary-action", "s", "indicator.next"); indicator.set_attribute ("x-canonical-scroll-action", "s", "indicator.scroll"); } else { @@ -81,14 +81,14 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { sources_section.remove_all (); for (var i = 0; i < sources.length; i++) { - var visible = (sources[i].is_xkb && (options & Options.XKB) != Options.NONE) || - (sources[i].is_ibus && (options & Options.IBUS) != Options.NONE) || - (sources[i].is_fcitx && (options & Options.FCITX) != Options.NONE); + var visible = (sources[i].is_xkb && Options.XKB in options) || + (sources[i].is_ibus && Options.IBUS in options) || + (sources[i].is_fcitx && Options.FCITX in options); if (visible) { string action; - if ((options & Options.DCONF) != Options.NONE) { + if (Options.DCONF in options) { action = "indicator.current"; } else { action = "indicator.active"; @@ -108,13 +108,13 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { } public void set_properties (IBus.PropList properties) { - if ((options & Options.IBUS) != Options.NONE) { + if (Options.IBUS in options) { properties_section.set_properties (properties); } } public void update_property (IBus.Property property) { - if ((options & Options.IBUS) != Options.NONE) { + if (Options.IBUS in options) { properties_section.update_property (property); } } -- cgit v1.2.3 From 603fdf817fbecbc184853ca4a4a078a2e7072fde Mon Sep 17 00:00:00 2001 From: William Hua Date: Tue, 17 Feb 2015 16:29:37 -0500 Subject: Only try initializing Fcitx once. --- lib/main.vala | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index 41ff5ff7..ab33a84a 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -42,6 +42,7 @@ public class Indicator.Keyboard.Service : Object { private uint panel_timeout; private Fcitx.InputMethod? fcitx; + private bool fcitx_initialized; private Source[]? sources; @@ -235,12 +236,16 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private Fcitx.InputMethod? get_fcitx () { - if (is_fcitx_active () && fcitx == null) { - try { - fcitx = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0); - ((!) fcitx).notify["current-im"].connect ((pspec) => { handle_changed_current ("current"); }); - } catch (Error error) { - warning ("error: %s", error.message); + if (!fcitx_initialized) { + fcitx_initialized = true; + + if (is_fcitx_active ()) { + try { + fcitx = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0); + ((!) fcitx).notify["current-im"].connect ((pspec) => { handle_changed_current ("current"); }); + } catch (Error error) { + warning ("error: %s", error.message); + } } } -- cgit v1.2.3 From a8721bcb87bef4c18e501cf559af35926d11c0eb Mon Sep 17 00:00:00 2001 From: William Hua Date: Wed, 18 Feb 2015 10:52:18 -0500 Subject: Remove (!) when possible. --- lib/ibus-menu.vala | 22 ++++++++++------- lib/main.vala | 70 +++++++++++++++++++++++++++++++++--------------------- lib/source.vala | 8 ++++--- 3 files changed, 61 insertions(+), 39 deletions(-) (limited to 'lib') diff --git a/lib/ibus-menu.vala b/lib/ibus-menu.vala index 62bd88e8..a74782ed 100644 --- a/lib/ibus-menu.vala +++ b/lib/ibus-menu.vala @@ -154,26 +154,30 @@ public class Indicator.Keyboard.IBusMenu : MenuModel { /* Create a single action for all radio properties. */ if (action_map != null && radio_name == null) { radio_counter++; - radio_name = @"-private-radio-$radio_counter"; - radio_action = new SimpleAction.stateful ((!) radio_name, VariantType.STRING, new Variant.string ("")); - ((!) radio_action).activate.connect ((parameter) => { - ((!) radio_action).change_state (parameter); + var name = @"-private-radio-$radio_counter"; + var action = new SimpleAction.stateful (name, VariantType.STRING, new Variant.string ("")); + + action.activate.connect ((parameter) => { + action.change_state (parameter); }); - ((!) radio_action).change_state.connect ((value) => { + action.change_state.connect ((value) => { if (value != null) { var key = ((!) value).get_string (); if (radio_properties.has_key (key)) { - ((!) radio_action).set_state ((!) value); + action.set_state ((!) value); activate (radio_properties[key], IBus.PropState.CHECKED); } } }); - ((!) action_map).add_action ((!) radio_action); - names.add ((!) radio_name); + ((!) action_map).add_action (action); + names.add (name); + + radio_name = name; + radio_action = action; } radio_properties[property.key] = property; @@ -195,7 +199,7 @@ public class Indicator.Keyboard.IBusMenu : MenuModel { private void append_menu_property (IBus.Property property) { if (property.prop_type == IBus.PropType.MENU) { - var submenu = new IBusMenu (action_map, ((!) property).sub_props); + var submenu = new IBusMenu (action_map, property.sub_props); submenu.activate.connect ((property, state) => { activate (property, state); }); menu.append_submenu (get_label (property), submenu); } diff --git a/lib/main.vala b/lib/main.vala index ab33a84a..94a7f9ab 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -174,8 +174,10 @@ public class Indicator.Keyboard.Service : Object { private IBus.Bus get_ibus () { if (ibus == null) { IBus.init (); - ibus = new IBus.Bus (); - ((!) ibus).connected.connect (() => { + + var proxy = new IBus.Bus (); + + proxy.connected.connect (() => { if (desktop_menu != null) { get_desktop_menu ().set_sources (get_sources ()); } @@ -192,6 +194,8 @@ public class Indicator.Keyboard.Service : Object { update_indicator_action (); } }); + + ibus = proxy; } return (!) ibus; @@ -205,9 +209,9 @@ public class Indicator.Keyboard.Service : Object { var path = "/org/freedesktop/IBus/Panel"; try { - ibus_panel = connection.get_proxy_sync (name, path); + var proxy = connection.get_proxy_sync (name, path); - ((!) ibus_panel).properties_registered.connect ((variant) => { + proxy.properties_registered.connect ((variant) => { var properties = new IBus.PropList (); properties.deserialize (variant); @@ -215,7 +219,7 @@ public class Indicator.Keyboard.Service : Object { handle_properties_registered ((!) (properties as IBus.PropList)); } }); - ((!) ibus_panel).property_updated.connect ((variant) => { + proxy.property_updated.connect ((variant) => { var type = IBus.PropType.NORMAL; var state = IBus.PropState.INCONSISTENT; var text = new IBus.Text.from_static_string (""); @@ -226,6 +230,8 @@ public class Indicator.Keyboard.Service : Object { handle_property_updated ((!) (property as IBus.Property)); } }); + + ibus_panel = proxy; } catch (IOError error) { warning ("error: %s", error.message); } @@ -241,8 +247,9 @@ public class Indicator.Keyboard.Service : Object { if (is_fcitx_active ()) { try { - fcitx = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0); - ((!) fcitx).notify["current-im"].connect ((pspec) => { handle_changed_current ("current"); }); + var proxy = new Fcitx.InputMethod (BusType.SESSION, DBusProxyFlags.NONE, 0); + proxy.notify["current-im"].connect ((pspec) => { handle_changed_current ("current"); }); + fcitx = proxy; } catch (Error error) { warning ("error: %s", error.message); } @@ -255,8 +262,9 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] public void up () { if (loop == null) { - loop = new MainLoop (); - ((!) loop).run (); + var main_loop = new MainLoop (); + loop = main_loop; + main_loop.run (); } } @@ -330,9 +338,7 @@ public class Indicator.Keyboard.Service : Object { } if (layouts.length > 0) { - source = layouts[0]; - source = ((!) source).replace (" ", "+"); - source = ((!) source).replace ("\t", "+"); + source = layouts[0].replace (" ", "+").replace ("\t", "+"); } } } @@ -852,9 +858,10 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private Action get_active_action () { if (active_action == null) { - active_action = new SimpleAction.stateful ("active", VariantType.UINT32, new Variant.uint32 (get_current ())); - ((!) active_action).activate.connect ((parameter) => { ((!) active_action).change_state (parameter); }); - ((!) active_action).change_state.connect (handle_changed_active); + var action = new SimpleAction.stateful ("active", VariantType.UINT32, new Variant.uint32 (get_current ())); + action.activate.connect ((parameter) => { action.change_state (parameter); }); + action.change_state.connect (handle_changed_active); + active_action = action; } return (!) active_action; @@ -1019,9 +1026,10 @@ public class Indicator.Keyboard.Service : Object { } } - desktop_menu = new IndicatorMenu (get_action_group (), options); - ((!) desktop_menu).set_sources (get_sources ()); - ((!) desktop_menu).activate.connect ((property, state) => { + var menu = new IndicatorMenu (get_action_group (), options); + + menu.set_sources (get_sources ()); + menu.activate.connect ((property, state) => { var panel = get_ibus_panel (); if (panel != null) { @@ -1032,6 +1040,8 @@ public class Indicator.Keyboard.Service : Object { } } }); + + desktop_menu = menu; } return (!) desktop_menu; @@ -1043,8 +1053,9 @@ public class Indicator.Keyboard.Service : Object { var options = IndicatorMenu.Options.DCONF | IndicatorMenu.Options.XKB; - desktop_greeter_menu = new IndicatorMenu (get_action_group (), options); - ((!) desktop_greeter_menu).set_sources (get_sources ()); + var menu = new IndicatorMenu (get_action_group (), options); + menu.set_sources (get_sources ()); + desktop_greeter_menu = menu; } return (!) desktop_greeter_menu; @@ -1055,8 +1066,9 @@ public class Indicator.Keyboard.Service : Object { if (desktop_lockscreen_menu == null) { var options = IndicatorMenu.Options.XKB; - desktop_lockscreen_menu = new IndicatorMenu (get_action_group (), options); - ((!) desktop_lockscreen_menu).set_sources (get_sources ()); + var menu = new IndicatorMenu (get_action_group (), options); + menu.set_sources (get_sources ()); + desktop_lockscreen_menu = menu; } return (!) desktop_lockscreen_menu; @@ -1139,8 +1151,9 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private void handle_unity_greeter_name_appeared (DBusConnection connection, string name, string name_owner) { try { - unity_greeter = Bus.get_proxy_sync (BusType.SESSION, name, "/list"); - ((!) unity_greeter).entry_selected.connect (handle_entry_selected); + var greeter = Bus.get_proxy_sync (BusType.SESSION, name, "/list"); + greeter.entry_selected.connect (handle_entry_selected); + unity_greeter = greeter; } catch (IOError error) { warning ("error: %s", error.message); } @@ -1168,8 +1181,9 @@ public class Indicator.Keyboard.Service : Object { [DBus (visible = false)] private void handle_unity_name_appeared (DBusConnection connection, string name, string name_owner) { try { - unity_session = Bus.get_proxy_sync (BusType.SESSION, name, "/com/canonical/Unity/Session"); - ((!) unity_session).locked.connect (() => { + var session = Bus.get_proxy_sync (BusType.SESSION, name, "/com/canonical/Unity/Session"); + + session.locked.connect (() => { var sources = get_sources (); if (sources.length > 0) { @@ -1185,9 +1199,11 @@ public class Indicator.Keyboard.Service : Object { } } }); - ((!) unity_session).unlocked.connect (() => { + session.unlocked.connect (() => { get_active_action ().change_state (new Variant.uint32 (get_current ())); }); + + unity_session = session; } catch (IOError error) { warning ("error: %s", error.message); } diff --git a/lib/source.vala b/lib/source.vala index f73b4b69..38a628c1 100644 --- a/lib/source.vala +++ b/lib/source.vala @@ -335,12 +335,14 @@ public class Indicator.Keyboard.Source : Object { Gdk.Screen? screen = Gdk.Screen.get_default (); if (screen != null) { - context = new Gtk.StyleContext (); - ((!) context).set_screen ((!) screen); + var style_context = new Gtk.StyleContext (); + style_context.set_screen ((!) screen); var path = new Gtk.WidgetPath (); path.append_type (typeof (Gtk.MenuItem)); - ((!) context).set_path (path); + style_context.set_path (path); + + context = style_context; } } -- cgit v1.2.3 From d63326c3ae6d8a66214756964196fa2afb7ab13a Mon Sep 17 00:00:00 2001 From: William Hua Date: Wed, 18 Feb 2015 11:19:40 -0500 Subject: Use foreach when possible. --- lib/main.vala | 35 ++++++++++++++++++----------------- lib/source.vala | 8 ++++---- 2 files changed, 22 insertions(+), 21 deletions(-) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index 94a7f9ab..b589a3c4 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -305,15 +305,13 @@ public class Indicator.Keyboard.Service : Object { Act.User? user = manager.get_user ((!) greeter_user); if (user != null && ((!) user).is_loaded) { - var outer = ((!) user).input_sources.iterator (); + foreach (var outer in ((!) user).input_sources) { + foreach (var inner in (!) outer) { + unowned string key; + unowned string value; - VariantIter inner; + ((!) inner).get ("{&s&s}", out key, out value); - while (outer.next ("a{ss}", out inner)) { - unowned string key; - unowned string value; - - while (inner.next ("{&s&s}", out key, out value)) { if (key == "xkb") { source = value; break; @@ -495,16 +493,15 @@ public class Indicator.Keyboard.Service : Object { foreach (var user in users) { if (user.is_loaded) { - var outer = user.input_sources.iterator (); var done = false; - VariantIter inner; + foreach (var outer in user.input_sources) { + foreach (var inner in (!) outer) { + unowned string key; + unowned string source; - while (outer.next ("a{ss}", out inner)) { - unowned string key; - unowned string source; + ((!) inner).get ("{&s&s}", out key, out source); - while (inner.next ("{&s&s}", out key, out source)) { if (key == "xkb") { done = true; @@ -723,15 +720,19 @@ public class Indicator.Keyboard.Service : Object { } } - var iter = source_settings.get_value ("sources").iterator (); + var i = 0; - unowned string source_type; - unowned string source_name; + foreach (var pair in source_settings.get_value ("sources")) { + unowned string source_type; + unowned string source_name; + + ((!) pair).get ("(&s&s)", out source_type, out source_name); - for (var i = 0; iter.next ("(&s&s)", out source_type, out source_name); i++) { if (source_name == name && source_type == type) { return i; } + + i++; } } } diff --git a/lib/source.vala b/lib/source.vala index 38a628c1..b7d7a971 100644 --- a/lib/source.vala +++ b/lib/source.vala @@ -100,12 +100,12 @@ public class Indicator.Keyboard.Source : Object { fcitx = name; } } else if (variant.is_of_type (new VariantType ("a{ss}"))) { - var iter = variant.iterator (); + foreach (var pair in variant) { + unowned string key; + unowned string value; - unowned string key; - unowned string value; + ((!) pair).get ("{&s&s}", out key, out value); - while (iter.next ("{&s&s}", out key, out value)) { if (key == "xkb") { xkb = value; } else if (key == "ibus") { -- cgit v1.2.3 From 775f8b26f2fd2d3cb7d604754e853aaed83070ad Mon Sep 17 00:00:00 2001 From: William Hua Date: Wed, 18 Feb 2015 12:20:10 -0500 Subject: Remove vapi. --- data/Makefile.am | 8 +- deps/GnomeDesktop-3.0.metadata | 1 + deps/README | 47 ------ deps/accountsservice.vapi | 151 ------------------- deps/fcitx.vapi | 98 ------------- deps/fontconfig.vapi | 13 -- deps/freetype2.vapi | 20 --- deps/gnome-desktop-3.0.vapi | 320 ----------------------------------------- deps/pangoft2.vapi | 33 ----- lib/Makefile.am | 6 +- 10 files changed, 8 insertions(+), 689 deletions(-) create mode 100644 deps/GnomeDesktop-3.0.metadata delete mode 100644 deps/README delete mode 100644 deps/accountsservice.vapi delete mode 100644 deps/fcitx.vapi delete mode 100644 deps/fontconfig.vapi delete mode 100644 deps/freetype2.vapi delete mode 100644 deps/gnome-desktop-3.0.vapi delete mode 100644 deps/pangoft2.vapi (limited to 'lib') diff --git a/data/Makefile.am b/data/Makefile.am index 06ed4662..61e5c37f 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -17,12 +17,12 @@ indicator_keyboard_icon_generator_SOURCES = main.vala \ $(top_srcdir)/lib/common.vala indicator_keyboard_icon_generator_VALAFLAGS = $(AM_VALAFLAGS) \ --pkg gee-1.0 \ - --pkg fontconfig \ - --pkg freetype2 \ - --pkg pangoft2 \ + --pkg fontconfig-2.0 \ + --pkg freetype2-2.0 \ + --pkg PangoFT2-1.0 \ --pkg gtk+-3.0 \ --pkg GDesktopEnums-3.0 \ - --pkg gnome-desktop-3.0 \ + --pkg GnomeDesktop-3.0 \ --pkg Xkl-1.0 indicator_keyboard_icon_generator_CFLAGS = $(AM_CFLAGS) \ $(GEE_CFLAGS) \ diff --git a/deps/GnomeDesktop-3.0.metadata b/deps/GnomeDesktop-3.0.metadata new file mode 100644 index 00000000..3e4f88f4 --- /dev/null +++ b/deps/GnomeDesktop-3.0.metadata @@ -0,0 +1 @@ +RRScreen.new_async skip diff --git a/deps/README b/deps/README deleted file mode 100644 index c3666140..00000000 --- a/deps/README +++ /dev/null @@ -1,47 +0,0 @@ -To generate fontconfig.vapi: - -vapigen --library fontconfig /path/to/fontconfig-2.0.gir - -To generate freetype2.vapi: - -vapigen --library freetype2 /path/to/freetype2-2.0.gir - -To generate pangoft2.vapi: - -vapigen --library pangoft2 /path/to/PangoFT2-1.0.gir - -To generate gnome-desktop-3.0.vapi: - -vapigen --pkg gio-2.0 --pkg gtk+-3.0 --library gnome-desktop-3.0 /path/to/GnomeDesktop-3.0.gir - -To generate gnome-desktop-3.0.vapi docs: - -valadoc --vapidir /path/to/vapi/dir --pkg gdk-3.0 -o gnome-desktop-3.0 gnome-desktop-3.0.vapi - -To generate libxklavier.vapi: - -vapigen --metadatadir . --pkg x11 --library libxklavier /path/to/Xkl-1.0.gir - -To generate libxklavier.vapi docs: - -valadoc --vapidir /path/to/vapi/dir --pkg x11 -o libxklavier libxklavier.vapi - -To generate libgnomekbd.vapi: - -vapigen --metadatadir . --pkg gtk+-3.0 --library libgnomekbd /path/to/Gkbd-3.0.gir - -To generate libgnomekbd.vapi docs: - -valadoc --metadatadir . --vapidir /path/to/vapi/dir --pkg gtk+-3.0 --pkg Xkl-1.0 -o libgnomekbd libgnomekbd.vapi - -To generate ibus-1.0.vapi docs: - -valadoc --vapidir /path/to/vapi/dir -o ibus-1.0 /path/to/ibus-1.0.vapi - -To generate fcitx.vapi: - -vapigen --metadatadir . --pkg gio-2.0 --library fcitx /path/to/Fcitx-1.0.gir - -To generate libbamf3.vapi: - -vapigen --library libbamf3 /path/to/Bamf-3.gir diff --git a/deps/accountsservice.vapi b/deps/accountsservice.vapi deleted file mode 100644 index 809726d0..00000000 --- a/deps/accountsservice.vapi +++ /dev/null @@ -1,151 +0,0 @@ -/* accountsservice.vapi generated by vapigen, do not modify. */ - -[CCode (cprefix = "Act", gir_namespace = "AccountsService", gir_version = "1.0", lower_case_cprefix = "act_")] -namespace Act { - [CCode (cheader_filename = "act/act.h", type_id = "act_user_get_type ()")] - public class User : GLib.Object { - [CCode (has_construct_function = false)] - protected User (); - public int collate (Act.User user2); - public Act.UserAccountType get_account_type (); - public bool get_automatic_login (); - public unowned string get_email (); - public unowned string get_formats_locale (); - public unowned string get_home_dir (); - public unowned string get_icon_file (); - public unowned GLib.Variant get_input_sources (); - public unowned string get_language (); - public unowned string get_location (); - public bool get_locked (); - public int get_login_frequency (); - public unowned GLib.Variant get_login_history (); - public int64 get_login_time (); - public uint get_num_sessions (); - public uint get_num_sessions_anywhere (); - public unowned string get_object_path (); - public unowned string get_password_hint (); - public Act.UserPasswordMode get_password_mode (); - public unowned string get_primary_session_id (); - public unowned string get_real_name (); - public unowned string get_shell (); - public uint get_uid (); - public unowned string get_user_name (); - public unowned string get_x_session (); - public bool is_local_account (); - public bool is_logged_in (); - public bool is_logged_in_anywhere (); - public bool is_nonexistent (); - public bool is_system_account (); - public void set_account_type (Act.UserAccountType account_type); - public void set_automatic_login (bool enabled); - public void set_email (string email); - public void set_formats_locale (string formats_locale); - public void set_icon_file (string icon_file); - public void set_input_sources (GLib.Variant sources); - public void set_language (string language); - public void set_location (string location); - public void set_locked (bool locked); - public void set_multiple_passwords (GLib.HashTable password_map); - public void set_password (string password, string hint); - public void set_password_mode (Act.UserPasswordMode password_mode); - public void set_real_name (string real_name); - public void set_user_name (string user_name); - public void set_x_session (string x_session); - public int account_type { get; } - public bool automatic_login { get; } - [NoAccessorMethod] - public string background_file { owned get; } - public string email { get; } - public string formats_locale { get; } - [NoAccessorMethod] - public string home_directory { owned get; } - public string icon_file { get; } - public GLib.Variant input_sources { get; } - [NoAccessorMethod] - public bool is_loaded { get; } - public string language { get; } - [NoAccessorMethod] - public bool local_account { get; } - public string location { get; } - public bool locked { get; } - public int login_frequency { get; } - public GLib.Variant login_history { get; } - public int64 login_time { get; } - [NoAccessorMethod] - public bool nonexistent { get; } - public string password_hint { get; } - public int password_mode { get; } - public string real_name { get; } - public string shell { get; } - [NoAccessorMethod] - public bool system_account { get; } - public int uid { get; } - public string user_name { get; } - public string x_session { get; } - [NoAccessorMethod] - public bool xhas_messages { get; } - [CCode (array_length = false, array_null_terminated = true)] - [NoAccessorMethod] - public string[] xkeyboard_layouts { owned get; } - public signal void changed (); - public signal void sessions_changed (); - } - [CCode (cheader_filename = "act/act.h", type_id = "act_user_manager_get_type ()")] - public class UserManager : GLib.Object { - [CCode (has_construct_function = false)] - protected UserManager (); - public bool activate_user_session (Act.User user); - public Act.User cache_user (string username) throws GLib.Error; - public async Act.User cache_user_async (string username, GLib.Cancellable? cancellable) throws GLib.Error; - public bool can_switch (); - public Act.User create_user (string username, string fullname, Act.UserAccountType accounttype) throws GLib.Error; - public async Act.User create_user_async (string username, string fullname, Act.UserAccountType accounttype, GLib.Cancellable? cancellable) throws GLib.Error; - public bool delete_user (Act.User user, bool remove_files) throws GLib.Error; - public async bool delete_user_async (Act.User user, bool remove_files, GLib.Cancellable? cancellable) throws GLib.Error; - public static unowned Act.UserManager get_default (); - public unowned Act.User get_user (string username); - public unowned Act.User get_user_by_id (uint id); - public bool goto_login_session (); - public GLib.SList list_users (); - public bool no_service (); - public bool uncache_user (string username) throws GLib.Error; - [NoAccessorMethod] - public void* exclude_usernames_list { get; set; } - [NoAccessorMethod] - public bool has_multiple_users { get; } - [NoAccessorMethod] - public void* include_usernames_list { get; set; } - [NoAccessorMethod] - public bool is_loaded { get; } - public virtual signal void user_added (Act.User user); - public virtual signal void user_changed (Act.User user); - public virtual signal void user_is_logged_in_changed (Act.User user); - public virtual signal void user_removed (Act.User user); - } - [CCode (cheader_filename = "act/act.h", cprefix = "ACT_USER_ACCOUNT_TYPE_", type_id = "act_user_account_type_get_type ()")] - public enum UserAccountType { - STANDARD, - ADMINISTRATOR - } - [CCode (cheader_filename = "act/act.h", cprefix = "ACT_USER_PASSWORD_MODE_", type_id = "act_user_password_mode_get_type ()")] - public enum UserPasswordMode { - REGULAR, - SET_AT_LOGIN, - NONE - } - [CCode (cheader_filename = "act/act.h", cprefix = "ACT_USER_PASSWORD_", type_id = "act_user_password_type_get_type ()")] - public enum UserPasswordType { - REGULAR, - HINT, - PIN - } - [CCode (cheader_filename = "act/act.h", cprefix = "ACT_USER_MANAGER_ERROR_")] - public errordomain UserManagerError { - FAILED, - USER_EXISTS, - USER_DOES_NOT_EXIST, - PERMISSION_DENIED, - NOT_SUPPORTED; - public static GLib.Quark quark (); - } -} diff --git a/deps/fcitx.vapi b/deps/fcitx.vapi deleted file mode 100644 index 70ce5849..00000000 --- a/deps/fcitx.vapi +++ /dev/null @@ -1,98 +0,0 @@ -/* fcitx.vapi generated by vapigen, do not modify. */ - -[CCode (cprefix = "Fcitx", gir_namespace = "Fcitx", gir_version = "1.0", lower_case_cprefix = "fcitx_")] -namespace Fcitx { - [CCode (cheader_filename = "fcitx-gclient/fcitxclient.h", type_id = "fcitx_client_get_type ()")] - public class Client : GLib.Object { - [CCode (has_construct_function = false)] - public Client (); - public void close_ic (); - public void enable_ic (); - public void focus_in (); - public void focus_out (); - public bool is_valid (); - [Deprecated] - public async int process_key (uint32 keyval, uint32 keycode, uint32 state, int type, uint32 t); - public async int process_key_async (uint32 keyval, uint32 keycode, uint32 state, int type, uint32 t, int timeout_msec, GLib.Cancellable? cancellable); - public int process_key_sync (uint32 keyval, uint32 keycode, uint32 state, int type, uint32 t); - public void reset (); - public void set_capacity (uint flags); - public void set_cursor_rect (int x, int y, int w, int h); - [Deprecated] - public void set_cusor_rect (int x, int y, int w, int h); - public void set_surrounding_text (string? text, uint cursor, uint anchor); - public signal void close_im (); - public signal void commit_string (string string); - public signal void connected (); - public signal void delete_surrounding_text (int cursor, uint len); - public signal void disconnected (); - public signal void enable_im (); - public signal void forward_key (uint keyval, int state, int type); - public signal void update_client_side_ui (string auxup, string auxdown, string preedit, string candidateword, string imname, int cursor_pos); - public signal void update_formatted_preedit (GLib.GenericArray preedit, int cursor); - } - [CCode (cheader_filename = "fcitx-gclient/fcitxconnection.h", type_id = "fcitx_connection_get_type ()")] - public class Connection : GLib.Object { - [CCode (has_construct_function = false)] - public Connection (); - public unowned GLib.DBusConnection get_g_dbus_connection (); - public bool is_valid (); - public signal void connected (); - public signal void disconnected (); - } - [CCode (cheader_filename = "fcitx-gclient/fcitxinputmethod.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "fcitx_im_item_get_type ()")] - [Compact] - public class IMItem { - public bool enable; - public weak string langcode; - public weak string name; - public weak string unique_name; - [CCode (has_construct_function = false)] - public IMItem (string name, string unique_name, string langcode, bool enable); - } - [CCode (cheader_filename = "fcitx-gclient/fcitxinputmethod.h", type_id = "fcitx_input_method_get_type ()")] - public class InputMethod : GLib.DBusProxy, GLib.AsyncInitable, GLib.DBusInterface, GLib.Initable { - [CCode (has_construct_function = false)] - public InputMethod (GLib.BusType bus_type, GLib.DBusProxyFlags flags, int display_number, GLib.Cancellable? cancellable = null) throws GLib.Error; - public void activate (); - public void configure (); - public void configure_addon (string addon); - public void configure_im (string imname); - public void exit (); - public string get_current_im (); - public int get_current_state (); - public string get_current_ui (); - public string get_im_addon (string imname); - public GLib.GenericArray get_imlist_nofree (); - public void inactivate (); - public void reload_config (); - public void restart (); - public void set_current_im (string imname); - public void set_imlist (GLib.GenericArray array); - public void toggle (); - public string current_im { owned get; set construct; } - public signal void imlist_changed (); - } - [CCode (cheader_filename = "fcitx-gclient/fcitxkbd.h", type_id = "fcitx_kbd_get_type ()")] - public class Kbd : GLib.DBusProxy, GLib.AsyncInitable, GLib.DBusInterface, GLib.Initable { - [CCode (has_construct_function = false)] - public Kbd (GLib.BusType bus_type, GLib.DBusProxyFlags flags, int display_number, GLib.Cancellable? cancellable = null) throws GLib.Error; - public void get_layout_for_im (string imname, out string layout, out string variant); - public GLib.GenericArray get_layouts_nofree (); - public void set_default_layout (string layout, string variant); - public void set_layout_for_im (string imname, string layout, string variant); - } - [CCode (cheader_filename = "fcitx-gclient/fcitxkbd.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "fcitx_layout_item_get_type ()")] - [Compact] - public class LayoutItem { - public weak string langcode; - public weak string layout; - public weak string name; - public weak string variant; - } - [CCode (cheader_filename = "fcitx-gclient/fcitxclient.h", has_type_id = false)] - public struct PreeditItem { - public weak global::string string; - public int32 type; - } -} diff --git a/deps/fontconfig.vapi b/deps/fontconfig.vapi deleted file mode 100644 index dc3f450b..00000000 --- a/deps/fontconfig.vapi +++ /dev/null @@ -1,13 +0,0 @@ -/* fontconfig.vapi generated by vapigen, do not modify. */ - -[CCode (cprefix = "Fc", gir_namespace = "fontconfig", gir_version = "2.0", lower_case_cprefix = "fc_")] -namespace Fc { - [CCode (cheader_filename = "fontconfig-2.0.h", has_type_id = false)] - public struct CharSet { - } - [CCode (cheader_filename = "fontconfig-2.0.h", has_type_id = false)] - public struct Pattern { - } - [CCode (cheader_filename = "fontconfig-2.0.h", cname = "FcInit")] - public static void init (); -} diff --git a/deps/freetype2.vapi b/deps/freetype2.vapi deleted file mode 100644 index 5403be26..00000000 --- a/deps/freetype2.vapi +++ /dev/null @@ -1,20 +0,0 @@ -/* freetype2.vapi generated by vapigen, do not modify. */ - -[CCode (cprefix = "FT", gir_namespace = "freetype2", gir_version = "2.0", lower_case_cprefix = "FT_")] -namespace FT { - [CCode (cheader_filename = "freetype2-2.0.h", cname = "FT_Bitmap", has_type_id = false)] - public struct Bitmap { - } - [CCode (cheader_filename = "freetype2-2.0.h", cname = "FT_Face", has_type_id = false)] - public struct Face { - } - [CCode (cheader_filename = "freetype2-2.0.h", cname = "FT_Int32")] - [SimpleType] - public struct Int32 : int32 { - } - [CCode (cheader_filename = "freetype2-2.0.h", cname = "FT_Library", has_type_id = false)] - public struct Library { - } - [CCode (cheader_filename = "freetype2-2.0.h", cname = "FT_Library_Version")] - public static void library_version (); -} diff --git a/deps/gnome-desktop-3.0.vapi b/deps/gnome-desktop-3.0.vapi deleted file mode 100644 index 80f38b35..00000000 --- a/deps/gnome-desktop-3.0.vapi +++ /dev/null @@ -1,320 +0,0 @@ -/* gnome-desktop-3.0.vapi generated by vapigen, do not modify. */ - -[CCode (cprefix = "Gnome", gir_namespace = "GnomeDesktop", gir_version = "3.0", lower_case_cprefix = "gnome_")] -namespace Gnome { - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_bg_get_type ()")] - public class BG : GLib.Object { - [CCode (has_construct_function = false)] - public BG (); - public bool changes_with_time (); - public Gdk.Pixbuf create_frame_thumbnail (Gnome.DesktopThumbnailFactory factory, Gdk.Screen screen, int dest_width, int dest_height, int frame_num); - public Cairo.Surface create_surface (Gdk.Window window, int width, int height, bool root); - public Gdk.Pixbuf create_thumbnail (Gnome.DesktopThumbnailFactory factory, Gdk.Screen screen, int dest_width, int dest_height); - public void draw (Gdk.Pixbuf dest, Gdk.Screen screen, bool is_root); - public void get_color (GDesktop.BackgroundShading type, Gdk.Color primary, Gdk.Color secondary); - public bool get_draw_background (); - public unowned string get_filename (); - public bool get_image_size (Gnome.DesktopThumbnailFactory factory, int best_width, int best_height, int width, int height); - public GDesktop.BackgroundStyle get_placement (); - public static Cairo.Surface get_surface_from_root (Gdk.Screen screen); - public bool has_multiple_sizes (); - public bool is_dark (int dest_width, int dest_height); - public void load_from_preferences (GLib.Settings settings); - public void save_to_preferences (GLib.Settings settings); - public void set_color (GDesktop.BackgroundShading type, Gdk.Color primary, Gdk.Color secondary); - public void set_draw_background (bool draw_background); - public void set_filename (string filename); - public void set_placement (GDesktop.BackgroundStyle placement); - public static void set_surface_as_root (Gdk.Screen screen, Cairo.Surface surface); - public static Gnome.BGCrossfade set_surface_as_root_with_crossfade (Gdk.Screen screen, Cairo.Surface surface); - public signal void changed (); - public signal void transitioned (); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_bg_crossfade_get_type ()")] - public class BGCrossfade : GLib.Object { - [CCode (has_construct_function = false)] - public BGCrossfade (int width, int height); - public bool is_started (); - public bool set_end_surface (Cairo.Surface surface); - public bool set_start_surface (Cairo.Surface surface); - public void start (Gdk.Window window); - public void stop (); - [NoAccessorMethod] - public int height { get; construct; } - [NoAccessorMethod] - public int width { get; construct; } - public virtual signal void finished (GLib.Object window); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_bg_slide_show_get_type ()")] - public class BGSlideShow : GLib.Object { - [CCode (has_construct_function = false)] - public BGSlideShow (string filename); - public void get_current_slide (int width, int height, out double progress, out double duration, out bool is_fixed, out unowned string file1, out unowned string file2); - public bool get_has_multiple_sizes (); - public int get_num_slides (); - public bool get_slide (int frame_number, int width, int height, double progress, out double duration, out bool is_fixed, out unowned string file1, out unowned string file2); - public double get_start_time (); - public double get_total_duration (); - public bool load () throws GLib.Error; - public async void load_async (GLib.Cancellable? cancellable); - [NoAccessorMethod] - public string filename { owned get; construct; } - public bool has_multiple_sizes { get; } - public double start_time { get; } - public double total_duration { get; } - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_desktop_thumbnail_factory_get_type ()")] - public class DesktopThumbnailFactory : GLib.Object { - [CCode (has_construct_function = false)] - public DesktopThumbnailFactory (Gnome.DesktopThumbnailSize size); - public bool can_thumbnail (string uri, string mime_type, long mtime); - public void create_failed_thumbnail (string uri, long mtime); - public Gdk.Pixbuf generate_thumbnail (string uri, string mime_type); - public bool has_valid_failed_thumbnail (string uri, long mtime); - public string lookup (string uri, long mtime); - public void save_thumbnail (Gdk.Pixbuf thumbnail, string uri, long original_mtime); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_idle_monitor_get_type ()")] - public class IdleMonitor : GLib.Object, GLib.Initable { - [CCode (has_construct_function = false)] - public IdleMonitor (); - public uint add_idle_watch (uint64 interval_msec, owned Gnome.IdleMonitorWatchFunc? callback); - public uint add_user_active_watch (owned Gnome.IdleMonitorWatchFunc? callback); - [CCode (has_construct_function = false)] - public IdleMonitor.for_device (Gdk.Device device); - public int64 get_idletime (); - public void remove_watch (uint id); - [NoAccessorMethod] - public Gdk.Device device { owned get; construct; } - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_pnp_ids_get_type ()")] - public class PnpIds : GLib.Object { - [CCode (has_construct_function = false)] - public PnpIds (); - public string get_pnp_id (string pnp_id); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_rr_config_get_type ()")] - public class RRConfig : GLib.Object { - [CCode (has_construct_function = false)] - protected RRConfig (); - public bool applicable (Gnome.RRScreen screen) throws GLib.Error; - public static bool apply_from_filename_with_time (Gnome.RRScreen screen, string filename, uint32 timestamp) throws GLib.Error; - public bool apply_with_time (Gnome.RRScreen screen, uint32 timestamp) throws GLib.Error; - [CCode (has_construct_function = false)] - public RRConfig.current (Gnome.RRScreen screen) throws GLib.Error; - public bool ensure_primary (); - public bool equal (Gnome.RRConfig config2); - public static string get_backup_filename (); - public bool get_clone (); - public static string get_intended_filename (); - [CCode (array_length = false, array_null_terminated = true)] - public unowned Gnome.RROutputInfo[] get_outputs (); - public bool load_current () throws GLib.Error; - public bool load_filename (string filename) throws GLib.Error; - public bool match (Gnome.RRConfig config2); - public void sanitize (); - public bool save () throws GLib.Error; - public void set_clone (bool clone); - [CCode (has_construct_function = false)] - public RRConfig.stored (Gnome.RRScreen screen) throws GLib.Error; - public Gnome.RRScreen screen { construct; } - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gnome_rr_crtc_get_type ()")] - [Compact] - public class RRCrtc { - public bool can_drive_output (Gnome.RROutput output); - public Gnome.RRMode get_current_mode (); - public Gnome.RRRotation get_current_rotation (); - public bool get_gamma (int size, ushort red, ushort green, ushort blue); - public uint32 get_id (); - public void get_position (out int x, out int y); - public Gnome.RRRotation get_rotations (); - public bool set_config_with_time (uint32 timestamp, int x, int y, Gnome.RRMode mode, Gnome.RRRotation rotation, Gnome.RROutput outputs, int n_outputs) throws GLib.Error; - public void set_gamma (int size, ushort red, ushort green, ushort blue); - public bool supports_rotation (Gnome.RRRotation rotation); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gnome_rr_mode_get_type ()")] - [Compact] - public class RRMode { - public int get_freq (); - public uint get_height (); - public uint32 get_id (); - public uint get_width (); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gnome_rr_output_get_type ()")] - [Compact] - public class RROutput { - public bool can_clone (Gnome.RROutput clone); - public int get_backlight () throws GLib.Error; - public int get_backlight_max (); - public int get_backlight_min (); - public unowned string get_connector_type (); - public Gnome.RRCrtc get_crtc (); - public Gnome.RRMode get_current_mode (); - public unowned string get_display_name (); - public uint8 get_edid_data (size_t size); - public int get_height_mm (); - public uint32 get_id (); - public bool get_ids_from_edid (out string vendor, out int product, out int serial); - public bool get_is_primary (); - public unowned string get_name (); - public void get_position (out int x, out int y); - public Gnome.RRCrtc get_possible_crtcs (); - public Gnome.RRMode get_preferred_mode (); - public int get_size_inches (); - public int get_width_mm (); - public bool is_connected (); - public bool is_laptop (); - public Gnome.RRMode list_modes (); - public bool set_backlight (int value) throws GLib.Error; - public bool supports_mode (Gnome.RRMode mode); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_rr_output_info_get_type ()")] - public class RROutputInfo : GLib.Object { - [CCode (has_construct_function = false)] - protected RROutputInfo (); - public double get_aspect_ratio (); - public unowned string get_display_name (); - public void get_geometry (out int x, out int y, out int width, out int height); - public unowned string get_name (); - public int get_preferred_height (); - public int get_preferred_width (); - public bool get_primary (); - public uint get_product (); - public int get_refresh_rate (); - public Gnome.RRRotation get_rotation (); - public uint get_serial (); - public void get_vendor ([CCode (array_length = false)] out unowned string[] vendor); - public bool is_active (); - public bool is_connected (); - public void set_active (bool active); - public void set_geometry (int x, int y, int width, int height); - public void set_primary (bool primary); - public void set_refresh_rate (int rate); - public void set_rotation (Gnome.RRRotation rotation); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_rr_screen_get_type ()")] - public class RRScreen : GLib.Object, GLib.Initable { - [CCode (has_construct_function = false)] - public RRScreen (Gdk.Screen screen) throws GLib.Error; - public Gnome.RRMode create_clone_modes (); - public unowned Gnome.RRCrtc get_crtc_by_id (uint32 id); - public bool get_dpms_mode (out Gnome.RRDpmsMode mode) throws GLib.Error; - public unowned Gnome.RROutput get_output_by_id (uint32 id); - public unowned Gnome.RROutput get_output_by_name (string name); - public void get_ranges (out int min_width, out int max_width, out int min_height, out int max_height); - public void get_timestamps (out uint32 change_timestamp_ret, out uint32 config_timestamp_ret); - [CCode (array_length = false, array_null_terminated = true)] - public unowned Gnome.RRMode[] list_clone_modes (); - [CCode (array_length = false, array_null_terminated = true)] - public unowned Gnome.RRCrtc[] list_crtcs (); - [CCode (array_length = false, array_null_terminated = true)] - public unowned Gnome.RRMode[] list_modes (); - [CCode (array_length = false, array_null_terminated = true)] - public unowned Gnome.RROutput[] list_outputs (); - public bool refresh () throws GLib.Error; - public bool set_dpms_mode (Gnome.RRDpmsMode mode) throws GLib.Error; - public void set_primary_output (Gnome.RROutput output); - public void set_size (int width, int height, int mm_width, int mm_height); - [NoAccessorMethod] - public Gdk.Screen gdk_screen { owned get; construct; } - public virtual signal void changed (); - public virtual signal void output_connected (void* output); - public virtual signal void output_disconnected (void* output); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_wall_clock_get_type ()")] - public class WallClock : GLib.Object { - [CCode (has_construct_function = false)] - public WallClock (); - public unowned string get_clock (); - public unowned GLib.TimeZone get_timezone (); - public string clock { get; } - [NoAccessorMethod] - public bool time_only { get; set; } - public GLib.TimeZone timezone { get; } - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", type_id = "gnome_xkb_info_get_type ()")] - public class XkbInfo : GLib.Object { - [CCode (has_construct_function = false)] - public XkbInfo (); - public unowned string description_for_group (string group_id); - public unowned string description_for_option (string group_id, string id); - public GLib.List get_all_layouts (); - public GLib.List get_all_option_groups (); - public bool get_layout_info (string id, out unowned string display_name, out unowned string short_name, out unowned string xkb_layout, out unowned string xkb_variant); - public GLib.List get_layouts_for_country (string country_code); - public GLib.List get_layouts_for_language (string language_code); - public GLib.List get_options_for_group (string group_id); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", cprefix = "GNOME_DESKTOP_THUMBNAIL_SIZE_", has_type_id = false)] - public enum DesktopThumbnailSize { - NORMAL, - LARGE - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", cprefix = "GNOME_RR_DPMS_", has_type_id = false)] - public enum RRDpmsMode { - ON, - STANDBY, - SUSPEND, - OFF, - DISABLED, - UNKNOWN - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", cprefix = "GNOME_RR_", has_type_id = false)] - [Flags] - public enum RRRotation { - ROTATION_NEXT, - ROTATION_0, - ROTATION_90, - ROTATION_180, - ROTATION_270, - REFLECT_X, - REFLECT_Y - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", cprefix = "GNOME_RR_ERROR_")] - public errordomain RRError { - UNKNOWN, - NO_RANDR_EXTENSION, - RANDR_ERROR, - BOUNDS_ERROR, - CRTC_ASSIGNMENT, - NO_MATCHING_CONFIG, - NO_DPMS_EXTENSION; - public static GLib.Quark quark (); - } - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", instance_pos = 2.9)] - public delegate void IdleMonitorWatchFunc (Gnome.IdleMonitor monitor, uint id); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h", cname = "GNOME_RR_CONNECTOR_TYPE_PANEL")] - public const string RR_CONNECTOR_TYPE_PANEL; - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static bool desktop_thumbnail_has_uri (Gdk.Pixbuf pixbuf, string uri); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static bool desktop_thumbnail_is_valid (Gdk.Pixbuf pixbuf, string uri, long mtime); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - [Deprecated (since = "2.22")] - public static string desktop_thumbnail_md5 (string uri); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static string desktop_thumbnail_path_for_uri (string uri, Gnome.DesktopThumbnailSize size); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static Gdk.Pixbuf desktop_thumbnail_scale_down_pixbuf (Gdk.Pixbuf pixbuf, int dest_width, int dest_height); - [CCode (array_length = false, array_null_terminated = true, cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static string[] get_all_languages (); - [CCode (array_length = false, array_null_terminated = true, cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static string[] get_all_locales (); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static string get_country_from_code (string code, string? translation); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static string get_country_from_locale (string locale, string? translation); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static bool get_input_source_from_locale (string locale, out unowned string type, out unowned string id); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static string get_language_from_code (string code, string? translation); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static string get_language_from_locale (string locale, string? translation); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static bool language_has_translations (string code); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static string normalize_locale (string locale); - [CCode (cheader_filename = "libgnome-desktop/gnome-bg-crossfade.h,libgnome-desktop/gnome-bg-slide-show.h,libgnome-desktop/gnome-bg.h,libgnome-desktop/gnome-desktop-thumbnail.h,libgnome-desktop/gnome-idle-monitor.h,libgnome-desktop/gnome-languages.h,libgnome-desktop/gnome-pnp-ids.h,libgnome-desktop/gnome-rr-config.h,libgnome-desktop/gnome-rr.h,libgnome-desktop/gnome-wall-clock.h,libgnome-desktop/gnome-xkb-info.h")] - public static bool parse_locale (string locale, out string language_codep, out string country_codep, out string codesetp, out string modifierp); -} diff --git a/deps/pangoft2.vapi b/deps/pangoft2.vapi deleted file mode 100644 index 8dc85109..00000000 --- a/deps/pangoft2.vapi +++ /dev/null @@ -1,33 +0,0 @@ -/* pangoft2.vapi generated by vapigen, do not modify. */ - -[CCode (cprefix = "PangoFT2", gir_namespace = "PangoFT2", gir_version = "1.0", lower_case_cprefix = "pango_ft2_")] -namespace PangoFT2 { - [CCode (cheader_filename = "pango/pangoft2.h", type_id = "pango_ft2_font_map_get_type ()")] - public class FontMap : Pango.FontMap { - [CCode (has_construct_function = false, type = "PangoFontMap*")] - public FontMap (); - public void set_default_substitute (owned PangoFT2.SubstituteFunc func); - public void set_resolution (double dpi_x, double dpi_y); - public void substitute_changed (); - } - [CCode (cheader_filename = "pango/pangoft2.h", has_target = false)] - public delegate void SubstituteFunc (Fc.Pattern pattern, void* data); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static int font_get_kerning (Pango.Font font, Pango.Glyph left, Pango.Glyph right); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static Pango.Glyph get_unknown_glyph (Pango.Font font); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static void render (FT.Bitmap bitmap, Pango.Font font, Pango.GlyphString glyphs, int x, int y); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static void render_layout (FT.Bitmap bitmap, Pango.Layout layout, int x, int y); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static void render_layout_line (FT.Bitmap bitmap, Pango.LayoutLine line, int x, int y); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static void render_layout_line_subpixel (FT.Bitmap bitmap, Pango.LayoutLine line, int x, int y); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static void render_layout_subpixel (FT.Bitmap bitmap, Pango.Layout layout, int x, int y); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static void render_transformed (FT.Bitmap bitmap, Pango.Matrix matrix, Pango.Font font, Pango.GlyphString glyphs, int x, int y); - [CCode (cheader_filename = "pango/pangoft2.h")] - public static void shutdown_display (); -} diff --git a/lib/Makefile.am b/lib/Makefile.am index 14c8f1ba..d45b98dd 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -22,12 +22,12 @@ indicator_keyboard_service_VALAFLAGS = $(AM_VALAFLAGS) \ --pkg pangocairo \ --pkg gtk+-3.0 \ --pkg GDesktopEnums-3.0 \ - --pkg gnome-desktop-3.0 \ + --pkg GnomeDesktop-3.0 \ --pkg Xkl-1.0 \ --pkg Gkbd-3.0 \ --pkg ibus-1.0 \ - --pkg fcitx \ - --pkg accountsservice \ + --pkg Fcitx-1.0 \ + --pkg AccountsService-1.0 \ --pkg liblightdm-gobject-1 indicator_keyboard_service_CFLAGS = $(AM_CFLAGS) \ $(GEE_CFLAGS) \ -- cgit v1.2.3 From c9a8ec0018435a4ccb0a1d700a77303939e87d54 Mon Sep 17 00:00:00 2001 From: William Hua Date: Wed, 18 Feb 2015 12:49:19 -0500 Subject: Remove unnecessary flag. We don't really need this flag any more since we decided to hide indicator-keyboard in the session when Fcitx is running since it has its own indicator. --- lib/indicator-menu.vala | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/indicator-menu.vala b/lib/indicator-menu.vala index 72441546..96bf64d6 100644 --- a/lib/indicator-menu.vala +++ b/lib/indicator-menu.vala @@ -23,8 +23,7 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { DCONF = 1 << 0, XKB = 1 << 1, IBUS = 1 << 2, - FCITX = 1 << 3, - SETTINGS = 1 << 4 + SETTINGS = 1 << 3 } private Options options; @@ -82,8 +81,7 @@ public class Indicator.Keyboard.IndicatorMenu : MenuModel { for (var i = 0; i < sources.length; i++) { var visible = (sources[i].is_xkb && Options.XKB in options) || - (sources[i].is_ibus && Options.IBUS in options) || - (sources[i].is_fcitx && Options.FCITX in options); + (sources[i].is_ibus && Options.IBUS in options); if (visible) { string action; -- cgit v1.2.3 From c34cf40e28eed1842ee691603fe6940f04302e10 Mon Sep 17 00:00:00 2001 From: William Hua Date: Thu, 19 Feb 2015 11:23:59 -0500 Subject: Don't handle activate signal when the default behaviour will do. --- lib/ibus-menu.vala | 8 -------- lib/main.vala | 1 - 2 files changed, 9 deletions(-) (limited to 'lib') diff --git a/lib/ibus-menu.vala b/lib/ibus-menu.vala index a74782ed..a240f00b 100644 --- a/lib/ibus-menu.vala +++ b/lib/ibus-menu.vala @@ -128,10 +128,6 @@ public class Indicator.Keyboard.IBusMenu : MenuModel { var state = new Variant.boolean (property.state == IBus.PropState.CHECKED); var action = new SimpleAction.stateful (name, null, state); - action.activate.connect ((parameter) => { - action.change_state (new Variant.boolean (!action.get_state ().get_boolean ())); - }); - action.change_state.connect ((value) => { if (value != null) { action.set_state ((!) value); @@ -158,10 +154,6 @@ public class Indicator.Keyboard.IBusMenu : MenuModel { var name = @"-private-radio-$radio_counter"; var action = new SimpleAction.stateful (name, VariantType.STRING, new Variant.string ("")); - action.activate.connect ((parameter) => { - action.change_state (parameter); - }); - action.change_state.connect ((value) => { if (value != null) { var key = ((!) value).get_string (); diff --git a/lib/main.vala b/lib/main.vala index b589a3c4..170e0335 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -860,7 +860,6 @@ public class Indicator.Keyboard.Service : Object { private Action get_active_action () { if (active_action == null) { var action = new SimpleAction.stateful ("active", VariantType.UINT32, new Variant.uint32 (get_current ())); - action.activate.connect ((parameter) => { action.change_state (parameter); }); action.change_state.connect (handle_changed_active); active_action = action; } -- cgit v1.2.3 From 9cdbb03cab972221b36151e852d8412179483c4a Mon Sep 17 00:00:00 2001 From: William Hua Date: Thu, 19 Feb 2015 12:15:59 -0500 Subject: Simplify input source cycling. --- lib/main.vala | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index 170e0335..877d7b7b 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -890,19 +890,16 @@ public class Indicator.Keyboard.Service : Object { if (length > 1) { var current = old_current; var offset = -((!) parameter).get_int32 () % length; + var jump = 1; - /* Go backward. */ - for (; offset < 0; offset++) { - do { - current = (current + sources.length - 1) % sources.length; - } while ((sources[current].is_ibus && !is_ibus_active ()) || - (sources[current].is_fcitx && !is_fcitx_active ())); + if (offset < 0) { + offset = -offset; + jump = sources.length - jump; } - /* Go forward. */ for (; offset > 0; offset--) { do { - current = (current + 1) % sources.length; + current = (current + jump) % sources.length; } while ((sources[current].is_ibus && !is_ibus_active ()) || (sources[current].is_fcitx && !is_fcitx_active ())); } -- cgit v1.2.3 From ec6c31099a0e001554f3ab167b60545808e87301 Mon Sep 17 00:00:00 2001 From: William Hua Date: Thu, 19 Feb 2015 12:33:44 -0500 Subject: Explain input source cycling logic. --- lib/main.vala | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib') diff --git a/lib/main.vala b/lib/main.vala index 877d7b7b..d3e063d1 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -897,6 +897,13 @@ public class Indicator.Keyboard.Service : Object { jump = sources.length - jump; } + /* + * We need to cycle through offset valid input sources, skipping those that aren't + * valid for this session (i.e. skipping Fcitx ones if IBus is active and vice-versa. + * jump is the direction we need to cycle in, which is 1 if we want to cycle forward + * and -1 (mod sources.length) if we want to cycle backward. + */ + for (; offset > 0; offset--) { do { current = (current + jump) % sources.length; -- cgit v1.2.3