commit bb3b0d74763992a29d14e74ee673dba920c10f05 Author: Paul Richardson aka phantomjinx <p.g.richard...@phantomjinx.co.uk> 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 gtkpod-cvs2@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2