[Xfce4-commits] <xfce4-xkb-plugin:master> Remove configuration of keyboard layouts.

Igor Slepchin noreply at xfce.org
Wed Aug 22 23:24:04 CEST 2012


Updating branch refs/heads/master
         to fb667951f66a05b87949b3eaf9e7c04697899fea (commit)
       from 3c296061aa1236bebea89a51af8802603123da14 (commit)

commit fb667951f66a05b87949b3eaf9e7c04697899fea
Author: Igor Slepchin <igor.slepchin at gmail.com>
Date:   Tue Jul 17 16:13:40 2012 -0400

    Remove configuration of keyboard layouts.
    
    Keyboard layouts are moved to xfce4-keyboard-settings.
    The management of layouts per application/window
    is still handled by this plugin.
    
    Compose key configuration is gone for now; might get reinstated
    in xfce4-keyboard-settings.
    
    This fixes bug 5476 (together with a corresponding commit
    to xfce4-settings).

 panel-plugin/xfce4-xkb-plugin.c    |   45 +--
 panel-plugin/xfce4-xkb-plugin.h    |   17 -
 panel-plugin/xkb-config.c          |  143 +------
 panel-plugin/xkb-config.h          |   13 -
 panel-plugin/xkb-settings-dialog.c |  803 ------------------------------------
 5 files changed, 20 insertions(+), 1001 deletions(-)

diff --git a/panel-plugin/xfce4-xkb-plugin.c b/panel-plugin/xfce4-xkb-plugin.c
index 6a0635a..1cf96ae 100644
--- a/panel-plugin/xfce4-xkb-plugin.c
+++ b/panel-plugin/xfce4-xkb-plugin.c
@@ -225,9 +225,6 @@ xkb_free (t_xkb *xkb)
 {
     xkb_config_finalize ();
 
-    if (xkb->settings->kbd_config)
-        kbd_config_free (xkb->settings->kbd_config);
-
     g_free (xkb->settings);
 
     gtk_widget_destroy (xkb->layout_image);
@@ -263,23 +260,6 @@ xfce_xkb_save_config (XfcePanelPlugin *plugin, t_xkb *xkb)
     xfce_rc_write_int_entry (rcfile, "display_type", xkb->display_type);
     xfce_rc_write_int_entry (rcfile, "display_textsize", xkb->display_textsize);
     xfce_rc_write_int_entry (rcfile, "group_policy", xkb->settings->group_policy);
-    xfce_rc_write_int_entry (rcfile, "default_group", xkb->settings->default_group);
-    xfce_rc_write_bool_entry (rcfile, "never_modify_config", xkb->settings->never_modify_config);
-
-    if (xkb->settings->kbd_config != NULL)
-    {
-        xfce_rc_write_entry (rcfile, "model", xkb->settings->kbd_config->model);
-        xfce_rc_write_entry (rcfile, "layouts", xkb->settings->kbd_config->layouts);
-        xfce_rc_write_entry (rcfile, "variants", xkb->settings->kbd_config->variants);
-
-        if (xkb->settings->kbd_config->toggle_option == NULL)
-            xfce_rc_write_entry (rcfile, "toggle_option", "");
-        else xfce_rc_write_entry (rcfile, "toggle_option", xkb->settings->kbd_config->toggle_option);
-
-        if (xkb->settings->kbd_config->compose_key_position == NULL)
-            xfce_rc_write_entry (rcfile, "compose_key_position", "");
-        else xfce_rc_write_entry (rcfile, "compose_key_position", xkb->settings->kbd_config->compose_key_position);
-    }
 
     xfce_rc_close (rcfile);
     g_free (filename);
@@ -297,23 +277,6 @@ xkb_load_config (t_xkb *xkb, const gchar *filename)
         xkb->display_textsize = xfce_rc_read_int_entry (rcfile, "display_textsize", DISPLAY_TEXTSIZE_SMALL);
         xkb->settings->group_policy = xfce_rc_read_int_entry (rcfile, "group_policy", GROUP_POLICY_PER_APPLICATION);
 
-        if (xkb->settings->group_policy != GROUP_POLICY_GLOBAL)
-        {
-            xkb->settings->default_group = xfce_rc_read_int_entry (rcfile, "default_group", 0);
-        }
-
-        xkb->settings->never_modify_config = xfce_rc_read_bool_entry (rcfile, "never_modify_config", FALSE);
-
-        if (xkb->settings->kbd_config == NULL)
-        {
-            xkb->settings->kbd_config = g_new0 (t_xkb_kbd_config, 1);
-        }
-        xkb->settings->kbd_config->model = g_strdup (xfce_rc_read_entry (rcfile, "model", NULL));
-        xkb->settings->kbd_config->layouts = g_strdup (xfce_rc_read_entry (rcfile, "layouts", NULL));
-        xkb->settings->kbd_config->variants = g_strdup (xfce_rc_read_entry (rcfile, "variants", NULL));
-        xkb->settings->kbd_config->toggle_option = g_strdup (xfce_rc_read_entry (rcfile, "toggle_option", NULL));
-        xkb->settings->kbd_config->compose_key_position = g_strdup (xfce_rc_read_entry (rcfile, "compose_key_position", NULL));
-
         xfce_rc_close (rcfile);
 
         return TRUE;
@@ -328,8 +291,6 @@ xkb_load_default (t_xkb *xkb)
     xkb->display_type = DISPLAY_TYPE_IMAGE;
     xkb->display_textsize = DISPLAY_TEXTSIZE_SMALL;
     xkb->settings->group_policy = GROUP_POLICY_PER_APPLICATION;
-    xkb->settings->default_group = 0;
-    xkb->settings->kbd_config = NULL;
 }
 
 static gboolean
@@ -360,7 +321,7 @@ xkb_calculate_sizes (t_xkb *xkb, GtkOrientation orientation, gint panel_size)
 static void
 xkb_initialize_menu (t_xkb *xkb)
 {
-    gint i;
+    gint i, group_count;
     RsvgHandle *handle;
     GdkPixbuf *pixbuf, *tmp;
     gchar *imgfilename;
@@ -373,7 +334,8 @@ xkb_initialize_menu (t_xkb *xkb)
         gtk_widget_destroy (xkb->popup);
 
     xkb->popup = gtk_menu_new ();
-    for (i = 0; i < xkb_config_get_group_count (); i++)
+    group_count = xkb_config_get_group_count ();
+    for (i = 0; i < group_count; i++)
     {
         gchar *layout_string;
 
@@ -407,6 +369,7 @@ xkb_initialize_menu (t_xkb *xkb)
 
             gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), image);
 
