Updating branch refs/heads/master
         to 659c33a107e677d3efa5b37594c5a659b57cf25d (commit)
       from bb72d99afbac675c2508046405a3fbba7f2d5626 (commit)

commit 659c33a107e677d3efa5b37594c5a659b57cf25d
Author: Sean Davis <smd.seanda...@gmail.com>
Date:   Sat Dec 15 07:54:58 2012 -0500

    Addition of separate disc playlist.

 data/interfaces/playlist.ui |  171 ++++++++++++++++++++++++++------------
 src/parole-disc.c           |   10 --
 src/parole-medialist.c      |  195 +++++++++++++++++++++++++++++++------------
 src/parole-medialist.h      |   11 ++-
 src/parole-player.c         |   21 +----
 5 files changed, 272 insertions(+), 136 deletions(-)

diff --git a/data/interfaces/playlist.ui b/data/interfaces/playlist.ui
index 4f2ff08..1330b86 100644
--- a/data/interfaces/playlist.ui
+++ b/data/interfaces/playlist.ui
@@ -92,21 +92,101 @@
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <child>
-      <object class="GtkToggleButton" id="dvd_menu_button">
+      <object class="GtkNotebook" id="playlist_notebook">
+        <property name="visible">True</property>
         <property name="can_focus">True</property>
-        <property name="receives_default">True</property>
-        <property name="no_show_all">True</property>
-        <property name="use_action_appearance">False</property>
+        <property name="tab_pos">bottom</property>
+        <property name="show_tabs">False</property>
+        <property name="show_border">False</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="window_placement_set">True</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkTreeView" id="media-list">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="headers_visible">False</property>
+                <property name="rules_hint">True</property>
+                <signal name="drag-data-received" 
handler="parole_media_list_drag_data_received_cb" swapped="no"/>
+                <signal name="key-press-event" 
handler="parole_media_list_key_press" swapped="no"/>
+                <signal name="row-activated" 
handler="parole_media_list_row_activated_cb" swapped="no"/>
+                <signal name="button-release-event" 
handler="parole_media_list_button_release_event" swapped="no"/>
+                <signal name="query-tooltip" 
handler="parole_media_list_query_tooltip" swapped="no"/>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child type="tab">
+          <object class="GtkLabel" id="label1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Playlist</property>
+          </object>
+          <packing>
+            <property name="tab_fill">False</property>
+          </packing>
+        </child>
         <child>
-          <object class="GtkHBox" id="hbox1">
+          <object class="GtkVBox" id="vbox1">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="spacing">3</property>
             <child>
-              <object class="GtkImage" id="image_disc">
+              <object class="GtkToggleButton" id="dvd_menu_button">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="icon_name">drive-optical</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+                <child>
+                  <object class="GtkHBox" id="hbox1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">3</property>
+                    <child>
+                      <object class="GtkImage" id="image_disc">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="icon_name">drive-optical</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="dvd_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">DVD 
Name</property>
+                        <property name="ellipsize">end</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkArrow" id="arrow1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="arrow_type">down</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="pack_type">end</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -115,12 +195,22 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="dvd_label">
+              <object class="GtkScrolledWindow" id="scrolledwindow2">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">DVD Name</property>
-                <property name="ellipsize">end</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="window_placement_set">True</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkTreeView" id="disc-list">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="headers_visible">False</property>
+                    <property name="rules_hint">True</property>
+                    <signal name="row-activated" 
handler="parole_media_list_row_activated_cb" swapped="no"/>
+                  </object>
+                </child>
               </object>
               <packing>
                 <property name="expand">True</property>
@@ -128,54 +218,27 @@
                 <property name="position">1</property>
               </packing>
             </child>
-            <child>
-              <object class="GtkArrow" id="arrow1">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="arrow_type">down</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="pack_type">end</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
           </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
         </child>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="position">0</property>
