[Xfce4-commits] <parole:bluesabre/gtk3> Initial DVD menu move to menubar, will hide later

Sean Davis noreply at xfce.org
Sun Aug 25 18:10:01 CEST 2013


Updating branch refs/heads/bluesabre/gtk3
         to 98281fce85445656b1a03e093b968eda1394faa9 (commit)
       from 0a01424bb69834da0bb2c244033737ecad2deb54 (commit)

commit 98281fce85445656b1a03e093b968eda1394faa9
Author: Sean Davis <smd.seandavis at gmail.com>
Date:   Sun Aug 25 12:08:47 2013 -0400

    Initial DVD menu move to menubar, will hide later

 data/interfaces/parole.ui   |   82 +++++++++++++++++++++++-
 data/interfaces/playlist.ui |   86 +++----------------------
 src/parole-medialist.c      |  146 -------------------------------------------
 src/parole-player.c         |   70 +++++++++++++++++++--
 src/parole-player.h         |    7 ++-
 5 files changed, 158 insertions(+), 233 deletions(-)

diff --git a/data/interfaces/parole.ui b/data/interfaces/parole.ui
index b548ef4..314b11e 100644
--- a/data/interfaces/parole.ui
+++ b/data/interfaces/parole.ui
@@ -272,6 +272,86 @@
               </object>
             </child>
             <child>
+              <object class="GtkMenuItem" id="dvd-menu">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_DVD</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="menu8">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkMenuItem" id="dvd_dvd-menu">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">_DVD Menu</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="dvd_title-menu">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">_Title Menu</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="dvd_audio-menu">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">_Audio Menu</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="dvd_angle-menu">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">A_ngle Menu</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuitem5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="dvd_chapters">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">_Chapters</property>
+                        <property name="use_underline">True</property>
+                        <child type="submenu">
+                          <object class="GtkMenu" id="menu9">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkMenuItem" id="dvd_chapter-menu">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">_Chapter Menu</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkSeparatorMenuItem" id="separatormenuitem6">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
               <object class="GtkMenuItem" id="audio-menu">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
@@ -318,8 +398,8 @@
                         <property name="use_underline">True</property>
                         <property name="image">image3</property>
                         <property name="use_stock">False</property>
-                        <accelerator key="equal" signal="activate"/>
                         <accelerator key="plus" signal="activate"/>
+                        <accelerator key="equal" signal="activate"/>
                         <signal name="activate" handler="parole_player_volume_up" swapped="no"/>
                       </object>
                     </child>
diff --git a/data/interfaces/playlist.ui b/data/interfaces/playlist.ui
index ce1b34a..83c9fe1 100644
--- a/data/interfaces/playlist.ui
+++ b/data/interfaces/playlist.ui
@@ -92,90 +92,18 @@
           </packing>
         </child>
         <child>
-          <object class="GtkBox" id="box2">
+          <object class="GtkScrolledWindow" id="scrolledwindow2">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="orientation">vertical</property>
-            <child>
-              <object class="GtkToggleButton" id="dvd_menu_button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <child>
-                  <object class="GtkBox" id="hbox1">
-                    <property name="width_request">220</property>
-                    <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>
-                      </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="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
+            <property name="can_focus">True</property>
+            <property name="hscrollbar_policy">never</property>
+            <property name="shadow_type">in</property>
             <child>
-              <object class="GtkScrolledWindow" id="scrolledwindow2">
+              <object class="GtkTreeView" id="disc-list">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">never</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>
-                    <child internal-child="selection">
-                      <object class="GtkTreeSelection" id="treeview-selection3"/>
-                    </child>
-                  </object>
-                </child>
+                <property name="headers_visible">False</property>
+                <property name="rules_hint">True</property>
               </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
             </child>
           </object>
           <packing>
diff --git a/src/parole-medialist.c b/src/parole-medialist.c
index 7c78959..6a98288 100644
--- a/src/parole-medialist.c
+++ b/src/parole-medialist.c
@@ -159,30 +159,6 @@ void        parole_media_list_menu_pos             (GtkMenu *menu,
                                                     gint *px, gint *py, 
                                                     gboolean *push_in, 
                                                     gpointer data);