+            rsvg_handle_close (handle, NULL);
             g_object_unref (handle);
         }
 
diff --git a/panel-plugin/xfce4-xkb-plugin.h b/panel-plugin/xfce4-xkb-plugin.h
index ef9b995..4cd9a4a 100644
--- a/panel-plugin/xfce4-xkb-plugin.h
+++ b/panel-plugin/xfce4-xkb-plugin.h
@@ -69,23 +69,6 @@ typedef struct
     GtkWidget *btn;
     GtkWidget *layout_image;
     GtkWidget *popup;
-
-    /*  */
-    GtkWidget *kbd_model_combo;
-    GtkListStore *combo_store;
-
-    GtkWidget *layout_tree_view;
-    GtkListStore *layout_store;
-
-    GtkWidget *toggle_options_combo;
-    GtkListStore *toggle_options_store;
-
-    GtkWidget *compose_key_options_combo;
-    GtkListStore *compose_key_options_store;
-
-    GtkWidget *add_layout_btn;
-    GtkWidget *rm_layout_btn;
-    GtkWidget *edit_layout_btn;
 } t_xkb;
 
 /*
diff --git a/panel-plugin/xkb-config.c b/panel-plugin/xkb-config.c
index 43de210..9583bfd 100644
--- a/panel-plugin/xkb-config.c
+++ b/panel-plugin/xkb-config.c
@@ -41,7 +41,7 @@
 
 typedef struct
 {
-    XklEngine*            engine;
+    XklEngine            *engine;
 
     gchar               **group_names;
     gchar               **variants;
@@ -59,9 +59,6 @@ typedef struct
 
     XkbCallback           callback;
     gpointer              callback_data;
-
-
-    XklConfigRec         *config_rec;
 } t_xkb_config;
 
 static t_xkb_config *config;
@@ -78,7 +75,7 @@ static GdkFilterReturn
                                                          GdkEvent * event);
 
 static void         xkb_config_free                     ();
-static void         xkb_config_initialize_xkb_options   (t_xkb_settings *settings);
+static void         xkb_config_initialize_xkb_options   (const XklConfigRec *config_rec);
 
 /* ---------------------- implementation ------------------------- */
 
@@ -123,7 +120,7 @@ xkb_config_initialize (t_xkb_settings *settings,
 }
 
 static void
