commit bb3b0d74763992a29d14e74ee673dba920c10f05
Author: Paul Richardson aka phantomjinx <[email protected]>
Date: Thu Apr 15 23:05:33 2010 +0100
Add update actions to the playlist, sorttab and track plugins
* Each plugin contributes its own particular update track acion
data/ui/gtkpod.ui | 1 +
plugins/playlist_display/playlist_display.ui | 4 +-
.../playlist_display/playlist_display_actions.c | 10 +-
.../playlist_display/playlist_display_actions.h | 2 +
.../playlist_display_context_menu.c | 188 ++++++++++----------
plugins/playlist_display/plugin.c | 15 ++-
plugins/repository_editor/repository_editor.c | 2 +-
plugins/sorttab_display/plugin.c | 8 +
plugins/sorttab_display/sorttab_display.ui | 7 +
plugins/sorttab_display/sorttab_display_actions.c | 18 ++
plugins/sorttab_display/sorttab_display_actions.h | 2 +
plugins/track_display/plugin.c | 8 +
plugins/track_display/track_display.ui | 7 +
plugins/track_display/track_display_actions.c | 9 +
plugins/track_display/track_display_actions.h | 1 +
src/anjuta-actions.h | 8 +
16 files changed, 184 insertions(+), 106 deletions(-)
---
diff --git a/data/ui/gtkpod.ui b/data/ui/gtkpod.ui
index 36a13e1..abb739f 100755
--- a/data/ui/gtkpod.ui
+++ b/data/ui/gtkpod.ui
@@ -3,6 +3,7 @@
<menubar name="MenuMain">
<menu name="MenuMusic" action="ActionMenuMusic">
<placeholder name="PlaceholderMusicMenus"/>
+ <menu name="Update Tracks from File"
action="ActionUpdateMenu"/>
<placeholder name="PlaceholderFileMenus"/>
<menuitem name="Quit" action="ActionExit" />
</menu>
diff --git a/plugins/playlist_display/playlist_display.ui
b/plugins/playlist_display/playlist_display.ui
index b87799b..0e5a1ea 100644
--- a/plugins/playlist_display/playlist_display.ui
+++ b/plugins/playlist_display/playlist_display.ui
@@ -11,10 +11,8 @@
<separator/>
<menu name="Update Tracks from File"
action="ActionUpdateMenu">
<menuitem name="Selected Playlist"
action="ActionUpdatePlaylist" />
- <menuitem name="Selected Tab Entry"
action="ActionUpdateTabEntry" />
- <menuitem name="Selected Tracks"
action="ActionUpdateTracks" />
- <separator name="separator3" />
</menu>
+ <separator/>
</placeholder>
</menu>
<menu name="MenuEdit" action="ActionMenuEdit">
diff --git a/plugins/playlist_display/playlist_display_actions.c
b/plugins/playlist_display/playlist_display_actions.c
index 01a8af1..d7560b4 100644
--- a/plugins/playlist_display/playlist_display_actions.c
+++ b/plugins/playlist_display/playlist_display_actions.c
@@ -231,8 +231,7 @@ static void fileselection_add_files(GSList* names, Playlist
*playlist) {
/* If we don't have a playlist to add to, don't add anything */
g_return_if_fail (playlist);
- g_warning("fileselection_add_files - block widgets commented out");
- // block_widgets();
+ block_widgets();
gtkpod_statusbar_busy_push();
/* Get the filenames and add them */
@@ -557,3 +556,10 @@ void
on_delete_selected_playlist_including_tracks_from_device(GtkAction *action,
on_delete_selected_playlist_including_tracks_from_harddisk(action,
plugin);
}
}
+
+void on_update_selected_playlist (GtkAction *action, PlaylistDisplayPlugin*
plugin) {
+ Playlist *pl = pm_get_selected_playlist();
+ if (pl) {
+ update_tracks(pm_get_selected_playlist()->members);
+ }
+}
diff --git a/plugins/playlist_display/playlist_display_actions.h
b/plugins/playlist_display/playlist_display_actions.h
index e967f88..6be0362 100644
--- a/plugins/playlist_display/playlist_display_actions.h
+++ b/plugins/playlist_display/playlist_display_actions.h
@@ -66,4 +66,6 @@ void on_delete_selected_playlist_including_tracks_from_ipod
(GtkAction *action,
void on_delete_selected_playlist_including_tracks_from_database (GtkAction
*action, PlaylistDisplayPlugin* plugin);
void on_delete_selected_playlist_including_tracks_from_device(GtkAction
*action, PlaylistDisplayPlugin* plugin);
+void on_update_selected_playlist (GtkAction *action, PlaylistDisplayPlugin*
plugin);
+
#endif
diff --git a/plugins/playlist_display/playlist_display_context_menu.c
b/plugins/playlist_display/playlist_display_context_menu.c
index d6f74df..5075e53 100644
--- a/plugins/playlist_display/playlist_display_context_menu.c
+++ b/plugins/playlist_display/playlist_display_context_menu.c
@@ -40,108 +40,77 @@
#include "libgtkpod/gp_spl.h"
#include "libgtkpod/context_menus.h"
#include "libgtkpod/misc_playlist.h"
+#include "libgtkpod/misc.h"
static void context_menu_delete_playlist_head(GtkMenuItem *mi, gpointer data) {
DeleteAction deleteaction = GPOINTER_TO_INT (data);
delete_playlist_head(deleteaction);
}
-static GtkWidget *add_delete_all_tracks_from_ipod (GtkWidget *menu)
-{
+static GtkWidget *add_delete_all_tracks_from_ipod(GtkWidget *menu) {
GtkWidget *mi;
GtkWidget *sub;
- mi = hookup_menu_item(menu, _("Remove All Tracks from iPod"),
- GTK_STOCK_DELETE,
- NULL, NULL);
- sub = gtk_menu_new ();
- gtk_widget_show (sub);
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), sub);
- hookup_menu_item (sub, _("I'm sure"),
- NULL,
- G_CALLBACK (context_menu_delete_track_head),
- GINT_TO_POINTER (DELETE_ACTION_IPOD));
+ mi = hookup_menu_item(menu, _("Remove All Tracks from iPod"),
GTK_STOCK_DELETE, NULL, NULL);
+ sub = gtk_menu_new();
+ gtk_widget_show(sub);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM (mi), sub);
+ hookup_menu_item(sub, _("I'm sure"), NULL, G_CALLBACK
(context_menu_delete_track_head), GINT_TO_POINTER (DELETE_ACTION_IPOD));
return mi;
}
-static GtkWidget *add_delete_all_tracks_from_database (GtkWidget *menu)
-{
+static GtkWidget *add_delete_all_tracks_from_database(GtkWidget *menu) {
GtkWidget *mi;
GtkWidget *sub;
- mi = hookup_menu_item (menu, _("Remove All Tracks from Database"),
- GTK_STOCK_DELETE,
- NULL, NULL);
- sub = gtk_menu_new ();
- gtk_widget_show (sub);
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), sub);
- hookup_menu_item (sub, _("I'm sure"),
- NULL,
- G_CALLBACK (context_menu_delete_track_head),
- GINT_TO_POINTER (DELETE_ACTION_DATABASE));
+ mi = hookup_menu_item(menu, _("Remove All Tracks from Database"),
GTK_STOCK_DELETE, NULL, NULL);
+ sub = gtk_menu_new();
+ gtk_widget_show(sub);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM (mi), sub);
+ hookup_menu_item(sub, _("I'm sure"), NULL, G_CALLBACK
(context_menu_delete_track_head), GINT_TO_POINTER (DELETE_ACTION_DATABASE));
return mi;
}
-static GtkWidget *add_delete_all_podcasts_from_ipod (GtkWidget *menu)
-{
+static GtkWidget *add_delete_all_podcasts_from_ipod(GtkWidget *menu) {
GtkWidget *mi;
GtkWidget *sub;
- mi = hookup_menu_item(menu, _("Remove All Podcasts from iPod"),
- GTK_STOCK_DELETE,
- NULL, NULL);
- sub = gtk_menu_new ();
- gtk_widget_show (sub);
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), sub);
- hookup_menu_item (sub, _("I'm sure"),
- NULL,
- G_CALLBACK (context_menu_delete_track_head),
- GINT_TO_POINTER (DELETE_ACTION_IPOD));
+ mi = hookup_menu_item(menu, _("Remove All Podcasts from iPod"),
GTK_STOCK_DELETE, NULL, NULL);
+ sub = gtk_menu_new();
+ gtk_widget_show(sub);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM (mi), sub);
+ hookup_menu_item(sub, _("I'm sure"), NULL, G_CALLBACK
(context_menu_delete_track_head), GINT_TO_POINTER (DELETE_ACTION_IPOD));
return mi;
}
-static GtkWidget *add_delete_playlist_including_tracks_ipod (GtkWidget *menu)
-{
- return hookup_menu_item(menu, _("Delete Including Tracks"),
- GTK_STOCK_DELETE,
- G_CALLBACK (context_menu_delete_playlist_head),
- GINT_TO_POINTER (DELETE_ACTION_IPOD));
+static GtkWidget *add_delete_playlist_including_tracks_ipod(GtkWidget *menu) {
+ return hookup_menu_item(menu, _("Delete Including Tracks"),
GTK_STOCK_DELETE, G_CALLBACK (context_menu_delete_playlist_head),
GINT_TO_POINTER (DELETE_ACTION_IPOD));
}
-static GtkWidget *add_delete_playlist_including_tracks_database (GtkWidget
*menu)
-{
- return hookup_menu_item (menu, _("Delete Including Tracks (Database)"),
- GTK_STOCK_DELETE,
- G_CALLBACK (context_menu_delete_playlist_head),
- GINT_TO_POINTER (DELETE_ACTION_DATABASE));
+static GtkWidget *add_delete_playlist_including_tracks_database(GtkWidget
*menu) {
+ return hookup_menu_item(menu, _("Delete Including Tracks (Database)"),
GTK_STOCK_DELETE, G_CALLBACK (context_menu_delete_playlist_head),
GINT_TO_POINTER (DELETE_ACTION_DATABASE));
}
-static GtkWidget *add_delete_playlist_including_tracks_harddisk (GtkWidget
*menu)
-{
- return hookup_menu_item (menu, _("Delete Including Tracks (Harddisk)"),
- GTK_STOCK_DELETE,
- G_CALLBACK (context_menu_delete_playlist_head),
- GINT_TO_POINTER (DELETE_ACTION_LOCAL));
+static GtkWidget *add_delete_playlist_including_tracks_harddisk(GtkWidget
*menu) {
+ return hookup_menu_item(menu, _("Delete Including Tracks (Harddisk)"),
GTK_STOCK_DELETE, G_CALLBACK (context_menu_delete_playlist_head),
GINT_TO_POINTER (DELETE_ACTION_LOCAL));
}
static GtkWidget *add_delete_playlist_but_keep_tracks(GtkWidget *menu) {
return hookup_menu_item(menu, _("Delete But Keep Tracks"),
GTK_STOCK_DELETE, G_CALLBACK (context_menu_delete_playlist_head),
GINT_TO_POINTER (DELETE_ACTION_PLAYLIST));
}
-static void copy_selected_playlist_to_target_itdb (GtkMenuItem *mi, gpointer
*userdata)
-{
+static void copy_selected_playlist_to_target_itdb(GtkMenuItem *mi, gpointer
*userdata) {
iTunesDB *t_itdb = *userdata;
g_return_if_fail (t_itdb);
if (gtkpod_get_current_playlist())
- copy_playlist_to_target_itdb (gtkpod_get_current_playlist(), t_itdb);
+ copy_playlist_to_target_itdb(gtkpod_get_current_playlist(), t_itdb);
}
-static void copy_selected_playlist_to_target_playlist (GtkMenuItem *mi,
gpointer *userdata)
-{
+static void copy_selected_playlist_to_target_playlist(GtkMenuItem *mi,
gpointer *userdata) {
Playlist *t_pl = *userdata;
g_return_if_fail (t_pl);
if (gtkpod_get_current_playlist())
- copy_playlist_to_target_playlist (gtkpod_get_current_playlist(), t_pl);
+ copy_playlist_to_target_playlist(gtkpod_get_current_playlist(), t_pl);
}
static GtkWidget *add_copy_selected_playlist_to_target_itdb(GtkWidget *menu,
const gchar *title) {
@@ -198,57 +167,83 @@ static GtkWidget
*add_copy_selected_playlist_to_target_itdb(GtkWidget *menu, con
}
/* Edit selected smart playlist */
-static void edit_spl (GtkMenuItem *mi, gpointer data)
-{
+static void edit_spl(GtkMenuItem *mi, gpointer data) {
Playlist *pl = gtkpod_get_current_playlist();
if (pl)
- spl_edit (pl);
+ spl_edit(pl);
}
-static GtkWidget *add_edit_smart_playlist (GtkWidget *menu)
-{
- return hookup_menu_item (menu, _("Edit Smart Playlist"),
- GTK_STOCK_PROPERTIES,
- G_CALLBACK (edit_spl), NULL);
+static GtkWidget *add_edit_smart_playlist(GtkWidget *menu) {
+ return hookup_menu_item(menu, _("Edit Smart Playlist"),
GTK_STOCK_PROPERTIES, G_CALLBACK (edit_spl), NULL);
}
/* Display repository options */
-static void edit_properties (GtkMenuItem *mi, gpointer data)
-{
+static void edit_properties(GtkMenuItem *mi, gpointer data) {
+ g_return_if_fail (gtkpod_get_current_playlist());
+
+ gtkpod_edit_repository(gtkpod_get_current_playlist()->itdb,
gtkpod_get_current_playlist());
+}
+
+/* Save Changes */
+static void save_changes(GtkMenuItem *mi, gpointer data) {
+ g_return_if_fail (gtkpod_get_current_playlist());
+ gp_save_itdb(gtkpod_get_current_playlist()->itdb);
+}
+
+/* Load an itdb */
+static void load_ipod(GtkMenuItem *mi, gpointer data) {
+ g_return_if_fail (gtkpod_get_current_playlist());
+ gp_load_ipod(gtkpod_get_current_playlist()->itdb);
+}
+
+static void eject_ipod(GtkMenuItem *mi, gpointer data) {
+ iTunesDB *itdb;
+ ExtraiTunesDBData *eitdb;
+
+ /* all of the checks below indicate a programming error -> give a
+ warning through the g_..._fail macros */
g_return_if_fail (gtkpod_get_current_playlist());
+ itdb = gtkpod_get_current_playlist()->itdb;
+ g_return_if_fail (itdb);
+ g_return_if_fail (itdb->usertype & GP_ITDB_TYPE_IPOD);
+ eitdb = itdb->userdata;
+ g_return_if_fail (eitdb);
+ g_return_if_fail (eitdb->itdb_imported == TRUE);
- gtkpod_edit_repository (gtkpod_get_current_playlist()->itdb,
gtkpod_get_current_playlist());
+ gp_eject_ipod(itdb);
}
-static GtkWidget *add_edit_ipod_properties (GtkWidget *menu)
-{
- return hookup_menu_item (menu, _("Edit iPod Properties"),
- GTK_STOCK_PREFERENCES,
- G_CALLBACK (edit_properties), NULL);
+static GtkWidget *add_edit_ipod_properties(GtkWidget *menu) {
+ return hookup_menu_item(menu, _("Edit iPod Properties"),
GTK_STOCK_PREFERENCES, G_CALLBACK (edit_properties), NULL);
}
-static GtkWidget *add_edit_repository_properties (GtkWidget *menu)
-{
- return hookup_menu_item (menu, _("Edit Repository Properties"),
- GTK_STOCK_PREFERENCES,
- G_CALLBACK (edit_properties), NULL);
+static GtkWidget *add_edit_repository_properties(GtkWidget *menu) {
+ return hookup_menu_item(menu, _("Edit Repository Properties"),
GTK_STOCK_PREFERENCES, G_CALLBACK (edit_properties), NULL);
}
-static GtkWidget *add_edit_playlist_properties (GtkWidget *menu)
-{
- return hookup_menu_item (menu, _("Edit Playlist Properties"),
- GTK_STOCK_PREFERENCES,
- G_CALLBACK (edit_properties), NULL);
+static GtkWidget *add_edit_playlist_properties(GtkWidget *menu) {
+ return hookup_menu_item(menu, _("Edit Playlist Properties"),
GTK_STOCK_PREFERENCES, G_CALLBACK (edit_properties), NULL);
+}
+
+static GtkWidget *add_load_ipod(GtkWidget *menu) {
+ return hookup_menu_item(menu, _("Load iPod"), GTK_STOCK_CONNECT,
G_CALLBACK (load_ipod), NULL);
+}
+
+static GtkWidget *add_save_changes(GtkWidget *menu) {
+ return hookup_menu_item(menu, _("Save Changes"), GTK_STOCK_SAVE,
G_CALLBACK (save_changes), NULL);
+}
+
+static GtkWidget *add_eject_ipod(GtkWidget *menu) {
+ return hookup_menu_item(menu, _("Eject iPod"), GTK_STOCK_DISCONNECT,
G_CALLBACK (eject_ipod), NULL);
}
void pm_context_menu_init(void) {
GtkWidget *menu = NULL;
Playlist *pl;
- g_warning("TODO widgets blocked on pm_context_menu_init");
-// if (widgets_blocked)
-// return;
+ if (widgets_blocked)
+ return;
pm_stop_editing(TRUE);
@@ -296,7 +291,7 @@ void pm_context_menu_init(void) {
}
add_copy_selected_playlist_to_target_itdb(menu, _("Copy selected
playlist to..."));
add_separator(menu);
-// add_edit_track_details(menu);
+ // add_edit_track_details(menu);
if (pl->is_spl) {
add_edit_smart_playlist(menu);
}
@@ -306,14 +301,12 @@ void pm_context_menu_init(void) {
else {
add_edit_playlist_properties(menu);
}
-// add_check_ipod_files(menu);
-// add_eject_ipod(menu);
+ add_eject_ipod(menu);
}
else { /* not imported */
add_edit_ipod_properties(menu);
-// add_check_ipod_files(menu);
add_separator(menu);
-// add_load_ipod(menu);
+ add_load_ipod(menu);
}
}
if (itdb->usertype & GP_ITDB_TYPE_LOCAL) {
@@ -334,7 +327,7 @@ void pm_context_menu_init(void) {
}
add_copy_selected_playlist_to_target_itdb(menu, _("Copy selected
playlist to..."));
add_separator(menu);
-// add_edit_track_details(menu);
+ // add_edit_track_details(menu);
if (pl->is_spl) {
add_edit_smart_playlist(menu);
}
@@ -344,7 +337,10 @@ void pm_context_menu_init(void) {
else {
add_edit_playlist_properties(menu);
}
-// add_save_changes(menu);
+ }
+
+ if (eitdb->data_changed) {
+ add_save_changes(menu);
}
/*
diff --git a/plugins/playlist_display/plugin.c
b/plugins/playlist_display/plugin.c
index 5aab57d..61d1dae 100644
--- a/plugins/playlist_display/plugin.c
+++ b/plugins/playlist_display/plugin.c
@@ -248,6 +248,14 @@ static GtkActionEntry playlist_actions[] =
NULL,
NULL,
G_CALLBACK
(on_delete_selected_playlist_including_tracks_from_device)
+ },
+ {
+ "ActionUpdatePlaylist",
+ GTK_STOCK_REFRESH,
+ N_("Selected Playlist"),
+ NULL,
+ NULL,
+ G_CALLBACK (on_update_selected_playlist)
}
};
@@ -345,8 +353,7 @@ static void playlist_display_plugin_class_init(GObjectClass
*klass) {
plugin_class->deactivate = deactivate_plugin;
}
-ANJUTA_PLUGIN_BEGIN (PlaylistDisplayPlugin,
playlist_display_plugin);ANJUTA_PLUGIN_END
-;
+ANJUTA_PLUGIN_BEGIN (PlaylistDisplayPlugin, playlist_display_plugin);
+ANJUTA_PLUGIN_END;
-ANJUTA_SIMPLE_PLUGIN (PlaylistDisplayPlugin, playlist_display_plugin)
-;
+ANJUTA_SIMPLE_PLUGIN (PlaylistDisplayPlugin, playlist_display_plugin);
diff --git a/plugins/repository_editor/repository_editor.c
b/plugins/repository_editor/repository_editor.c
index 6133822..e2f278e 100644
--- a/plugins/repository_editor/repository_editor.c
+++ b/plugins/repository_editor/repository_editor.c
@@ -703,7 +703,7 @@ static void edit_apply_clicked(GtkButton *button) {
g_free(key);
if (str) { /* have to set mountpoint */
itdb_set_mountpoint(itdb, str);
- g_warning("TODO: edit_apply_clicked - space_set_ipod_itdb");
+ g_message("TODO: edit_apply_clicked - space_set_ipod_itdb");
// space_set_ipod_itdb(itdb);
g_free(str);
}
diff --git a/plugins/sorttab_display/plugin.c b/plugins/sorttab_display/plugin.c
index 01252b1..9a82d01 100644
--- a/plugins/sorttab_display/plugin.c
+++ b/plugins/sorttab_display/plugin.c
@@ -81,6 +81,14 @@ static GtkActionEntry sorttab_actions[] =
NULL,
NULL,
G_CALLBACK (on_delete_selected_entry_from_device)
+ },
+ {
+ "ActionUpdateTabEntry",
+ GTK_STOCK_REFRESH,
+ N_("Selected Tab Entry"),
+ NULL,
+ NULL,
+ G_CALLBACK (on_update_selected_tab_entry)
}
};
diff --git a/plugins/sorttab_display/sorttab_display.ui
b/plugins/sorttab_display/sorttab_display.ui
index a91811c..532845c 100644
--- a/plugins/sorttab_display/sorttab_display.ui
+++ b/plugins/sorttab_display/sorttab_display.ui
@@ -1,6 +1,13 @@
<!--*- xml -*-->
<ui>
<menubar name="MenuMain">
+ <menu name="MenuMusic" action="ActionMenuMusic">
+ <placeholder name="PlaceholderMusicMenus">
+ <menu name="Update Tracks from File"
action="ActionUpdateMenu">
+ <menuitem name="Selected Tab Entry"
action="ActionUpdateTabEntry"/>
+ </menu>
+ </placeholder>
+ </menu>
<menu name="MenuEdit" action="ActionMenuEdit">
<placeholder name="PlaceholderEditMenus">
<menu name="Delete"
action="ActionEditDeleteMenu">
diff --git a/plugins/sorttab_display/sorttab_display_actions.c
b/plugins/sorttab_display/sorttab_display_actions.c
index 8ab3159..381b9a4 100644
--- a/plugins/sorttab_display/sorttab_display_actions.c
+++ b/plugins/sorttab_display/sorttab_display_actions.c
@@ -35,6 +35,7 @@
#include "sorttab_display_actions.h"
#include "display_sorttabs.h"
#include "libgtkpod/gp_itdb.h"
+#include "libgtkpod/file.h"
void on_more_sort_tabs_activate(GtkAction *action, SorttabDisplayPlugin*
plugin) {
prefs_set_int("sort_tab_num", prefs_get_int("sort_tab_num") + 1);
@@ -90,3 +91,20 @@ void on_delete_selected_entry_from_device(GtkAction *action,
SorttabDisplayPlugi
on_delete_selected_entry_from_harddisk(action, plugin);
}
}
+
+void on_update_selected_tab_entry (GtkAction *action, SorttabDisplayPlugin*
plugin) {
+ TabEntry *entry;
+ gint inst;
+
+ inst = st_get_sort_tab_number(_("Update selected entry of which sort
tab?"));
+ if (inst == -1)
+ return;
+
+ entry = st_get_selected_entry(inst);
+ if (!entry) {
+ gtkpod_statusbar_message(_("No entry selected in Sort Tab %d"), inst +
1);
+ return;
+ }
+
+ update_tracks(entry->members);
+}
diff --git a/plugins/sorttab_display/sorttab_display_actions.h
b/plugins/sorttab_display/sorttab_display_actions.h
index 0c60f4e..b111c27 100644
--- a/plugins/sorttab_display/sorttab_display_actions.h
+++ b/plugins/sorttab_display/sorttab_display_actions.h
@@ -50,4 +50,6 @@ void on_delete_selected_entry_from_playlist(GtkAction
*action, SorttabDisplayPlu
void on_delete_selected_entry_from_device(GtkAction *action,
SorttabDisplayPlugin* plugin);
+void on_update_selected_tab_entry (GtkAction *action, SorttabDisplayPlugin*
plugin);
+
#endif
diff --git a/plugins/track_display/plugin.c b/plugins/track_display/plugin.c
index 8268e43..6354db4 100644
--- a/plugins/track_display/plugin.c
+++ b/plugins/track_display/plugin.c
@@ -64,6 +64,14 @@ static GtkActionEntry track_actions[] =
NULL,
NULL,
G_CALLBACK (on_delete_selected_tracks_from_device)
+ },
+ {
+ "ActionUpdateTracks",
+ GTK_STOCK_REFRESH,
+ N_("Selected Tracks"),
+ NULL,
+ NULL,
+ G_CALLBACK (on_update_selected_tracks)
}
};
diff --git a/plugins/track_display/track_display.ui
b/plugins/track_display/track_display.ui
index 21d15e6..683e1cf 100644
--- a/plugins/track_display/track_display.ui
+++ b/plugins/track_display/track_display.ui
@@ -1,6 +1,13 @@
<!--*- xml -*-->
<ui>
<menubar name="MenuMain">
+ <menu name="MenuMusic" action="menuMusic">
+ <placeholder name="PlaceholderMusicMenus">
+ <menu name="Update Tracks from File"
action="ActionUpdateMenu">
+ <menuitem name="Selected Tracks"
action="ActionUpdateTracks" />
+ </menu>
+ </placeholder>
+ </menu>
<menu name="MenuEdit" action="ActionMenuEdit">
<placeholder name="PlaceholderEditMenus">
<menu name="Delete"
action="ActionEditDeleteMenu">
diff --git a/plugins/track_display/track_display_actions.c
b/plugins/track_display/track_display_actions.c
index 52f9fa3..c736255 100644
--- a/plugins/track_display/track_display_actions.c
+++ b/plugins/track_display/track_display_actions.c
@@ -35,6 +35,7 @@
#include "display_tracks.h"
#include "libgtkpod/misc.h"
#include "libgtkpod/misc_track.h"
+#include "libgtkpod/file.h"
static void delete_selected_tracks(DeleteAction deleteaction) {
GList *tracks = gtkpod_get_selected_tracks();
@@ -77,3 +78,11 @@ void on_delete_selected_tracks_from_device(GtkAction
*action, TrackDisplayPlugin
}
}
+void on_update_selected_tracks (GtkAction *action, TrackDisplayPlugin* plugin)
{
+ GList *tracks = gtkpod_get_selected_tracks();
+
+ if (tracks) {
+ update_tracks(tracks);
+ }
+}
+
diff --git a/plugins/track_display/track_display_actions.h
b/plugins/track_display/track_display_actions.h
index bd8fb1c..41ae64f 100644
--- a/plugins/track_display/track_display_actions.h
+++ b/plugins/track_display/track_display_actions.h
@@ -41,5 +41,6 @@ void on_delete_selected_tracks_from_database(GtkAction
*action, TrackDisplayPlug
void on_delete_selected_tracks_from_harddisk(GtkAction *action,
TrackDisplayPlugin* plugin);
void on_delete_selected_tracks_from_ipod(GtkAction *action,
TrackDisplayPlugin* plugin);
void on_delete_selected_tracks_from_device(GtkAction *action,
TrackDisplayPlugin* plugin);
+void on_update_selected_tracks (GtkAction *action, TrackDisplayPlugin* plugin);
#endif
diff --git a/src/anjuta-actions.h b/src/anjuta-actions.h
index b6cefc3..64735c5 100644
--- a/src/anjuta-actions.h
+++ b/src/anjuta-actions.h
@@ -26,6 +26,14 @@ static GtkActionEntry menu_entries_music[] = {
N_("_Music")
},
{
+ "ActionUpdateMenu",
+ GTK_STOCK_REFRESH,
+ N_("_Update Tracks from File"),
+ NULL,
+ NULL,
+ NULL
+ },
+ {
"ActionExit",
GTK_STOCK_QUIT,
N_("_Quit"),
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2