-      </packing>
-    </child>
-    <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="window_placement_set">True</property>
-        <property name="shadow_type">in</property>
-        <child>
-          <object class="GtkTreeView" id="media-list">
+        <child type="tab">
+          <object class="GtkLabel" id="label2">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="headers_visible">False</property>
-            <property name="rules_hint">True</property>
-            <signal name="drag-data-received" 
handler="parole_media_list_drag_data_received_cb" swapped="no"/>
-            <signal name="key-press-event" 
handler="parole_media_list_key_press" swapped="no"/>
-            <signal name="row-activated" 
handler="parole_media_list_row_activated_cb" swapped="no"/>
-            <signal name="button-release-event" 
handler="parole_media_list_button_release_event" swapped="no"/>
-            <signal name="query-tooltip" 
handler="parole_media_list_query_tooltip" swapped="no"/>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Disc Playlist</property>
           </object>
+          <packing>
+            <property name="position">1</property>
+            <property name="tab_fill">False</property>
+          </packing>
         </child>
       </object>
       <packing>
         <property name="expand">True</property>
         <property name="fill">True</property>
-        <property name="position">1</property>
+        <property name="position">0</property>
       </packing>
     </child>
     <child>
@@ -286,7 +349,7 @@
         <property name="expand">False</property>
         <property name="fill">False</property>
         <property name="padding">2</property>
-        <property name="position">2</property>
+        <property name="position">1</property>
       </packing>
     </child>
   </object>
diff --git a/src/parole-disc.c b/src/parole-disc.c
index ce22e83..cd0303e 100644
--- a/src/parole-disc.c
+++ b/src/parole-disc.c
@@ -62,7 +62,6 @@ struct ParoleDiscPrivate
 enum
 {
     DISC_SELECTED,
-    DVD_ENABLED,
     LABEL_CHANGED,
     LAST_SIGNAL
 };
@@ -525,15 +524,6 @@ parole_disc_class_init (ParoleDiscClass *klass)
                      _gmarshal_VOID__STRING_STRING,
                       G_TYPE_NONE, 2, 
                      G_TYPE_STRING, G_TYPE_STRING);
-                     
-    signals[DVD_ENABLED] = 
-        g_signal_new ("dvd-enabled",
-                      PAROLE_TYPE_DISC,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleDiscClass, dvd_enabled),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__BOOLEAN,
-                      G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
 
     signals[LABEL_CHANGED] = 
         g_signal_new ("label-changed",
diff --git a/src/parole-medialist.c b/src/parole-medialist.c
index a310b56..ac38bf9 100644
--- a/src/parole-medialist.c
+++ b/src/parole-medialist.c
@@ -93,7 +93,7 @@ static GtkTreeRowReference *
                                                   GtkTreeIter *iter, 
                                                   gboolean select_path);
 
-static void    parole_media_list_select_path     (ParoleMediaList *list, 
+static void    parole_media_list_select_path     (ParoleMediaList *list, 
gboolean disc,
                                                   GtkTreePath *path);
 
 /*
@@ -181,15 +181,20 @@ struct ParoleMediaListPrivate
 {
     DBusGConnection     *bus;
     ParoleConf          *conf;
-    GtkWidget          *view;
-    GtkWidget          *box;
-    GtkListStore       *store;
+    GtkWidget              *view;
+    GtkWidget           *disc_view;
+    GtkWidget              *box;
+    GtkListStore           *store;
+    GtkListStore           *disc_store;
     GtkTreeSelection    *sel;
+    GtkTreeSelection    *disc_sel;
     
     GtkWidget *dvd_menu;
     GtkWidget *dvd_menu_button;
     GtkWidget *dvd_label;
     GtkWidget *playlist_controls;
+    
+    GtkWidget *playlist_notebook;
 
     GtkWidget *remove_button;
     GtkWidget *clear_button;
@@ -234,6 +239,7 @@ parole_media_list_set_widget_sensitive (ParoleMediaList 
*list, gboolean sensitiv
  * parole_media_list_add:
  * @ParoleMediaList: a #ParoleMediaList
  * @file: a #ParoleFile
+ * @disc: TRUE if added to disc playlist.
  * @emit: TRUE to emit a play signal.
  * @select_row: TRUE to select the added row
  * 
@@ -242,7 +248,7 @@ parole_media_list_set_widget_sensitive (ParoleMediaList 
*list, gboolean sensitiv
  * start playing the added file.
  **/
 static void
-parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, 
gboolean select_row)
+parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean disc, 
gboolean emit, gboolean select_row)
 {
     GtkListStore *list_store;
     GtkTreePath *path;
@@ -250,7 +256,10 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile 
*file, gboolean emit, g
     GtkTreeIter iter;
     gint nch;
     
-    list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW 
(list->priv->view)));
+    if (disc)
+        list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW 
(list->priv->disc_view)));
+    else
+        list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW 
(list->priv->view)));
     
     gtk_list_store_append (list_store, &iter);
     