-xkb_config_initialize_xkb_options (t_xkb_settings *settings)
+xkb_config_initialize_xkb_options (const XklConfigRec *config_rec)
 {
     GHashTable *index_variants;
     gchar **group;
@@ -132,7 +129,7 @@ xkb_config_initialize_xkb_options (t_xkb_settings *settings)
 
     xkb_config_free ();
 
-    group = config->config_rec->layouts;
+    group = config_rec->layouts;
     config->group_count = 0;
     while (*group)
     {
@@ -151,10 +148,10 @@ xkb_config_initialize_xkb_options (t_xkb_settings *settings)
     for (i = 0; i < config->group_count; i++)
     {
 
-        config->group_names[i] = g_strdup (config->config_rec->layouts[i]);
+        config->group_names[i] = g_strdup (config_rec->layouts[i]);
 
-        config->variants[i] = (config->config_rec->variants[i] == NULL)
-            ? g_strdup ("") : g_strdup (config->config_rec->variants[i]);
+        config->variants[i] = (config_rec->variants[i] == NULL)
+            ? g_strdup ("") : g_strdup (config_rec->variants[i]);
 
         pval = g_hash_table_lookup (
                 index_variants,
@@ -176,18 +173,6 @@ xkb_config_initialize_xkb_options (t_xkb_settings *settings)
     g_hash_table_destroy (index_variants);
 }
 
-void
-kbd_config_free (t_xkb_kbd_config *kbd_config)
-{
-    g_free (kbd_config->model);
-    g_free (kbd_config->layouts);
-    g_free (kbd_config->variants);
-    g_free (kbd_config->toggle_option);
-    g_free (kbd_config->compose_key_position);
-
-    g_free (kbd_config);
-}
-
 static void
 xkb_config_free (void)
 {
@@ -222,11 +207,10 @@ xkb_config_free (void)
 void
 xkb_config_finalize (void)
 {
-    xkb_config_free ();
-
     xkl_engine_stop_listen (config->engine, XKLL_TRACK_KEYBOARD_STATE);
-    g_object_unref (config->config_rec);
+    g_object_unref (config->engine);
 
+    xkb_config_free ();
     g_free (config);
 
     gdk_window_remove_filter (NULL, (GdkFilterFunc) handle_xevent, NULL);
@@ -275,113 +259,20 @@ xkb_config_prev_group (void)
 gboolean
 xkb_config_update_settings (t_xkb_settings *settings)
 {
-    gboolean activate_settings = FALSE;
-
-    gchar **opt;
-    gchar **prefix;
+    XklConfigRec *config_rec;
 
     g_assert (config != NULL);
     g_assert (settings != NULL);
 
     config->settings = settings;
 
-    if (config->config_rec == NULL)
-    {
-        config->config_rec = xkl_config_rec_new ();
-    }
-
-    if (settings->kbd_config == NULL || settings->never_modify_config)
-    {
-        xkl_config_rec_get_from_server (config->config_rec, config->engine);
-        if (settings->kbd_config == NULL)
-            settings->kbd_config = g_new0 (t_xkb_kbd_config, 1);
-
-        g_free (settings->kbd_config->model);
-        settings->kbd_config->model = g_strdup (config->config_rec->model);
-        g_free (settings->kbd_config->layouts);
-        settings->kbd_config->layouts = g_strjoinv (",", config->config_rec->layouts);
-
-        /* XklConfigRec uses for NULL for empty variant instead of "".
-         * So if has skipped variants we can't get proper settings->kbd_config->variants.
-         * So I use this hack to get proper kbd_config->variants */
-        gchar *tmp1 = g_strdup("");
-        gchar *tmp2 = NULL;
-        int i;
-        for (i = 0; config->config_rec->layouts[i]; i++)
-        {
-            tmp2 = g_strconcat (tmp1, config->config_rec->variants[i] ? config->config_rec->variants[i] : "", NULL);
-            g_free(tmp1);
-            tmp1 = tmp2;
-            if (config->config_rec->layouts[i + 1])
-            {
-                tmp2 = g_strconcat (tmp1, ",", NULL);
-                g_free(tmp1);
-                tmp1 = tmp2;
-            }
-        }
-        g_free (settings->kbd_config->variants);
-        settings->kbd_config->variants = tmp2;
-    }
-    else
-    {
-        gchar *options;
-
-        activate_settings = TRUE;
-
-        g_free (config->config_rec->model);
-        config->config_rec->model = g_strdup (settings->kbd_config->model);
-
-        g_strfreev (config->config_rec->layouts);
-        config->config_rec->layouts = g_strsplit_set (settings->kbd_config->layouts, ",", 0);
-
-        g_strfreev (config->config_rec->variants);
-        config->config_rec->variants = g_strsplit_set (settings->kbd_config->variants, ",", 0);
-
-        if (settings->kbd_config->toggle_option
-                && strlen (settings->kbd_config->toggle_option) > 0)
-            options = g_strdup (settings->kbd_config->toggle_option);
-        else options = g_strdup ("");
-
-        if (settings->kbd_config->compose_key_position
-                && strlen (settings->kbd_config->compose_key_position) > 0)
-        {
-            gchar *tmp = options;
-            options = g_strconcat (tmp, ",", settings->kbd_config->compose_key_position, NULL);
-            g_free (tmp);
-        }
-
-        g_strfreev (config->config_rec->options);
-        config->config_rec->options = g_strsplit_set (options, ",", 0);
-        g_free (options);
-    }
-
-    /* select the first "grp" option and use it (should be fixed to support more options) */
-    g_free (settings->kbd_config->toggle_option);
-    settings->kbd_config->toggle_option = NULL;
-    g_free (settings->kbd_config->compose_key_position);
-    settings->kbd_config->compose_key_position = NULL;
-    opt = config->config_rec->options;
-    while (opt && *opt)
-    {
-        prefix = g_strsplit(*opt, ":", 2);
-        if (settings->kbd_config->toggle_option == NULL
-                && prefix && *prefix && strcmp(*prefix, "grp") == 0)
-        {
-            settings->kbd_config->toggle_option = g_strdup (*opt);
-        }
-        else if (prefix && *prefix && strcmp(*prefix, "compose") == 0)
-        {
-            settings->kbd_config->compose_key_position = g_strdup (*opt);
-        }
-
-        g_strfreev (prefix);
-        opt++;
-    }
+    config_rec = xkl_config_rec_new ();
+    xkl_config_rec_get_from_server (config_rec, config->engine);
 
-    if (activate_settings && !settings->never_modify_config)
-        xkl_config_rec_activate (config->config_rec, config->engine);
+    xkb_config_initialize_xkb_options (config_rec);
 
-    xkb_config_initialize_xkb_options (settings);
+    xkl_config_rec_reset (config_rec);
+    g_object_unref (config_rec);
 
     return TRUE;
 }
@@ -417,7 +308,7 @@ xkb_config_window_changed (guint new_window_id, guint application_id)
             break;
     }
 
-    group = config->settings->default_group;
+    group = 0;
 
     if (g_hash_table_lookup_extended (hashtable, GINT_TO_POINTER (id), &key, &value))
     {
@@ -549,8 +440,6 @@ xkb_config_state_changed (XklEngine *engine,
 void
 xkb_config_xkl_config_changed (XklEngine *engine)
 {
-    kbd_config_free (config->settings->kbd_config);
-    config->settings->kbd_config = NULL;
     xkb_config_update_settings (config->settings);
 
     if (config->callback != NULL)
diff --git a/panel-plugin/xkb-config.h b/panel-plugin/xkb-config.h
index c251e53..0b14a10 100644
--- a/panel-plugin/xkb-config.h
+++ b/panel-plugin/xkb-config.h
@@ -43,19 +43,7 @@ typedef enum
 
 typedef struct
 {
-    gchar*          model;
-    gchar*          layouts;
-    gchar*          variants;
-    gchar*          toggle_option;
-    gchar*          compose_key_position;
-} t_xkb_kbd_config;
-
-typedef struct
-{
     t_group_policy      group_policy;
-    gint                default_group;
-    gboolean            never_modify_config;
-    t_xkb_kbd_config*   kbd_config;
 } t_xkb_settings;
 
 typedef void        (*XkbCallback)                  (gint current_group,
@@ -66,7 +54,6 @@ gboolean          xkb_config_initialize                   (t_xkb_settings *setti
                                                            XkbCallback callback,
                                                            gpointer data);
 void              xkb_config_finalize                     (void);
-void              kbd_config_free                         (t_xkb_kbd_config *kbd_config);
 gboolean          xkb_config_update_settings              (t_xkb_settings *settings);
 gint              xkb_config_get_group_count              (void);
 const gchar*      xkb_config_get_group_name               (gint group);
diff --git a/panel-plugin/xkb-settings-dialog.c b/panel-plugin/xkb-settings-dialog.c
index e792725..18851f1 100644
--- a/panel-plugin/xkb-settings-dialog.c
+++ b/panel-plugin/xkb-settings-dialog.c
@@ -65,7 +65,6 @@ enum enumeration
     NUM
 };
 
-static gchar       *xkb_settings_layout_dialog_run     ();
 static void         xkb_settings_update_from_ui        (t_xkb *xkb);
 
 /**************************************************************/
@@ -102,400 +101,6 @@ on_group_policy_changed (GtkComboBox *cb, t_xkb *xkb)
     xkb->settings->group_policy = gtk_combo_box_get_active (cb);
 }
 
-/* from the gnome control center keyboard applet */
-static char *
-xci_desc_to_utf8 (XklConfigItem * ci)
-{
-    char *sd = g_strstrip (ci->description);
-    return sd[0] == 0 ? g_strdup (ci->name) : g_strdup(sd);
-}
-/**/
-
-static void
-xkb_settings_fill_layout_tree_model_with_config (t_xkb *xkb)
-{
-    GtkTreeIter iter;
-    gint layout_nb = 0;
-
-    t_xkb_kbd_config *config = xkb->settings->kbd_config;
-
-    char **layouts = g_strsplit_set (config->layouts, ",", 0);
-    char **variants = g_strsplit_set (config->variants, ",", 0);
-
-    while (layouts[layout_nb] != NULL)
-    {
-        gtk_list_store_append (xkb->layout_store, &iter);
-        gtk_list_store_set (xkb->layout_store, &iter,
-                            DEFAULT_LAYOUT, (layout_nb == xkb->settings->default_group),
-                            LAYOUTS, layouts[layout_nb],
-                            VARIANTS, variants[layout_nb],
-                            -1);
-        layout_nb += 1;
-    }
-
-    g_strfreev (layouts);
-    g_strfreev (variants);
-}
-
-static void
-xkb_settings_add_toggle_options_to_list (XklConfigRegistry * config_registry,
-                                         XklConfigItem * config_item,
-                                         t_xkb *xkb)
-{
-    GtkTreeIter iter;
-    char *utf_option_name;
-
-    /* add a possibility to set no toggle layout combination */
-    if (config_item == NULL)
-    {
-        gtk_list_store_append (xkb->toggle_options_store, &iter);
-        gtk_list_store_set (xkb->toggle_options_store, &iter,
-                            DESC, "-",
-                            NOM, "", -1);
-        return;
-    }
-
-    utf_option_name = xci_desc_to_utf8 (config_item);
-    gtk_list_store_append (xkb->toggle_options_store, &iter);
-    gtk_list_store_set (xkb->toggle_options_store, &iter,
-                      DESC, utf_option_name,
-                      NOM, config_item->name, -1);
-    g_free (utf_option_name);
-}
-
-static void
-xkb_settings_add_compose_key_position_options_to_list (XklConfigRegistry * config_registry,
-                                                     XklConfigItem * config_item,
-                                                     t_xkb *xkb)
-{
-    GtkTreeIter iter;
-    char *utf_option_name;
-
-    /* add a possibility to set no position for the compose key */
-    if (config_item == NULL)
-    {
-        gtk_list_store_append (xkb->compose_key_options_store, &iter);
-        gtk_list_store_set (xkb->compose_key_options_store, &iter,
-                            DESC, "-",
-                            NOM, "", -1);
-        return;
-    }
-
-    utf_option_name = xci_desc_to_utf8 (config_item);
-    gtk_list_store_append (xkb->compose_key_options_store, &iter);
-    gtk_list_store_set (xkb->compose_key_options_store, &iter,
-                        DESC, utf_option_name,
-                        NOM, config_item->name, -1);
-    g_free (utf_option_name);
-}
-
-static void
-xkb_settings_add_kbd_model_to_list (XklConfigRegistry * config_registry,
-                                    XklConfigItem * config_item,
-                                    t_xkb *xkb)
-{
-    GtkTreeIter iter;
-    char *utf_model_name = xci_desc_to_utf8 (config_item);
-    gtk_list_store_append (xkb->combo_store, &iter);
-    gtk_list_store_set (xkb->combo_store, &iter,
-                      DESC, utf_model_name,
-                      NOM, config_item->name, -1);
-    g_free (utf_model_name);
-}
-
-static void
-xkb_settings_set_toggle_option_combo_default_value (t_xkb *xkb)
-{
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-    gchar *id;
-
-    t_xkb_kbd_config *config = xkb->settings->kbd_config;
-
-    model = GTK_TREE_MODEL (xkb->toggle_options_store);
-    if (!gtk_tree_model_get_iter_first (model, &iter))
-        return;
-
-    gtk_tree_model_get (model, &iter, NOM, &id, -1);
-
-    if (config->toggle_option == NULL)
-    {
-        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->toggle_options_combo), &iter);
-        g_free (id);
-        return;
-    }
-
-    if (strcmp (id, config->toggle_option) == 0)
-    {
-        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->toggle_options_combo), &iter);
-    }
-    else
-    {
-        while (gtk_tree_model_iter_next(model, &iter))
-        {
-            g_free (id);
-            gtk_tree_model_get (model, &iter, NOM, &id, -1);
-
-            if (strcmp (id, config->toggle_option) == 0)
-            {
-                gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->toggle_options_combo), &iter);
-                break;
-            }
-        }
-    }
-
-    g_free (id);
-}
-
-static void
-xkb_settings_set_compose_key_position_combo_default_value (t_xkb *xkb)
-{
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-    gchar *id;
-
-    t_xkb_kbd_config *config = xkb->settings->kbd_config;
-
-    model = GTK_TREE_MODEL (xkb->compose_key_options_store);
-    if (!gtk_tree_model_get_iter_first (model, &iter))
-        return;
-    gtk_tree_model_get (model, &iter, NOM, &id, -1);
-
-    if (config->compose_key_position == NULL)
-    {
-        /* select the empty option if compose_key_position is null */
-        g_free (id);
-        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->compose_key_options_combo), &iter);
-        return;
-    }
-
-    if (strcmp (id, config->compose_key_position) == 0)
-    {
-        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->compose_key_options_combo), &iter);
-    }
-    else
-    {
-        while (gtk_tree_model_iter_next (model, &iter))
-        {
-            g_free (id);
-            gtk_tree_model_get (model, &iter, NOM, &id, -1);
-
-            if (strcmp (id, config->compose_key_position) == 0)
-            {
-                gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->compose_key_options_combo), &iter);
-                break;
-            }
-        }
-    }
-
-    g_free (id);
-}
-
-static void
-xkb_settings_set_kbd_combo_default_value (t_xkb *xkb)
-{
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-    gchar *id;
-    t_xkb_kbd_config *config = xkb->settings->kbd_config;
-
-    model = GTK_TREE_MODEL (xkb->combo_store);
-    if (!gtk_tree_model_get_iter_first (model, &iter))
-        return;
-
-    gtk_tree_model_get (model, &iter, NOM, &id, -1);
-    if (strcmp (id, config->model) == 0 )
-        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->kbd_model_combo), &iter);
-    else
-    {
-        while (gtk_tree_model_iter_next(model, &iter))
-        {
-            g_free (id);
-            gtk_tree_model_get (model, &iter, NOM, &id, -1);
-
-            if (strcmp (id, config->model) == 0)
-            {
-                gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->kbd_model_combo), &iter);
-                break;
-            }
-        }
-    }
-
-    g_free (id);
-}
-
-static gint
-xkb_settings_get_group_count (t_xkb *xkb)
-{
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-    gint count = 1;
-
-    model = gtk_tree_view_get_model (GTK_TREE_VIEW (xkb->layout_tree_view));
-    if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter))
-        return 0;
-    while (gtk_tree_model_iter_next (GTK_TREE_MODEL (model), &iter))
-        count++;
-    return count;
-}
-
-static void
-xkb_settings_show_hide_layout_buttons (t_xkb *xkb)
-{
-    gint nb = xkb_settings_get_group_count (xkb);
-    gint max_nb = xkb_config_get_max_layout_number ();
-    gtk_widget_set_sensitive (xkb->add_layout_btn,
-            (nb < max_nb && !xkb->settings->never_modify_config));
-    gtk_widget_set_sensitive (xkb->rm_layout_btn,
-            (nb > 1 && !xkb->settings->never_modify_config));
-}
-
-static void
-xkb_settings_edit_layout_btn_show (GtkTreeView *tree_view,
-                                   t_xkb *xkb)
-{
-    GtkTreePath *p;
-    GtkTreeViewColumn *c;
-    gtk_tree_view_get_cursor (GTK_TREE_VIEW (tree_view), &p, &c);
-    gtk_widget_set_sensitive (xkb->edit_layout_btn,
-            (p != NULL && !xkb->settings->never_modify_config));
-    gtk_tree_path_free (p);
-}
-
-static void
-xkb_settings_edit_layout (GtkWidget *widget, t_xkb *xkb)
-{
-    GtkTreeModel *model;
-    gchar *c;
-    gboolean is_default;
-
-    model = gtk_tree_view_get_model (GTK_TREE_VIEW (xkb->layout_tree_view));
-
-    c = xkb_settings_layout_dialog_run ();
-    if (c != NULL)
-    {
-        GtkTreeSelection *selection;
-        GtkTreeIter iter;
-        gchar **strings;
-
-        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (xkb->layout_tree_view));
-        strings = g_strsplit_set(c, ",", 0);
-
-        gtk_tree_selection_get_selected (selection, &model, &iter);
-        gtk_tree_model_get (model, &iter, DEFAULT_LAYOUT, &is_default, -1);
-        gtk_list_store_set (xkb->layout_store, &iter,
-                            DEFAULT_LAYOUT, is_default,
-                            LAYOUTS, strings[0],
-                            VARIANTS, strings[1],
-                            -1);
-        xkb_settings_update_from_ui (xkb);
-        g_strfreev (strings);
-    }
-    g_free(c);
-    xkb_settings_edit_layout_btn_show (GTK_TREE_VIEW (xkb->layout_tree_view), xkb);
-}
-
-static void
-xkb_settings_add_layout (GtkWidget *widget, t_xkb *xkb)
-{
-    gchar *c;
-    c = xkb_settings_layout_dialog_run();
-    if (c != NULL)
-    {
-        GtkTreeIter iter;
-        gchar **strings;
-
-        strings = g_strsplit_set(c, ",", 0);
-        gtk_list_store_append (xkb->layout_store, &iter);
-        gtk_list_store_set (xkb->layout_store, &iter,
-                        DEFAULT_LAYOUT, FALSE,
-                        LAYOUTS, strings[0],
-                        VARIANTS, strings[1],
-                        -1);
-        xkb_settings_show_hide_layout_buttons (xkb);
-        xkb_settings_update_from_ui (xkb);
-        g_strfreev (strings);
-    }
-    g_free (c);
-    xkb_settings_edit_layout_btn_show (GTK_TREE_VIEW (xkb->layout_tree_view), xkb);
-}
-
-static void
-xkb_settings_rm_layout (GtkWidget *widget, t_xkb *xkb)
-{
-    GtkTreeSelection *selection;
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-    gboolean is_default;
-
-    model = gtk_tree_view_get_model (GTK_TREE_VIEW (xkb->layout_tree_view));
-    selection = gtk_tree_view_get_selection (
-                    GTK_TREE_VIEW (xkb->layout_tree_view));
-    if (gtk_tree_selection_get_selected (selection, &model, &iter))
-    {
-        gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, DEFAULT_LAYOUT, &is_default, -1);
-        gtk_list_store_remove (xkb->layout_store, &iter);
-        if (is_default)
-        {
-            if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter))
-            {
-                gtk_list_store_set (GTK_LIST_STORE (model), &iter, DEFAULT_LAYOUT, TRUE);
-            }
-        }
-        gtk_widget_set_sensitive (xkb->add_layout_btn, TRUE);
-        xkb_settings_show_hide_layout_buttons (xkb);
-    }
-    xkb_settings_edit_layout_btn_show (GTK_TREE_VIEW (xkb->layout_tree_view), xkb);
-    xkb_settings_update_from_ui (xkb);
-}
-
-static void
-xkb_settings_default_layout_toggled (GtkCellRendererToggle *renderer,
-                                     gchar *path,
-                                     t_xkb *xkb)
-{
-    /* warning, super dumb code - set all layout toggle values to
-       false, then set the toggled one to true */
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-
-    model = gtk_tree_view_get_model (GTK_TREE_VIEW (xkb->layout_tree_view));
-    if (gtk_tree_model_get_iter_first (model, &iter))
-    {
-        do
-        {
-            gtk_list_store_set (GTK_LIST_STORE (model), &iter, DEFAULT_LAYOUT, FALSE, -1);
-        } while (gtk_tree_model_iter_next (model, &iter));
-
-
-        if (gtk_tree_model_get_iter_from_string (model, &iter, path))
-        {
-            gtk_list_store_set (GTK_LIST_STORE (model), &iter, DEFAULT_LAYOUT, TRUE, -1);
-        }
-        xkb_settings_update_from_ui (xkb);
-    }
-}
-
-static gboolean
-xkb_settings_config_modification_disabled_tooltip (GtkWidget *widget,
-                                                   gint x, gint y,
-                                                   gboolean keyboard_mode,
-                                                   GtkTooltip *tooltip,
-                                                   t_xkb *xkb)
-{
-    if (xkb->settings->never_modify_config)
-    {
-        gtk_tooltip_set_text (GTK_TOOLTIP (tooltip),
-            _("XKB configuration modifications are\n"
-            "disabled from the config file.\n\n"
-            "See the README file for more information."));
-
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
 void
 xfce_xkb_configure (XfcePanelPlugin *plugin,
                     t_xkb *xkb)
@@ -504,14 +109,8 @@ xfce_xkb_configure (XfcePanelPlugin *plugin,
     GtkWidget *vbox, *display_type_frame, *group_policy_frame, *bin;
     GtkWidget *display_textsize_frame, *display_textsize_optmenu;
 
-    GtkCellRenderer *renderer, *renderer2;
-    GtkWidget *vbox1, *vbox2, *hbox, *frame;
-    XklConfigRegistry *registry;
-
     xfce_panel_plugin_block_menu (plugin);
 
-    registry = xkb_config_get_xkl_registry ();
-
     settings_dialog = xfce_titled_dialog_new_with_buttons (_("Keyboard Layouts"),
             NULL, GTK_DIALOG_NO_SEPARATOR,
             GTK_STOCK_CLOSE, GTK_RESPONSE_OK, NULL);
@@ -521,168 +120,6 @@ xfce_xkb_configure (XfcePanelPlugin *plugin,
     gtk_widget_show (vbox);
     gtk_container_add (GTK_CONTAINER (GTK_DIALOG (settings_dialog)->vbox), vbox);
 
-    renderer = gtk_cell_renderer_text_new ();
-    renderer2 = gtk_cell_renderer_toggle_new ();
-    gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer2), TRUE);
-    g_object_set (G_OBJECT (renderer2), "activatable", TRUE, NULL);
-
-    xkb->combo_store = gtk_list_store_new (COMBO_NUM, G_TYPE_STRING, G_TYPE_STRING);
-    xkb->toggle_options_store = gtk_list_store_new (COMBO_NUM, G_TYPE_STRING, G_TYPE_STRING);
-    xkb->compose_key_options_store = gtk_list_store_new (COMBO_NUM, G_TYPE_STRING, G_TYPE_STRING);
-
-    vbox1 = gtk_vbox_new (FALSE, 5);
-    gtk_container_add (GTK_CONTAINER (vbox), vbox1);
-    gtk_widget_show (vbox1);
-
-    frame = xfce_gtk_frame_box_new (_("Keyboard model:"), &bin);
-    gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_widget_show ((frame));
-    gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
-
-    xkb->kbd_model_combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (xkb->combo_store));
-    gtk_widget_set_size_request (xkb->kbd_model_combo, 230, -1);
-    gtk_container_add (GTK_CONTAINER (bin), xkb->kbd_model_combo);
-    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (xkb->kbd_model_combo), renderer, TRUE);
-    gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (xkb->kbd_model_combo), renderer, "text", 0);
-
-    xkl_config_registry_foreach_model (registry,
-                       (ConfigItemProcessFunc) xkb_settings_add_kbd_model_to_list,
-                           xkb);
-    gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (xkb->combo_store),
-                                        0, GTK_SORT_ASCENDING);
-
-    xkb_settings_set_kbd_combo_default_value (xkb);
-    gtk_widget_show (xkb->kbd_model_combo);
-
-    gtk_widget_set_sensitive (GTK_WIDGET (xkb->kbd_model_combo), !xkb->settings->never_modify_config);
-    g_object_set (G_OBJECT (xkb->kbd_model_combo), "has-tooltip", TRUE, NULL);
-    g_signal_connect (xkb->kbd_model_combo, "query-tooltip", G_CALLBACK (xkb_settings_config_modification_disabled_tooltip), xkb);
-
-    /* toggle layout option */
-    frame = xfce_gtk_frame_box_new (_("Change layout option:"), &bin);
-    gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_widget_show (frame);
-    gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
-
-    xkb->toggle_options_combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (xkb->toggle_options_store));
-    gtk_widget_set_size_request (xkb->toggle_options_combo, 230, -1);
-    gtk_container_add (GTK_CONTAINER (bin), xkb->toggle_options_combo);
-    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (xkb->toggle_options_combo), renderer, TRUE);
-    gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (xkb->toggle_options_combo), renderer, "text", 0);
-    xkb_settings_add_toggle_options_to_list (NULL, NULL, xkb);
-    xkl_config_registry_foreach_option (registry,
-                                        "grp",
-                                        (ConfigItemProcessFunc) xkb_settings_add_toggle_options_to_list,
-                                        xkb);
-    gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (xkb->toggle_options_store),
-                                          0, GTK_SORT_ASCENDING);
-
-    xkb_settings_set_toggle_option_combo_default_value (xkb);
-    gtk_widget_show (xkb->toggle_options_combo);
-
-    gtk_widget_set_sensitive (GTK_WIDGET (xkb->toggle_options_combo), !xkb->settings->never_modify_config);
-    g_object_set (G_OBJECT (xkb->toggle_options_combo), "has-tooltip", TRUE, NULL);
-    g_signal_connect (xkb->toggle_options_combo, "query-tooltip", G_CALLBACK (xkb_settings_config_modification_disabled_tooltip), xkb);
-
-    /* compose key position option */
-    frame = xfce_gtk_frame_box_new (_("Compose key position:"), &bin);
-    gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_widget_show (frame);
-    gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
-
-    xkb->compose_key_options_combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (xkb->compose_key_options_store));
-    gtk_widget_set_size_request (xkb->compose_key_options_combo, 230, -1);
-    gtk_container_add (GTK_CONTAINER (bin), xkb->compose_key_options_combo);
-    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (xkb->compose_key_options_combo), renderer, TRUE);
-    gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (xkb->compose_key_options_combo), renderer, "text", 0);
-    xkb_settings_add_compose_key_position_options_to_list (NULL, NULL, xkb);
-    xkl_config_registry_foreach_option (registry,
-                                        "Compose key",
-                                        (ConfigItemProcessFunc) xkb_settings_add_compose_key_position_options_to_list,
-                                        xkb);
-    gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (xkb->compose_key_options_store),
-                                          0, GTK_SORT_ASCENDING);
-
-    xkb_settings_set_compose_key_position_combo_default_value (xkb);
-    gtk_widget_show (xkb->compose_key_options_combo);
-
-    gtk_widget_set_sensitive (GTK_WIDGET (xkb->compose_key_options_combo), !xkb->settings->never_modify_config);
-    g_object_set (G_OBJECT (xkb->compose_key_options_combo), "has-tooltip", TRUE, NULL);
-    g_signal_connect (xkb->compose_key_options_combo, "query-tooltip", G_CALLBACK (xkb_settings_config_modification_disabled_tooltip), xkb);
-
-
-    /* the actual layouts */
-    frame = xfce_gtk_frame_box_new (_("Keyboard layouts:"), &bin);
-    gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_widget_show (frame);
-    gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
-
-    hbox = gtk_hbox_new (FALSE, 5);
-    gtk_container_add (GTK_CONTAINER (bin), hbox);
-    gtk_widget_show (hbox);
-
-    // TreeView
-    xkb->layout_tree_view = gtk_tree_view_new ();
-    gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (xkb->layout_tree_view),
-                                               -1,
-                                               _("Default"),
-                                               renderer2,
-                                               "active", DEFAULT_LAYOUT,
-                                               NULL);
-
-    gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (xkb->layout_tree_view),
-                                               -1,
-                                               _("Layout"),
-                                               renderer,
-                                               "text", LAYOUTS,
-                                               NULL);
-
-    renderer = gtk_cell_renderer_text_new ();
-    gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (xkb->layout_tree_view),
-                                               -1,
-                                               _("Variant"),
-                                               renderer,
-                                               "text", VARIANTS,
-                                               NULL);
-
-    xkb->layout_store = gtk_list_store_new (TREE_NUM, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING);
-    xkb_settings_fill_layout_tree_model_with_config (xkb);
-
-    gtk_tree_view_set_model (GTK_TREE_VIEW (xkb->layout_tree_view),
-                            GTK_TREE_MODEL (xkb->layout_store));
-
-    gtk_box_pack_start (GTK_BOX (hbox), xkb->layout_tree_view, TRUE, TRUE, 0);
-    gtk_widget_set_size_request (xkb->layout_tree_view, -1, 112);
-    gtk_widget_show (xkb->layout_tree_view);
-
-
-    vbox2 = gtk_vbox_new (FALSE, 5);
-    gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
-    gtk_container_set_border_width (GTK_CONTAINER (vbox2), 5);
-    gtk_widget_show (vbox2);
-
-    xkb->add_layout_btn = gtk_button_new_from_stock (GTK_STOCK_ADD);
-    gtk_box_pack_start (GTK_BOX (vbox2), xkb->add_layout_btn, FALSE, FALSE, 0);
-    gtk_widget_show (xkb->add_layout_btn);
-    g_object_set (G_OBJECT (xkb->add_layout_btn), "has-tooltip", TRUE, NULL);
-    g_signal_connect (xkb->add_layout_btn, "query-tooltip", G_CALLBACK (xkb_settings_config_modification_disabled_tooltip), xkb);
-
-
-    xkb->edit_layout_btn = gtk_button_new_from_stock (GTK_STOCK_EDIT);
-    gtk_box_pack_start (GTK_BOX (vbox2), xkb->edit_layout_btn, FALSE, FALSE, 0);
-    gtk_widget_show (xkb->edit_layout_btn);
-    g_object_set (G_OBJECT (xkb->edit_layout_btn), "has-tooltip", TRUE, NULL);
-    g_signal_connect (xkb->edit_layout_btn, "query-tooltip", G_CALLBACK (xkb_settings_config_modification_disabled_tooltip), xkb);
-
-    xkb->rm_layout_btn = gtk_button_new_from_stock (GTK_STOCK_DELETE);
-    gtk_box_pack_start (GTK_BOX (vbox2), xkb->rm_layout_btn, FALSE, FALSE, 0);
-    gtk_widget_show (xkb->rm_layout_btn);
-    g_object_set (G_OBJECT (xkb->rm_layout_btn), "has-tooltip", TRUE, NULL);
-    g_signal_connect (xkb->rm_layout_btn, "query-tooltip", G_CALLBACK (xkb_settings_config_modification_disabled_tooltip), xkb);
-
-    xkb_settings_show_hide_layout_buttons (xkb);
-    xkb_settings_edit_layout_btn_show (GTK_TREE_VIEW (xkb->layout_tree_view), xkb);
-
     /*****/
     display_type_frame = xfce_gtk_frame_box_new (_("Show layout as:"), &bin);
     gtk_widget_show (display_type_frame);
