[Xfce4-commits] <xfce4-notifyd:master> Use a combobox for the theme selection.

Jérôme Guelfucci noreply at xfce.org
Sun May 8 12:14:01 CEST 2011


Updating branch refs/heads/master
         to 718bc83f3530f66b06cafd9c413adff2400b3f73 (commit)
       from aec7c0439e2c2c3b536f665c1d320a8b898f67ac (commit)

commit 718bc83f3530f66b06cafd9c413adff2400b3f73
Author: Jérôme Guelfucci <jeromeg at xfce.org>
Date:   Sun May 8 11:32:15 2011 +0200

    Use a combobox for the theme selection.

 xfce4-notifyd-config/main.c                     |   63 ++++-----
 xfce4-notifyd-config/xfce4-notifyd-config.glade |  181 ++++++++++++-----------
 2 files changed, 123 insertions(+), 121 deletions(-)

diff --git a/xfce4-notifyd-config/main.c b/xfce4-notifyd-config/main.c
index 55ddd1d..807142f 100644
--- a/xfce4-notifyd-config/main.c
+++ b/xfce4-notifyd-config/main.c
@@ -70,17 +70,19 @@ xfce4_notifyd_slider_format_value(GtkScale *slider,
 }
 
 static void
-xfce4_notifyd_config_theme_treeview_changed(GtkTreeSelection *sel,
-                                            gpointer user_data)
+xfce4_notifyd_config_theme_combo_changed(GtkComboBox *theme_combo,
+                                         gpointer user_data)
 {
     XfconfChannel *channel = user_data;
-    GtkTreeModel *model = NULL;
+    GtkTreeModel *model;
     GtkTreeIter iter;
     gchar *theme = NULL;
 
-    if(!gtk_tree_selection_get_selected(sel, &model, &iter))
+    if(!gtk_combo_box_get_active_iter(theme_combo, &iter))
         return;
 
+    model = gtk_combo_box_get_model (theme_combo);
+
     gtk_tree_model_get(model, &iter, 0, &theme, -1);
     xfconf_channel_set_string(channel, "/theme", theme);
     g_free(theme);
@@ -92,17 +94,15 @@ xfce4_notifyd_config_theme_changed(XfconfChannel *channel,
                                    const GValue *value,
                                    gpointer user_data)
 {
-    GtkWidget *treeview = user_data;
+    GtkWidget *theme_combo = user_data;
     GtkListStore *ls;
-    GtkTreeSelection *sel;
     GtkTreeIter iter;
     gchar *theme;
     const gchar *new_theme;
 
     new_theme = G_VALUE_TYPE(value) ? g_value_get_string(value) : "Default";
 
-    sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
-    ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(treeview)));
+    ls = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(theme_combo)));
 
     for(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(ls), &iter);
         gtk_list_store_iter_is_valid(ls, &iter);
@@ -110,7 +110,8 @@ xfce4_notifyd_config_theme_changed(XfconfChannel *channel,
     {
         gtk_tree_model_get(GTK_TREE_MODEL(ls), &iter, 0, &theme, -1);
         if(!strcmp(theme, new_theme)) {
-            gtk_tree_selection_select_iter(sel, &iter);
+            gtk_combo_box_set_active_iter(GTK_COMBO_BOX(theme_combo),
+                                          &iter);
             g_free(theme);
             xfce4_notifyd_config_kill_daemon();
             return;
@@ -120,7 +121,7 @@ xfce4_notifyd_config_theme_changed(XfconfChannel *channel,
 
     gtk_list_store_append(ls, &iter);
     gtk_list_store_set(ls, &iter, 0, new_theme, -1);
-    gtk_tree_selection_select_iter(sel, &iter);
+    gtk_combo_box_set_active_iter(GTK_COMBO_BOX(theme_combo), &iter);
 }
 
 static void
@@ -164,17 +165,14 @@ list_store_add_themes_in_dir(GtkListStore *ls,
 }
 
 static void
-xfce4_notifyd_config_setup_treeview(GtkWidget *treeview,
-                                    const gchar *current_theme)
+xfce4_notifyd_config_setup_theme_combo(GtkWidget *theme_combo,
+                                       const gchar *current_theme)
 {
     GtkListStore *ls;
     gchar *dirname, **dirnames;
     GHashTable *themes_seen;
     gint i;
-    GtkCellRenderer *render;
-    GtkTreeViewColumn *col;
     GtkTreeIter current_theme_iter;
-    GtkTreeSelection *sel;
 
     ls = gtk_list_store_new(1, G_TYPE_STRING);
     themes_seen = g_hash_table_new_full(g_str_hash, g_str_equal,
@@ -193,19 +191,11 @@ xfce4_notifyd_config_setup_treeview(GtkWidget *treeview,
 
     g_hash_table_destroy(themes_seen);
 
-    gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(ls));
-
-    render = gtk_cell_renderer_text_new();
-    col = gtk_tree_view_column_new_with_attributes(_("Theme"), render,
-                                                   "text", 0, NULL);
-    gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), col);
-
-    gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 0,
-                                         GTK_SORT_ASCENDING);
+    gtk_combo_box_set_model(GTK_COMBO_BOX(theme_combo), GTK_TREE_MODEL(ls));
 
-    sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
     if(gtk_list_store_iter_is_valid(ls, &current_theme_iter))
-        gtk_tree_selection_select_iter(sel, &current_theme_iter);
+        gtk_combo_box_set_active_iter(GTK_COMBO_BOX(theme_combo),
+                                      &current_theme_iter);
 
     g_object_unref(G_OBJECT(ls));
 }
@@ -236,7 +226,7 @@ static GtkWidget *
 xfce4_notifyd_config_setup_dialog(GtkBuilder *builder)
 {
     XfconfChannel *channel;
-    GtkWidget *dlg, *btn, *sbtn, *slider, *treeview, *combo;
+    GtkWidget *dlg, *btn, *sbtn, *slider, *theme_combo, *position_combo;
     GtkAdjustment *adj;
     GtkTreeSelection *sel;
     GError *error = NULL;
@@ -279,24 +269,23 @@ xfce4_notifyd_config_setup_dialog(GtkBuilder *builder)
     xfconf_g_property_bind(channel, "/initial-opacity", G_TYPE_DOUBLE,
                            G_OBJECT(adj), "value");
 
-    treeview = GTK_WIDGET(gtk_builder_get_object(builder, "themes_treeview"));
+    theme_combo = GTK_WIDGET(gtk_builder_get_object(builder, "theme_combo"));
     current_theme = xfconf_channel_get_string(channel, "/theme", "Default");
-    xfce4_notifyd_config_setup_treeview(treeview, current_theme);
+    xfce4_notifyd_config_setup_theme_combo(theme_combo, current_theme);
     g_free(current_theme);
 
-    sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
-    g_signal_connect(G_OBJECT(sel), "changed",
-                     G_CALLBACK(xfce4_notifyd_config_theme_treeview_changed),
+    g_signal_connect(G_OBJECT(theme_combo), "changed",
+                     G_CALLBACK(xfce4_notifyd_config_theme_combo_changed),
                      channel);
     g_signal_connect(G_OBJECT(channel), "property-changed::/theme",
                      G_CALLBACK(xfce4_notifyd_config_theme_changed),
-                     treeview);
+                     theme_combo);
 
-    combo = GTK_WIDGET(gtk_builder_get_object(builder, "position_combo"));
+    position_combo = GTK_WIDGET(gtk_builder_get_object(builder, "position_combo"));
     xfconf_g_property_bind(channel, "/notify-location", G_TYPE_UINT,
-                           G_OBJECT(combo), "active");
-    if(gtk_combo_box_get_active(GTK_COMBO_BOX(combo)) == -1)
-        gtk_combo_box_set_active(GTK_COMBO_BOX(combo), GTK_CORNER_TOP_RIGHT);
+                           G_OBJECT(position_combo), "active");
+    if(gtk_combo_box_get_active(GTK_COMBO_BOX(position_combo)) == -1)
+        gtk_combo_box_set_active(GTK_COMBO_BOX(position_combo), GTK_CORNER_TOP_RIGHT);
 
     return dlg;
 }
diff --git a/xfce4-notifyd-config/xfce4-notifyd-config.glade b/xfce4-notifyd-config/xfce4-notifyd-config.glade
index 0fedf2a..0f12eca 100644
--- a/xfce4-notifyd-config/xfce4-notifyd-config.glade
+++ b/xfce4-notifyd-config/xfce4-notifyd-config.glade
@@ -49,60 +49,88 @@
         <property name="orientation">vertical</property>
         <property name="spacing">2</property>
         <child>
-          <object class="GtkHBox" id="plug-child">
+          <object class="GtkVBox" id="vbox1">
             <property name="visible">True</property>
-            <property name="border_width">6</property>
-            <property name="spacing">24</property>
-            <child>
-              <object class="GtkScrolledWindow" id="scrolledwindow1">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">never</property>
-                <property name="vscrollbar_policy">automatic</property>
-                <property name="shadow_type">etched-in</property>
-                <child>
-                  <object class="GtkTreeView" id="themes_treeview">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
+            <property name="orientation">vertical</property>
             <child>
               <object class="GtkTable" id="table1">
                 <property name="visible">True</property>
-                <property name="n_rows">3</property>
+                <property name="n_rows">4</property>
                 <property name="n_columns">2</property>
                 <property name="column_spacing">10</property>
                 <property name="row_spacing">10</property>
                 <child>
-                  <object class="GtkLabel" id="label3">
+                  <object class="GtkHBox" id="hbox1">
                     <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Default _position:</property>
-                    <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">position_combo</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox4">
+                        <property name="visible">True</property>
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkSpinButton" id="expire_timeout_sbtn">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="invisible_char">&#x25CF;</property>
+                            <property name="adjustment">adjustment1</property>
+                            <property name="numeric">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">seconds</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="pack_type">end</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
                   </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                  </packing>
                 </child>
                 <child>
-                  <object class="GtkComboBox" id="position_combo">
+                  <object class="GtkHScale" id="opacity_slider">
                     <property name="visible">True</property>
-                    <property name="model">model1</property>
-                    <child>
-                      <object class="GtkCellRendererText" id="renderer1"/>
-                      <attributes>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
+                    <property name="can_focus">True</property>
+                    <property name="adjustment">adjustment2</property>
+                    <property name="round_digits">2</property>
+                    <property name="digits">2</property>
+                    <property name="value_pos">right</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
-                    <property name="y_options"></property>
+                    <property name="top_attach">3</property>
+                    <property name="bottom_attach">4</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">_Opacity:</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">3</property>
+                    <property name="bottom_attach">4</property>
                   </packing>
                 </child>
                 <child>
@@ -114,39 +142,32 @@
                     <property name="mnemonic_widget">expire_timeout_sbtn</property>
                   </object>
                   <packing>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Default _position:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">position_combo</property>
+                  </object>
+                  <packing>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkHBox" id="hbox4">
+                  <object class="GtkComboBox" id="position_combo">
                     <property name="visible">True</property>
-                    <property name="spacing">12</property>
-                    <child>
-                      <object class="GtkSpinButton" id="expire_timeout_sbtn">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="invisible_char">&#x25CF;</property>
-                        <property name="adjustment">adjustment1</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
+                    <property name="model">model1</property>
                     <child>
-                      <object class="GtkLabel" id="label4">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">seconds</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="pack_type">end</property>
-                        <property name="position">1</property>
-                      </packing>
+                      <object class="GtkCellRendererText" id="renderer1"/>
+                      <attributes>
+                        <attribute name="text">0</attribute>
+                      </attributes>
                     </child>
                   </object>
                   <packing>
@@ -154,51 +175,43 @@
                     <property name="right_attach">2</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
+                    <property name="y_options"></property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label2">
+                  <object class="GtkLabel" id="label5">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Opacity:</property>
+                    <property name="label" translatable="yes">Default _position:</property>
                     <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">position_combo</property>
                   </object>
-                  <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                  </packing>
                 </child>
                 <child>
-                  <object class="GtkHBox" id="hbox1">
+                  <object class="GtkComboBox" id="theme_combo">
                     <property name="visible">True</property>
                     <child>
-                      <object class="GtkHScale" id="opacity_slider">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="adjustment">adjustment2</property>
-                        <property name="digits">2</property>
-                        <property name="value_pos">right</property>
-                      </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
+                      <object class="GtkCellRendererText" id="renderer2"/>
+                      <attributes>
+                        <attribute name="text">0</attribute>
+                      </attributes>
                     </child>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
+                    <property name="y_options"></property>
                   </packing>
                 </child>
               </object>
               <packing>
-                <property name="position">1</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
           </object>
           <packing>
-            <property name="padding">12</property>
             <property name="position">1</property>
           </packing>
         </child>



More information about the Xfce4-commits mailing list