@@ -267,7 +276,7 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile 
*file, gboolean emit, g
        path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
        row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list_store), path);
        if ( select_row )
-           parole_media_list_select_path (list, path);
+           parole_media_list_select_path (list, disc, path);
        gtk_tree_path_free (path);
        if ( emit )
            g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row);
@@ -280,6 +289,9 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile 
*file, gboolean emit, g
      */
     g_object_unref (file);
     
+    if (disc)
+    nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL 
(list->priv->disc_store), NULL); 
+    else
     nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), 
NULL); 
     
     if ( nch == 1 )
@@ -296,11 +308,12 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile 
*file, gboolean emit, g
  * parole_media_list_files_open:
  * @ParoleMediaList: a #ParoleMediaList
  * @files: a #GSList contains a list of #ParoleFile
+ * @disc: TRUE if files are opened to the disc playlist.
  * @emit: TRUE to emit a play signal.
  * 
  **/
 static void
-parole_media_list_files_open (ParoleMediaList *list, GSList *files, gboolean 
emit)
+parole_media_list_files_open (ParoleMediaList *list, GSList *files, gboolean 
disc, gboolean emit)
 {
     ParoleFile *file;
     gboolean replace;
@@ -322,13 +335,13 @@ parole_media_list_files_open (ParoleMediaList *list, 
GSList *files, gboolean emi
        if ( replace )
            parole_media_list_clear_list (list);
        file = g_slist_nth_data (files, 0);
-       parole_media_list_add (list, file, emit, TRUE);
+       parole_media_list_add (list, file, disc, emit, TRUE);
     }
     
     for ( i = 1; i < len; i++)
     {
        file = g_slist_nth_data (files, i);
-       parole_media_list_add (list, file, FALSE, FALSE);
+       parole_media_list_add (list, file, disc, FALSE, FALSE);
     }
 }
 
@@ -345,7 +358,7 @@ parole_media_list_add_cdda_tracks (ParoleMediaList *list, 
gint n_tracks)
         files = g_slist_append(files, file);
     }
     
-    parole_media_list_files_open(list, files, TRUE);
+    parole_media_list_files_open(list, files, FALSE, TRUE);
 }
 
 void
@@ -362,7 +375,7 @@ parole_media_list_add_dvd_chapters (ParoleMediaList *list, 
gint n_chapters)
     }
     
     //parole_media_list_clear_list (list);
-    parole_media_list_files_open(list, files, TRUE);
+    parole_media_list_files_open(list, files, TRUE, TRUE);
 }
 
 /* Callback to determine whether opened files should start playing immediately 
*/
@@ -377,7 +390,7 @@ parole_media_list_files_opened_cb (ParoleMediaChooser 
*chooser,
                  "play-opened-files", &play,
                  NULL);
     
-    parole_media_list_files_open (list, files, play);
+    parole_media_list_files_open (list, files, FALSE, play);
 }
 
 static void
@@ -392,7 +405,7 @@ parole_media_list_location_opened_cb (ParoleOpenLocation 
*obj, const gchar *loca
     else
     {
        file = parole_file_new (location);
-       parole_media_list_add (list, file, TRUE, TRUE);
+       parole_media_list_add (list, file, FALSE, TRUE, TRUE);
     }
 }
 
