[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, ¤t_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, ¤t_iter, NULL);
- gtk_tree_store_set (treestore, ¤t_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