@@ -731,15 +168,6 @@ xfce_xkb_configure (XfcePanelPlugin *plugin,
     g_signal_connect (group_policy_combo, "changed", G_CALLBACK (on_group_policy_changed), xkb);
     g_signal_connect (display_textsize_optmenu, "changed", G_CALLBACK (on_display_textsize_changed), xkb);
 
-    g_signal_connect (xkb->add_layout_btn, "clicked", G_CALLBACK (xkb_settings_add_layout), xkb);
-    g_signal_connect (xkb->rm_layout_btn, "clicked", G_CALLBACK (xkb_settings_rm_layout), xkb);
-    g_signal_connect (xkb->edit_layout_btn, "clicked",  G_CALLBACK (xkb_settings_edit_layout), xkb);
-    g_signal_connect (xkb->layout_tree_view, "cursor-changed", G_CALLBACK (xkb_settings_edit_layout_btn_show), xkb);
-
-    g_signal_connect (renderer2, "toggled", G_CALLBACK (xkb_settings_default_layout_toggled), xkb);
-
-    g_object_unref (registry);
-
     gtk_widget_show (settings_dialog);
 }
 
@@ -771,239 +199,8 @@ xfce_xkb_about (XfcePanelPlugin *plugin)
 }
 
 static void
-xkb_settings_add_variant_to_available_layouts_tree (XklConfigRegistry * config_registry,
-                                                    XklConfigItem * config_item,
-                                                    GtkTreeStore *treestore)
-{
-  GtkTreeIter child;
-  char *utf_variant_name = xci_desc_to_utf8 (config_item);
-
-  gtk_tree_store_append (treestore, &child, &current_iter);
-  gtk_tree_store_set (treestore, &child,
-              AVAIL_LAYOUT_TREE_COL_DESCRIPTION, utf_variant_name,
-              AVAIL_LAYOUT_TREE_COL_ID, config_item->name, -1);
-  g_free (utf_variant_name);
-}
-
-static void
-xkb_settings_add_layout_to_available_layouts_tree (XklConfigRegistry * config_registry,
-                                                   XklConfigItem * config_item,
-                                                   GtkTreeStore *treestore)
-{
-  char *utf_layout_name = xci_desc_to_utf8 (config_item);
-
-  gtk_tree_store_append (treestore, &current_iter, NULL);
-  gtk_tree_store_set (treestore, &current_iter,
-              AVAIL_LAYOUT_TREE_COL_DESCRIPTION, utf_layout_name,
-              AVAIL_LAYOUT_TREE_COL_ID, config_item->name, -1);
-  g_free (utf_layout_name);
-
-  xkl_config_registry_foreach_layout_variant (config_registry, config_item->name,
-                   (ConfigItemProcessFunc)xkb_settings_add_variant_to_available_layouts_tree,
-                               treestore);
-}
-
-static gchar *
-xkb_settings_layout_dialog_run (void)
-{
-    GtkWidget *dialog;
-    GtkTreeStore *treestore;
-    GtkWidget *tree_view = gtk_tree_view_new ();
-    GtkCellRenderer *renderer;
-    GtkTreeViewColumn *column;
-    GtkWidget *scrolledw;
-    XklConfigRegistry *registry;
-    int response;
-
-    registry = xkb_config_get_xkl_registry ();
-
-    dialog = xfce_titled_dialog_new_with_buttons(_("Add layout"),
-                            GTK_WINDOW (settings_dialog),
-                            GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
-                            GTK_STOCK_CANCEL,
-                            GTK_RESPONSE_CANCEL,
-                            GTK_STOCK_OK,
-                            GTK_RESPONSE_OK,
-                            NULL);
-
-    gtk_window_set_icon_name (GTK_WINDOW (dialog), "xfce4-keyboard");
-
-    treestore = gtk_tree_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
-
-    xkl_config_registry_foreach_layout (registry, (ConfigItemProcessFunc)
-            xkb_settings_add_layout_to_available_layouts_tree, treestore);
-    g_object_unref (registry);
-
-    renderer = gtk_cell_renderer_text_new ();
-
-    column =
-        gtk_tree_view_column_new_with_attributes (NULL,
-                                                  renderer,
-                                                  "text",
-                                                  AVAIL_LAYOUT_TREE_COL_DESCRIPTION,
-                                                  NULL);
-    gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view),
-               GTK_TREE_MODEL (treestore));
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (treestore),
-                                        0, GTK_SORT_ASCENDING);
-
-    scrolledw = gtk_scrolled_window_new (NULL, NULL);
-    gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), scrolledw);
-    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledw),
-                                    GTK_POLICY_AUTOMATIC,
-                                    GTK_POLICY_AUTOMATIC);
-    gtk_widget_show (scrolledw);
-
-    gtk_container_add (GTK_CONTAINER (scrolledw), tree_view);
-    gtk_widget_show (GTK_WIDGET (tree_view));
-
-    gtk_window_set_default_size(GTK_WINDOW (dialog), 400, 400);
-    gtk_widget_show (dialog);
-
-    response = gtk_dialog_run (GTK_DIALOG (dialog));
-
-    if (response == GTK_RESPONSE_OK)
-    {
-        GtkTreeSelection *selection;
-        GtkTreeModel *model;
-        GtkTreePath *tree_path;
-        GtkTreeIter iter;
-        gchar *id;
-        gchar *result;
-
-        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
-        model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
-
-        if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-        {
-            gtk_widget_destroy (dialog);
-            return NULL;
-        }
-        gtk_tree_model_get (model, &iter, AVAIL_LAYOUT_TREE_COL_ID, &id, -1);
-
-        tree_path = gtk_tree_model_get_path (model, &iter);
-        if (gtk_tree_path_get_depth (tree_path) == 1)
-            result = g_strconcat(id, ",", NULL);
-        else
-        {
-            gchar *tmp;
-
-            if (!gtk_tree_path_up(tree_path))
-            {
-                g_free (id);
-                gtk_tree_path_free (tree_path);
-                gtk_widget_destroy (dialog);
-                return NULL;
-            }
-
-            if (!gtk_tree_model_get_iter(model, &iter, tree_path))
-            {
-                g_free (id);
-                gtk_tree_path_free (tree_path);
-                gtk_widget_destroy (dialog);
-                return NULL;
-            }
-
-            gtk_tree_model_get (model, &iter, AVAIL_LAYOUT_TREE_COL_ID, &tmp, -1);
-            result = g_strconcat (tmp, ",", id, NULL);
-            g_free (tmp);
-        }
-
-        gtk_widget_destroy (dialog);
-        g_free (id);
-        gtk_tree_path_free (tree_path);
-
-        return result;
-    }
-    gtk_widget_destroy (dialog);
-
-    return NULL;
-}
-
-static void
 xkb_settings_update_from_ui (t_xkb *xkb)
 {
-    GtkTreeModel *model;
-    gchar *layouts, *variants, *kbdmodel, *toggle_option,
-          *compose_key_position;
-    t_xkb_kbd_config *kbd_config = xkb->settings->kbd_config;
-    GtkTreeIter iter;
-    gboolean is_default;
-    gint i = 0;
-
-    model = GTK_TREE_MODEL (xkb->combo_store);
-    if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->kbd_model_combo), &iter))
-    {
-        gtk_tree_model_get (model, &iter, NOM, &kbdmodel, -1);
-        g_free (kbd_config->model);
-        kbd_config->model = kbdmodel;
-    }
-
-    model = GTK_TREE_MODEL (xkb->toggle_options_store);
-    if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->toggle_options_combo), &iter))
-    {
-        gtk_tree_model_get (model, &iter, NOM, &toggle_option, -1);
-        g_free (kbd_config->toggle_option);
-        if (strcmp ("", toggle_option) == 0)
-            kbd_config->toggle_option = NULL;
-        else kbd_config->toggle_option = g_strdup (toggle_option);
-
-        g_free (toggle_option);
-    }
-
-    model = GTK_TREE_MODEL (xkb->compose_key_options_store);
-    if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->compose_key_options_combo), &iter))
-    {
-        gtk_tree_model_get (model, &iter, NOM, &compose_key_position, -1);
-        g_free (kbd_config->compose_key_position);
-        if (strcmp ("", compose_key_position) == 0)
-            kbd_config->compose_key_position = NULL;
-        else kbd_config->compose_key_position = g_strdup (compose_key_position);
-
-        g_free (compose_key_position);
-    }
-
-    model = GTK_TREE_MODEL (xkb->layout_store);
-    if (gtk_tree_model_get_iter_first (model, &iter))
-    {
-        gtk_tree_model_get (model, &iter, DEFAULT_LAYOUT, &is_default, LAYOUTS, &layouts, VARIANTS, &variants, -1);
-        if (is_default) xkb->settings->default_group = i;
-
-        g_free (kbd_config->layouts);
-        kbd_config->layouts = layouts;
-
-        g_free (kbd_config->variants);
-        if (variants != NULL)
-            kbd_config->variants = variants;
-        else
-            kbd_config->variants = g_strdup ("");
-
-        i = 1;
-        while (gtk_tree_model_iter_next (model, &iter))
-        {
-            gchar *tmp;
-
-            gtk_tree_model_get (model, &iter, DEFAULT_LAYOUT, &is_default, LAYOUTS, &layouts, VARIANTS, &variants, -1);
-            if (is_default) xkb->settings->default_group = i;
-            i++;
-
-            tmp = g_strconcat(kbd_config->layouts, ",", layouts, NULL);
-            g_free (kbd_config->layouts);
-            kbd_config->layouts = tmp;
-            g_free (layouts);
-
-            if (variants != NULL)
-                tmp = g_strconcat(kbd_config->variants, ",", variants, NULL);
-            else
-                tmp = g_strconcat(kbd_config->variants, ",", NULL);
-
-            g_free (kbd_config->variants);
-            kbd_config->variants = tmp;
-            g_free (variants);
-        }
-    }
-
     xkb_config_update_settings (xkb->settings);
     xkb_refresh_gui (xkb);
 }


More information about the Xfce4-commits mailing list