@@ -910,7 +923,7 @@ parole_media_list_remove_clicked_cb (GtkButton *button, 
ParoleMediaList *list)
        
        if ( gtk_tree_path_prev (prev) )
        {
-           parole_media_list_select_path (list, prev);
+           parole_media_list_select_path (list, FALSE, prev);
            row_selected = TRUE;
        }
        gtk_tree_path_free (prev);
@@ -943,7 +956,7 @@ parole_media_list_remove_clicked_cb (GtkButton *button, 
ParoleMediaList *list)
     {
        GtkTreePath *path;
        path = parole_media_list_get_first_path (model);
-       parole_media_list_select_path (list, path);
+       parole_media_list_select_path (list, FALSE, path);
        gtk_tree_path_free (path);
     }
     
@@ -976,8 +989,12 @@ parole_media_list_row_activated_cb (GtkTreeView *view, 
GtkTreePath *path,
 {
     GtkTreeRowReference *row;
     
+    if 
(gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
0)
     row = gtk_tree_row_reference_new (gtk_tree_view_get_model (GTK_TREE_VIEW 
(list->priv->view)), 
                                      path);
+    else
+    row = gtk_tree_row_reference_new (gtk_tree_view_get_model (GTK_TREE_VIEW 
(list->priv->disc_view)), 
+                                     path);
                                      
     g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row);
 }
@@ -1072,6 +1089,18 @@ parole_media_list_add_open_containing_folder 
(ParoleMediaList *list, GtkWidget *
     }
 }
 
+void
+parole_media_list_set_playlist_view(ParoleMediaList *list, gint view)
+{
+    gtk_notebook_set_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook), 
view);
+}
+
+void
+parole_media_list_clear_disc_list (ParoleMediaList *list)
+{
+    gtk_list_store_clear (GTK_LIST_STORE (list->priv->disc_store));
+    //parole_media_list_set_widget_sensitive (list, FALSE);
+}
 
 void
 parole_media_list_clear_list (ParoleMediaList *list)
@@ -1168,14 +1197,6 @@ menu_detach( GtkMenu *menu )
 }
 
 void
-parole_media_list_set_dvd_menu_visible(ParoleMediaList *list, gboolean visible)
-{
-    gtk_widget_set_visible(list->priv->dvd_menu_button, visible);
-    /* Disable the playlist controls when in DVD mode. */
-    gtk_widget_set_sensitive(list->priv->playlist_controls, !visible);
-}
-
-void
 parole_media_list_add_dvd (ParoleMediaList *list, gchar *dvd_name)
 {
     //parole_media_list_set_dvd_menu_visible(list, TRUE);
@@ -1435,10 +1456,18 @@ parole_media_list_button_release_event (GtkWidget 
*widget, GdkEventButton *ev, P
 }
 
 static void
-parole_media_list_select_path (ParoleMediaList *list, GtkTreePath *path)
+parole_media_list_select_path (ParoleMediaList *list, gboolean disc, 
GtkTreePath *path)
 {
+    if (disc)
+    {
+    gtk_tree_selection_select_path (list->priv->disc_sel, path);
+    gtk_tree_view_set_cursor (GTK_TREE_VIEW (list->priv->disc_view), path, 
NULL, FALSE);
+    }
+    else
+    {
     gtk_tree_selection_select_path (list->priv->sel, path);
     gtk_tree_view_set_cursor (GTK_TREE_VIEW (list->priv->view), path, NULL, 
FALSE);
+    }
 }
 
 static GtkTreeRowReference *
@@ -1451,7 +1480,7 @@ parole_media_list_get_row_reference_from_iter 
(ParoleMediaList *list, GtkTreeIte
     row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), 
path);
     
     if ( select_path)
-       parole_media_list_select_path (list, path);
+       parole_media_list_select_path (list, FALSE, path);
     
     gtk_tree_path_free (path);
     