-
-void 
-parole_media_list_send_dvd_menu_navigation         (ParoleMediaList *list, 
-                                                    gint msg_id);
-
-void 
-parole_media_list_dvd_menu_activated               (GtkMenuItem *widget, 
-                                                    ParoleMediaList *list);
-
-void 
-parole_media_list_dvd_title_activated              (GtkMenuItem *widget, 
-                                                    ParoleMediaList *list);
-
-void 
-parole_media_list_dvd_audio_activated              (GtkMenuItem *widget, 
-                                                    ParoleMediaList *list);
-
-void 
-parole_media_list_dvd_angle_activated              (GtkMenuItem *widget, 
-                                                    ParoleMediaList *list);
-
-void 
-parole_media_list_dvd_chapter_activated            (GtkMenuItem *widget, 
-                                                    ParoleMediaList *list);
                              
 /*
  * End of GtkBuilder callbacks
@@ -203,9 +179,6 @@ struct ParoleMediaListPrivate
     GtkTreeSelection    *sel;
     GtkTreeSelection    *disc_sel;
     
-    GtkWidget *dvd_menu;
-    GtkWidget *dvd_menu_button;
-    GtkWidget *dvd_label;
     GtkWidget *playlist_controls;
     
     GtkWidget *playlist_notebook;
@@ -228,19 +201,9 @@ enum
     SHUFFLE_TOGGLED,
     REPEAT_TOGGLED,
     SHOW_PLAYLIST,
-    GST_DVD_NAV_MESSAGE,
     LAST_SIGNAL
 };
 
-enum
-{
-    GST_DVD_ROOT_MENU,
-    GST_DVD_TITLE_MENU,
-    GST_DVD_AUDIO_MENU,
-    GST_DVD_ANGLE_MENU,
-    GST_DVD_CHAPTER_MENU
-};
-
 static guint signals [LAST_SIGNAL] = { 0 };
 
 G_DEFINE_TYPE (ParoleMediaList, parole_media_list, GTK_TYPE_VBOX)
@@ -1268,100 +1231,6 @@ menu_detach( GtkMenu *menu )
     //gtk_menu_detach (menu);
 }
 
-void
-parole_media_list_add_dvd (ParoleMediaList *list, gchar *dvd_name)
-{
-    //parole_media_list_set_dvd_menu_visible(list, TRUE);
-    
-    gtk_label_set_label(GTK_LABEL(list->priv->dvd_label), dvd_name);
-}
-
-void
-parole_media_list_send_dvd_menu_navigation (ParoleMediaList *list, gint msg_id)
-{
-    g_signal_emit (G_OBJECT (list), signals [GST_DVD_NAV_MESSAGE], 0, msg_id);
-}
-
-void
-parole_media_list_dvd_menu_activated (GtkMenuItem *widget, ParoleMediaList *list)
-{
-    parole_media_list_send_dvd_menu_navigation(list, GST_DVD_ROOT_MENU);
-}
-
-void
-parole_media_list_dvd_title_activated (GtkMenuItem *widget, ParoleMediaList *list)
-{
-    parole_media_list_send_dvd_menu_navigation(list, GST_DVD_TITLE_MENU);
-}
-
-void
-parole_media_list_dvd_audio_activated (GtkMenuItem *widget, ParoleMediaList *list)
-{
-    parole_media_list_send_dvd_menu_navigation(list, GST_DVD_AUDIO_MENU);
-}
-
-void
-parole_media_list_dvd_angle_activated (GtkMenuItem *widget, ParoleMediaList *list)
-{
-    parole_media_list_send_dvd_menu_navigation(list, GST_DVD_ANGLE_MENU);
-}
-
-void
-parole_media_list_dvd_chapter_activated (GtkMenuItem *widget, ParoleMediaList *list)
-{
-    parole_media_list_send_dvd_menu_navigation(list, GST_DVD_CHAPTER_MENU);
-}
-
-
-static void
-parole_media_list_show_dvd_menu (GtkToggleButton *button, ParoleMediaList *list)
-{
-    gboolean toggled = gtk_toggle_button_get_active( button );
-    GtkBuilder *builder;
-    GtkMenu *menu;
-    GtkMenuItem *dvd_menu, *title_menu, *audio_menu, *angle_menu, *chapter_menu;
-    
-    if (!toggled)
-        return;
-    
-    builder = parole_builder_new_from_string (playlist_ui, playlist_ui_length);
-    
-    menu = GTK_MENU (gtk_builder_get_object (builder, "dvd-menu"));
-    
-    dvd_menu =   GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd-menu-menu"));
-    g_signal_connect (dvd_menu, "activate",
-                      G_CALLBACK (parole_media_list_dvd_menu_activated), list);
-                      
-    title_menu = GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd-menu-title"));
-    g_signal_connect (title_menu, "activate",
-                      G_CALLBACK (parole_media_list_dvd_title_activated), list);
-                      
-    audio_menu = GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd-menu-audio"));
-    g_signal_connect (audio_menu, "activate",
-                      G_CALLBACK (parole_media_list_dvd_audio_activated), list);
-                      
-    angle_menu = GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd-menu-angle"));
-    g_signal_connect (angle_menu, "activate",
-                      G_CALLBACK (parole_media_list_dvd_angle_activated), list);
-                      
-    chapter_menu = GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd-menu-chapter"));
-    g_signal_connect (chapter_menu, "activate",
-                      G_CALLBACK (parole_media_list_dvd_chapter_activated), list);
-    
-    gtk_menu_attach_to_widget( GTK_MENU(menu), list->priv->dvd_menu_button, (GtkMenuDetachFunc) menu_detach );
-    
-    g_signal_connect_swapped (menu, "selection-done",
-                              G_CALLBACK (parole_media_list_destroy_menu), menu);
-                              
-    g_signal_connect_swapped (menu, "destroy",
-                              G_CALLBACK (parole_media_list_hide_menu), list->priv->dvd_menu_button);
-    
-    gtk_menu_popup (GTK_MENU (menu), 
-                    NULL, NULL,
-                    (GtkMenuPositionFunc) parole_media_list_menu_pos, NULL,
-                    3, gtk_get_current_event_time ());
-}
-
 static void
 parole_media_list_show_button_menu (GtkToggleToolButton *button, ParoleMediaList *list)
 {
@@ -1631,15 +1500,6 @@ parole_media_list_class_init (ParoleMediaListClass *klass)
                       NULL, NULL,
                       g_cclosure_marshal_VOID__BOOLEAN,
                       G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-                      
-    signals[GST_DVD_NAV_MESSAGE] = 
-        g_signal_new ("gst-dvd-nav-message",
-                      PAROLE_TYPE_MEDIA_LIST,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleMediaListClass, gst_dvd_nav_message),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__INT,
-                      G_TYPE_NONE, 1, G_TYPE_INT);
 
     g_type_class_add_private (klass, sizeof (ParoleMediaListPrivate));
     
@@ -1739,15 +1599,9 @@ parole_media_list_init (ParoleMediaList *list)
     
     builder = parole_builder_new_from_string (playlist_ui, playlist_ui_length);
     
-    list->priv->dvd_menu_button = GTK_WIDGET (gtk_builder_get_object(builder, "dvd_menu_button"));
-    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"));
     
diff --git a/src/parole-player.c b/src/parole-player.c
index be7ec69..ebabcfc 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -368,6 +368,8 @@ struct ParolePlayerPrivate
     GtkWidget          *subtitles_menu_custom;
     GtkWidget          *audio_group;
     
+    GtkWidget          *dvd_menu;
+    
     GtkWidget          *subtitles_menu;
     GtkWidget          *languages_menu;
     
@@ -409,6 +411,15 @@ enum
     PROP_CLIENT_ID
 };
 
+enum
+{
+    GST_DVD_ROOT_MENU,
+    GST_DVD_TITLE_MENU,
+    GST_DVD_AUDIO_MENU,
+    GST_DVD_ANGLE_MENU,
+    GST_DVD_CHAPTER_MENU
+};
+
 G_DEFINE_TYPE (ParolePlayer, parole_player, G_TYPE_OBJECT)
 
 void parole_show_about  (GtkWidget *widget, ParolePlayer *player)
@@ -656,7 +667,36 @@ parole_player_dvd_reset (ParolePlayer *player)
     }
 }
 
+void
+parole_player_dvd_menu_activated (GtkMenuItem *widget, ParolePlayer *player)
+{
+    parole_gst_send_navigation_command (PAROLE_GST(player->priv->gst), GST_DVD_ROOT_MENU);
+}
+
+void
+parole_player_dvd_title_activated (GtkMenuItem *widget, ParolePlayer *player)
+{
+    parole_gst_send_navigation_command (PAROLE_GST(player->priv->gst), GST_DVD_TITLE_MENU);
+}
+
+void
+parole_player_dvd_audio_activated (GtkMenuItem *widget, ParolePlayer *player)
+{
+    parole_gst_send_navigation_command (PAROLE_GST(player->priv->gst), GST_DVD_AUDIO_MENU);
+    
+}
+
+void
+parole_player_dvd_angle_activated (GtkMenuItem *widget, ParolePlayer *player)
+{
+    parole_gst_send_navigation_command (PAROLE_GST(player->priv->gst), GST_DVD_ANGLE_MENU);
+}
 
+void
+parole_player_dvd_chapter_activated (GtkMenuItem *widget, ParolePlayer *player)
+{
+    parole_gst_send_navigation_command (PAROLE_GST(player->priv->gst), GST_DVD_CHAPTER_MENU);
+}
 
 static gboolean
 parole_sublang_equal_lists (GList *orig, GList *new)
@@ -1127,7 +1167,6 @@ parole_player_disc_selected_cb (ParoleDisc *disc, const gchar *uri, const gchar
 static void
 parole_player_disc_label_changed_cb (ParoleDisc *disc, const gchar *label, ParolePlayer *player)
 {
-    parole_media_list_add_dvd(player->priv->list, g_strdup(label));
 }
 
 static void
@@ -1248,7 +1287,7 @@ parole_player_media_list_show_playlist_cb (ParoleMediaList *list, gboolean show_
 static void
 parole_player_media_list_gst_nav_message_cb (ParoleMediaList *list, gint msg_id, ParolePlayer *player)
 {
-    parole_gst_send_navigation_command (PAROLE_GST(player->priv->gst), msg_id);
+    
 }
 
 static void
@@ -2927,6 +2966,8 @@ parole_player_init (ParolePlayer *player)
     GtkWidget *clear_recent;
     GtkWidget *recent_separator;
     
+    GtkMenuItem *dvd_menu, *title_menu, *audio_menu, *angle_menu, *chapter_menu;
+    
     GtkWidget *bug_report;
     
     gboolean repeat, shuffle;
@@ -3089,6 +3130,28 @@ parole_player_init (ParolePlayer *player)
     /* Attach the Recent Menu */
     gtk_menu_item_set_submenu( GTK_MENU_ITEM(recent_menu), player->priv->recent_menu );
     
