[rhythmbox] playlist: add 'remove from playlist' action for playlist sources
- From: Jonathan Matthew <jmatthew src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [rhythmbox] playlist: add 'remove from playlist' action for playlist sources
- Date: Wed, 13 Jan 2010 13:11:37 +0000 (UTC)
commit a6369fdf542df71e50f49af08c29a800b6c7cca8
Author: Jonathan Matthew <jonathan d14n org>
Date: Wed Jan 13 23:01:13 2010 +1000
playlist: add 'remove from playlist' action for playlist sources
Removing entries from playlists is neither 'remove' as it's used
elsewhere, nor 'delete', so it deserves its own description.
data/ui/rhythmbox-ui.xml | 4 ++--
shell/rb-playlist-manager.c | 2 +-
sources/rb-playlist-source.c | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 37 insertions(+), 3 deletions(-)
---
diff --git a/data/ui/rhythmbox-ui.xml b/data/ui/rhythmbox-ui.xml
index 86ea706..5429fb4 100644
--- a/data/ui/rhythmbox-ui.xml
+++ b/data/ui/rhythmbox-ui.xml
@@ -149,8 +149,8 @@
</menu>
<menuitem name="CopyPlaylistPopup" action="EditCopy"/>
<menuitem name="CutPlaylistPopup" action="EditCut"/>
- <menuitem name="DeletePlaylistPopup" action="EditDelete"/>
<separator/>
+ <menuitem name="RemoveFromPlaylistPopup" action="RemoveFromPlaylist"/>
<menuitem name="MovetoTrashPlaylistPopup" action="EditMovetoTrash"/>
<separator/>
<placeholder name="PluginPlaceholder"/>
@@ -159,7 +159,7 @@
</popup>
<popup name="QueuePlaylistViewPopup">
- <menuitem name="DeletePlaylistPopup" action="EditDelete"/>
+ <menuitem name="RemoveFromPlaylistPopup" action="RemoveFromPlaylist"/>
<menuitem name="ShufflePlaylistPopup" action="ShuffleQueue"/>
<menuitem name="SaveQueuePopup" action="MusicPlaylistSavePlaylist"/>
<separator/>
diff --git a/shell/rb-playlist-manager.c b/shell/rb-playlist-manager.c
index beb361b..be41742 100644
--- a/shell/rb-playlist-manager.c
+++ b/shell/rb-playlist-manager.c
@@ -416,7 +416,7 @@ rb_playlist_manager_set_uimanager (RBPlaylistManager *mgr,
mgr->priv->uimanager = uimanager;
if (mgr->priv->actiongroup == NULL) {
- mgr->priv->actiongroup = gtk_action_group_new ("PlaylistActions");
+ mgr->priv->actiongroup = gtk_action_group_new ("PlaylistManagerActions");
gtk_action_group_set_translation_domain (mgr->priv->actiongroup,
GETTEXT_PACKAGE);
gtk_action_group_add_actions (mgr->priv->actiongroup,
diff --git a/sources/rb-playlist-source.c b/sources/rb-playlist-source.c
index 7f1aaaf..7b2bbc0 100644
--- a/sources/rb-playlist-source.c
+++ b/sources/rb-playlist-source.c
@@ -118,13 +118,25 @@ static void rb_playlist_source_songs_sort_order_changed_cb (RBEntryView *view,
RBStaticPlaylistSource *source);
static char *rb_playlist_source_make_sorting_key (RBPlaylistSource *source);
+static void remove_from_playlist_cmd (GtkAction *action, RBSource *source);
+static char *impl_get_delete_action (RBSource *source);
+
#define CONF_STATE_SORTING_PREFIX CONF_PREFIX "/state/sorting/"
#define PLAYLIST_SOURCE_SONGS_POPUP_PATH "/PlaylistViewPopup"
#define PLAYLIST_SOURCE_POPUP_PATH "/PlaylistSourcePopup"
+static GtkActionEntry rb_playlist_source_actions [] =
+{
+ { "RemoveFromPlaylist", GTK_STOCK_REMOVE, N_("Remove From Playlist"), "Delete",
+ N_("Remove each selected song from the playlist"),
+ G_CALLBACK (remove_from_playlist_cmd) },
+};
+
+
struct RBPlaylistSourcePrivate
{
RhythmDB *db;
+ GtkActionGroup *action_group;
GHashTable *entries;
@@ -179,6 +191,7 @@ rb_playlist_source_class_init (RBPlaylistSourceClass *klass)
source_class->impl_song_properties = impl_song_properties;
source_class->impl_can_pause = (RBSourceFeatureFunc) rb_true_function;
source_class->impl_show_popup = impl_show_popup;
+ source_class->impl_get_delete_action = impl_get_delete_action;
klass->impl_show_entry_view_popup = default_show_entry_view_popup;
klass->impl_mark_dirty = default_mark_dirty;
@@ -285,6 +298,16 @@ rb_playlist_source_constructed (GObject *object)
shell_player = rb_shell_get_player (shell);
rb_playlist_source_set_db (source, db);
g_object_unref (db);
+
+ source->priv->action_group = _rb_source_register_action_group (RB_SOURCE (source),
+ "PlaylistActions",
+ NULL, 0,
+ shell);
+ _rb_action_group_add_source_actions (source->priv->action_group,
+ G_OBJECT (shell),
+ rb_playlist_source_actions,
+ G_N_ELEMENTS (rb_playlist_source_actions));
+
g_object_unref (shell);
source->priv->entries = g_hash_table_new_full (rb_refstring_hash, rb_refstring_equal,
@@ -1066,3 +1089,14 @@ rb_playlist_source_make_sorting_key (RBPlaylistSource *source)
return sorting_key;
}
+static void
+remove_from_playlist_cmd (GtkAction *action, RBSource *source)
+{
+ rb_source_delete (source);
+}
+
+static char *
+impl_get_delete_action (RBSource *source)
+{
+ return g_strdup ("RemoveFromPlaylist");
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]