[Xfce4-commits] <xfce4-settings:master> Show descriptions instead of language codes.
Jérôme Guelfucci
noreply at xfce.org
Thu Sep 23 17:40:02 CEST 2010
Updating branch refs/heads/master
to a9d7037333308c2f87db2cc38d83d323af865e29 (commit)
from 056e562ac2e8275c90e88cddbde6ecdc8465edd3 (commit)
commit a9d7037333308c2f87db2cc38d83d323af865e29
Author: Jérôme Guelfucci <jeromeg at xfce.org>
Date: Thu Sep 23 12:07:19 2010 +0200
Show descriptions instead of language codes.
There are a bunch of Glib critical warnings but it seems to be linked to
the xkl stuff.
dialogs/keyboard-settings/xfce-keyboard-settings.c | 71 +++++++++++++++++---
1 files changed, 60 insertions(+), 11 deletions(-)
diff --git a/dialogs/keyboard-settings/xfce-keyboard-settings.c b/dialogs/keyboard-settings/xfce-keyboard-settings.c
index 5c7f4bc..3404be4 100644
--- a/dialogs/keyboard-settings/xfce-keyboard-settings.c
+++ b/dialogs/keyboard-settings/xfce-keyboard-settings.c
@@ -67,7 +67,9 @@ enum
enum
{
XKB_TREE_LAYOUTS = 0,
+ XKB_TREE_LAYOUTS_NAMES,
XKB_TREE_VARIANTS,
+ XKB_TREE_VARIANTS_NAMES,
XKB_TREE_NUM_COLUMNS
};
@@ -333,7 +335,7 @@ xfce_keyboard_settings_constructed (GObject *object)
settings);
/* Keyboard model combo */
- list_store = gtk_list_store_new (XKB_COMBO_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
+ list_store = gtk_list_store_new (XKB_COMBO_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), 0, GTK_SORT_ASCENDING);
xkl_config_registry_foreach_model (settings->priv->xkl_registry,
xfce_keyboard_settings_add_model_to_combo,
@@ -358,10 +360,10 @@ xfce_keyboard_settings_constructed (GObject *object)
xkb_layout_view = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_layout_view");
renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (xkb_layout_view), -1, _("Layout"), renderer, "text", XKB_TREE_LAYOUTS, NULL);
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (xkb_layout_view), -1, _("Variant"), renderer, "text", XKB_TREE_VARIANTS, NULL);
+ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (xkb_layout_view), -1, _("Layout"), renderer, "text", XKB_TREE_LAYOUTS_NAMES, NULL);
+ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (xkb_layout_view), -1, _("Variant"), renderer, "text", XKB_TREE_VARIANTS_NAMES, NULL);
- list_store = gtk_list_store_new (XKB_TREE_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
+ list_store = gtk_list_store_new (XKB_TREE_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
gtk_tree_view_set_model (GTK_TREE_VIEW (xkb_layout_view), GTK_TREE_MODEL (list_store));
xfce_keyboard_settings_init_layout (settings);
g_signal_connect (G_OBJECT (xkb_layout_view), "cursor-changed", G_CALLBACK (xfce_keyboard_settings_active_layout_cb), settings);
@@ -1108,6 +1110,7 @@ xfce_keyboard_settings_set_layout (XfceKeyboardSettings *settings)
static void
xfce_keyboard_settings_init_layout (XfceKeyboardSettings *settings)
{
+
XklState *xkl_state = NULL;
GObject *view;
GtkTreeSelection *selection;
@@ -1143,14 +1146,41 @@ xfce_keyboard_settings_init_layout (XfceKeyboardSettings *settings)
for (layout = layouts, variant = variants, group_id = 0; *layout != NULL; ++layout, ++group_id)
{
+ XklConfigItem *litem;
+ XklConfigItem *vitem;
+ gchar *layout_desc;
+ gchar *variant_desc;
+
+ litem = g_new0 (XklConfigItem, 1);
+ vitem = g_new0 (XklConfigItem, 1);
+
+ g_snprintf (litem->name, sizeof litem->name, "%s", *layout);
+ g_snprintf (vitem->name, sizeof vitem->name, "%s", *variant);
+
+ if (xkl_config_registry_find_layout (settings->priv->xkl_registry, litem))
+ layout_desc = litem->description;
+ else
+ layout_desc = *layout;
+
+ if (xkl_config_registry_find_variant (settings->priv->xkl_registry, *layout, vitem))
+ variant_desc = vitem->description;
+ else
+ variant_desc = *variant;
+
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter, XKB_TREE_LAYOUTS, *layout,
- XKB_TREE_VARIANTS, *variant, -1);
+ XKB_TREE_LAYOUTS_NAMES, layout_desc,
+ XKB_TREE_VARIANTS, *variant,
+ XKB_TREE_VARIANTS_NAMES, variant_desc,
+ -1);
if (current_group == group_id)
gtk_tree_selection_select_iter (selection, &iter);
if (*variant)
variant++;
+
+ g_free (litem);
+ g_free (vitem);
}
g_strfreev (layouts);
@@ -1285,7 +1315,11 @@ xfce_keyboard_settings_edit_layout_button_cb (GtkWidget *widget,
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
strings = g_strsplit_set (layout, ",", 0);
gtk_tree_selection_get_selected (selection, &model, &iter);
- gtk_list_store_set (GTK_LIST_STORE (model), &iter, XKB_TREE_LAYOUTS, strings[0], XKB_TREE_VARIANTS, strings[1], -1);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter, XKB_TREE_LAYOUTS, strings[0],
+ XKB_TREE_LAYOUTS_NAMES, strings[1],
+ XKB_TREE_VARIANTS, strings[2],
+ XKB_TREE_VARIANTS_NAMES, strings[3],
+ -1);
xfce_keyboard_settings_set_layout (settings);
g_strfreev (strings);
}
@@ -1311,7 +1345,11 @@ xfce_keyboard_settings_add_layout_button_cb (GtkWidget *widget,
model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
strings = g_strsplit_set (layout, ",", 0);
- gtk_list_store_set (GTK_LIST_STORE (model), &iter, XKB_TREE_LAYOUTS, strings[0], XKB_TREE_VARIANTS, strings[1], -1);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter, XKB_TREE_LAYOUTS, strings[0],
+ XKB_TREE_LAYOUTS_NAMES, strings[1],
+ XKB_TREE_VARIANTS, strings[2],
+ XKB_TREE_VARIANTS_NAMES, strings[3],
+ -1);
xfce_keyboard_settings_update_layout_buttons (settings);
xfce_keyboard_settings_set_layout (settings);
g_strfreev (strings);
@@ -1343,6 +1381,7 @@ xfce_keyboard_settings_del_layout_button_cb (GtkWidget *widget,
gtk_tree_selection_select_iter (selection, &iter2);
xfce_keyboard_settings_update_layout_buttons (settings);
+ xfce_keyboard_settings_set_layout (settings);
}
}
@@ -1417,6 +1456,8 @@ xfce_keyboard_settings_layout_selection (XfceKeyboardSettings *settings)
GtkTreeViewColumn *column;
GtkTreeSelection *selection;
gchar *val_layout;
+ gchar *layout_desc;
+ gchar *variant_desc;
gchar *layout;
gchar *variant;
gint result;
@@ -1444,22 +1485,30 @@ xfce_keyboard_settings_layout_selection (XfceKeyboardSettings *settings)
{
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (layout_selection_view));
gtk_tree_selection_get_selected (selection, &model, &iter);
- gtk_tree_model_get (model, &iter, XKB_AVAIL_LAYOUTS_TREE_ID, &layout, -1);
+ gtk_tree_model_get (model, &iter, XKB_AVAIL_LAYOUTS_TREE_ID, &layout,
+ XKB_AVAIL_LAYOUTS_TREE_DESCRIPTION, &layout_desc, -1);
path = gtk_tree_model_get_path (model, &iter);
if (gtk_tree_path_get_depth (path) == 1)
- variant = g_strdup ("");
+ {
+ variant = g_strdup ("");
+ variant_desc = g_strdup ("");
+ }
else
{
variant = layout;
+ variant_desc = layout_desc;
gtk_tree_path_up (path);
gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_model_get (model, &iter, XKB_AVAIL_LAYOUTS_TREE_ID, &layout, -1);
+ gtk_tree_model_get (model, &iter, XKB_AVAIL_LAYOUTS_TREE_ID, &layout,
+ XKB_AVAIL_LAYOUTS_TREE_DESCRIPTION, &layout_desc, -1);
}
- val_layout = g_strconcat (layout, ",", variant, NULL);
+ val_layout = g_strconcat (layout, ",", layout_desc, ",", variant, ",", variant_desc, NULL);
g_free (layout);
g_free (variant);
+ g_free (layout_desc);
+ g_free (variant_desc);
}
gtk_widget_hide (GTK_WIDGET (keyboard_layout_selection_dialog));
More information about the Xfce4-commits
mailing list