Updating branch refs/heads/master to 74a4232d6b4553d6517ac714223516763c8f6c4f (commit) from 498501367c4cfe96278585e106843f15c072fa6c (commit)
commit 74a4232d6b4553d6517ac714223516763c8f6c4f Author: Igor Slepchin <igor.slepc...@gmail.com> Date: Tue Jul 24 23:21:09 2012 -0400 Use prettier layout names in tooltips and popup menu. E.g., "Kurdish (Iran, Latin Alt-Q)" instead of "ir (ku_alt)" panel-plugin/xfce4-xkb-plugin.c | 5 +-- panel-plugin/xkb-config.c | 61 +++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/panel-plugin/xfce4-xkb-plugin.c b/panel-plugin/xfce4-xkb-plugin.c index 6da99b8..598d68a 100644 --- a/panel-plugin/xfce4-xkb-plugin.c +++ b/panel-plugin/xfce4-xkb-plugin.c @@ -385,12 +385,9 @@ xkb_populate_popup_menu (t_xkb *xkb) tmp = rsvg_handle_get_pixbuf (handle); } - layout_string = - xkb_util_get_layout_string (xkb_config_get_group_name (i), - xkb_config_get_variant (i)); + layout_string = xkb_config_get_pretty_layout_name (i); menu_item = gtk_image_menu_item_new_with_label (layout_string); - g_free (layout_string); g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (xkb_plugin_set_group), GINT_TO_POINTER (i)); diff --git a/panel-plugin/xkb-config.c b/panel-plugin/xkb-config.c index 6acd315..3967131 100644 --- a/panel-plugin/xkb-config.c +++ b/panel-plugin/xkb-config.c @@ -130,6 +130,54 @@ xkb_config_initialize (t_group_policy group_policy, return TRUE; } +static gchar * +xkb_config_xkb_description (XklConfigItem *config_item) +{ + gchar *ci_description; + gchar *description; + + ci_description = g_strstrip (config_item->description); + + if (ci_description[0] == 0) + description = g_strdup (config_item->name); + else + description = g_locale_to_utf8 (ci_description, -1, NULL, NULL, NULL); + + return description; +} + +static gchar* +xkb_config_create_pretty_layout_name (XklConfigRegistry *registry, + XklConfigItem *config_item, + gchar *layout_name, + gchar *layout_variant) +{ + gchar *pretty_layout_name; + + g_snprintf (config_item->name, sizeof (config_item->name), + "%s", layout_variant); + if (xkl_config_registry_find_variant (registry, layout_name, config_item)) + { + pretty_layout_name = xkb_config_xkb_description (config_item); + } + else + { + g_snprintf (config_item->name, sizeof (config_item->name), + "%s", layout_name); + if (xkl_config_registry_find_layout (registry, config_item)) + { + pretty_layout_name = xkb_config_xkb_description (config_item); + } + else + { + pretty_layout_name = xkb_util_get_layout_string (layout_name, + layout_variant); + } + } + + return pretty_layout_name; +} + static void xkb_config_initialize_xkb_options (const XklConfigRec *config_rec) { @@ -138,6 +186,8 @@ xkb_config_initialize_xkb_options (const XklConfigRec *config_rec) gint val, i; gpointer pval; gchar *imgfilename; + XklConfigRegistry *registry; + XklConfigItem *config_item; xkb_config_free (); @@ -156,6 +206,10 @@ xkb_config_initialize_xkb_options (const XklConfigRec *config_rec) config->variant_index_by_group = g_hash_table_new (NULL, NULL); index_variants = g_hash_table_new (g_str_hash, g_str_equal); + registry = xkl_config_registry_get_instance (config->engine); + xkl_config_registry_load (registry, FALSE); + config_item = xkl_config_item_new (); + for (i = 0; i < config->group_count; i++) { t_group_data *group_data = &config->group_data[i]; @@ -197,9 +251,12 @@ xkb_config_initialize_xkb_options (const XklConfigRec *config_rec) g_free (imgfilename); group_data->pretty_layout_name = - xkb_util_get_layout_string (group_data->group_name, - group_data->variant); + xkb_config_create_pretty_layout_name (registry, config_item, + group_data->group_name, + group_data->variant); } + g_object_unref (config_item); + g_object_unref (registry); g_hash_table_destroy (index_variants); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits