[gupnp-tools] av-cp: Move Playlist TreeModel & columns to glade



commit b478ef8aeb00e50244fbb5879fb2cc893b2658a6
Author: Jens Georg <mail jensge org>
Date:   Sun Jun 5 17:29:15 2016 +0200

    av-cp: Move Playlist TreeModel & columns to glade
    
    Signed-off-by: Jens Georg <mail jensge org>

 data/gupnp-av-cp.ui.in        |  190 +++++++++++++++++++++++++----------------
 src/av-cp/playlist-treeview.c |   87 ++-----------------
 2 files changed, 122 insertions(+), 155 deletions(-)
---
diff --git a/data/gupnp-av-cp.ui.in b/data/gupnp-av-cp.ui.in
index ff56838..bdd15a4 100644
--- a/data/gupnp-av-cp.ui.in
+++ b/data/gupnp-av-cp.ui.in
@@ -1,42 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.1 -->
+<!-- Generated with glade 3.20.0 -->
 <interface>
-  <requires lib="gtk+" version="3.0"/>
-  <object class="GtkAboutDialog" id="about-dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">12</property>
-    <property name="type_hint">normal</property>
-    <property name="transient_for">main-window</property>
-    <property name="copyright" translatable="yes">Copyright (C) 2007 Zeeshan Ali (Khattak)</property>
-    <property name="comments" translatable="yes">An UPnP AV Control Point based on GUPnP framework.
-Inspired by Intel Tools for UPnP.</property>
-    <property name="website">http://www.gupnp.org</property>
-    <property name="website_label" translatable="yes">GUPnP homepage</property>
-    <property name="authors">Zeeshan Ali (Khattak) &lt;zeeshanak gnome org&gt;</property>
-    <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with 
your names, one name per line.">translator-credits</property>
-    <property name="artists">Lapo Calamandrei &lt;calamandrei gmail com&gt;
-Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
-    <property name="logo_icon_name">image-missing</property>
-    <property name="license_type">gpl-2-0</property>
-    <signal name="delete-event" handler="gtk_widget_hide_on_delete" swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox1">
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="can_focus">False</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
+  <requires lib="gtk+" version="3.10"/>
+  <requires lib="gtksourceview" version="3.0"/>
   <object class="GtkAdjustment" id="adjustment1">
     <property name="upper">100</property>
     <property name="step_increment">1</property>
@@ -47,6 +13,47 @@ Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkMenu" id="playlist-popup">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkMenuItem" id="play-menuitem">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">_Play</property>
+        <property name="use_underline">True</property>
+        <signal name="activate" handler="on_play_button_clicked" swapped="no"/>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem" id="didl-menuitem">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Fetch the DIDL-Lite XML for this media 
object</property>
+        <property name="label" translatable="yes">Fetch _DIDL-Lite</property>
+        <property name="use_underline">True</property>
+        <signal name="activate" handler="on_didl_menuitem_activate" swapped="no"/>
+      </object>
+    </child>
+  </object>
+  <object class="GtkTreeStore" id="playlist-tree-store">
+    <columns>
+      <!-- column-name icon -->
+      <column type="GdkPixbuf"/>
+      <!-- column-name title -->
+      <column type="gchararray"/>
+      <!-- column-name device_proxy -->
+      <column type="GObject"/>
+      <!-- column-name service_proxy -->
+      <column type="GObject"/>
+      <!-- column-name id -->
+      <column type="gchararray"/>
+      <!-- column-name is_container -->
+      <column type="gboolean"/>
+      <!-- column-name child_count -->
+      <column type="gint"/>
+    </columns>
+  </object>
   <object class="GtkWindow" id="main-window">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">GUPnP AV Control Point</property>
@@ -55,6 +62,7 @@ Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
       <object class="GtkGrid" id="grid1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="margin_bottom">12</property>
         <child>
           <object class="GtkMenuBar" id="menubar">
             <property name="visible">True</property>
@@ -569,13 +577,34 @@ Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
                       <object class="GtkTreeView" id="playlist-treeview">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
+                        <property name="model">playlist-tree-store</property>
                         <property name="headers_visible">False</property>
                         <signal name="button-release-event" handler="on_playlist_treeview_button_release" 
swapped="no"/>
                         <signal name="row-activated" handler="on_play_button_clicked" swapped="no"/>
                         <signal name="row-collapsed" handler="on_playlist_row_collapsed" swapped="no"/>
                         <signal name="row-expanded" handler="on_playlist_row_expanded" swapped="no"/>
                         <child internal-child="selection">
-                          <object class="GtkTreeSelection" id="treeview-selection1"/>
+                          <object class="GtkTreeSelection" id="playlist-treeview-selection">
+                            <signal name="changed" handler="on_playlist_treeview_item_selected" 
swapped="no"/>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn">
+                            <property name="sizing">autosize</property>
+                            <property name="title" translatable="yes">column</property>
+                            <child>
+                              <object class="GtkCellRendererPixbuf"/>
+                              <attributes>
+                                <attribute name="pixbuf">0</attribute>
+                              </attributes>
+                            </child>
+                            <child>
+                              <object class="GtkCellRendererText"/>
+                              <attributes>
+                                <attribute name="text">1</attribute>
+                              </attributes>
+                            </child>
+                          </object>
                         </child>
                       </object>
                     </child>
@@ -598,28 +627,49 @@ Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
             <property name="top_attach">1</property>
           </packing>
         </child>
-        <child>
-          <object class="GtkStatusbar" id="statusbar">
-            <property name="visible">True</property>
+      </object>
+    </child>
+    <child type="titlebar">
+      <placeholder/>
+    </child>
+  </object>
+  <object class="GtkAboutDialog" id="about-dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">12</property>
+    <property name="type_hint">normal</property>
+    <property name="transient_for">main-window</property>
+    <property name="copyright" translatable="yes">Copyright (C) 2007 Zeeshan Ali (Khattak)</property>
+    <property name="comments" translatable="yes">An UPnP AV Control Point based on GUPnP framework.
+Inspired by Intel Tools for UPnP.</property>
+    <property name="website">http://www.gupnp.org</property>
+    <property name="website_label" translatable="yes">GUPnP homepage</property>
+    <property name="authors">Zeeshan Ali (Khattak) &lt;zeeshanak gnome org&gt;</property>
+    <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with 
your names, one name per line.">translator-credits</property>
+    <property name="artists">Lapo Calamandrei &lt;calamandrei gmail com&gt;
+Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
+    <property name="logo_icon_name">image-missing</property>
+    <property name="license_type">gpl-2-0</property>
+    <signal name="delete-event" handler="gtk_widget_hide_on_delete" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox1">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
             <property name="can_focus">False</property>
           </object>
           <packing>
-            <property name="left_attach">0</property>
-            <property name="top_attach">2</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
       </object>
     </child>
-  </object>
-  <object class="GtkSizeGroup" id="playback-button-sizegroup">
-    <widgets>
-      <widget name="play-button"/>
-      <widget name="pause-button"/>
-      <widget name="stop-button"/>
-      <widget name="previous-button"/>
-      <widget name="next-button"/>
-      <widget name="rescan-button"/>
-    </widgets>
+    <child>
+      <placeholder/>
+    </child>
   </object>
   <object class="GtkDialog" id="didl-dialog">
     <property name="width_request">640</property>
@@ -627,8 +677,8 @@ Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
     <property name="title" translatable="yes">GUPnP AV CP - Metadata View</property>
-    <property name="transient_for">main-window</property>
     <property name="type_hint">normal</property>
+    <property name="transient_for">main-window</property>
     <signal name="delete-event" handler="gtk_widget_hide_on_delete" swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox3">
@@ -687,28 +737,18 @@ Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
     <action-widgets>
       <action-widget response="0">didl-close-button</action-widget>
     </action-widgets>
-  </object>
-  <object class="GtkMenu" id="playlist-popup">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
     <child>
-      <object class="GtkMenuItem" id="play-menuitem">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes">_Play</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_play_button_clicked" swapped="no"/>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem" id="didl-menuitem">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="tooltip_text" translatable="yes">Fetch the DIDL-Lite XML for this media 
object</property>
-        <property name="label" translatable="yes">Fetch _DIDL-Lite</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_didl_menuitem_activate" swapped="no"/>
-      </object>
+      <placeholder/>
     </child>
   </object>
+  <object class="GtkSizeGroup" id="playback-button-sizegroup">
+    <widgets>
+      <widget name="play-button"/>
+      <widget name="pause-button"/>
+      <widget name="stop-button"/>
+      <widget name="previous-button"/>
+      <widget name="next-button"/>
+      <widget name="rescan-button"/>
+    </widgets>
+  </object>
 </interface>
diff --git a/src/av-cp/playlist-treeview.c b/src/av-cp/playlist-treeview.c
index 1b485a6..2179e64 100644
--- a/src/av-cp/playlist-treeview.c
+++ b/src/av-cp/playlist-treeview.c
@@ -60,6 +60,9 @@ on_playlist_treeview_button_release (GtkWidget      *widget,
                                      GdkEventButton *event,
                                      gpointer        user_data);
 void
+on_playlist_treeview_item_selected (GtkTreeSelection *selection,
+                                    gpointer          user_data);
+void
 on_playlist_row_expanded (GtkTreeView *tree_view,
                           GtkTreeIter *iter,
                           GtkTreePath *path,
@@ -179,9 +182,10 @@ on_playlist_treeview_button_release (GtkWidget      *widget,
         return TRUE;
 }
 
-static void
-on_item_selected (GtkTreeSelection *selection,
-                  gpointer          user_data)
+G_MODULE_EXPORT
+void
+on_playlist_treeview_item_selected (GtkTreeSelection *selection,
+                           gpointer          user_data)
 {
         PlaybackState state;
 
@@ -196,65 +200,6 @@ on_item_selected (GtkTreeSelection *selection,
        }
 }
 
-static GtkTreeModel *
-create_playlist_treemodel (void)
-{
-        GtkTreeStore *store;
-
-        store = gtk_tree_store_new (7,
-                                    /* Icon */
-                                    GDK_TYPE_PIXBUF,
-                                    /* Title */
-                                    G_TYPE_STRING,
-                                    /* MediaServer */
-                                    GUPNP_TYPE_DEVICE_PROXY,
-                                    /* Content Directory */
-                                    GUPNP_TYPE_SERVICE_PROXY,
-                                    /* Id */
-                                    G_TYPE_STRING,
-                                    /* Is container? */
-                                    G_TYPE_BOOLEAN,
-                                    /* childCount */
-                                    G_TYPE_INT);
-
-        return GTK_TREE_MODEL (store);
-}
-
-static void
-setup_treeview_columns (GtkWidget *tv)
-
-{
-        GtkTreeSelection  *selection;
-        GtkTreeViewColumn *column;
-        GtkCellRenderer   *renderers[2];
-        const char        *headers[] = { "Icon", "Title"};
-        const char        *attribs[] = { "pixbuf", "text"};
-        int                i;
-
-        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
-        g_assert (selection != NULL);
-
-        column = gtk_tree_view_column_new ();
-
-        renderers[0] = gtk_cell_renderer_pixbuf_new ();
-        renderers[1] = gtk_cell_renderer_text_new ();
-
-        for (i = 0; i < 2; i++) {
-                gtk_tree_view_column_pack_start (column, renderers[i], FALSE);
-                gtk_tree_view_column_set_title (column, headers[i]);
-                gtk_tree_view_column_add_attribute (column,
-                                                    renderers[i],
-                                                    attribs[i], i);
-                gtk_tree_view_column_set_sizing(column,
-                                                GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-        }
-
-        gtk_tree_view_insert_column (GTK_TREE_VIEW (treeview),
-                                     column,
-                                     -1);
-
-        gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
-}
 
 G_MODULE_EXPORT
 void
@@ -361,9 +306,6 @@ on_didl_menuitem_activate (GtkMenuItem *menuitem,
 void
 setup_playlist_treeview (GtkBuilder *builder)
 {
-        GtkTreeModel      *model;
-        GtkTreeSelection  *selection;
-
         initial_notify = g_hash_table_new (g_direct_hash, g_direct_equal);
 
         treeview = GTK_WIDGET (gtk_builder_get_object (builder,
@@ -403,21 +345,6 @@ setup_playlist_treeview (GtkBuilder *builder)
         }
 #endif
 
-        model = create_playlist_treemodel ();
-        g_assert (model != NULL);
-
-        gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model);
-        g_object_unref (model);
-
-        setup_treeview_columns (treeview);
-
-        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
-        g_assert (selection != NULL);
-        g_signal_connect (selection,
-                          "changed",
-                          G_CALLBACK (on_item_selected),
-                          NULL);
-
         expanded = FALSE;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]