From 06e0f0bc54df3a706ea2f71077ca986af37016d9 Mon Sep 17 00:00:00 2001 From: William Hua Date: Thu, 20 Jun 2013 12:17:43 -0400 Subject: Migrate old keyboard layouts and IM engines. --- deps/libgnomekbd.vapi | 6 +-- .../Gkbd.Configuration.get_indicator_config.html | 2 +- .../Gkbd.Configuration.get_keyboard_config.html | 2 +- .../libgnomekbd/Gkbd.Configuration.html | 4 +- deps/libgnomekbd/libgnomekbd/Gkbd.html | 2 +- .../libgnomekbd/Gkbd.preview_load_position.html | 2 +- deps/libgnomekbd/libgnomekbd/index.htm | 2 +- lib/main.vala | 49 ++++++++++++++++++++++ 8 files changed, 59 insertions(+), 10 deletions(-) diff --git a/deps/libgnomekbd.vapi b/deps/libgnomekbd.vapi index 0d5d2843..f555bdad 100644 --- a/deps/libgnomekbd.vapi +++ b/deps/libgnomekbd.vapi @@ -19,8 +19,8 @@ namespace Gkbd { [CCode (array_length = false, array_null_terminated = true)] public unowned string[] get_group_names (); public string get_image_filename (uint group); - public Gkbd.IndicatorConfig get_indicator_config (); - public Gkbd.KeyboardConfig get_keyboard_config (); + public unowned Gkbd.IndicatorConfig? get_indicator_config (); + public unowned Gkbd.KeyboardConfig? get_keyboard_config (); public bool get_num_lock_state (); public bool get_scroll_lock_state (); [CCode (array_length = false, array_null_terminated = true)] @@ -208,7 +208,7 @@ namespace Gkbd { [CCode (cheader_filename = "libgnomekbd/gkbd-util.h")] public static void install_glib_log_appender (); [CCode (cheader_filename = "libgnomekbd/gkbd-util.h")] - public static Gdk.Rectangle preview_load_position (); + public static Gdk.Rectangle? preview_load_position (); [CCode (cheader_filename = "libgnomekbd/gkbd-util.h")] public static void preview_save_position (Gdk.Rectangle rect); [CCode (array_length = false, array_null_terminated = true, cheader_filename = "libgnomekbd/gkbd-util.h")] diff --git a/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.get_indicator_config.html b/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.get_indicator_config.html index 871e6fb4..a2841e92 100644 --- a/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.get_indicator_config.html +++ b/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.get_indicator_config.html @@ -62,7 +62,7 @@

get_indicator_config


Description:

-
public IndicatorConfig get_indicator_config () +
public unowned IndicatorConfig? get_indicator_config ()

diff --git a/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.get_keyboard_config.html b/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.get_keyboard_config.html index a2b78e93..cb108b21 100644 --- a/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.get_keyboard_config.html +++ b/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.get_keyboard_config.html @@ -62,7 +62,7 @@

get_keyboard_config


Description:

-
public KeyboardConfig get_keyboard_config () +
public unowned KeyboardConfig? get_keyboard_config ()

diff --git a/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.html b/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.html index 58ecd346..7b92e9ad 100644 --- a/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.html +++ b/deps/libgnomekbd/libgnomekbd/Gkbd.Configuration.html @@ -134,11 +134,11 @@
-
  • public IndicatorConfig get_indicator_config () +
  • public unowned IndicatorConfig? get_indicator_config ()
  • -
  • public KeyboardConfig get_keyboard_config () +
  • public unowned KeyboardConfig? get_keyboard_config ()
  • diff --git a/deps/libgnomekbd/libgnomekbd/Gkbd.html b/deps/libgnomekbd/libgnomekbd/Gkbd.html index b91a8861..3842e7f4 100644 --- a/deps/libgnomekbd/libgnomekbd/Gkbd.html +++ b/deps/libgnomekbd/libgnomekbd/Gkbd.html @@ -96,7 +96,7 @@
    -
  • public Rectangle preview_load_position () +
  • public Rectangle? preview_load_position ()
  • diff --git a/deps/libgnomekbd/libgnomekbd/Gkbd.preview_load_position.html b/deps/libgnomekbd/libgnomekbd/Gkbd.preview_load_position.html index 4f74dc30..1f5ea25a 100644 --- a/deps/libgnomekbd/libgnomekbd/Gkbd.preview_load_position.html +++ b/deps/libgnomekbd/libgnomekbd/Gkbd.preview_load_position.html @@ -51,7 +51,7 @@

    preview_load_position


    Description:

    -
    public Rectangle preview_load_position () +
    public Rectangle? preview_load_position ()

    Namespace: Gkbd
    Package: libgnomekbd
    diff --git a/deps/libgnomekbd/libgnomekbd/index.htm b/deps/libgnomekbd/libgnomekbd/index.htm index 52705d32..c2e54ead 100644 --- a/deps/libgnomekbd/libgnomekbd/index.htm +++ b/deps/libgnomekbd/libgnomekbd/index.htm @@ -73,7 +73,7 @@
    -
  • public Rectangle preview_load_position () +
  • public Rectangle? preview_load_position ()
  • diff --git a/lib/main.vala b/lib/main.vala index ec4ceafa..e06c7794 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -41,12 +41,61 @@ public class Indicator.Keyboard.Service : Object { this.xkb_info = new Gnome.XkbInfo (); + migrate_keyboard_layouts (); + update_window_sources (); this.loop = new MainLoop (); this.loop.run (); } + [DBus (visible = false)] + private void migrate_keyboard_layouts () { + if (!this.indicator_settings.get_boolean ("migrated")) { + var builder = new VariantBuilder (new VariantType ("a(ss)")); + var length = 0; + + var layout_settings = new Settings ("org.gnome.libgnomekbd.keyboard"); + var layouts = layout_settings.get_strv ("layouts"); + + foreach (var layout in layouts) { + var source = layout; + + source = source.replace (" ", "+"); + source = source.replace ("\t", "+"); + + builder.add ("(ss)", "xkb", source); + length++; + } + + var ibus = get_ibus (); + var engines = ibus.list_active_engines (); + + foreach (var engine in engines) { + if (length == 0) { + var source = "us"; + var layout = engine.get_layout (); + var variant = engine.get_layout_variant (); + + if (layout != null && variant != null) { + source = @"$layout+$variant"; + } else if (layout != null) { + source = layout; + } + + builder.add ("(ss)", "xkb", source); + } + + builder.add ("(ss)", "ibus", engine.name); + length++; + } + + this.source_settings.set_value ("sources", builder.end ()); + + this.indicator_settings.set_boolean ("migrated", true); + } + } + [DBus (visible = false)] private void update_window_sources () { var group_per_window = this.per_window_settings.get_boolean ("group-per-window"); -- cgit v1.2.3