[Goodies-commits] r6591 - xfce4-xkb-plugin/branches/compose-key/panel-plugin

Alexander Iliev sasoiliev at xfce.org
Wed Jan 28 17:22:48 CET 2009


Author: sasoiliev
Date: 2009-01-28 16:22:48 +0000 (Wed, 28 Jan 2009)
New Revision: 6591

Modified:
   xfce4-xkb-plugin/branches/compose-key/panel-plugin/xfce4-xkb-plugin.c
   xfce4-xkb-plugin/branches/compose-key/panel-plugin/xfce4-xkb-plugin.h
   xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-config.c
   xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-config.h
   xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-settings-dialog.c
Log:
initial compose key position option implementation

Modified: xfce4-xkb-plugin/branches/compose-key/panel-plugin/xfce4-xkb-plugin.c
===================================================================
--- xfce4-xkb-plugin/branches/compose-key/panel-plugin/xfce4-xkb-plugin.c	2009-01-28 16:16:06 UTC (rev 6590)
+++ xfce4-xkb-plugin/branches/compose-key/panel-plugin/xfce4-xkb-plugin.c	2009-01-28 16:22:48 UTC (rev 6591)
@@ -269,6 +269,7 @@
         xfce_rc_write_entry (rcfile, "layouts", xkb->settings->kbd_config->layouts);
         xfce_rc_write_entry (rcfile, "variants", xkb->settings->kbd_config->variants);
         xfce_rc_write_entry (rcfile, "options", xkb->settings->kbd_config->toggle_option);
+        xfce_rc_write_entry (rcfile, "compose_key_position", xkb->settings->kbd_config->compose_key_position);
     }
 
     xfce_rc_close (rcfile);
@@ -301,6 +302,16 @@
         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->options = g_strdup (xfce_rc_read_entry (rcfile, "options", NULL));
+        xkb->settings->kbd_config->compose_key_position = g_strdup (xfce_rc_read_entry (rcfile, "compose_key_position", NULL));
+        if (xkb->settings->kbd_config->compose_key_position
+                && strlen (xkb->settings->kbd_config->compose_key_position) > 0)
+        {
+            gchar *tmp = xkb->settings->kbd_config->options;
+            xkb->settings->kbd_config->options = 
+                g_strconcat (xkb->settings->kbd_config->options, 
+                             ",", xkb->settings->kbd_config->compose_key_position, NULL);
+            g_free (tmp);
+        }
 
         xfce_rc_close (rcfile);
 

Modified: xfce4-xkb-plugin/branches/compose-key/panel-plugin/xfce4-xkb-plugin.h
===================================================================
--- xfce4-xkb-plugin/branches/compose-key/panel-plugin/xfce4-xkb-plugin.h	2009-01-28 16:16:06 UTC (rev 6590)
+++ xfce4-xkb-plugin/branches/compose-key/panel-plugin/xfce4-xkb-plugin.h	2009-01-28 16:22:48 UTC (rev 6591)
@@ -72,6 +72,9 @@
     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;

Modified: xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-config.c
===================================================================
--- xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-config.c	2009-01-28 16:16:06 UTC (rev 6590)
+++ xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-config.c	2009-01-28 16:22:48 UTC (rev 6591)
@@ -293,7 +293,7 @@
 
     /* select the first "grp" option and use it (should be fixed to support more options) */
     opt = config->config_rec->options;
-    //settings->kbd_config->options;
+    /*settings->kbd_config->options;*/
     while (opt && *opt)
     {
         prefix = g_strsplit(*opt, ":", 2);
@@ -302,6 +302,11 @@
             settings->kbd_config->toggle_option = *opt;
             break;
         }
+        else if (prefix && strcmp(*prefix, "compose") == 0)
+        {
+            settings->kbd_config->compose_key_position = *opt;
+            break;
+        }
         opt++;
     }
     

Modified: xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-config.h
===================================================================
--- xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-config.h	2009-01-28 16:16:06 UTC (rev 6590)
+++ xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-config.h	2009-01-28 16:22:48 UTC (rev 6591)
@@ -48,6 +48,7 @@
     gchar*          variants;
     gchar*          options;
     gchar*          toggle_option;
