[Xfce4-commits] <parole:master> Initial recent files menu.

Sean Davis noreply at xfce.org
Sat Dec 1 06:20:01 CET 2012


Updating branch refs/heads/master
         to 27150b0f60966778020e742eff6860477277a1fd (commit)
       from 949d5e8567888610168f50e3168a49d9326bad05 (commit)

commit 27150b0f60966778020e742eff6860477277a1fd
Author: Sean Davis <smd.seandavis at gmail.com>
Date:   Sat Dec 1 00:18:49 2012 -0500

    Initial recent files menu.

 data/interfaces/parole.ui |   17 +++++++++++++----
 src/misc/parole-filters.c |   34 ++++++++++++++++++++++++++++++++++
 src/misc/parole-filters.h |    4 ++++
 src/parole-player.c       |   43 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 94 insertions(+), 4 deletions(-)

diff --git a/data/interfaces/parole.ui b/data/interfaces/parole.ui
index 6c8265c..e909416 100644
--- a/data/interfaces/parole.ui
+++ b/data/interfaces/parole.ui
@@ -107,7 +107,7 @@
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="menu-open-location">
-                        <property name="label" translatable="yes">Open _location</property>
+                        <property name="label" translatable="yes">Open _Location</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_action_appearance">False</property>
@@ -119,6 +119,15 @@
                       </object>
                     </child>
                     <child>
+                      <object class="GtkMenuItem" id="recent_menu">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="label" translatable="yes">Open Recent</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
                       <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
@@ -463,9 +472,9 @@
                         <property name="use_underline">True</property>
                         <property name="image">image_volume_up</property>
                         <property name="use_stock">False</property>
-                        <accelerator key="plus" signal="activate"/>
-                        <accelerator key="equal" signal="activate"/>
                         <accelerator key="KP_Add" signal="activate"/>
+                        <accelerator key="equal" signal="activate"/>
+                        <accelerator key="plus" signal="activate"/>
                         <signal name="activate" handler="parole_player_volume_up" swapped="no"/>
                       </object>
                     </child>
@@ -478,8 +487,8 @@
                         <property name="use_underline">True</property>
                         <property name="image">image_volume_down</property>
                         <property name="use_stock">False</property>
-                        <accelerator key="KP_Subtract" signal="activate"/>
                         <accelerator key="minus" signal="activate"/>
+                        <accelerator key="KP_Subtract" signal="activate"/>
                         <signal name="activate" handler="parole_player_volume_down" swapped="no"/>
                       </object>
                     </child>
diff --git a/src/misc/parole-filters.c b/src/misc/parole-filters.c
index 7c33346..dc18628 100644
--- a/src/misc/parole-filters.c
+++ b/src/misc/parole-filters.c
@@ -123,6 +123,24 @@ GtkFileFilter 		*parole_get_supported_media_filter	(void)
     return filter;
 }
 