+    /* DVD Menu */
+    player->priv->dvd_menu = GTK_WIDGET(gtk_builder_get_object (builder, "dvd-menu"));
+    dvd_menu =   GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd_dvd-menu"));
+    g_signal_connect (dvd_menu, "activate",
+                      G_CALLBACK (parole_player_dvd_menu_activated), player);
+                      
+    title_menu = GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd_title-menu"));
+    g_signal_connect (title_menu, "activate",
+                      G_CALLBACK (parole_player_dvd_title_activated), player);
+                      
+    audio_menu = GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd_audio-menu"));
+    g_signal_connect (audio_menu, "activate",
+                      G_CALLBACK (parole_player_dvd_audio_activated), player);
+                      
+    angle_menu = GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd_angle-menu"));
+    g_signal_connect (angle_menu, "activate",
+                      G_CALLBACK (parole_player_dvd_angle_activated), player);
+                      
+    chapter_menu = GTK_MENU_ITEM (gtk_builder_get_object (builder, "dvd_chapter-menu"));
+    g_signal_connect (chapter_menu, "activate",
+                      G_CALLBACK (parole_player_dvd_chapter_activated), player);
+    
     /* Language Menus */
     player->priv->subtitles_menu = GTK_WIDGET (gtk_builder_get_object (builder, "subtitles-menu"));
     player->priv->languages_menu = GTK_WIDGET (gtk_builder_get_object (builder, "languages-menu"));