@@ -1548,60 +1577,80 @@ parole_media_list_class_init (ParoleMediaListClass 
*klass)
 static void
 parole_media_list_setup_view (ParoleMediaList *list)
 {
-    GtkTreeSelection *sel;
-    GtkListStore *list_store;
-    GtkTreeViewColumn *col;
-    GtkCellRenderer *renderer;
+    GtkTreeSelection *sel, *disc_sel;
+    GtkListStore *list_store, *disc_list_store;
+    GtkTreeViewColumn *col, *disc_col;
+    GtkCellRenderer *renderer, *disc_renderer;
 
     list_store = gtk_list_store_new (COL_NUMBERS, GDK_TYPE_PIXBUF, 
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT);
+    disc_list_store = gtk_list_store_new (COL_NUMBERS, GDK_TYPE_PIXBUF, 
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT);
 
     gtk_tree_view_set_model (GTK_TREE_VIEW (list->priv->view), 
GTK_TREE_MODEL(list_store));
+    gtk_tree_view_set_model (GTK_TREE_VIEW (list->priv->disc_view), 
GTK_TREE_MODEL(disc_list_store));
     
     gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (list->priv->view), TRUE);
+    gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (list->priv->disc_view), TRUE);
     col = gtk_tree_view_column_new ();
+    disc_col = gtk_tree_view_column_new ();
 
     renderer = gtk_cell_renderer_pixbuf_new ();
+    disc_renderer = gtk_cell_renderer_pixbuf_new ();
     
     gtk_tree_view_column_pack_start(col, renderer, FALSE);
+    gtk_tree_view_column_pack_start(disc_col, disc_renderer, FALSE);
     gtk_tree_view_column_set_attributes(col, renderer, "pixbuf", PIXBUF_COL, 
NULL);
-
+    gtk_tree_view_column_set_attributes(disc_col, disc_renderer, "pixbuf", 
PIXBUF_COL, NULL);
 
     /**
      * Name col
      * 
      **/
     renderer = gtk_cell_renderer_text_new();
+    disc_renderer = gtk_cell_renderer_text_new();
     
     gtk_tree_view_column_pack_start (col, renderer, TRUE);
     gtk_tree_view_column_set_attributes (col, renderer, "text", NAME_COL, 
NULL);
     g_object_set (renderer, 
                  "ellipsize", PANGO_ELLIPSIZE_END, 
                  NULL);
-    
+                 
+    gtk_tree_view_column_pack_start (disc_col, disc_renderer, TRUE);
+    gtk_tree_view_column_set_attributes (disc_col, disc_renderer, "text", 
NAME_COL, NULL);
+    g_object_set (disc_renderer, 
+                 "ellipsize", PANGO_ELLIPSIZE_END, 
+                 NULL);
     
     /**
      * Media length
      * 
      **/
     renderer = gtk_cell_renderer_text_new();
+    disc_renderer = gtk_cell_renderer_text_new();
     
     gtk_tree_view_column_pack_start (col, renderer, FALSE);
+    gtk_tree_view_column_pack_start (disc_col, disc_renderer, FALSE);
     gtk_tree_view_column_set_attributes (col, renderer, "text", LENGTH_COL, 
NULL);
-    
+    gtk_tree_view_column_set_attributes (disc_col, disc_renderer, "text", 
LENGTH_COL, NULL);
     
     gtk_tree_view_append_column (GTK_TREE_VIEW (list->priv->view), col);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (list->priv->disc_view), 
disc_col);
     gtk_tree_view_column_set_title (col, _("Media list"));
+    gtk_tree_view_column_set_title (disc_col, _("Chapter list"));
 
     gtk_drag_dest_set (list->priv->view, GTK_DEST_DEFAULT_ALL, target_entry, 
G_N_ELEMENTS (target_entry),
                        GDK_ACTION_COPY | GDK_ACTION_MOVE);
     
     list->priv->sel = sel = gtk_tree_view_get_selection (GTK_TREE_VIEW 
(list->priv->view));
+    list->priv->disc_sel = disc_sel = gtk_tree_view_get_selection 
(GTK_TREE_VIEW (list->priv->disc_view));
     gtk_tree_selection_set_mode (sel, GTK_SELECTION_MULTIPLE);
     
     g_signal_connect (sel, "changed",
                      G_CALLBACK (parole_media_list_selection_changed_cb), 
list);
+    g_signal_connect (disc_sel, "changed",
+                     G_CALLBACK (parole_media_list_selection_changed_cb), 
list);
     
     list->priv->store = list_store;
