packages: ibus/ibus-530711-preload-sys.patch (NEW), ibus/ibus-541492-xkb.pa...

baggins baggins at pld-linux.org
Tue Jul 19 14:01:59 CEST 2011


Author: baggins                      Date: Tue Jul 19 12:01:59 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- initial revison based on Fedora package

---- Files affected:
packages/ibus:
   ibus-530711-preload-sys.patch (NONE -> 1.1)  (NEW), ibus-541492-xkb.patch (NONE -> 1.1)  (NEW), ibus-711632-fedora-fallback-icon.patch (NONE -> 1.1)  (NEW), ibus-HEAD.patch (NONE -> 1.1)  (NEW), ibus-xx-bridge-hotkey.patch (NONE -> 1.1)  (NEW), ibus-xx-icon-symbol.patch (NONE -> 1.1)  (NEW), ibus-xx-setup-frequent-lang.patch (NONE -> 1.1)  (NEW), ibus.spec (NONE -> 1.1)  (NEW), ibus.xinputd (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/ibus/ibus-530711-preload-sys.patch
diff -u /dev/null packages/ibus/ibus-530711-preload-sys.patch:1.1
--- /dev/null	Tue Jul 19 14:01:59 2011
+++ packages/ibus/ibus-530711-preload-sys.patch	Tue Jul 19 14:01:54 2011
@@ -0,0 +1,725 @@
+From 7f81445b3e6613d14f64253506a309095a37c8d7 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Mon, 20 Jun 2011 19:04:42 +0900
+Subject: [PATCH] Reload preload engines until users customize the list.
+
+The idea is, if users don't customize the preload_engines with ibus-setup,
+users would prefer to load the system default engines again by login.
+The gconf value 'preload_engine_mode' is
+IBUS_PRELOAD_ENGINE_MODE_USER by default but set
+IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE for the initial login.
+If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE,
+ibus-daemon loads the system preload engines by langs.
+If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_USER,
+ibus-daemon do not update the gconf value preload_engines.
+On the other hand, if users enable the customized engine checkbutton
+on ibus-setup, ibus-setup sets 'preload_engine_mode' as
+IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value
+'preload_engines'.
+---
+ bus/ibusimpl.c       |  402 +++++++++++++++++++++++++++++++++++++++-----------
+ data/ibus.schemas.in |   13 ++
+ ibus/common.py       |    6 +
+ setup/main.py        |   70 ++++++++-
+ setup/setup.ui       |   21 +++-
+ src/ibustypes.h      |   10 ++
+ 6 files changed, 427 insertions(+), 95 deletions(-)
+
+diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
+index a7ae52b..bb4b8ae 100644
+--- a/bus/ibusimpl.c
++++ b/bus/ibusimpl.c
+@@ -144,6 +144,9 @@ static void     bus_ibus_impl_set_previous_engine
+ static void     bus_ibus_impl_set_preload_engines
+                                                 (BusIBusImpl        *ibus,
+                                                  GVariant           *value);
++static void     bus_ibus_impl_set_preload_engine_mode
++                                                (BusIBusImpl        *ibus,
++                                                 GVariant           *value);
+ static void     bus_ibus_impl_set_use_sys_layout
+                                                 (BusIBusImpl        *ibus,
+                                                  GVariant           *value);
+@@ -285,6 +288,259 @@ _panel_destroy_cb (BusPanelProxy *panel,
+ }
+ 
+ static void
++_config_set_value_done (GObject      *object,
++                        GAsyncResult *res,
++                        gpointer      user_data)
++{
++    IBusConfig *config = (IBusConfig *) object;
++    GVariant *value = (GVariant *) user_data;
++    GError *error = NULL;
++
++    g_assert (IBUS_IS_CONFIG (config));
++
++    if (!ibus_config_set_value_async_finish (config, res, &error)) {
++        if (error) {
++            g_error_free (error);
++        }
++    }
++    g_variant_unref (value);
++}
++
++#ifndef OS_CHROMEOS
++static gint
++_engine_desc_cmp (IBusEngineDesc *desc1,
++                  IBusEngineDesc *desc2)
++{
++    return - ((gint) ibus_engine_desc_get_rank (desc1)) +
++              ((gint) ibus_engine_desc_get_rank (desc2));
++}
++#endif
++
++#ifndef OS_CHROMEOS
++static gint
++_get_config_preload_engine_mode (BusIBusImpl *ibus)
++{
++    GVariant *variant = NULL;
++    gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
++
++    g_assert (BUS_IS_IBUS_IMPL (ibus));
++
++    if (ibus->config == NULL) {
++        return preload_engine_mode;
++    }
++
++    variant = ibus_config_get_value (ibus->config, "general",
++                                     "preload_engines");
++    if (variant == NULL) {
++        /* Set LANG_RELATIVE mode for the initial login */
++        preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE;
++        variant = g_variant_ref_sink (g_variant_new ("i", preload_engine_mode));
++        ibus_config_set_value_async (ibus->config, "general",
++                                     "preload_engine_mode", variant,
++                                     -1,
++                                     NULL,
++                                     _config_set_value_done,
++                                     variant);
++        return preload_engine_mode;
++    } else {
++        g_variant_unref (variant);
++    }
++
++    variant = ibus_config_get_value (ibus->config, "general",
++                                     "preload_engine_mode");
++    if (variant != NULL) {
++        if (g_variant_classify (variant) == G_VARIANT_CLASS_INT32) {
++            preload_engine_mode = g_variant_get_int32 (variant);
++        }
++        g_variant_unref (variant);
++    }
++
++    return preload_engine_mode;
++}
++#endif
++
++static int
++_compare_engine_list_value (GVariant *value_a, GVariant *value_b)
++{
++    GVariant *value;
++    GVariantIter iter;
++    const gchar *engine_name = NULL;
++    gchar *concat_engine_names;
++    gchar *concat_engine_names_a = NULL;
++    gchar *concat_engine_names_b = NULL;
++    int retval = 0;
++
++    value = value_a;
++    concat_engine_names = NULL;
++    if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
++        g_variant_iter_init (&iter, value);
++        while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
++            gchar *tmp = g_strdup_printf ("%s::%s",
++                                          concat_engine_names ? concat_engine_names : "",
++                                          engine_name ? engine_name : "");
++            g_free (concat_engine_names);
++            concat_engine_names = tmp;
++        }
++    }
++    concat_engine_names_a = concat_engine_names;
++
++    value = value_b;
++    concat_engine_names = NULL;
++    if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
++        g_variant_iter_init (&iter, value);
++        while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
++            gchar *tmp = g_strdup_printf ("%s::%s",
++                                          concat_engine_names ? concat_engine_names : "",
++                                          engine_name ? engine_name : "");
++            g_free (concat_engine_names);
++            concat_engine_names = tmp;
++        }
++    }
++    concat_engine_names_b = concat_engine_names;
++
++    retval = g_strcmp0 (concat_engine_names_a, concat_engine_names_b);
++    g_free (concat_engine_names_a);
++    g_free (concat_engine_names_b);
++    return retval;
++}
++
++static void
++_preload_engines_config_get_value_done (GObject      *object,
++                                        GAsyncResult *res,
++                                        gpointer      user_data)
++{
++    IBusConfig *config = (IBusConfig *) object;
++    GVariant *new_value = (GVariant *) user_data;
++    GVariant *value = NULL;
++    GError *error = NULL;
++
++    g_assert (IBUS_IS_CONFIG (config));
++
++    value = ibus_config_get_value_async_finish (config, res, &error);
++    if (error) {
++        g_error_free (error);
++    }
++    if (_compare_engine_list_value (value, new_value) != 0) {
++        ibus_config_set_value_async (config, "general",
++                                     "preload_engines", new_value,
++                                     -1,
++                                     NULL,
++                                     _config_set_value_done,
++                                     new_value);
++    } else if (new_value) {
++        g_variant_unref (new_value);
++    }
++    if (value) {
++        g_variant_unref (value);
++    }
++}
++
++static void
++_set_preload_engines (BusIBusImpl *ibus,
++                      GVariant    *value)
++{
++    GList *engine_list = NULL;
++
++    g_assert (BUS_IS_IBUS_IMPL (ibus));
++
++    g_list_foreach (ibus->engine_list, (GFunc) g_object_unref, NULL);
++    g_list_free (ibus->engine_list);
++
++    if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
++        GVariantIter iter;
++        g_variant_iter_init (&iter, value);
++        const gchar *engine_name = NULL;
++        while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
++            IBusEngineDesc *engine = bus_registry_find_engine_by_name (ibus->registry, engine_name);
++            if (engine == NULL || g_list_find (engine_list, engine) != NULL)
++                continue;
++            engine_list = g_list_append (engine_list, engine);
++        }
++
++        if (engine_list != NULL &&
++            ibus->config != NULL) {
++            /* sync function will effects the startup performance.
++             * We'd always like to save the value so that ibus-setup
++             * get the updated engine list. */
++            ibus_config_get_value_async (ibus->config, "general",
++                                         "preload_engines",
++                                         -1,
++                                         NULL,
++                                         _preload_engines_config_get_value_done,
++                                         g_variant_ref_sink (value));
++        } else {
++            /* We don't update preload_engines with an empty string for safety.
++             * Just unref the floating value. */
++            g_variant_unref (value);
++        }
++    } else if (value != NULL) {
++        g_variant_unref (value);
++    }
++
++    g_list_foreach (engine_list, (GFunc) g_object_ref, NULL);
++    ibus->engine_list = engine_list;
++
++    if (ibus->engine_list) {
++        BusComponent *component = bus_component_from_engine_desc ((IBusEngineDesc *) ibus->engine_list->data);
++        if (component && !bus_component_is_running (component)) {
++            bus_component_start (component, g_verbose);
++        }
++    }
++
++    bus_ibus_impl_check_global_engine (ibus);
++    bus_ibus_impl_update_engines_hotkey_profile (ibus);
++}
++
++#ifndef OS_CHROMEOS
++static void
++_set_language_relative_preload_engines (BusIBusImpl *ibus)
++{
++    gchar *lang = NULL;
++    gchar *p = NULL;
++    GList *engines = NULL;
++    GList *list;
++    GVariantBuilder builder;
++
++    g_assert (BUS_IS_IBUS_IMPL (ibus));
++
++    /* The setlocale call first checks LC_ALL. If it's not available, checks
++     * LC_CTYPE. If it's also not available, checks LANG. */
++    lang = g_strdup (setlocale (LC_CTYPE, NULL));
++    if (lang == NULL) {
++        return;
++    }
++
++    p = index (lang, '.');
++    if (p) {
++        *p = '\0';
++    }
++
++    engines = bus_registry_get_engines_by_language (ibus->registry, lang);
++    if (engines == NULL) {
++        p = index (lang, '_');
++        if (p) {
++            *p = '\0';
++            engines = bus_registry_get_engines_by_language (ibus->registry, lang);
++        }
++    }
++    g_free (lang);
++
++    /* sort engines by rank */
++    engines = g_list_sort (engines, (GCompareFunc) _engine_desc_cmp);
++
++    g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
++    for (list = engines; list != NULL; list = list->next) {
++        IBusEngineDesc *desc = (IBusEngineDesc *)list->data;
++        /* ignore engines with rank <== 0 */
++        if (ibus_engine_desc_get_rank (desc) > 0)
++            g_variant_builder_add (&builder, "s", ibus_engine_desc_get_name (desc));
++    }
++    _set_preload_engines (ibus, g_variant_builder_end (&builder));
++    g_list_free (engines);
++}
++#endif
++
++static void
+ bus_ibus_impl_set_hotkey (BusIBusImpl *ibus,
+                           GQuark       hotkey,
+                           GVariant    *value)
+@@ -394,35 +650,50 @@ static void
+ bus_ibus_impl_set_preload_engines (BusIBusImpl *ibus,
+                                    GVariant    *value)
+ {
+-    GList *engine_list = NULL;
+-
+-    g_list_foreach (ibus->engine_list, (GFunc) g_object_unref, NULL);
+-    g_list_free (ibus->engine_list);
++#ifndef OS_CHROMEOS
++    gint preload_engine_mode = _get_config_preload_engine_mode (ibus);
+ 
+-    if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_ARRAY) {
+-        GVariantIter iter;
+-        g_variant_iter_init (&iter, value);
+-        const gchar *engine_name = NULL;
+-        while (g_variant_iter_loop (&iter, "&s", &engine_name)) {
+-            IBusEngineDesc *engine = bus_registry_find_engine_by_name (ibus->registry, engine_name);
+-            if (engine == NULL || g_list_find (engine_list, engine) != NULL)
+-                continue;
+-            engine_list = g_list_append (engine_list, engine);
++    if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
++        if (value == NULL) {
++            _set_language_relative_preload_engines (ibus);
++        } else {
++            _set_preload_engines (ibus, value);
+         }
+     }
++#else
++    _set_preload_engines (ibus, value);
++#endif
++}
+ 
+-    g_list_foreach (engine_list, (GFunc) g_object_ref, NULL);
+-    ibus->engine_list = engine_list;
++/**
++ * bus_ibus_impl_set_preload_engine_mode:
++ *
++ * A function to be called when "preload_engine_mode" config is updated.
++ */
++static void
++bus_ibus_impl_set_preload_engine_mode (BusIBusImpl *ibus,
++                                       GVariant    *value)
++{
++#ifndef OS_CHROMEOS
++    gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
+ 
+-    if (ibus->engine_list) {
+-        BusComponent *component = bus_component_from_engine_desc ((IBusEngineDesc *) ibus->engine_list->data);
+-        if (component && !bus_component_is_running (component)) {
+-            bus_component_start (component, g_verbose);
+-        }
++    /* bus_ibus_impl_reload_config() sets value = NULL.
++     * bus_ibus_impl_reload_config() is always called when
++     * RequestName signal is sent so it is good to get the gconf value
++     * again when value == NULL.
++     */
++    if (value != NULL && g_variant_classify (value) == G_VARIANT_CLASS_INT32) {
++        preload_engine_mode = g_variant_get_int32 (value);
++    } else {
++        preload_engine_mode = _get_config_preload_engine_mode (ibus);
+     }
+ 
+-    bus_ibus_impl_check_global_engine (ibus);
+-    bus_ibus_impl_update_engines_hotkey_profile (ibus);
++    if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
++        return;
++    }
++
++    _set_language_relative_preload_engines (ibus);
++#endif
+ }
+ 
+ /**
+@@ -503,89 +774,47 @@ bus_ibus_impl_set_use_global_engine (BusIBusImpl *ibus,
+     }
+ }
+ 
+-#ifndef OS_CHROMEOS
+-static gint
+-_engine_desc_cmp (IBusEngineDesc *desc1,
+-                  IBusEngineDesc *desc2)
+-{
+-    return - ((gint) ibus_engine_desc_get_rank (desc1)) +
+-              ((gint) ibus_engine_desc_get_rank (desc2));
+-}
+-#endif
+-
+ /**
+  * bus_ibus_impl_set_default_preload_engines:
+  *
+- * If the "preload_engines" config variable is not set yet, set the default value which is determined based on a current locale.
++ * bus_ibus_impl_set_default_preload_engines handles the gconf value
++ * /desktop/ibus/general/preload_engines and preload_engine_mode.
++ * The idea is, if users don't customize the preload_engines with ibus-setup,
++ * users would prefer to load the system default engines again by login.
++ * The gconf value 'preload_engine_mode' is
++ * IBUS_PRELOAD_ENGINE_MODE_USER by default but set
++ * IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE for the initial login.
++ * If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_LANG_RELATIVE,
++ * ibus-daemon loads the system preload engines by langs.
++ * If preload_engine_mode is IBUS_PRELOAD_ENGINE_MODE_USER,
++ * ibus-daemon do not update the gconf value preload_engines.
++ * On the other hand, if users enable the customized engine checkbutton
++ * on ibus-setup, ibus-setup sets 'preload_engine_mode' as
++ * IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value
++ * 'preload_engines'.
+  */
+ static void
+ bus_ibus_impl_set_default_preload_engines (BusIBusImpl *ibus)
+ {
+ #ifndef OS_CHROMEOS
+-    g_assert (BUS_IS_IBUS_IMPL (ibus));
+-
+     static gboolean done = FALSE;
++    gint preload_engine_mode = IBUS_PRELOAD_ENGINE_MODE_USER;
++
++    g_assert (BUS_IS_IBUS_IMPL (ibus));
+ 
+     if (done || ibus->config == NULL) {
+         return;
+     }
+ 
+-    GVariant *variant = ibus_config_get_value (ibus->config, "general", "preload_engines");
+-    if (variant != NULL) {
++    preload_engine_mode = _get_config_preload_engine_mode (ibus);
++
++    if (preload_engine_mode == IBUS_PRELOAD_ENGINE_MODE_USER) {
+         done = TRUE;
+-        g_variant_unref (variant);
+         return;
+     }
+ 
+     done = TRUE;
+-
+-    /* The setlocale call first checks LC_ALL. If it's not available, checks
+-     * LC_CTYPE. If it's also not available, checks LANG. */
+-    gchar *lang = g_strdup (setlocale (LC_CTYPE, NULL));
+-    if (lang == NULL) {
+-        return;
+-    }
+-
+-    gchar *p = index (lang, '.');
+-    if (p) {
+-        *p = '\0';
+-    }
+-
+-    GList *engines = bus_registry_get_engines_by_language (ibus->registry, lang);
+-    if (engines == NULL) {
+-        p = index (lang, '_');
+-        if (p) {
+-            *p = '\0';
+-            engines = bus_registry_get_engines_by_language (ibus->registry, lang);
+-        }
+-    }
+-    g_free (lang);
+-
+-    /* sort engines by rank */
+-    engines = g_list_sort (engines, (GCompareFunc) _engine_desc_cmp);
+-
+-    GVariantBuilder builder;
+-    g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
+-    GList *list;
+-    for (list = engines; list != NULL; list = list->next) {
+-        IBusEngineDesc *desc = (IBusEngineDesc *) list->data;
+-        /* ignore engines with rank <= 0 */
+-        if (ibus_engine_desc_get_rank (desc) > 0)
+-            g_variant_builder_add (&builder, "s", ibus_engine_desc_get_name (desc));
+-    }
+-
+-    GVariant *value = g_variant_builder_end (&builder);
+-    if (value != NULL) {
+-        if (g_variant_n_children (value) > 0) {
+-            ibus_config_set_value (ibus->config,
+-                                   "general", "preload_engines", value);
+-        } else {
+-            /* We don't update preload_engines with an empty string for safety.
+-             * Just unref the floating value. */
+-            g_variant_unref (value);
+-        }
+-    }
+-    g_list_free (engines);
++    _set_language_relative_preload_engines (ibus);
+ #endif
+ }
+ 
+@@ -601,6 +830,7 @@ const static struct {
+     { "general/hotkey", "next_engine_in_menu",   bus_ibus_impl_set_next_engine_in_menu },
+     { "general/hotkey", "previous_engine",       bus_ibus_impl_set_previous_engine },
+     { "general", "preload_engines",              bus_ibus_impl_set_preload_engines },
++    { "general", "preload_engine_mode",          bus_ibus_impl_set_preload_engine_mode },
+     { "general", "use_system_keyboard_layout",   bus_ibus_impl_set_use_sys_layout },
+     { "general", "use_global_engine",            bus_ibus_impl_set_use_global_engine },
+     { "general", "embed_preedit_text",           bus_ibus_impl_set_embed_preedit_text },
+diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
+index 7ca4899..d4334e1 100644
+--- a/data/ibus.schemas.in
++++ b/data/ibus.schemas.in
+@@ -13,6 +13,19 @@
+       </locale>
+     </schema>
+     <schema>
++      <key>/schemas/desktop/ibus/general/preload_engine_mode</key>
++      <applyto>/desktop/ibus/general/preload_engine_mode</applyto>
++      <owner>ibus</owner>
++      <type>int</type>
++      <default>0</default>
++      <locale name="C">
++        <short>Preload engine mode</short>
++           <long>Preload engines are loaded with this mode.
++                 0 = user customized engines.
++                 1 = language related engines.</long>
++      </locale>
++    </schema>
++    <schema>
+       <key>/schemas/desktop/ibus/general/hotkey/trigger</key>
+       <applyto>/desktop/ibus/general/hotkey/trigger</applyto>
+       <owner>ibus</owner>
+diff --git a/ibus/common.py b/ibus/common.py
+index 6483aae..127ed93 100644
+--- a/ibus/common.py
++++ b/ibus/common.py
+@@ -40,6 +40,8 @@ __all__ = (
+         "BUS_REQUEST_NAME_REPLY_IN_QUEUE",
+         "BUS_REQUEST_NAME_REPLY_EXISTS",
+         "BUS_REQUEST_NAME_REPLY_ALREADY_OWNER",
++        "PRELOAD_ENGINE_MODE_USER",
++        "PRELOAD_ENGINE_MODE_LANG_RELATIVE",
+         "default_reply_handler",
+         "default_error_handler",
+         "DEFAULT_ASYNC_HANDLERS",
+@@ -150,6 +152,10 @@ BUS_REQUEST_NAME_REPLY_IN_QUEUE      = 2
+ BUS_REQUEST_NAME_REPLY_EXISTS        = 3
+ BUS_REQUEST_NAME_REPLY_ALREADY_OWNER = 4
+ 
++# define preload engine mode
++PRELOAD_ENGINE_MODE_USER          = 0
++PRELOAD_ENGINE_MODE_LANG_RELATIVE = 1
++
+ def default_reply_handler( *args):
+     pass
+ 
+diff --git a/setup/main.py b/setup/main.py
+index 7f4a040..192fb88 100644
+--- a/setup/main.py
++++ b/setup/main.py
+@@ -92,6 +92,7 @@ class Setup(object):
+         # keyboard shortcut
+         # trigger
+         self.__config = self.__bus.get_config()
++        self.__config.connect("value-changed", self.__config_value_changed_cb)
+         shortcuts = self.__config.get_value(
+                         "general/hotkey", "trigger",
+                         ibus.CONFIG_GENERAL_SHORTCUT_TRIGGER_DEFAULT)
+@@ -213,15 +214,22 @@ class Setup(object):
+         self.__checkbutton_use_global_engine.connect("toggled", self.__checkbutton_use_global_engine_toggled_cb)
+ 
+         # init engine page
++        preload_engine_mode = self.__config.get_value("general",
++                                                      "preload_engine_mode",
++                                                      ibus.common.PRELOAD_ENGINE_MODE_USER)
++        button = self.__builder.get_object("checkbutton_preload_engine_mode")
++        if preload_engine_mode == ibus.common.PRELOAD_ENGINE_MODE_USER:
++            button.set_active(True)
++            self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(True)
++        else:
++            button.set_active(False)
++            self.__builder.get_object("hbox_customize_active_input_methods").set_sensitive(False)
++        button.connect("toggled", self.__checkbutton_preload_engine_mode_toggled_cb)
+         self.__engines = self.__bus.list_engines()
+         self.__combobox = self.__builder.get_object("combobox_engines")
+         self.__combobox.set_engines(self.__engines)
+ 
+-        tmp_dict = {}
+-        for e in self.__engines:
+-            tmp_dict[e.name] = e
+-        engine_names = self.__config.get_value("general", "preload_engines", [])
+-        engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
++        engines = self.__bus.list_active_engines()
+ 
+         self.__treeview = self.__builder.get_object("treeview_engines")
+         self.__treeview.set_engines(engines)
+@@ -265,6 +273,26 @@ class Setup(object):
+             engine_names = map(lambda e: e.name, engines)
+             self.__config.set_list("general", "preload_engines", engine_names, "s")
+ 
++    def __get_engine_descs_from_names(self, engine_names):
++        tmp_dict = {}
++        for e in self.__engines:
++            tmp_dict[e.name] = e
++        engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list