+GtkRecentFilter 		*parole_get_supported_recent_media_filter	(void)
+{
+    GtkRecentFilter *filter;
+    guint i;
+    
+    filter = gtk_recent_filter_new ();
+    
+    gtk_recent_filter_set_name (filter, _("Audio and video"));
+    
+    for ( i = 0; i < G_N_ELEMENTS (audio_mime_types); i++)
+	gtk_recent_filter_add_mime_type (filter, audio_mime_types[i]);
+	
+    for ( i = 0; i < G_N_ELEMENTS (video_mime_types); i++)
+	gtk_recent_filter_add_mime_type (filter, video_mime_types[i]);
+    
+    return filter;
+}
+
 /**
  * parole_get_supported_files_filter:
  * 
@@ -150,6 +168,22 @@ GtkFileFilter *parole_get_supported_files_filter (void)
     
 }
 
+GtkRecentFilter *parole_get_supported_recent_files_filter (void)
+{
+    GtkRecentFilter *filter;
+    guint i;
+    
+    filter = parole_get_supported_recent_media_filter ();
+    
+    gtk_recent_filter_set_name (filter, _("All supported files"));
+    
+    for ( i = 0; i < G_N_ELEMENTS (playlist_mime_types); i++)
+	gtk_recent_filter_add_mime_type (filter, playlist_mime_types[i]);
+    
+    return filter;
+    
+}
+
 /**
  * parole_get_supported_playlist_filter:
  * 
diff --git a/src/misc/parole-filters.h b/src/misc/parole-filters.h
index ab7ae0f..39bb2e0 100644
--- a/src/misc/parole-filters.h
+++ b/src/misc/parole-filters.h
@@ -37,8 +37,12 @@ GtkFileFilter 		*parole_get_supported_video_filter	(void);
 
 GtkFileFilter 		*parole_get_supported_media_filter	(void);
 
+GtkRecentFilter     *parole_get_supported_recent_media_filter	(void);
+
 GtkFileFilter 		*parole_get_supported_files_filter	(void);
 
+GtkRecentFilter     *parole_get_supported_recent_files_filter (void);
+
 GtkFileFilter 		*parole_get_supported_playlist_filter	(void);
 
 gboolean		 parole_file_filter			(GtkFileFilter *filter,
diff --git a/src/parole-player.c b/src/parole-player.c
index b597716..10a0682 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -294,6 +294,7 @@ struct ParolePlayerPrivate
     ParoleMediaType current_media_type;
 
     GtkWidget 		*window;
+    GtkWidget       *recent_menu;
     GtkWidget		*playlist_nt;
     GtkWidget		*main_nt;	/*Main notebook*/
     GtkWidget		*show_hide_playlist;
@@ -1003,6 +1004,33 @@ parole_player_uri_opened_cb (ParoleMediaList *list, const gchar *uri, ParolePlay
 }
 
 static void
+parole_player_recent_menu_item_activated_cb (GtkWidget *widget, ParolePlayer *player)
+{
+    gchar *uri;
+    gchar *filename;
+    gchar *filenames[1];
+    ParoleMediaList *list;
+    
+    uri = gtk_recent_chooser_get_current_uri(GTK_RECENT_CHOOSER(widget));
+    
+    filename = g_filename_from_uri(uri, NULL, NULL);
+    
+    if (g_file_test (filename, G_FILE_TEST_EXISTS)) 
+    {
+        filenames[0] = g_strdup(filename);
+        filenames[1] = NULL;
+        
+	    list = parole_player_get_media_list (player);
+	    parole_media_list_add_files (list, filenames, FALSE);
+	    
+	    g_free(filenames[0]);
+	}
+    
+    g_free(filename);
+    g_free(uri);
+}
+
+static void
 parole_player_media_cursor_changed_cb (ParoleMediaList *list, gboolean media_selected, ParolePlayer *player)
 {
     if (player->priv->state < PAROLE_STATE_PAUSED)
@@ -2530,6 +2558,9 @@ parole_player_init (ParolePlayer *player)
     gboolean showhide;
     GdkColor background;
     
+    GtkWidget *recent_menu;
+    GtkRecentFilter *recent_filter;
+    
     gboolean repeat, shuffle;
     
     GtkWidget *infobar_contents;
@@ -2613,6 +2644,18 @@ parole_player_init (ParolePlayer *player)
     
     player->priv->window = GTK_WIDGET (gtk_builder_get_object (builder, "main-window"));
     
+    recent_menu = GTK_WIDGET (gtk_builder_get_object (builder, "recent_menu"));
+    
+    player->priv->recent_menu = gtk_recent_chooser_menu_new_for_manager (player->priv->recent);
+    gtk_recent_chooser_menu_set_show_numbers (GTK_RECENT_CHOOSER_MENU(player->priv->recent_menu), TRUE);
+    recent_filter = parole_get_supported_recent_media_filter ();
+    gtk_recent_chooser_set_filter( GTK_RECENT_CHOOSER(player->priv->recent_menu), recent_filter);
+    
+    gtk_menu_item_set_submenu( GTK_MENU_ITEM(recent_menu), player->priv->recent_menu );
+    
+    g_signal_connect (player->priv->recent_menu, "item-activated",
+		      G_CALLBACK (parole_player_recent_menu_item_activated_cb), player);
+    
     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"));
     


More information about the Xfce4-commits mailing list