+    list->priv->disc_store = disc_list_store;
 }
 
 static void
@@ -1622,11 +1671,13 @@ parole_media_list_init (ParoleMediaList *list)
     list->priv->dvd_menu = GTK_WIDGET (gtk_builder_get_object(builder, 
"dvd-menu"));
     list->priv->dvd_label = GTK_WIDGET (gtk_builder_get_object(builder, 
"dvd_label"));
     list->priv->playlist_controls = GTK_WIDGET 
(gtk_builder_get_object(builder, "playlist_controls"));
+    list->priv->playlist_notebook = GTK_WIDGET 
(gtk_builder_get_object(builder, "playlist_notebook"));
     
     g_signal_connect (GTK_TOGGLE_BUTTON(list->priv->dvd_menu_button), 
"toggled",
                      G_CALLBACK (parole_media_list_show_dvd_menu), list);
     
     list->priv->view = GTK_WIDGET (gtk_builder_get_object (builder, 
"media-list"));
+    list->priv->disc_view = GTK_WIDGET (gtk_builder_get_object (builder, 
"disc-list"));
     
     box = GTK_WIDGET (gtk_builder_get_object (builder, "playlist-box"));
     
@@ -1694,7 +1745,7 @@ void parole_media_list_load (ParoleMediaList *list)
            fileslist = parole_pl_parser_parse_from_file_by_extension 
(playlist_file);
            g_free (playlist_file);
            
-           parole_media_list_files_open (list, fileslist, play);
+           parole_media_list_files_open (list, fileslist, FALSE, play);
            g_slist_free (fileslist);
        }
     }
@@ -1716,7 +1767,7 @@ parole_media_list_add_by_path (ParoleMediaList *list, 
const gchar *path, gboolea
     
     parole_get_media_files (filter, path, TRUE, &files_list);
     
-    parole_media_list_files_open (list, files_list, emit);
+    parole_media_list_files_open (list, files_list, FALSE, emit);
     
     len = g_slist_length (files_list);
     ret = len == 0 ? FALSE : TRUE;
@@ -1802,10 +1853,15 @@ GtkTreeRowReference *parole_media_list_get_row_n 
(ParoleMediaList *list,
         
     path = gtk_tree_path_new_from_string( g_strdup_printf("%i", wanted_row) );
 
-    if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, 
path))
+    if 
(gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
0)
     {
-       row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), 
path);
-       //parole_media_list_select_path (list, path);
+        if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), 
&iter, path))
+               row = gtk_tree_row_reference_new (GTK_TREE_MODEL 
(list->priv->store), path);
+    }
+    else
+    {
+        if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->disc_store), 
&iter, path))
+               row = gtk_tree_row_reference_new (GTK_TREE_MODEL 
(list->priv->disc_store), path);
     }
     
     gtk_tree_path_free (path);
@@ -1848,15 +1904,21 @@ GtkTreeRowReference *parole_media_list_get_row_random 
(ParoleMediaList *list)
 }
 
 gboolean parole_media_list_is_selected_row  (ParoleMediaList *list)
