commit cda30e4f23e44eb6c7d2af6d699206d529d4098f Author: phantomjinx <p.g.richard...@phantomjinx.co.uk> Date: Thu Feb 25 20:43:30 2010 +0000
Remaining delete features - gtkpod_app_iface.c - Ensure that list of tracks in set_selected_tracks is copied rather than pointed at. - playlist display plugin - Add TRACK_REMOVED signal to remove appropriate tracks from current playlist. - sorttab display plugin - Include "Delete Entry" actions in Edit Menu - Add TRACK_REMOVED signal to remove appropriate tracks from current sorttabs. - misc_track.* - delete_track_ok and delete_track_cancel no longer static as both used by sorttab's delete_entry_head(). libgtkpod/gtkpod_app_iface.c | 2 +- plugins/playlist_display/display_playlists.h | 1 + plugins/playlist_display/playlist_display.ui | 1 + plugins/playlist_display/plugin.c | 1 + plugins/sorttab_display/display_sorttabs.h | 5 + plugins/sorttab_display/plugin.c | 25 ++++ plugins/sorttab_display/sorttab_display.ui | 10 ++ plugins/sorttab_display/sorttab_display_actions.c | 50 +++++++- plugins/sorttab_display/sorttab_display_actions.h | 10 ++ plugins/track_display/track_display.ui | 1 + src/display_playlists.c | 7 + src/display_sorttabs.c | 157 ++++++++++++++++++++- src/misc_input.c | 84 +----------- src/misc_track.c | 6 +- src/misc_track.h | 2 + 15 files changed, 269 insertions(+), 93 deletions(-) --- diff --git a/libgtkpod/gtkpod_app_iface.c b/libgtkpod/gtkpod_app_iface.c index 26863f1..12a941b 100644 --- a/libgtkpod/gtkpod_app_iface.c +++ b/libgtkpod/gtkpod_app_iface.c @@ -261,7 +261,7 @@ GList *gtkpod_get_selected_tracks() { void gtkpod_set_selected_tracks(GList *tracks) { g_return_if_fail (GTKPOD_IS_APP(gtkpod_app)); - GTKPOD_APP_GET_INTERFACE (gtkpod_app)->selected_tracks = tracks; + GTKPOD_APP_GET_INTERFACE (gtkpod_app)->selected_tracks = g_list_copy(tracks); g_signal_emit(gtkpod_app, gtkpod_app_signals[TRACKS_SELECTED], 0, tracks); } diff --git a/plugins/playlist_display/display_playlists.h b/plugins/playlist_display/display_playlists.h index a64c2c5..0ab5eb5 100644 --- a/plugins/playlist_display/display_playlists.h +++ b/plugins/playlist_display/display_playlists.h @@ -58,5 +58,6 @@ void playlist_display_update_itdb_cb (GtkPodApp *app, gpointer olditdb, gpointer void playlist_display_select_playlist_cb (GtkPodApp *app, gpointer pl, gpointer data); void playlist_display_playlist_added_cb(GtkPodApp *app, gpointer pl, gint32 pos, gpointer data); void playlist_display_playlist_removed_cb(GtkPodApp *app, gpointer pl, gint32 pos, gpointer data); +void playlist_display_track_removed_cb(GtkPodApp *app, gpointer tk, gint32 pos, gpointer data); #endif /* __DISPLAY_PLAYLIST_H__ */ diff --git a/plugins/playlist_display/playlist_display.ui b/plugins/playlist_display/playlist_display.ui index 86b28b2..b87799b 100644 --- a/plugins/playlist_display/playlist_display.ui +++ b/plugins/playlist_display/playlist_display.ui @@ -13,6 +13,7 @@ <menuitem name="Selected Playlist" action="ActionUpdatePlaylist" /> <menuitem name="Selected Tab Entry" action="ActionUpdateTabEntry" /> <menuitem name="Selected Tracks" action="ActionUpdateTracks" /> + <separator name="separator3" /> </menu> </placeholder> </menu> diff --git a/plugins/playlist_display/plugin.c b/plugins/playlist_display/plugin.c index a65f0d0..d1deaaf 100644 --- a/plugins/playlist_display/plugin.c +++ b/plugins/playlist_display/plugin.c @@ -292,6 +292,7 @@ static gboolean activate_plugin(AnjutaPlugin *plugin) { g_signal_connect (gtkpod_app, SIGNAL_ITDB_UPDATED, G_CALLBACK (playlist_display_update_itdb_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_ADDED, G_CALLBACK (playlist_display_playlist_added_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_REMOVED, G_CALLBACK (playlist_display_playlist_removed_cb), NULL); + g_signal_connect (gtkpod_app, SIGNAL_TRACK_REMOVED, G_CALLBACK (playlist_display_track_removed_cb), NULL); gtk_container_add(GTK_CONTAINER (playlist_display_plugin->pl_window), GTK_WIDGET (playlist_display_plugin->playlist_view)); gtk_widget_show_all(playlist_display_plugin->pl_window); diff --git a/plugins/sorttab_display/display_sorttabs.h b/plugins/sorttab_display/display_sorttabs.h index a109540..4469ba0 100644 --- a/plugins/sorttab_display/display_sorttabs.h +++ b/plugins/sorttab_display/display_sorttabs.h @@ -38,6 +38,7 @@ #include "date_parser.h" #include "sorttab_conversion.h" #include "libgtkpod/gtkpod_app_iface.h" +#include "libgtkpod/gp_itdb.h" /* Number of search tabs to be supported. */ #define SORT_TAB_MAX (ST_CAT_NUM-1) @@ -131,9 +132,13 @@ void st_redisplay(guint32 inst); GList *st_get_selected_members(guint32 inst); void st_update_paned_position(); void st_show_visible(void); +TabEntry *st_get_selected_entry(gint inst); +gint st_get_sort_tab_number(gchar *text); +void st_delete_entry_head(gint inst, DeleteAction deleteaction); void cal_open_calendar(gint inst, T_item item); void sorttab_display_select_playlist_cb(GtkPodApp *app, gpointer pl, gpointer data); +void sorttab_display_track_removed_cb(GtkPodApp *app, gpointer tk, gint32 pos, gpointer data); #endif /* __DISPLAY_SORTTAB_H__ */ diff --git a/plugins/sorttab_display/plugin.c b/plugins/sorttab_display/plugin.c index f7d3ab6..01252b1 100644 --- a/plugins/sorttab_display/plugin.c +++ b/plugins/sorttab_display/plugin.c @@ -58,6 +58,30 @@ static GtkActionEntry sorttab_actions[] = NULL, /* Tooltip */ G_CALLBACK (on_fewer_sort_tabs_activate) /* callback */ }, + { + "ActionDeleteSelectedEntry", + GTK_STOCK_DELETE, + N_("Selected Filter Tab Entry from Playlist"), + NULL, + NULL, + G_CALLBACK (on_delete_selected_entry_from_playlist) + }, + { + "ActionDeleteSelectedEntryFromDb", + GTK_STOCK_DELETE, + N_("Selected Filter Tab Entry from Database"), + NULL, + NULL, + G_CALLBACK (on_delete_selected_entry_from_database) + }, + { + "ActionDeleteSelectedEntryFromDev", + GTK_STOCK_DELETE, + N_("Selected Filter Tab Entry from Device"), + NULL, + NULL, + G_CALLBACK (on_delete_selected_entry_from_device) + } }; static gboolean activate_sorttab_display_plugin(AnjutaPlugin *plugin) { @@ -84,6 +108,7 @@ static gboolean activate_sorttab_display_plugin(AnjutaPlugin *plugin) { gtk_widget_show(sorttab_display_plugin->st_paned); g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_SELECTED, G_CALLBACK (sorttab_display_select_playlist_cb), NULL); + g_signal_connect (gtkpod_app, SIGNAL_TRACK_REMOVED, G_CALLBACK (sorttab_display_track_removed_cb), NULL); anjuta_shell_add_widget(plugin->shell, sorttab_display_plugin->st_paned, "SorttabDisplayPlugin", "Track Filter", NULL, ANJUTA_SHELL_PLACEMENT_CENTER, NULL); return TRUE; /* FALSE if activation failed */ diff --git a/plugins/sorttab_display/sorttab_display.ui b/plugins/sorttab_display/sorttab_display.ui index ecc33d2..a91811c 100644 --- a/plugins/sorttab_display/sorttab_display.ui +++ b/plugins/sorttab_display/sorttab_display.ui @@ -1,6 +1,16 @@ <!--*- xml -*--> <ui> <menubar name="MenuMain"> + <menu name="MenuEdit" action="ActionMenuEdit"> + <placeholder name="PlaceholderEditMenus"> + <menu name="Delete" action="ActionEditDeleteMenu"> + <menuitem name="Selected Entry from Playlist" action="ActionDeleteSelectedEntry" /> + <menuitem name="Selected Entry from Database" action="ActionDeleteSelectedEntryFromDb" /> + <menuitem name="Selected Entry from Device" action="ActionDeleteSelectedEntryFromDev" /> + <separator name="separator1" /> + </menu> + </placeholder> + </menu> <menu name="MenuView" action="ActionMenuView"> <placeholder name="PlaceholderSorttabDisplayActionMenuView"> <menuitem name="More Filter Tabs" action="ActionViewMoreFilterTabs"/> diff --git a/plugins/sorttab_display/sorttab_display_actions.c b/plugins/sorttab_display/sorttab_display_actions.c index 76bb06e..8ab3159 100644 --- a/plugins/sorttab_display/sorttab_display_actions.c +++ b/plugins/sorttab_display/sorttab_display_actions.c @@ -34,13 +34,59 @@ #include "libgtkpod/prefs.h" #include "sorttab_display_actions.h" #include "display_sorttabs.h" +#include "libgtkpod/gp_itdb.h" -void on_more_sort_tabs_activate (GtkAction *action, SorttabDisplayPlugin* plugin) { +void on_more_sort_tabs_activate(GtkAction *action, SorttabDisplayPlugin* plugin) { prefs_set_int("sort_tab_num", prefs_get_int("sort_tab_num") + 1); st_show_visible(); } -void on_fewer_sort_tabs_activate (GtkAction *action, SorttabDisplayPlugin* plugin) { +void on_fewer_sort_tabs_activate(GtkAction *action, SorttabDisplayPlugin* plugin) { prefs_set_int("sort_tab_num", prefs_get_int("sort_tab_num") - 1); st_show_visible(); } + +static void delete_selected_entry(DeleteAction deleteaction, gchar *text) { + TabEntry *entry; + gint inst; + + inst = st_get_sort_tab_number(text); + 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; + } + st_delete_entry_head(inst, deleteaction); +} + +void on_delete_selected_entry_from_database(GtkAction *action, SorttabDisplayPlugin* plugin) { + delete_selected_entry(DELETE_ACTION_DATABASE, _("Remove entry of which sort tab from database?")); +} + +void on_delete_selected_entry_from_ipod(GtkAction *action, SorttabDisplayPlugin* plugin) { + delete_selected_entry(DELETE_ACTION_IPOD, _("Remove tracks in selected entry of which filter tab from the iPod?")); +} + +void on_delete_selected_entry_from_harddisk(GtkAction *action, SorttabDisplayPlugin* plugin) { + delete_selected_entry(DELETE_ACTION_LOCAL, _("Remove tracks in selected entry of which filter tab from the harddisk?")); +} + +void on_delete_selected_entry_from_playlist(GtkAction *action, SorttabDisplayPlugin* plugin) { + delete_selected_entry(DELETE_ACTION_PLAYLIST, _("Remove tracks in selected entry of which filter tab from playlist?")); +} + +void on_delete_selected_entry_from_device(GtkAction *action, SorttabDisplayPlugin* plugin) { + iTunesDB *itdb = gtkpod_get_current_itdb(); + if (!itdb) + return; + + if (itdb->usertype & GP_ITDB_TYPE_IPOD) { + on_delete_selected_entry_from_ipod(action, plugin); + } + else if (itdb->usertype & GP_ITDB_TYPE_LOCAL) { + on_delete_selected_entry_from_harddisk(action, plugin); + } +} diff --git a/plugins/sorttab_display/sorttab_display_actions.h b/plugins/sorttab_display/sorttab_display_actions.h index 515249a..0c60f4e 100644 --- a/plugins/sorttab_display/sorttab_display_actions.h +++ b/plugins/sorttab_display/sorttab_display_actions.h @@ -40,4 +40,14 @@ void on_more_sort_tabs_activate (GtkAction *action, SorttabDisplayPlugin* plugin void on_fewer_sort_tabs_activate (GtkAction *action, SorttabDisplayPlugin* plugin); +void on_delete_selected_entry_from_database(GtkAction *action, SorttabDisplayPlugin* plugin); + +void on_delete_selected_entry_from_ipod(GtkAction *action, SorttabDisplayPlugin* plugin); + +void on_delete_selected_entry_from_harddisk(GtkAction *action, SorttabDisplayPlugin* plugin); + +void on_delete_selected_entry_from_playlist(GtkAction *action, SorttabDisplayPlugin* plugin); + +void on_delete_selected_entry_from_device(GtkAction *action, SorttabDisplayPlugin* plugin); + #endif diff --git a/plugins/track_display/track_display.ui b/plugins/track_display/track_display.ui index a44fcce..21d15e6 100644 --- a/plugins/track_display/track_display.ui +++ b/plugins/track_display/track_display.ui @@ -7,6 +7,7 @@ <menuitem name="Selected Tracks from Playlist" action="ActionDeleteSelectedTracksFromPlaylist" /> <menuitem name="Selected Tracks from Database" action="ActionDeleteSelectedTracksFromDatabase" /> <menuitem name="Selected Tracks from Device" action="ActionDeleteSelectedTracksFromDevice" /> + <separator name="separator2" /> </menu> </placeholder> </menu> diff --git a/src/display_playlists.c b/src/display_playlists.c index 973eec3..5a493a1 100644 --- a/src/display_playlists.c +++ b/src/display_playlists.c @@ -2205,3 +2205,10 @@ void playlist_display_playlist_removed_cb(GtkPodApp *app, gpointer pl, gint32 po pm_remove_playlist(old_playlist, TRUE); } +void playlist_display_track_removed_cb(GtkPodApp *app, gpointer tk, gint32 pos, gpointer data) { + Track *old_track = tk; + Playlist *current_playlist = gtkpod_get_current_playlist(); + + pm_remove_track(current_playlist, old_track); +} + diff --git a/src/display_sorttabs.c b/src/display_sorttabs.c index 303aca4..28b2ca9 100644 --- a/src/display_sorttabs.c +++ b/src/display_sorttabs.c @@ -1583,11 +1583,7 @@ static void st_remove_track_normal(Track *track, guint32 inst) { /* 02. Feb 2003: bugfix: track is always passed on to the next sort * tab: it might have been recategorized, but still be displayed. JCS */ void st_remove_track(Track *track, guint32 inst) { - if (inst == prefs_get_int("sort_tab_num")) { - g_warning("st_remove_track: signal a track should be removed"); - // tm_remove_track(track); - } - else if (inst < prefs_get_int("sort_tab_num")) { + if (inst < prefs_get_int("sort_tab_num")) { switch (sorttab[inst]->current_category) { case ST_CAT_ARTIST: case ST_CAT_ALBUM: @@ -3339,6 +3335,150 @@ void cal_open_calendar(gint inst, T_item item) { gtk_widget_show(cal); } +/* Let the user select a sort tab number */ +/* @text: text to be displayed */ +/* return value: -1: user selected cancel + 0...prefs_get_sort_tab_number()-1: selected tab */ +gint st_get_sort_tab_number(gchar *text) { + static gint last_nr = 1; + GtkWidget *mdialog; + GtkDialog *dialog; + GtkWidget *combo; + gint result; + gint i, nr, stn; + GList *list = NULL, *lnk; + gchar buf[20], *bufp; + + mdialog + = gtk_message_dialog_new(GTK_WINDOW (gtkpod_app), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, "%s", text); + + dialog = GTK_DIALOG (mdialog); + + combo = gtk_combo_new(); + gtk_widget_show(combo); + gtk_container_add(GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), combo); + + stn = prefs_get_int("sort_tab_num"); + /* Create list */ + for (i = 1; i <= stn; ++i) { + bufp = g_strdup_printf("%d", i); + list = g_list_append(list, bufp); + } + + /* set pull down items */ + gtk_combo_set_popdown_strings(GTK_COMBO (combo), list); + /* set standard entry */ + if (last_nr > stn) + last_nr = 1; /* maybe the stn has become + smaller... */ + snprintf(buf, 20, "%d", last_nr); + gtk_entry_set_text(GTK_ENTRY (GTK_COMBO (combo)->entry), buf); + + result = gtk_dialog_run(GTK_DIALOG (mdialog)); + + /* free the list */ + for (lnk = list; lnk; lnk = lnk->next) { + C_FREE (lnk->data); + } + g_list_free(list); + list = NULL; + + if (result == GTK_RESPONSE_CANCEL) { + nr = -1; /* no selection */ + } + else { + bufp = gtk_editable_get_chars(GTK_EDITABLE (GTK_COMBO (combo)->entry), 0, -1); + nr = atoi(bufp) - 1; + last_nr = nr + 1; + C_FREE (bufp); + } + + gtk_widget_destroy(mdialog); + + return nr; +} + +void st_delete_entry_head(gint inst, DeleteAction deleteaction) { + struct DeleteData *dd; + Playlist *pl; + GList *selected_tracks = NULL; + GString *str; + gchar *label = NULL, *title = NULL; + gboolean confirm_again; + gchar *confirm_again_key; + TabEntry *entry; + GtkResponseType response; + iTunesDB *itdb; + + g_return_if_fail (inst >= 0); + g_return_if_fail (inst <= prefs_get_int("sort_tab_num")); + + pl = gtkpod_get_current_playlist(); + if (pl == NULL) { /* no playlist??? Cannot happen, but... */ + message_sb_no_playlist_selected(); + return; + } + itdb = pl->itdb; + g_return_if_fail (itdb); + + entry = st_get_selected_entry(inst); + if (entry == NULL) { /* no entry selected */ + gtkpod_statusbar_message(_("No entry selected.")); + return; + } + + if (entry->members == NULL) { /* no tracks in entry -> just remove entry */ + if (!entry->master) + st_remove_entry(entry, inst); + else + gtkpod_statusbar_message(_("Cannot remove entry 'All'")); + return; + } + + selected_tracks = g_list_copy(entry->members); + + dd = g_malloc0(sizeof(struct DeleteData)); + dd->deleteaction = deleteaction; + dd->tracks = selected_tracks; + dd->pl = pl; + dd->itdb = itdb; + + delete_populate_settings(dd, &label, &title, &confirm_again, &confirm_again_key, &str); + + /* open window */ + response = gtkpod_confirmation(-1, /* gint id, */ + TRUE, /* gboolean modal, */ + title, /* title */ + label, /* label */ + str->str, /* scrolled text */ + NULL, 0, NULL, /* option 1 */ + NULL, 0, NULL, /* option 2 */ + confirm_again, /* gboolean confirm_again, */ + confirm_again_key,/* ConfHandlerOpt confirm_again_key,*/ + CONF_NULL_HANDLER, /* ConfHandler ok_handler,*/ + NULL, /* don't show "Apply" button */ + CONF_NULL_HANDLER, /* cancel_handler,*/ + NULL, /* gpointer user_data1,*/ + NULL); /* gpointer user_data2,*/ + + switch (response) { + case GTK_RESPONSE_OK: + /* Delete the tracks */ + delete_track_ok(dd); + /* Delete the entry */ + st_remove_entry(entry, inst); + break; + default: + delete_track_cancel(dd); + break; + } + + g_free(label); + g_free(title); + g_free(confirm_again_key); + g_string_free(str, TRUE); +} + void sorttab_display_select_playlist_cb(GtkPodApp *app, gpointer pl, gpointer data) { Playlist *new_playlist = pl; @@ -3357,9 +3497,12 @@ void sorttab_display_select_playlist_cb(GtkPodApp *app, gpointer pl, gpointer da st_add_track(track, FALSE, TRUE, 0); } -// gtkpod_set_current_tracks(new_playlist->members); - st_enable_disable_view_sort(0, TRUE); st_add_track(NULL, TRUE, TRUE, 0); } } + +void sorttab_display_track_removed_cb(GtkPodApp *app, gpointer tk, gint32 pos, gpointer data) { + Track *old_track = tk; + st_remove_track(old_track, 0); +} diff --git a/src/misc_input.c b/src/misc_input.c index 4ab3d39..44e8724 100644 --- a/src/misc_input.c +++ b/src/misc_input.c @@ -2,7 +2,7 @@ | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. -| +| | URL: http://www.gtkpod.org/ | URL: http://gtkpod.sourceforge.net/ | @@ -95,7 +95,7 @@ gchar *get_user_string (gchar *title, gchar *message, gchar *dflt, temp = g_markup_printf_escaped ("<span weight='bold' size='larger'>%s</span>\n\n%s", title, message); gtk_label_set_markup (GTK_LABEL (label), temp); g_free (temp); - + if (dflt) { gtk_entry_set_text (GTK_ENTRY (entry), dflt); @@ -119,7 +119,7 @@ gchar *get_user_string (gchar *title, gchar *message, gchar *dflt, if (response == GTK_RESPONSE_OK) { result = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1); - + /* get state of checkbox only if opt_msg was non NULL */ if (opt_msg && checkb) { @@ -133,82 +133,6 @@ gchar *get_user_string (gchar *title, gchar *message, gchar *dflt, } - -/* Let the user select a sort tab number */ -/* @text: text to be displayed */ -/* return value: -1: user selected cancel - 0...prefs_get_sort_tab_number()-1: selected tab */ -gint get_sort_tab_number (gchar *text) -{ - static gint last_nr = 1; - GtkWidget *mdialog; - GtkDialog *dialog; - GtkWidget *combo; - gint result; - gint i, nr, stn; - GList *list=NULL, *lnk; - gchar buf[20], *bufp; - - mdialog = gtk_message_dialog_new ( - GTK_WINDOW (gtkpod_app), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_OK_CANCEL, - "%s", text); - - dialog = GTK_DIALOG (mdialog); - - combo = gtk_combo_new (); - gtk_widget_show (combo); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), combo); - - stn = prefs_get_int("sort_tab_num"); - /* Create list */ - for (i=1; i<=stn; ++i) - { - bufp = g_strdup_printf ("%d", i); - list = g_list_append (list, bufp); - } - - /* set pull down items */ - gtk_combo_set_popdown_strings (GTK_COMBO (combo), list); - /* set standard entry */ - if (last_nr > stn) last_nr = 1; /* maybe the stn has become - smaller... */ - snprintf (buf, 20, "%d", last_nr); - gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (combo)->entry), buf); - - result = gtk_dialog_run (GTK_DIALOG (mdialog)); - - /* free the list */ - for (lnk = list; lnk; lnk = lnk->next) - { - C_FREE (lnk->data); - } - g_list_free (list); - list = NULL; - - if (result == GTK_RESPONSE_CANCEL) - { - nr = -1; /* no selection */ - } - else - { - bufp = gtk_editable_get_chars (GTK_EDITABLE (GTK_COMBO (combo)->entry), - 0, -1); - nr = atoi (bufp)-1; - last_nr = nr+1; - C_FREE (bufp); - } - - gtk_widget_destroy (mdialog); - - return nr; -} - - - - /*------------------------------------------------------------------*\ * * * Functions for blocking widgets (block input) * @@ -303,7 +227,7 @@ static void block_release_widgets (gint action, GtkWidget *w, gboolean sens) bw = (struct blocked_widget *)l->data; gtk_widget_set_sensitive (bw->widget, bw->sensitive); } - + sort_window_release (); widgets_blocked = FALSE; } diff --git a/src/misc_track.c b/src/misc_track.c index a95ab47..ffab141 100644 --- a/src/misc_track.c +++ b/src/misc_track.c @@ -1935,7 +1935,7 @@ gchar *get_track_info(Track *track, gboolean prefer_filename) { /* cancel handler for delete track */ /* @user_data1 the selected playlist, @user_data2 are the selected tracks */ -static void delete_track_cancel(struct DeleteData *dd) { +void delete_track_cancel(struct DeleteData *dd) { g_return_if_fail (dd); g_list_free(dd->tracks); @@ -1944,7 +1944,7 @@ static void delete_track_cancel(struct DeleteData *dd) { /* ok handler for delete track */ /* @user_data1 the selected playlist, @user_data2 are the selected tracks */ -static void delete_track_ok(struct DeleteData *dd) { +void delete_track_ok(struct DeleteData *dd) { gint n; GList *l; @@ -2040,7 +2040,7 @@ void delete_track_head(DeleteAction deleteaction) { itdb = pl->itdb; g_return_if_fail (itdb); - selected_tracks = gtkpod_get_displayed_tracks(); + selected_tracks = gtkpod_get_selected_tracks(); if (selected_tracks == NULL) { /* no tracks selected */ message_sb_no_tracks_selected(); return; diff --git a/src/misc_track.h b/src/misc_track.h index 274dcc2..0317ff0 100644 --- a/src/misc_track.h +++ b/src/misc_track.h @@ -74,5 +74,7 @@ gchar *track_get_text(Track *track, T_item item); gboolean track_set_text(Track *track, const gchar *new_text, T_item item); void delete_track_head (DeleteAction deleteaction); +void delete_track_ok(struct DeleteData *dd); +void delete_track_cancel(struct DeleteData *dd); #endif ------------------------------------------------------------------------------ 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