+    gchar*          compose_key_position;
 } t_xkb_kbd_config;
 
 typedef struct

Modified: xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-settings-dialog.c
===================================================================
--- xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-settings-dialog.c	2009-01-28 16:16:06 UTC (rev 6590)
+++ xfce4-xkb-plugin/branches/compose-key/panel-plugin/xkb-settings-dialog.c	2009-01-28 16:22:48 UTC (rev 6591)
@@ -98,8 +98,8 @@
 char *
 xci_desc_to_utf8 (XklConfigItem * ci)
 {
-  char *sd = g_strstrip (ci->description);
-  return sd[0] == 0 ? g_strdup (ci->name) : g_strdup(sd);
+    char *sd = g_strstrip (ci->description);
+    return sd[0] == 0 ? g_strdup (ci->name) : g_strdup(sd);
 }
 /**/
 
@@ -139,6 +139,19 @@
 }
 
 static void
+xkb_settings_add_combo_key_position_options_to_list (XklConfigRegistry * config_registry,
+                                                     XklConfigItem * config_item,
+                                                     t_xkb *xkb)
+{
+    char *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)
@@ -184,7 +197,41 @@
     }
     
     g_free (id);
+}
 
+void
+xkb_settings_set_compose_key_position_combo_default_value (t_xkb *xkb)
+{
+    gchar *id;
+
+    t_xkb_kbd_config *config = xkb->settings->kbd_config;
+
+    if (config->compose_key_position == NULL)
+        return;
+
+    model = GTK_TREE_MODEL (xkb->compose_key_options_store);
+    gtk_tree_model_get_iter_first (model, &iter);
+    gtk_tree_model_get (model, &iter, NOM, &id, -1);
+    XKB_DEBUG ("COMPOSE KEY: ", config->compose_key_position);
+    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))
+        {
+            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);
 }
 
 void
@@ -400,6 +447,7 @@
 
     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);
@@ -429,6 +477,7 @@
     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_framebox_new (_("Change layout option:"), TRUE);
     gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
     gtk_widget_show (frame);
@@ -440,11 +489,11 @@
     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);
     xkl_config_registry_foreach_option (registry,
-                       "grp",
-                                       (ConfigItemProcessFunc) xkb_settings_add_toggle_options_to_list,
-                                       xkb);
+                                        "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);
+                                          0, GTK_SORT_ASCENDING);
 
     xkb_settings_set_toggle_option_combo_default_value (xkb);
     gtk_widget_show (xkb->toggle_options_combo);
@@ -452,7 +501,35 @@
     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_framebox_new (_("Compose key position:"), TRUE);
+    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);
+    xfce_framebox_add (XFCE_FRAMEBOX (frame), 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);
+    xkl_config_registry_foreach_option (registry,
+                                        "Compose key",
+                                        (ConfigItemProcessFunc) xkb_settings_add_combo_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_DEBUG ("compose key: ", xkb->settings->kbd_config->compose_key_position);
+    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_framebox_new (_("Keyboard layouts:"), TRUE);
     gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
     gtk_widget_show (frame);
@@ -719,7 +796,8 @@
 void
 xkb_settings_update_from_ui (t_xkb *xkb)
 {
-    gchar *layouts, *variants, *kbdmodel, *toggle_option;
+    gchar *layouts, *variants, *kbdmodel, *toggle_option, 
+          *compose_key_position, *tmp;
     t_xkb_kbd_config *config = xkb->settings->kbd_config;
     gboolean is_default;
     gint i = 0;
@@ -737,6 +815,20 @@
         config->options = 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);
+        config->compose_key_position = compose_key_position;
+        if (config->options)
+        {
+            tmp = config->options;
+            config->options = g_strconcat (config->options, ",", compose_key_position, NULL);
+            g_free (tmp);
+        }
+        else config->options = compose_key_position;
+    }
+
     model = GTK_TREE_MODEL (xkb->layout_store);
     gtk_tree_model_get_iter_first (model, &iter);
     gtk_tree_model_get (model, &iter, DEFAULT_LAYOUT, &is_default, LAYOUTS, &layouts, VARIANTS, &variants, -1);




More information about the Goodies-commits mailing list