-{
+{   
+    if 
(gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
0)
     return gtk_tree_selection_count_selected_rows (list->priv->sel) > 0;
+    else
+    return gtk_tree_selection_count_selected_rows (list->priv->disc_sel) > 0;
 }
 
 gboolean parole_media_list_is_empty (ParoleMediaList *list)
 {
     GtkTreeIter iter;
     
+    if 
(gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
0)
     return !gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), 
&iter);
+    else
+    return !gtk_tree_model_get_iter_first (GTK_TREE_MODEL 
(list->priv->disc_store), &iter);
 }
 
 /**
@@ -1871,9 +1933,15 @@ GtkTreeRowReference *parole_media_list_get_first_row 
(ParoleMediaList *list)
     GtkTreeRowReference *row = NULL;
     GtkTreeIter iter;
     
-    if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), 
&iter) )
+    if 
(gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
0)
     {
-       row = parole_media_list_get_row_reference_from_iter (list, &iter, TRUE);
+        if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL 
(list->priv->store), &iter) )
+               row = parole_media_list_get_row_reference_from_iter (list, 
&iter, TRUE);
+    }
+    else
+    {
+        if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL 
(list->priv->disc_store), &iter) )
+           row = parole_media_list_get_row_reference_from_iter (list, &iter, 
TRUE);
     }
     
     return row;
@@ -1909,9 +1977,11 @@ void parole_media_list_select_row (ParoleMediaList 
*list, GtkTreeRowReference *r
     
     if ( gtk_tree_row_reference_valid (row) )
     {
-       path = gtk_tree_row_reference_get_path (row);
-       parole_media_list_select_path (list, path);
-       gtk_tree_path_free (path);
+           path = gtk_tree_row_reference_get_path (row);
+           parole_media_list_select_path (list, 
+               
gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
1, 
+               path);
+           gtk_tree_path_free (path);
     }
 }
 
@@ -1924,10 +1994,17 @@ void parole_media_list_set_row_pixbuf  (ParoleMediaList 
*list, GtkTreeRowReferen
     {
        path = gtk_tree_row_reference_get_path (row);
        
-       if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), 
&iter, path) )
+       if 
(gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
0)
+       {
+           if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), 
&iter, path) )
+               gtk_list_store_set (list->priv->store, &iter, PIXBUF_COL, pix, 
-1);
+       }
+       else
        {
-           gtk_list_store_set (list->priv->store, &iter, PIXBUF_COL, pix, -1);
+           if ( gtk_tree_model_get_iter (GTK_TREE_MODEL 
(list->priv->disc_store), &iter, path) )
+               gtk_list_store_set (list->priv->disc_store, &iter, PIXBUF_COL, 
pix, -1);
        }
+
        gtk_tree_path_free (path);
     }
 }
@@ -1941,10 +2018,17 @@ void parole_media_list_set_row_name (ParoleMediaList 
*list, GtkTreeRowReference
     {
        path = gtk_tree_row_reference_get_path (row);
        
-       if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), 
&iter, path) )
+       if 
(gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
0)
        {
-           gtk_list_store_set (list->priv->store, &iter, NAME_COL, name, -1);
+       if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), 
&iter, path) )
+           gtk_list_store_set (list->priv->store, &iter, NAME_COL, name, -1);
        }
+       else
+       {
+       if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->disc_store), 
&iter, path) )
+           gtk_list_store_set (list->priv->disc_store, &iter, NAME_COL, name, 
-1);
+       }
+       
        gtk_tree_path_free (path);
     }
 }
@@ -1958,10 +2042,17 @@ void parole_media_list_set_row_length (ParoleMediaList 
*list, GtkTreeRowReferenc
     {
        path = gtk_tree_row_reference_get_path (row);
        
-       if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), 
&iter, path) )
+       if 
(gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 
0)
+       {
+           if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), 
&iter, path) )
+           gtk_list_store_set (list->priv->store, &iter, LENGTH_COL, len, -1);
+       }
+       else
        {
-           gtk_list_store_set (list->priv->store, &iter, LENGTH_COL, len, -1);
+       if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->disc_store), 
&iter, path) )
+           gtk_list_store_set (list->priv->disc_store, &iter, LENGTH_COL, len, 
-1);
        }
+       
        gtk_tree_path_free (path);
     }
 }
@@ -1996,9 +2087,9 @@ gboolean parole_media_list_add_files (ParoleMediaList 
*list, gchar **filenames,
            TRACE ("File=%s", filenames[i]);
            file = parole_file_new (filenames[i]);
                if (enqueue) {
-                       parole_media_list_add (list, file, FALSE, FALSE);}
+                       parole_media_list_add (list, file, FALSE, FALSE, 
FALSE);}
                else
-                       parole_media_list_add (list, file, i == 0 ? TRUE : 
FALSE, i == 0 ? TRUE : FALSE);
+                       parole_media_list_add (list, file, FALSE, i == 0 ? TRUE 
: FALSE, i == 0 ? TRUE : FALSE);
            added++;
        }
     }
diff --git a/src/parole-medialist.h b/src/parole-medialist.h
index c880fa7..95721dd 100644
--- a/src/parole-medialist.h
+++ b/src/parole-medialist.h
@@ -39,6 +39,12 @@ enum
     COL_NUMBERS
 };
 
+enum
+{
+    PAROLE_MEDIA_LIST_PLAYLIST_VIEW_STANDARD,
+    PAROLE_MEDIA_LIST_PLAYLIST_VIEW_DISC
+};
+
 typedef struct ParoleMediaListPrivate ParoleMediaListPrivate;
 
 typedef struct
@@ -82,6 +88,9 @@ GtkWidget                     *parole_media_list_get          
    (void);
 
 void                            parole_media_list_load             
(ParoleMediaList *list);
 
+void    parole_media_list_set_playlist_view(ParoleMediaList *list, gint view);
+
+void    parole_media_list_clear_disc_list (ParoleMediaList *list);
 
 void   parole_media_list_clear_list      (ParoleMediaList *list);
 
@@ -151,8 +160,6 @@ void                                 
parole_media_list_set_shuffle_toggled          (ParoleMediaList *list,
                                                                                
                                                
 void parole_media_list_add_dvd (ParoleMediaList *list, gchar *dvd_name);
 
-                                                       
-void parole_media_list_set_dvd_menu_visible(ParoleMediaList *list, gboolean 
visible);
 
 G_END_DECLS
 
diff --git a/src/parole-player.c b/src/parole-player.c
index 584c949..0faa362 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -578,7 +578,8 @@ parole_player_reset (ParolePlayer *player)
        player->priv->row = NULL;
     }
     
-    parole_media_list_set_dvd_menu_visible(player->priv->list, FALSE);
+    parole_media_list_set_playlist_view(player->priv->list, 
PAROLE_MEDIA_LIST_PLAYLIST_VIEW_STANDARD);
+    //parole_media_list_clear_disc_list (player->priv->list);
 }
 
 static void
@@ -1037,17 +1038,10 @@ parole_player_disc_selected_cb (ParoleDisc *disc, const 
gchar *uri, const gchar
     player->priv->current_media_type = parole_gst_get_current_stream_type 
(PAROLE_GST (player->priv->gst));
     
     if ( player->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA )
-    {
         player->priv->wait_for_gst_disc_info = TRUE;
-        parole_media_list_set_dvd_menu_visible(player->priv->list, FALSE);
-    }
-    else if (player->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD )
-        parole_media_list_set_dvd_menu_visible(player->priv->list, TRUE);
-    else
-        parole_media_list_set_dvd_menu_visible(player->priv->list, FALSE);
-        
     
     parole_media_list_clear_list (player->priv->list);
+    parole_media_list_set_playlist_view(player->priv->list, 
PAROLE_MEDIA_LIST_PLAYLIST_VIEW_DISC);
 }
 
 static void
@@ -1057,12 +1051,6 @@ parole_player_disc_label_changed_cb (ParoleDisc *disc, 
const gchar *label, Parol
 }
 
 static void
-parole_player_disc_dvd_enabled_cb (ParoleDisc *disc, gboolean enabled, 
ParolePlayer *player)
-{
-    parole_media_list_set_dvd_menu_visible(player->priv->list, enabled);
-}
-
-static void
 parole_player_uri_opened_cb (ParoleMediaList *list, const gchar *uri, 
ParolePlayer *player)
 {
     parole_player_reset (player);
@@ -2777,9 +2765,6 @@ parole_player_init (ParolePlayer *player)
                      
     g_signal_connect (player->priv->disc, "label-changed",
                      G_CALLBACK (parole_player_disc_label_changed_cb), player);
-                     
-    g_signal_connect (player->priv->disc, "dvd-enabled",
-                     G_CALLBACK (parole_player_disc_dvd_enabled_cb), player);
            
     player->priv->screen_saver = parole_screen_saver_new ();
     player->priv->list = PAROLE_MEDIA_LIST (parole_media_list_get ());
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to