@@ -3293,9 +3356,6 @@ parole_player_init (ParolePlayer *player)
               
     g_signal_connect (player->priv->list, "show-playlist",
               G_CALLBACK (parole_player_media_list_show_playlist_cb), player);
-              
-    g_signal_connect (player->priv->list, "gst-dvd-nav-message",
-              G_CALLBACK (parole_player_media_list_gst_nav_message_cb), player);
     
     /*
      * Load auto saved media list.
diff --git a/src/parole-player.h b/src/parole-player.h
index f1b5c6c..0e8503e 100644
--- a/src/parole-player.h
+++ b/src/parole-player.h
@@ -45,11 +45,14 @@ typedef struct
 {
     GObjectClass                parent_class;
     
-    void                        (*shuffle_toggled)              (ParolePlayer *list,
+    void                        (*shuffle_toggled)              (ParolePlayer *player,
                                                                  gboolean shuffle_toggled);
                                      
-    void                        (*repeat_toggled)               (ParolePlayer *list,
+    void                        (*repeat_toggled)               (ParolePlayer *player,
                                                                  gboolean repeat_toggled);
+                                                                 
+    void                        (*gst_dvd_nav_message)          (ParolePlayer *player,
+                                                                 gint gst_dvd_nav_message);
 
 } ParolePlayerClass;
 


More information about the Xfce4-commits mailing list