# HG changeset patch # User nenolod # Date 1167816318 28800 # Node ID 6fb65026a8c792eb694352e440bc42d3fc059e63 # Parent 1148bfa60fd5e86cea0aa9c1199b36cfc4225f75 [svn] - port playlist uimanager code to giacomo's ui_manager framework diff -r 1148bfa60fd5 -r 6fb65026a8c7 ChangeLog --- a/ChangeLog Tue Jan 02 22:23:09 2007 -0800 +++ b/ChangeLog Wed Jan 03 01:25:18 2007 -0800 @@ -1,3 +1,22 @@ +2007-01-03 06:23:09 +0000 William Pitcock + revision [3493] + skinwin.[ch] -> ui_skinselector.[ch] + + trunk/audacious/Makefile | 2 + trunk/audacious/genevent.c | 1 + trunk/audacious/main.c | 2 + trunk/audacious/playback.c | 2 + trunk/audacious/skinwin.c | 405 -------------------------------------- + trunk/audacious/skinwin.h | 43 ---- + trunk/audacious/ui_fileinfo.c | 1 + trunk/audacious/ui_main.c | 2 + trunk/audacious/ui_preferences.c | 5 + trunk/audacious/ui_skinselector.c | 405 ++++++++++++++++++++++++++++++++++++++ + trunk/audacious/ui_skinselector.h | 43 ++++ + trunk/audacious/widgets/skin.c | 2 + 12 files changed, 456 insertions(+), 457 deletions(-) + + 2007-01-03 06:17:06 +0000 William Pitcock revision [3491] - fix skin scripts diff -r 1148bfa60fd5 -r 6fb65026a8c7 audacious/ui/mainwin.ui --- a/audacious/ui/mainwin.ui Tue Jan 02 22:23:09 2007 -0800 +++ b/audacious/ui/mainwin.ui Wed Jan 03 01:25:18 2007 -0800 @@ -93,9 +93,19 @@ + - + + + + + + + + + + diff -r 1148bfa60fd5 -r 6fb65026a8c7 audacious/ui/playlist.ui --- a/audacious/ui/playlist.ui Tue Jan 02 22:23:09 2007 -0800 +++ b/audacious/ui/playlist.ui Wed Jan 03 01:25:18 2007 -0800 @@ -3,7 +3,7 @@ - + @@ -67,15 +67,20 @@ - + + + + - - - + + + - + - + + + diff -r 1148bfa60fd5 -r 6fb65026a8c7 audacious/ui_equalizer.c --- a/audacious/ui_equalizer.c Tue Jan 02 22:23:09 2007 -0800 +++ b/audacious/ui_equalizer.c Wed Jan 03 01:25:18 2007 -0800 @@ -279,7 +279,7 @@ equalizerwin_set_shade(gboolean shaded) { GtkAction *action = gtk_action_group_get_action( - mainwin_toggleaction_group_others , "roll up equalizer" ); + toggleaction_group_others , "roll up equalizer" ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(action) , shaded ); } @@ -1010,8 +1010,13 @@ equalizerwin_show(gboolean show) { GtkAction *action = gtk_action_group_get_action( - mainwin_toggleaction_group_others , "show equalizer" ); + toggleaction_group_others , "show equalizer" ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(action) , show ); + + if (show) + equalizerwin_real_show(); + else + equalizerwin_real_hide(); } void diff -r 1148bfa60fd5 -r 6fb65026a8c7 audacious/ui_main.c --- a/audacious/ui_main.c Tue Jan 02 22:23:09 2007 -0800 +++ b/audacious/ui_main.c Wed Jan 03 01:25:18 2007 -0800 @@ -231,7 +231,7 @@ mainwin_set_always_on_top(gboolean always) { GtkAction *action = gtk_action_group_get_action( - mainwin_toggleaction_group_others , "view always on top" ); + toggleaction_group_others , "view always on top" ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(action) , always ); } @@ -253,7 +253,7 @@ mainwin_set_shade(gboolean shaded) { GtkAction *action = gtk_action_group_get_action( - mainwin_toggleaction_group_others , "view roll up player" ); + toggleaction_group_others , "view roll up player" ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(action) , shaded ); /* GtkWidget *widget = gtk_ui_manager_get_widget(ui_manager, @@ -370,20 +370,20 @@ { case VIS_ANALYZER: action = gtk_action_group_get_action( - mainwin_radioaction_group_vismode , "vismode analyzer" ); + radioaction_group_vismode , "vismode analyzer" ); break; case VIS_SCOPE: action = gtk_action_group_get_action( - mainwin_radioaction_group_vismode , "vismode scope" ); + radioaction_group_vismode , "vismode scope" ); break; case VIS_VOICEPRINT: action = gtk_action_group_get_action( - mainwin_radioaction_group_vismode , "vismode voiceprint" ); + radioaction_group_vismode , "vismode voiceprint" ); break; case VIS_OFF: default: action = gtk_action_group_get_action( - mainwin_radioaction_group_vismode , "vismode off" ); + radioaction_group_vismode , "vismode off" ); break; } @@ -2198,13 +2198,13 @@ void mainwin_shuffle_pushed(gboolean toggled) { - check_set( mainwin_toggleaction_group_others , "playback shuffle" , toggled ); + check_set( toggleaction_group_others , "playback shuffle" , toggled ); } void mainwin_repeat_pushed(gboolean toggled) { - check_set( mainwin_toggleaction_group_others , "playback repeat" , toggled ); + check_set( toggleaction_group_others , "playback repeat" , toggled ); } void @@ -2451,7 +2451,7 @@ { cfg.player_visible = TRUE; - check_set( mainwin_toggleaction_group_others , "show player" , TRUE ); + check_set( toggleaction_group_others , "show player" , TRUE ); if (cfg.player_shaded) vis_clear_data(active_vis); @@ -2510,7 +2510,7 @@ GdkGC *gc; GdkColor pattern; - check_set( mainwin_toggleaction_group_others , "show player", FALSE); + check_set( toggleaction_group_others , "show player", FALSE); if (cfg.player_shaded) svis_clear_data(mainwin_svis); @@ -2540,7 +2540,7 @@ mainwin_set_stopaftersong(gboolean stop) { cfg.stopaftersong = stop; - check_set(mainwin_toggleaction_group_others, "stop after current song", cfg.stopaftersong); + check_set(toggleaction_group_others, "stop after current song", cfg.stopaftersong); } @@ -2755,7 +2755,7 @@ case MENUROW_ALWAYS: gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(gtk_action_group_get_action( - mainwin_toggleaction_group_others , "view always on top" )) , + toggleaction_group_others , "view always on top" )) , mainwin_menurow->mr_always_selected ); break; case MENUROW_FILEINFOBOX: @@ -2764,7 +2764,7 @@ case MENUROW_DOUBLESIZE: gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(gtk_action_group_get_action( - mainwin_toggleaction_group_others , "view doublesize" )) , + toggleaction_group_others , "view doublesize" )) , mainwin_menurow->mr_doublesize_selected ); break; case MENUROW_VISUALIZATION: @@ -3011,9 +3011,9 @@ set_timer_mode(TimerMode mode) { if (mode == TIMER_ELAPSED) - check_set(mainwin_radioaction_group_viewtime, "view time elapsed", TRUE); + check_set(radioaction_group_viewtime, "view time elapsed", TRUE); else - check_set(mainwin_radioaction_group_viewtime, "view time remaining", TRUE); + check_set(radioaction_group_viewtime, "view time remaining", TRUE); } static void @@ -3041,164 +3041,164 @@ /* View menu */ - check_set(mainwin_toggleaction_group_others, "view always on top", cfg.always_on_top); - check_set(mainwin_toggleaction_group_others, "view put on all workspaces", cfg.sticky); - check_set(mainwin_toggleaction_group_others, "roll up player", cfg.player_shaded); - check_set(mainwin_toggleaction_group_others, "roll up playlist editor", cfg.playlist_shaded); - check_set(mainwin_toggleaction_group_others, "roll up equalizer", cfg.equalizer_shaded); - check_set(mainwin_toggleaction_group_others, "view easy move", cfg.easy_move); - check_set(mainwin_toggleaction_group_others, "view doublesize", cfg.doublesize); + check_set(toggleaction_group_others, "view always on top", cfg.always_on_top); + check_set(toggleaction_group_others, "view put on all workspaces", cfg.sticky); + check_set(toggleaction_group_others, "roll up player", cfg.player_shaded); + check_set(toggleaction_group_others, "roll up playlist editor", cfg.playlist_shaded); + check_set(toggleaction_group_others, "roll up equalizer", cfg.equalizer_shaded); + check_set(toggleaction_group_others, "view easy move", cfg.easy_move); + check_set(toggleaction_group_others, "view doublesize", cfg.doublesize); /* Songname menu */ - check_set(mainwin_toggleaction_group_others, "autoscroll songname", cfg.autoscroll); - check_set(mainwin_toggleaction_group_others, "stop after current song", cfg.stopaftersong); + check_set(toggleaction_group_others, "autoscroll songname", cfg.autoscroll); + check_set(toggleaction_group_others, "stop after current song", cfg.stopaftersong); /* Playback menu */ - check_set(mainwin_toggleaction_group_others, "playback repeat", cfg.repeat); - check_set(mainwin_toggleaction_group_others, "playback shuffle", cfg.shuffle); - check_set(mainwin_toggleaction_group_others, "playback no playlist advance", cfg.no_playlist_advance); + check_set(toggleaction_group_others, "playback repeat", cfg.repeat); + check_set(toggleaction_group_others, "playback shuffle", cfg.shuffle); + check_set(toggleaction_group_others, "playback no playlist advance", cfg.no_playlist_advance); /* Visualization menu */ switch ( cfg.vis_type ) { case VIS_ANALYZER: - check_set(mainwin_radioaction_group_vismode, "vismode analyzer", TRUE); + check_set(radioaction_group_vismode, "vismode analyzer", TRUE); break; case VIS_SCOPE: - check_set(mainwin_radioaction_group_vismode, "vismode scope", TRUE); + check_set(radioaction_group_vismode, "vismode scope", TRUE); break; case VIS_VOICEPRINT: - check_set(mainwin_radioaction_group_vismode, "vismode voiceprint", TRUE); + check_set(radioaction_group_vismode, "vismode voiceprint", TRUE); break; case VIS_OFF: default: - check_set(mainwin_radioaction_group_vismode, "vismode off", TRUE); + check_set(radioaction_group_vismode, "vismode off", TRUE); break; } switch ( cfg.analyzer_mode ) { case ANALYZER_FIRE: - check_set(mainwin_radioaction_group_anamode, "anamode fire", TRUE); + check_set(radioaction_group_anamode, "anamode fire", TRUE); break; case ANALYZER_VLINES: - check_set(mainwin_radioaction_group_anamode, "anamode vertical lines", TRUE); + check_set(radioaction_group_anamode, "anamode vertical lines", TRUE); break; case ANALYZER_NORMAL: default: - check_set(mainwin_radioaction_group_anamode, "anamode normal", TRUE); + check_set(radioaction_group_anamode, "anamode normal", TRUE); break; } switch ( cfg.analyzer_type ) { case ANALYZER_BARS: - check_set(mainwin_radioaction_group_anatype, "anatype bars", TRUE); + check_set(radioaction_group_anatype, "anatype bars", TRUE); break; case ANALYZER_LINES: default: - check_set(mainwin_radioaction_group_anatype, "anatype lines", TRUE); + check_set(radioaction_group_anatype, "anatype lines", TRUE); break; } - check_set(mainwin_toggleaction_group_others, "anamode peaks", cfg.analyzer_peaks ); + check_set(toggleaction_group_others, "anamode peaks", cfg.analyzer_peaks ); switch ( cfg.scope_mode ) { case SCOPE_LINE: - check_set(mainwin_radioaction_group_scomode, "scomode line", TRUE); + check_set(radioaction_group_scomode, "scomode line", TRUE); break; case SCOPE_SOLID: - check_set(mainwin_radioaction_group_scomode, "scomode solid", TRUE); + check_set(radioaction_group_scomode, "scomode solid", TRUE); break; case SCOPE_DOT: default: - check_set(mainwin_radioaction_group_scomode, "scomode dot", TRUE); + check_set(radioaction_group_scomode, "scomode dot", TRUE); break; } switch ( cfg.voiceprint_mode ) { case VOICEPRINT_FIRE: - check_set(mainwin_radioaction_group_vprmode, "vprmode fire", TRUE); + check_set(radioaction_group_vprmode, "vprmode fire", TRUE); break; case VOICEPRINT_ICE: - check_set(mainwin_radioaction_group_vprmode, "vprmode ice", TRUE); + check_set(radioaction_group_vprmode, "vprmode ice", TRUE); break; case VOICEPRINT_NORMAL: default: - check_set(mainwin_radioaction_group_vprmode, "vprmode normal", TRUE); + check_set(radioaction_group_vprmode, "vprmode normal", TRUE); break; } switch ( cfg.vu_mode ) { case VU_SMOOTH: - check_set(mainwin_radioaction_group_wshmode, "wshmode smooth", TRUE); + check_set(radioaction_group_wshmode, "wshmode smooth", TRUE); break; case VU_NORMAL: default: - check_set(mainwin_radioaction_group_wshmode, "wshmode normal", TRUE); + check_set(radioaction_group_wshmode, "wshmode normal", TRUE); break; } switch ( cfg.vis_refresh ) { case REFRESH_HALF: - check_set(mainwin_radioaction_group_refrate, "refrate half", TRUE); + check_set(radioaction_group_refrate, "refrate half", TRUE); break; case REFRESH_QUARTER: - check_set(mainwin_radioaction_group_refrate, "refrate quarter", TRUE); + check_set(radioaction_group_refrate, "refrate quarter", TRUE); break; case REFRESH_EIGTH: - check_set(mainwin_radioaction_group_refrate, "refrate eighth", TRUE); + check_set(radioaction_group_refrate, "refrate eighth", TRUE); break; case REFRESH_FULL: default: - check_set(mainwin_radioaction_group_refrate, "refrate full", TRUE); + check_set(radioaction_group_refrate, "refrate full", TRUE); break; } switch ( cfg.analyzer_falloff ) { case FALLOFF_SLOW: - check_set(mainwin_radioaction_group_anafoff, "anafoff slow", TRUE); + check_set(radioaction_group_anafoff, "anafoff slow", TRUE); break; case FALLOFF_MEDIUM: - check_set(mainwin_radioaction_group_anafoff, "anafoff medium", TRUE); + check_set(radioaction_group_anafoff, "anafoff medium", TRUE); break; case FALLOFF_FAST: - check_set(mainwin_radioaction_group_anafoff, "anafoff fast", TRUE); + check_set(radioaction_group_anafoff, "anafoff fast", TRUE); break; case FALLOFF_FASTEST: - check_set(mainwin_radioaction_group_anafoff, "anafoff fastest", TRUE); + check_set(radioaction_group_anafoff, "anafoff fastest", TRUE); break; case FALLOFF_SLOWEST: default: - check_set(mainwin_radioaction_group_anafoff, "anafoff slowest", TRUE); + check_set(radioaction_group_anafoff, "anafoff slowest", TRUE); break; } switch ( cfg.peaks_falloff ) { case FALLOFF_SLOW: - check_set(mainwin_radioaction_group_peafoff, "peafoff slow", TRUE); + check_set(radioaction_group_peafoff, "peafoff slow", TRUE); break; case FALLOFF_MEDIUM: - check_set(mainwin_radioaction_group_peafoff, "peafoff medium", TRUE); + check_set(radioaction_group_peafoff, "peafoff medium", TRUE); break; case FALLOFF_FAST: - check_set(mainwin_radioaction_group_peafoff, "peafoff fast", TRUE); + check_set(radioaction_group_peafoff, "peafoff fast", TRUE); break; case FALLOFF_FASTEST: - check_set(mainwin_radioaction_group_peafoff, "peafoff fastest", TRUE); + check_set(radioaction_group_peafoff, "peafoff fastest", TRUE); break; case FALLOFF_SLOWEST: default: - check_set(mainwin_radioaction_group_peafoff, "peafoff slowest", TRUE); + check_set(radioaction_group_peafoff, "peafoff slowest", TRUE); break; } diff -r 1148bfa60fd5 -r 6fb65026a8c7 audacious/ui_manager.c --- a/audacious/ui_manager.c Tue Jan 02 22:23:09 2007 -0800 +++ b/audacious/ui_manager.c Wed Jan 03 01:25:18 2007 -0800 @@ -21,8 +21,10 @@ #include "ui_manager.h" #include "actions-mainwin.h" +#include "actions-playlist.h" #include "ui_main.h" +#include "ui_playlist.h" #include "icons-stock.h" #include "widgets/widgetcore.h" @@ -32,7 +34,7 @@ /* toggle action entries */ -static GtkToggleActionEntry mainwin_toggleaction_entries_others[] = { +static GtkToggleActionEntry toggleaction_entries_others[] = { { "autoscroll songname", NULL , N_("Autoscroll Songname"), NULL, N_("Autoscroll Songname"), G_CALLBACK(action_autoscroll_songname) , FALSE }, @@ -87,49 +89,49 @@ /* radio action entries */ -static GtkRadioActionEntry mainwin_radioaction_entries_vismode[] = { +static GtkRadioActionEntry radioaction_entries_vismode[] = { { "vismode analyzer", NULL , N_("Analyzer"), NULL, N_("Analyzer"), VIS_ANALYZER }, { "vismode scope", NULL , N_("Scope"), NULL, N_("Scope"), VIS_SCOPE }, { "vismode voiceprint", NULL , N_("Voiceprint"), NULL, N_("Voiceprint"), VIS_VOICEPRINT }, { "vismode off", NULL , N_("Off"), NULL, N_("Off"), VIS_OFF } }; -static GtkRadioActionEntry mainwin_radioaction_entries_anamode[] = { +static GtkRadioActionEntry radioaction_entries_anamode[] = { { "anamode normal", NULL , N_("Normal"), NULL, N_("Normal"), ANALYZER_NORMAL }, { "anamode fire", NULL , N_("Fire"), NULL, N_("Fire"), ANALYZER_FIRE }, { "anamode vertical lines", NULL , N_("Vertical Lines"), NULL, N_("Vertical Lines"), ANALYZER_VLINES } }; -static GtkRadioActionEntry mainwin_radioaction_entries_anatype[] = { +static GtkRadioActionEntry radioaction_entries_anatype[] = { { "anatype lines", NULL , N_("Lines"), NULL, N_("Lines"), ANALYZER_LINES }, { "anatype bars", NULL , N_("Bars"), NULL, N_("Bars"), ANALYZER_BARS } }; -static GtkRadioActionEntry mainwin_radioaction_entries_scomode[] = { +static GtkRadioActionEntry radioaction_entries_scomode[] = { { "scomode dot", NULL , N_("Dot Scope"), NULL, N_("Dot Scope"), SCOPE_DOT }, { "scomode line", NULL , N_("Line Scope"), NULL, N_("Line Scope"), SCOPE_LINE }, { "scomode solid", NULL , N_("Solid Scope"), NULL, N_("Solid Scope"), SCOPE_SOLID } }; -static GtkRadioActionEntry mainwin_radioaction_entries_vprmode[] = { +static GtkRadioActionEntry radioaction_entries_vprmode[] = { { "vprmode normal", NULL , N_("Normal"), NULL, N_("Normal"), VOICEPRINT_NORMAL }, { "vprmode fire", NULL , N_("Fire"), NULL, N_("Fire"), VOICEPRINT_FIRE }, { "vprmode ice", NULL , N_("Ice"), NULL, N_("Ice"), VOICEPRINT_ICE } }; -static GtkRadioActionEntry mainwin_radioaction_entries_wshmode[] = { +static GtkRadioActionEntry radioaction_entries_wshmode[] = { { "wshmode normal", NULL , N_("Normal"), NULL, N_("Normal"), VU_NORMAL }, { "wshmode smooth", NULL , N_("Smooth"), NULL, N_("Smooth"), VU_SMOOTH } }; -static GtkRadioActionEntry mainwin_radioaction_entries_refrate[] = { +static GtkRadioActionEntry radioaction_entries_refrate[] = { { "refrate full", NULL , N_("Full (~50 fps)"), NULL, N_("Full (~50 fps)"), REFRESH_FULL }, { "refrate half", NULL , N_("Half (~25 fps)"), NULL, N_("Half (~25 fps)"), REFRESH_HALF }, { "refrate quarter", NULL , N_("Quarter (~13 fps)"), NULL, N_("Quarter (~13 fps)"), REFRESH_QUARTER }, { "refrate eighth", NULL , N_("Eighth (~6 fps)"), NULL, N_("Eighth (~6 fps)"), REFRESH_EIGTH } }; -static GtkRadioActionEntry mainwin_radioaction_entries_anafoff[] = { +static GtkRadioActionEntry radioaction_entries_anafoff[] = { { "anafoff slowest", NULL , N_("Slowest"), NULL, N_("Slowest"), FALLOFF_SLOWEST }, { "anafoff slow", NULL , N_("Slow"), NULL, N_("Slow"), FALLOFF_SLOW }, { "anafoff medium", NULL , N_("Medium"), NULL, N_("Medium"), FALLOFF_MEDIUM }, @@ -137,7 +139,7 @@ { "anafoff fastest", NULL , N_("Fastest"), NULL, N_("Fastest"), FALLOFF_FASTEST } }; -static GtkRadioActionEntry mainwin_radioaction_entries_peafoff[] = { +static GtkRadioActionEntry radioaction_entries_peafoff[] = { { "peafoff slowest", NULL , N_("Slowest"), NULL, N_("Slowest"), FALLOFF_SLOWEST }, { "peafoff slow", NULL , N_("Slow"), NULL, N_("Slow"), FALLOFF_SLOW }, { "peafoff medium", NULL , N_("Medium"), NULL, N_("Medium"), FALLOFF_MEDIUM }, @@ -145,7 +147,7 @@ { "peafoff fastest", NULL , N_("Fastest"), NULL, N_("Fastest"), FALLOFF_FASTEST } }; -static GtkRadioActionEntry mainwin_radioaction_entries_viewtime[] = { +static GtkRadioActionEntry radioaction_entries_viewtime[] = { { "view time elapsed", NULL , N_("Time Elapsed"), "E", N_("Time Elapsed"), TIMER_ELAPSED }, { "view time remaining", NULL , N_("Time Remaining"), "R", N_("Time Remaining"), TIMER_REMAINING } }; @@ -154,7 +156,7 @@ /* normal actions */ -static GtkActionEntry mainwin_action_entries_playback[] = { +static GtkActionEntry action_entries_playback[] = { { "playback", NULL, "Playback" }, @@ -178,7 +180,7 @@ }; -static GtkActionEntry mainwin_action_entries_visualization[] = { +static GtkActionEntry action_entries_visualization[] = { { "visualization", NULL, "Visualization" }, @@ -199,30 +201,186 @@ { "peafoff", NULL, "Peaks Falloff" } }; -static GtkActionEntry mainwin_action_entries_playlist[] = { +static GtkActionEntry action_entries_playlist[] = { { "playlist", NULL, "Playlist" }, - { "playlist new", NULL , N_("New Playlist"), "N", + { "playlist new", GTK_STOCK_NEW , N_("New Playlist"), "N", N_("New Playlist"), G_CALLBACK(action_playlist_new) }, - { "playlist select next", NULL , N_("Select Next Playlist"), "P", + { "playlist select next", GTK_STOCK_MEDIA_NEXT, N_("Select Next Playlist"), "P", N_("Select Next Playlist"), G_CALLBACK(action_playlist_next) }, - { "playlist select previous", NULL , N_("Select Previous Playlist"), "P", - N_("Select Previous Playlist"), G_CALLBACK(action_playlist_prev) } + { "playlist select previous", GTK_STOCK_MEDIA_PREVIOUS, N_("Select Previous Playlist"), "P", + N_("Select Previous Playlist"), G_CALLBACK(action_playlist_prev) }, + + { "playlist load", GTK_STOCK_OPEN, N_("Load List"), "O", + N_("Loads a playlist file into the selected playlist."), G_CALLBACK(action_load_list) }, + + { "playlist save", GTK_STOCK_SAVE, N_("Save List"), "S", + N_("Saves the selected playlist."), G_CALLBACK(action_save_list) }, + + { "playlist save default", GTK_STOCK_SAVE, N_("Save Default List"), "S", + N_("Saves the selected playlist to the default location."), + G_CALLBACK(action_save_default_list) }, + + { "playlist manager", AUD_STOCK_PLAYLIST , N_("List Manager"), "P", + N_("Opens the playlist manager."), + G_CALLBACK(action_open_list_manager) }, + + { "playlist refresh", GTK_STOCK_REFRESH, N_("Refresh List"), "F5", + N_("Refreshes metadata associated with a playlist entry."), + G_CALLBACK(action_refresh_list) }, }; -static GtkActionEntry mainwin_action_entries_view[] = { +static GtkActionEntry action_entries_view[] = { { "view", NULL, "View" } }; -static GtkActionEntry mainwin_action_entries_others[] = { +static GtkActionEntry action_entries_add[] = { + { "add cd", GTK_STOCK_CDROM, N_("Add CD..."), "C", + N_("Adds a CD to the playlist."), + G_CALLBACK(action_add_cd) }, + + { "add url", GTK_STOCK_NETWORK, N_("Add Internet Address..."), "H", + N_("Adds a remote track to the playlist."), + G_CALLBACK(action_add_url) }, + + { "add files", GTK_STOCK_ADD, N_("Add Files..."), "F", + N_("Adds files to the playlist."), + G_CALLBACK(action_add_files) }, +}; + +static GtkActionEntry action_entries_select[] = { + { "search and select", GTK_STOCK_FIND, N_("Search and Select"), "F", + N_("Searches the playlist and selects playlist entries based on specific criteria."), + G_CALLBACK(action_search_and_select) }, + + { "invert selection", AUD_STOCK_SELECTINVERT , N_("Invert Selection"), NULL, + N_("Inverts the selected and unselected entries."), + G_CALLBACK(action_invert_selection) }, + + { "select all", AUD_STOCK_SELECTALL , N_("Select All"), "A", + N_("Selects all of the playlist entries."), + G_CALLBACK(action_select_all) }, + + { "select none", AUD_STOCK_SELECTNONE , N_("Select None"), "A", + N_("Deselects all of the playlist entries."), + G_CALLBACK(action_select_none) }, +}; + +static GtkActionEntry action_entries_delete[] = { + { "clear queue", GTK_STOCK_REMOVE, N_("Clear Queue"), "Q", + N_("Clears the queue associated with this playlist."), + G_CALLBACK(action_clear_queue) }, + + { "remove unavailable", AUD_STOCK_REMOVEUNAVAIL , N_("Remove Unavailable Files"), NULL, + N_("Removes unavailable files from the playlist."), + G_CALLBACK(action_remove_unavailable) }, + + { "remove duplicates menu", AUD_STOCK_REMOVEDUPS , N_("Remove Duplicates") }, + + { "remove by title", AUD_STOCK_REMOVEDUPS , N_("By Title"), NULL, + N_("Removes duplicate entries from the playlist by title."), + G_CALLBACK(action_remove_dupes_by_title) }, + + { "remove by filename", AUD_STOCK_REMOVEDUPS , N_("By Filename"), NULL, + N_("Removes duplicate entries from the playlist by filename."), + G_CALLBACK(action_remove_dupes_by_filename) }, + + { "remove by full path", AUD_STOCK_REMOVEDUPS , N_("By Path + Filename"), NULL, + N_("Removes duplicate entries from the playlist by their full path."), + G_CALLBACK(action_remove_dupes_by_full_path) }, + + { "remove all", GTK_STOCK_CLEAR, N_("Remove All"), NULL, + N_("Removes all entries from the playlist."), + G_CALLBACK(action_remove_all) }, + + { "remove unselected", GTK_STOCK_REMOVE, N_("Remove Unselected"), NULL, + N_("Remove unselected entries from the playlist."), + G_CALLBACK(action_remove_unselected) }, + + { "remove selected", GTK_STOCK_REMOVE, N_("Remove Selected"), "Delete", + N_("Remove selected entries from the playlist."), + G_CALLBACK(action_remove_selected) }, +}; + +static GtkActionEntry action_entries_sort[] = { + { "randomize list", AUD_STOCK_RANDOMIZEPL , N_("Randomize List"), "R", + N_("Randomizes the playlist."), + G_CALLBACK(action_randomize_list) }, + + { "reverse list", AUD_STOCK_INVERTPL , N_("Reverse List"), NULL, + N_("Reverses the playlist."), + G_CALLBACK(action_reverse_list) }, + + { "sort menu", AUD_STOCK_SORTBYTITLE , N_("Sort List") }, + + { "sort by title", AUD_STOCK_SORTBYTITLE , N_("By Title"), NULL, + N_("Sorts the list by title."), + G_CALLBACK(action_sort_by_title) }, + + { "sort by artist", AUD_STOCK_SORTBYARTIST , N_("By Artist"), NULL, + N_("Sorts the list by artist."), + G_CALLBACK(action_sort_by_artist) }, + + { "sort by filename", AUD_STOCK_SORTBYFILENAME , N_("By Filename"), NULL, + N_("Sorts the list by filename."), + G_CALLBACK(action_sort_by_filename) }, + + { "sort by full path", AUD_STOCK_SORTBYPATHFILE , N_("By Path + Filename"), NULL, + N_("Sorts the list by full pathname."), + G_CALLBACK(action_sort_by_full_path) }, + + { "sort by date", AUD_STOCK_SORTBYARTIST , N_("By Date"), NULL, + N_("Sorts the list by modification time."), + G_CALLBACK(action_sort_by_date) }, + + { "sort by track number", AUD_STOCK_SORTBYFILENAME , N_("By Track Number"), NULL, + N_("Sorts the list by track number."), + G_CALLBACK(action_sort_by_track_number) }, + + { "sort by playlist entry", AUD_STOCK_SORTBYPATHFILE , N_("By Playlist Entry"), NULL, + N_("Sorts the list by playlist entry."), + G_CALLBACK(action_sort_by_playlist_entry) }, + + { "sort selected menu", AUD_STOCK_SORTBYTITLE , N_("Sort Selected") }, + + { "sort selected by title", AUD_STOCK_SORTBYTITLE , N_("By Title"), NULL, + N_("Sorts the list by title."), + G_CALLBACK(action_sort_selected_by_title) }, + + { "sort selected by artist", AUD_STOCK_SORTBYARTIST, N_("By Artist"), NULL, + N_("Sorts the list by artist."), + G_CALLBACK(action_sort_selected_by_artist) }, + + { "sort selected by filename", AUD_STOCK_SORTBYFILENAME , N_("By Filename"), NULL, + N_("Sorts the list by filename."), + G_CALLBACK(action_sort_selected_by_filename) }, + + { "sort selected by full path", AUD_STOCK_SORTBYPATHFILE , N_("By Path + Filename"), NULL, + N_("Sorts the list by full pathname."), + G_CALLBACK(action_sort_selected_by_full_path) }, + + { "sort selected by date", AUD_STOCK_SORTBYARTIST , N_("By Date"), NULL, + N_("Sorts the list by modification time."), + G_CALLBACK(action_sort_selected_by_date) }, + + { "sort selected by track number", AUD_STOCK_SORTBYFILENAME , N_("By Track Number"), NULL, + N_("Sorts the list by track number."), + G_CALLBACK(action_sort_selected_by_track_number) }, + + { "sort selected by playlist entry", AUD_STOCK_SORTBYPATHFILE, N_("By Playlist Entry"), NULL, + N_("Sorts the list by playlist entry."), + G_CALLBACK(action_sort_selected_by_playlist_entry) }, +}; + +static GtkActionEntry action_entries_others[] = { { "dummy", NULL, "dummy" }, - { "track info", AUD_STOCK_INFO , N_("View Track Details"), NULL, + { "track info", AUD_STOCK_INFO , N_("View Track Details"), "I", N_("View track details"), G_CALLBACK(action_track_info) }, { "about audacious", GTK_STOCK_DIALOG_INFO , N_("About Audacious"), NULL, @@ -253,7 +411,11 @@ N_("Jump to File"), G_CALLBACK(action_jump_to_file) }, { "jump to time", GTK_STOCK_JUMP_TO , N_("Jump to Time"), "J", - N_("Jump to Time"), G_CALLBACK(action_jump_to_time) } + N_("Jump to Time"), G_CALLBACK(action_jump_to_time) }, + + { "queue toggle", AUD_STOCK_QUEUETOGGLE , N_("Queue Toggle"), "Q", + N_("Enables/disables the entry in the playlist's queue."), + G_CALLBACK(action_queue_toggle) }, }; @@ -264,106 +426,122 @@ ui_manager_init ( void ) { /* toggle actions */ - mainwin_toggleaction_group_others = gtk_action_group_new("mainwin_toggleaction_others"); + toggleaction_group_others = gtk_action_group_new("toggleaction_others"); gtk_action_group_add_toggle_actions( - mainwin_toggleaction_group_others , mainwin_toggleaction_entries_others , - G_N_ELEMENTS(mainwin_toggleaction_entries_others) , NULL ); + toggleaction_group_others , toggleaction_entries_others , + G_N_ELEMENTS(toggleaction_entries_others) , NULL ); /* radio actions */ - mainwin_radioaction_group_anamode = gtk_action_group_new("mainwin_radioaction_anamode"); + radioaction_group_anamode = gtk_action_group_new("radioaction_anamode"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_anamode , mainwin_radioaction_entries_anamode , - G_N_ELEMENTS(mainwin_radioaction_entries_anamode) , 0 , G_CALLBACK(action_anamode) , NULL ); + radioaction_group_anamode , radioaction_entries_anamode , + G_N_ELEMENTS(radioaction_entries_anamode) , 0 , G_CALLBACK(action_anamode) , NULL ); - mainwin_radioaction_group_anatype = gtk_action_group_new("mainwin_radioaction_anatype"); + radioaction_group_anatype = gtk_action_group_new("radioaction_anatype"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_anatype , mainwin_radioaction_entries_anatype , - G_N_ELEMENTS(mainwin_radioaction_entries_anatype) , 0 , G_CALLBACK(action_anatype) , NULL ); + radioaction_group_anatype , radioaction_entries_anatype , + G_N_ELEMENTS(radioaction_entries_anatype) , 0 , G_CALLBACK(action_anatype) , NULL ); - mainwin_radioaction_group_scomode = gtk_action_group_new("mainwin_radioaction_scomode"); + radioaction_group_scomode = gtk_action_group_new("radioaction_scomode"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_scomode , mainwin_radioaction_entries_scomode , - G_N_ELEMENTS(mainwin_radioaction_entries_scomode) , 0 , G_CALLBACK(action_scomode) , NULL ); + radioaction_group_scomode , radioaction_entries_scomode , + G_N_ELEMENTS(radioaction_entries_scomode) , 0 , G_CALLBACK(action_scomode) , NULL ); - mainwin_radioaction_group_vprmode = gtk_action_group_new("mainwin_radioaction_vprmode"); + radioaction_group_vprmode = gtk_action_group_new("radioaction_vprmode"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_vprmode , mainwin_radioaction_entries_vprmode , - G_N_ELEMENTS(mainwin_radioaction_entries_vprmode) , 0 , G_CALLBACK(action_vprmode) , NULL ); + radioaction_group_vprmode , radioaction_entries_vprmode , + G_N_ELEMENTS(radioaction_entries_vprmode) , 0 , G_CALLBACK(action_vprmode) , NULL ); - mainwin_radioaction_group_wshmode = gtk_action_group_new("mainwin_radioaction_wshmode"); + radioaction_group_wshmode = gtk_action_group_new("radioaction_wshmode"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_wshmode , mainwin_radioaction_entries_wshmode , - G_N_ELEMENTS(mainwin_radioaction_entries_wshmode) , 0 , G_CALLBACK(action_wshmode) , NULL ); + radioaction_group_wshmode , radioaction_entries_wshmode , + G_N_ELEMENTS(radioaction_entries_wshmode) , 0 , G_CALLBACK(action_wshmode) , NULL ); - mainwin_radioaction_group_refrate = gtk_action_group_new("mainwin_radioaction_refrate"); + radioaction_group_refrate = gtk_action_group_new("radioaction_refrate"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_refrate , mainwin_radioaction_entries_refrate , - G_N_ELEMENTS(mainwin_radioaction_entries_refrate) , 0 , G_CALLBACK(action_refrate) , NULL ); + radioaction_group_refrate , radioaction_entries_refrate , + G_N_ELEMENTS(radioaction_entries_refrate) , 0 , G_CALLBACK(action_refrate) , NULL ); - mainwin_radioaction_group_anafoff = gtk_action_group_new("mainwin_radioaction_anafoff"); + radioaction_group_anafoff = gtk_action_group_new("radioaction_anafoff"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_anafoff , mainwin_radioaction_entries_anafoff , - G_N_ELEMENTS(mainwin_radioaction_entries_anafoff) , 0 , G_CALLBACK(action_anafoff) , NULL ); + radioaction_group_anafoff , radioaction_entries_anafoff , + G_N_ELEMENTS(radioaction_entries_anafoff) , 0 , G_CALLBACK(action_anafoff) , NULL ); - mainwin_radioaction_group_peafoff = gtk_action_group_new("mainwin_radioaction_peafoff"); + radioaction_group_peafoff = gtk_action_group_new("radioaction_peafoff"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_peafoff , mainwin_radioaction_entries_peafoff , - G_N_ELEMENTS(mainwin_radioaction_entries_peafoff) , 0 , G_CALLBACK(action_peafoff) , NULL ); + radioaction_group_peafoff , radioaction_entries_peafoff , + G_N_ELEMENTS(radioaction_entries_peafoff) , 0 , G_CALLBACK(action_peafoff) , NULL ); - mainwin_radioaction_group_vismode = gtk_action_group_new("mainwin_radioaction_vismode"); + radioaction_group_vismode = gtk_action_group_new("radioaction_vismode"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_vismode , mainwin_radioaction_entries_vismode , - G_N_ELEMENTS(mainwin_radioaction_entries_vismode) , 0 , G_CALLBACK(action_vismode) , NULL ); + radioaction_group_vismode , radioaction_entries_vismode , + G_N_ELEMENTS(radioaction_entries_vismode) , 0 , G_CALLBACK(action_vismode) , NULL ); - mainwin_radioaction_group_viewtime = gtk_action_group_new("mainwin_radioaction_viewtime"); + radioaction_group_viewtime = gtk_action_group_new("radioaction_viewtime"); gtk_action_group_add_radio_actions( - mainwin_radioaction_group_viewtime , mainwin_radioaction_entries_viewtime , - G_N_ELEMENTS(mainwin_radioaction_entries_viewtime) , 0 , G_CALLBACK(action_viewtime) , NULL ); + radioaction_group_viewtime , radioaction_entries_viewtime , + G_N_ELEMENTS(radioaction_entries_viewtime) , 0 , G_CALLBACK(action_viewtime) , NULL ); /* normal actions */ - mainwin_action_group_playback = gtk_action_group_new("mainwin_action_playback"); + action_group_playback = gtk_action_group_new("action_playback"); gtk_action_group_add_actions( - mainwin_action_group_playback , mainwin_action_entries_playback , - G_N_ELEMENTS(mainwin_action_entries_playback) , NULL ); + action_group_playback , action_entries_playback , + G_N_ELEMENTS(action_entries_playback) , NULL ); - mainwin_action_group_playlist = gtk_action_group_new("mainwin_action_playlist"); + action_group_playlist = gtk_action_group_new("action_playlist"); gtk_action_group_add_actions( - mainwin_action_group_playlist , mainwin_action_entries_playlist , - G_N_ELEMENTS(mainwin_action_entries_playlist) , NULL ); + action_group_playlist , action_entries_playlist , + G_N_ELEMENTS(action_entries_playlist) , NULL ); - mainwin_action_group_visualization = gtk_action_group_new("mainwin_action_visualization"); + action_group_visualization = gtk_action_group_new("action_visualization"); + gtk_action_group_add_actions( + action_group_visualization , action_entries_visualization , + G_N_ELEMENTS(action_entries_visualization) , NULL ); + + action_group_view = gtk_action_group_new("action_view"); gtk_action_group_add_actions( - mainwin_action_group_visualization , mainwin_action_entries_visualization , - G_N_ELEMENTS(mainwin_action_entries_visualization) , NULL ); + action_group_view , action_entries_view , + G_N_ELEMENTS(action_entries_view) , NULL ); - mainwin_action_group_view = gtk_action_group_new("mainwin_action_view"); + action_group_others = gtk_action_group_new("action_others"); gtk_action_group_add_actions( - mainwin_action_group_view , mainwin_action_entries_view , - G_N_ELEMENTS(mainwin_action_entries_view) , NULL ); + action_group_others , action_entries_others , + G_N_ELEMENTS(action_entries_others) , NULL ); + + action_group_add = gtk_action_group_new("action_add"); + gtk_action_group_add_actions(action_group_add, action_entries_add, G_N_ELEMENTS(action_entries_add), NULL ); - mainwin_action_group_others = gtk_action_group_new("mainwin_action_others"); - gtk_action_group_add_actions( - mainwin_action_group_others , mainwin_action_entries_others , - G_N_ELEMENTS(mainwin_action_entries_others) , NULL ); + action_group_select = gtk_action_group_new("action_select"); + gtk_action_group_add_actions(action_group_select, action_entries_select, G_N_ELEMENTS(action_entries_select), NULL ); + + action_group_delete = gtk_action_group_new("action_delete"); + gtk_action_group_add_actions(action_group_delete, action_entries_delete, G_N_ELEMENTS(action_entries_delete), NULL ); + + action_group_sort = gtk_action_group_new("action_sort"); + gtk_action_group_add_actions(action_group_sort, action_entries_sort, G_N_ELEMENTS(action_entries_sort), NULL ); /* ui */ ui_manager = gtk_ui_manager_new(); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_toggleaction_group_others , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_anamode , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_anatype , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_scomode , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_vprmode , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_wshmode , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_refrate , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_anafoff , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_peafoff , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_vismode , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_radioaction_group_viewtime , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_action_group_playback , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_action_group_playlist , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_action_group_visualization , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_action_group_view , 0 ); - gtk_ui_manager_insert_action_group( ui_manager , mainwin_action_group_others , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , toggleaction_group_others , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_anamode , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_anatype , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_scomode , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_vprmode , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_wshmode , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_refrate , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_anafoff , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_peafoff , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_vismode , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , radioaction_group_viewtime , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_playback , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_playlist , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_visualization , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_view , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_others , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_add , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_select , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_delete , 0 ); + gtk_ui_manager_insert_action_group( ui_manager , action_group_sort , 0 ); return; } @@ -392,6 +570,23 @@ mainwin_view_menu = ui_manager_get_popup_menu( ui_manager , "/mainwin-menus/main-menu/view" ); mainwin_general_menu = ui_manager_get_popup_menu( ui_manager , "/mainwin-menus/main-menu" ); + gtk_ui_manager_add_ui_from_file( ui_manager , DATA_DIR "/ui/playlist.ui" , &gerr ); + + if ( gerr != NULL ) + { + g_critical( "Error creating UI: %s" , gerr->message ); + g_error_free( gerr ); + return; + } + + playlistwin_popup_menu = ui_manager_get_popup_menu(ui_manager, "/playlist-menus/playlist-rightclick-menu"); + + pladd_menu = ui_manager_get_popup_menu(ui_manager, "/playlist-menus/add-menu"); + pldel_menu = ui_manager_get_popup_menu(ui_manager, "/playlist-menus/del-menu"); + plsel_menu = ui_manager_get_popup_menu(ui_manager, "/playlist-menus/select-menu"); + plsort_menu = ui_manager_get_popup_menu(ui_manager, "/playlist-menus/misc-menu"); + pllist_menu = ui_manager_get_popup_menu(ui_manager, "/playlist-menus/playlist-menu"); + return; } diff -r 1148bfa60fd5 -r 6fb65026a8c7 audacious/ui_manager.h --- a/audacious/ui_manager.h Tue Jan 02 22:23:09 2007 -0800 +++ b/audacious/ui_manager.h Wed Jan 03 01:25:18 2007 -0800 @@ -31,22 +31,26 @@ GtkWidget *mainwin_playlist_menu; GtkWidget *mainwin_view_menu; -GtkActionGroup *mainwin_toggleaction_group_others; -GtkActionGroup *mainwin_radioaction_group_anamode; /* Analyzer mode */ -GtkActionGroup *mainwin_radioaction_group_anatype; /* Analyzer type */ -GtkActionGroup *mainwin_radioaction_group_scomode; /* Scope mode */ -GtkActionGroup *mainwin_radioaction_group_vprmode; /* Voiceprint mode */ -GtkActionGroup *mainwin_radioaction_group_wshmode; /* WindowShade VU mode */ -GtkActionGroup *mainwin_radioaction_group_refrate; /* Refresh rate */ -GtkActionGroup *mainwin_radioaction_group_anafoff; /* Analyzer Falloff */ -GtkActionGroup *mainwin_radioaction_group_peafoff; /* Peak Falloff */ -GtkActionGroup *mainwin_radioaction_group_vismode; /* Visualization mode */ -GtkActionGroup *mainwin_radioaction_group_viewtime; /* View time (remaining/elapsed) */ -GtkActionGroup *mainwin_action_group_playback; -GtkActionGroup *mainwin_action_group_playlist; -GtkActionGroup *mainwin_action_group_visualization; -GtkActionGroup *mainwin_action_group_view; -GtkActionGroup *mainwin_action_group_others; +GtkActionGroup *toggleaction_group_others; +GtkActionGroup *radioaction_group_anamode; /* Analyzer mode */ +GtkActionGroup *radioaction_group_anatype; /* Analyzer type */ +GtkActionGroup *radioaction_group_scomode; /* Scope mode */ +GtkActionGroup *radioaction_group_vprmode; /* Voiceprint mode */ +GtkActionGroup *radioaction_group_wshmode; /* WindowShade VU mode */ +GtkActionGroup *radioaction_group_refrate; /* Refresh rate */ +GtkActionGroup *radioaction_group_anafoff; /* Analyzer Falloff */ +GtkActionGroup *radioaction_group_peafoff; /* Peak Falloff */ +GtkActionGroup *radioaction_group_vismode; /* Visualization mode */ +GtkActionGroup *radioaction_group_viewtime; /* View time (remaining/elapsed) */ +GtkActionGroup *action_group_playback; +GtkActionGroup *action_group_playlist; +GtkActionGroup *action_group_visualization; +GtkActionGroup *action_group_view; +GtkActionGroup *action_group_others; +GtkActionGroup *action_group_add; +GtkActionGroup *action_group_select; +GtkActionGroup *action_group_delete; +GtkActionGroup *action_group_sort; void uimanager_init ( void ); diff -r 1148bfa60fd5 -r 6fb65026a8c7 audacious/ui_playlist.c --- a/audacious/ui_playlist.c Tue Jan 02 22:23:09 2007 -0800 +++ b/audacious/ui_playlist.c Wed Jan 03 01:25:18 2007 -0800 @@ -50,6 +50,7 @@ #include "playlist_container.h" #include "playlist_manager.h" #include "util.h" +#include "actions-playlist.h" #include "icons-stock.h" #include "images/audacious_playlist.xpm" @@ -79,235 +80,13 @@ static GList *playlistwin_wlist = NULL; -static void playlistwin_select_search_cbt_cb( GtkWidget *called_cbt , +void playlistwin_select_search_cbt_cb( GtkWidget *called_cbt , gpointer other_cbt ); static gboolean playlistwin_select_search_kp_cb( GtkWidget *entry , GdkEventKey *event , gpointer searchdlg_win ); -static void action_new_list(void); -static void action_load_list(void); -static void action_save_list(void); -static void action_save_default_list(void); -static void action_open_list_manager(void); -static void action_refresh_list(void); - -static void action_search_and_select(void); -static void action_invert_selection(void); -static void action_select_all(void); -static void action_select_none(void); - -static void action_clear_queue(void); -static void action_remove_unavailable(void); -static void action_remove_dupes_by_title(void); -static void action_remove_dupes_by_filename(void); -static void action_remove_dupes_by_full_path(void); -static void action_remove_all(void); -static void action_remove_selected(void); -static void action_remove_unselected(void); - -static void action_add_cd(void); -static void action_add_url(void); -static void action_add_files(void); - -static void action_randomize_list(void); -static void action_reverse_list(void); - -static void action_sort_by_title(void); -static void action_sort_by_artist(void); -static void action_sort_by_filename(void); -static void action_sort_by_full_path(void); -static void action_sort_by_date(void); -static void action_sort_by_track_number(void); -static void action_sort_by_playlist_entry(void); - -static void action_sort_selected_by_title(void); -static void action_sort_selected_by_artist(void); -static void action_sort_selected_by_filename(void); -static void action_sort_selected_by_full_path(void); -static void action_sort_selected_by_date(void); -static void action_sort_selected_by_track_number(void); -static void action_sort_selected_by_playlist_entry(void); - -static void action_view_track_info(void); -static void action_queue_toggle(void); - -static GtkActionEntry playlistwin_actions[] = { - { "dummy", NULL, "dummy" }, - - /* **************** playlist menu **************** */ - - { "new list", GTK_STOCK_NEW, N_("New List"), "N", - N_("Creates a new playlist."), G_CALLBACK(action_new_list) }, - - { "load list", GTK_STOCK_OPEN, N_("Load List"), "O", - N_("Loads a playlist file into the selected playlist."), G_CALLBACK(action_load_list) }, - - { "save list", GTK_STOCK_SAVE, N_("Save List"), "S", - N_("Saves the selected playlist."), G_CALLBACK(action_save_list) }, - - { "save default list", GTK_STOCK_SAVE, N_("Save Default List"), "S", - N_("Saves the selected playlist to the default location."), - G_CALLBACK(action_save_default_list) }, - - { "list manager", AUD_STOCK_PLAYLIST , N_("List Manager"), "P", - N_("Opens the playlist manager."), - G_CALLBACK(action_open_list_manager) }, - - { "refresh list", GTK_STOCK_REFRESH, N_("Refresh List"), "F5", - N_("Refreshes metadata associated with a playlist entry."), - G_CALLBACK(action_refresh_list) }, - - /* **************** select menu **************** */ - - { "search and select", GTK_STOCK_FIND, N_("Search and Select"), "F", - N_("Searches the playlist and selects playlist entries based on specific criteria."), - G_CALLBACK(action_search_and_select) }, - - { "invert selection", AUD_STOCK_SELECTINVERT , N_("Invert Selection"), NULL, - N_("Inverts the selected and unselected entries."), - G_CALLBACK(action_invert_selection) }, - - { "select all", AUD_STOCK_SELECTALL , N_("Select All"), "A", - N_("Selects all of the playlist entries."), - G_CALLBACK(action_select_all) }, - - { "select none", AUD_STOCK_SELECTNONE , N_("Select None"), "A", - N_("Deselects all of the playlist entries."), - G_CALLBACK(action_select_none) }, - - /* **************** delete menu **************** */ - - { "clear queue", GTK_STOCK_REMOVE, N_("Clear Queue"), "Q", - N_("Clears the queue associated with this playlist."), - G_CALLBACK(action_clear_queue) }, - - { "remove unavailable", AUD_STOCK_REMOVEUNAVAIL , N_("Remove Unavailable Files"), NULL, - N_("Removes unavailable files from the playlist."), - G_CALLBACK(action_remove_unavailable) }, - - { "remove duplicates menu", AUD_STOCK_REMOVEDUPS , N_("Remove Duplicates") }, - - { "remove by title", AUD_STOCK_REMOVEDUPS , N_("By Title"), NULL, - N_("Removes duplicate entries from the playlist by title."), - G_CALLBACK(action_remove_dupes_by_title) }, - - { "remove by filename", AUD_STOCK_REMOVEDUPS , N_("By Filename"), NULL, - N_("Removes duplicate entries from the playlist by filename."), - G_CALLBACK(action_remove_dupes_by_filename) }, - - { "remove by full path", AUD_STOCK_REMOVEDUPS , N_("By Path + Filename"), NULL, - N_("Removes duplicate entries from the playlist by their full path."), - G_CALLBACK(action_remove_dupes_by_full_path) }, - - { "remove all", GTK_STOCK_CLEAR, N_("Remove All"), NULL, - N_("Removes all entries from the playlist."), - G_CALLBACK(action_remove_all) }, - - { "remove unselected", GTK_STOCK_REMOVE, N_("Remove Unselected"), NULL, - N_("Remove unselected entries from the playlist."), - G_CALLBACK(action_remove_unselected) }, - - { "remove selected", GTK_STOCK_REMOVE, N_("Remove Selected"), "Delete", - N_("Remove selected entries from the playlist."), - G_CALLBACK(action_remove_selected) }, - - /* **************** add menu **************** */ - - { "add cd", GTK_STOCK_CDROM, N_("Add CD..."), "C", - N_("Adds a CD to the playlist."), - G_CALLBACK(action_add_cd) }, - - { "add url", GTK_STOCK_NETWORK, N_("Add Internet Address..."), "H", - N_("Adds a remote track to the playlist."), - G_CALLBACK(action_add_url) }, - - { "add files", GTK_STOCK_ADD, N_("Add Files..."), "F", - N_("Adds files to the playlist."), - G_CALLBACK(action_add_files) }, - - /* **************** sort menu **************** */ - - { "randomize list", AUD_STOCK_RANDOMIZEPL , N_("Randomize List"), "R", - N_("Randomizes the playlist."), - G_CALLBACK(action_randomize_list) }, - - { "reverse list", AUD_STOCK_INVERTPL , N_("Reverse List"), NULL, - N_("Reverses the playlist."), - G_CALLBACK(action_reverse_list) }, - - { "sort menu", AUD_STOCK_SORTBYTITLE , N_("Sort List") }, - - { "sort by title", AUD_STOCK_SORTBYTITLE , N_("By Title"), NULL, - N_("Sorts the list by title."), - G_CALLBACK(action_sort_by_title) }, - - { "sort by artist", AUD_STOCK_SORTBYARTIST , N_("By Artist"), NULL, - N_("Sorts the list by artist."), - G_CALLBACK(action_sort_by_artist) }, - - { "sort by filename", AUD_STOCK_SORTBYFILENAME , N_("By Filename"), NULL, - N_("Sorts the list by filename."), - G_CALLBACK(action_sort_by_filename) }, - - { "sort by full path", AUD_STOCK_SORTBYPATHFILE , N_("By Path + Filename"), NULL, - N_("Sorts the list by full pathname."), - G_CALLBACK(action_sort_by_full_path) }, - - { "sort by date", AUD_STOCK_SORTBYARTIST , N_("By Date"), NULL, - N_("Sorts the list by modification time."), - G_CALLBACK(action_sort_by_date) }, - - { "sort by track number", AUD_STOCK_SORTBYFILENAME , N_("By Track Number"), NULL, - N_("Sorts the list by track number."), - G_CALLBACK(action_sort_by_track_number) }, - - { "sort by playlist entry", AUD_STOCK_SORTBYPATHFILE , N_("By Playlist Entry"), NULL, - N_("Sorts the list by playlist entry."), - G_CALLBACK(action_sort_by_playlist_entry) }, - - { "sort selected menu", AUD_STOCK_SORTBYTITLE , N_("Sort Selected") }, - - { "sort selected by title", AUD_STOCK_SORTBYTITLE , N_("By Title"), NULL, - N_("Sorts the list by title."), - G_CALLBACK(action_sort_selected_by_title) }, - - { "sort selected by artist", AUD_STOCK_SORTBYARTIST, N_("By Artist"), NULL, - N_("Sorts the list by artist."), - G_CALLBACK(action_sort_selected_by_artist) }, - - { "sort selected by filename", AUD_STOCK_SORTBYFILENAME , N_("By Filename"), NULL, - N_("Sorts the list by filename."), - G_CALLBACK(action_sort_selected_by_filename) }, - - { "sort selected by full path", AUD_STOCK_SORTBYPATHFILE , N_("By Path + Filename"), NULL, - N_("Sorts the list by full pathname."), - G_CALLBACK(action_sort_selected_by_full_path) }, - - { "sort selected by date", AUD_STOCK_SORTBYARTIST , N_("By Date"), NULL, - N_("Sorts the list by modification time."), - G_CALLBACK(action_sort_selected_by_date) }, - - { "sort selected by track number", AUD_STOCK_SORTBYFILENAME , N_("By Track Number"), NULL, - N_("Sorts the list by track number."), - G_CALLBACK(action_sort_selected_by_track_number) }, - - { "sort selected by playlist entry", AUD_STOCK_SORTBYPATHFILE, N_("By Playlist Entry"), NULL, - N_("Sorts the list by playlist entry."), - G_CALLBACK(action_sort_selected_by_playlist_entry) }, - - /* stuff used in rightclick menu, but not yet covered */ - - { "view track info", AUD_STOCK_INFO , N_("View Track Details"), "I", - N_("Displays track information."), - G_CALLBACK(action_view_track_info) }, - - { "queue toggle", AUD_STOCK_QUEUETOGGLE , N_("Queue Toggle"), "Q", - N_("Enables/disables the entry in the playlist's queue."), - G_CALLBACK(action_queue_toggle) }, -}; - -static GtkWidget *pladd_menu, *pldel_menu, *plsel_menu, *plsort_menu, *pllist_menu; -static GtkWidget *playlistwin_popup_menu; +GtkWidget *pladd_menu, *pldel_menu, *plsel_menu, *plsort_menu, *pllist_menu; +GtkWidget *playlistwin_popup_menu; static void playlistwin_draw_frame(void); @@ -622,7 +401,7 @@ playlistwin_set_shade_menu(gboolean shaded) { GtkAction *action = gtk_action_group_get_action( - mainwin_toggleaction_group_others , "roll up playlist editor" ); + toggleaction_group_others , "roll up playlist editor" ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(action) , shaded ); playlistwin_set_shade(shaded); @@ -2023,61 +1802,11 @@ playlistwin_set_mask(); } -static GtkWidget * -ui_manager_get_popup(GtkUIManager * self, const gchar * path) -{ - GtkWidget *menu_item; - - menu_item = gtk_ui_manager_get_widget(self, path); - - if (GTK_IS_MENU_ITEM(menu_item)) - return gtk_menu_item_get_submenu(GTK_MENU_ITEM(menu_item)); - else - return NULL; -} - -void -playlistwin_create_popup_menus(void) -{ - GtkUIManager *ui_manager; - GtkActionGroup *action_group; - GError *error = NULL; - - action_group = gtk_action_group_new("playlistwin"); - gtk_action_group_set_translation_domain(action_group, PACKAGE_NAME); - gtk_action_group_add_actions(action_group, playlistwin_actions, - G_N_ELEMENTS(playlistwin_actions), NULL); - - ui_manager = gtk_ui_manager_new(); - gtk_ui_manager_add_ui_from_file(ui_manager, DATA_DIR "/ui/playlist.ui", &error); - - if (error) - { - g_critical("Error creating UI: %s", error->message); - return; - } - - gtk_ui_manager_insert_action_group(ui_manager, action_group, 0); - - /* playlist window popup menu */ - playlistwin_popup_menu = ui_manager_get_popup(ui_manager, "/playlist-menus/playlist-rightclick-menu"); - - pladd_menu = ui_manager_get_popup(ui_manager, "/playlist-menus/add-menu"); - pldel_menu = ui_manager_get_popup(ui_manager, "/playlist-menus/del-menu"); - plsel_menu = ui_manager_get_popup(ui_manager, "/playlist-menus/select-menu"); - plsort_menu = ui_manager_get_popup(ui_manager, "/playlist-menus/misc-menu"); - pllist_menu = ui_manager_get_popup(ui_manager, "/playlist-menus/playlist-menu"); - - gtk_window_add_accel_group(GTK_WINDOW(playlistwin), - gtk_ui_manager_get_accel_group(ui_manager)); -} - void playlistwin_create(void) { Playlist *playlist; playlistwin_create_window(); - playlistwin_create_popup_menus(); /* create GC and back pixmap for custom widget to draw on */ playlistwin_gc = gdk_gc_new(playlistwin->window); @@ -2097,7 +1826,7 @@ playlistwin_show(void) { GtkAction *action = gtk_action_group_get_action( - mainwin_toggleaction_group_others , "show playlist editor" ); + toggleaction_group_others , "show playlist editor" ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(action) , TRUE ); tbutton_set_toggled(mainwin_pl, TRUE); @@ -2113,7 +1842,7 @@ playlistwin_hide(void) { GtkAction *action = gtk_action_group_get_action( - mainwin_toggleaction_group_others , "show playlist editor" ); + toggleaction_group_others , "show playlist editor" ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(action) , FALSE ); gtk_widget_hide(playlistwin); @@ -2124,17 +1853,17 @@ gtk_widget_grab_focus(mainwin); } -static void action_view_track_info(void) +void action_view_track_info(void) { playlistwin_fileinfo(); } -static void action_queue_toggle(void) +void action_queue_toggle(void) { playlist_queue(playlist_get_active()); } -static void action_sort_by_playlist_entry(void) +void action_sort_by_playlist_entry(void) { Playlist *playlist = playlist_get_active(); @@ -2142,7 +1871,7 @@ playlistwin_update_list(playlist); } -static void action_sort_by_track_number(void) +void action_sort_by_track_number(void) { Playlist *playlist = playlist_get_active(); @@ -2150,7 +1879,7 @@ playlistwin_update_list(playlist); } -static void action_sort_by_title(void) +void action_sort_by_title(void) { Playlist *playlist = playlist_get_active(); @@ -2158,7 +1887,7 @@ playlistwin_update_list(playlist); } -static void action_sort_by_artist(void) +void action_sort_by_artist(void) { Playlist *playlist = playlist_get_active(); @@ -2166,7 +1895,7 @@ playlistwin_update_list(playlist); } -static void action_sort_by_full_path(void) +void action_sort_by_full_path(void) { Playlist *playlist = playlist_get_active(); @@ -2174,7 +1903,7 @@ playlistwin_update_list(playlist); } -static void action_sort_by_date(void) +void action_sort_by_date(void) { Playlist *playlist = playlist_get_active(); @@ -2182,7 +1911,7 @@ playlistwin_update_list(playlist); } -static void action_sort_by_filename(void) +void action_sort_by_filename(void) { Playlist *playlist = playlist_get_active(); @@ -2190,7 +1919,7 @@ playlistwin_update_list(playlist); } -static void action_sort_selected_by_playlist_entry(void) +void action_sort_selected_by_playlist_entry(void) { Playlist *playlist = playlist_get_active(); @@ -2198,7 +1927,7 @@ playlistwin_update_list(playlist); } -static void action_sort_selected_by_track_number(void) +void action_sort_selected_by_track_number(void) { Playlist *playlist = playlist_get_active(); @@ -2206,7 +1935,7 @@ playlistwin_update_list(playlist); } -static void action_sort_selected_by_title(void) +void action_sort_selected_by_title(void) { Playlist *playlist = playlist_get_active(); @@ -2214,7 +1943,7 @@ playlistwin_update_list(playlist); } -static void action_sort_selected_by_artist(void) +void action_sort_selected_by_artist(void) { Playlist *playlist = playlist_get_active(); @@ -2222,7 +1951,7 @@ playlistwin_update_list(playlist); } -static void action_sort_selected_by_full_path(void) +void action_sort_selected_by_full_path(void) { Playlist *playlist = playlist_get_active(); @@ -2230,7 +1959,7 @@ playlistwin_update_list(playlist); } -static void action_sort_selected_by_date(void) +void action_sort_selected_by_date(void) { Playlist *playlist = playlist_get_active(); @@ -2238,7 +1967,7 @@ playlistwin_update_list(playlist); } -static void action_sort_selected_by_filename(void) +void action_sort_selected_by_filename(void) { Playlist *playlist = playlist_get_active(); @@ -2246,7 +1975,7 @@ playlistwin_update_list(playlist); } -static void action_randomize_list(void) +void action_randomize_list(void) { Playlist *playlist = playlist_get_active(); @@ -2254,7 +1983,7 @@ playlistwin_update_list(playlist); } -static void action_reverse_list(void) +void action_reverse_list(void) { Playlist *playlist = playlist_get_active(); @@ -2262,37 +1991,37 @@ playlistwin_update_list(playlist); } -static void +void action_clear_queue(void) { playlist_clear_queue(playlist_get_active()); } -static void +void action_remove_unavailable(void) { playlist_remove_dead_files(playlist_get_active()); } -static void +void action_remove_dupes_by_title(void) { playlist_remove_duplicates(playlist_get_active(), PLAYLIST_DUPS_TITLE); } -static void +void action_remove_dupes_by_filename(void) { playlist_remove_duplicates(playlist_get_active(), PLAYLIST_DUPS_FILENAME); } -static void +void action_remove_dupes_by_full_path(void) { playlist_remove_duplicates(playlist_get_active(), PLAYLIST_DUPS_PATH); } -static void +void action_remove_all(void) { playlist_clear(playlist_get_active()); @@ -2302,19 +2031,19 @@ mainwin_set_info_text(); } -static void +void action_remove_selected(void) { playlist_delete(playlist_get_active(), FALSE); } -static void +void action_remove_unselected(void) { playlist_delete(playlist_get_active(), TRUE); } -static void +void action_add_files(void) { util_run_filebrowser(NO_PLAY_BUTTON); @@ -2322,19 +2051,19 @@ void add_medium(void); /* XXX */ -static void +void action_add_cd(void) { add_medium(); } -static void +void action_add_url(void) { mainwin_show_add_url_window(); } -static void +void action_new_list(void) { Playlist *playlist = playlist_get_active(); @@ -2345,7 +2074,7 @@ mainwin_set_info_text(); } -static void +void action_save_list(void) { Playlist *playlist = playlist_get_active(); @@ -2353,7 +2082,7 @@ playlistwin_select_playlist_to_save(playlist_get_current_name(playlist)); } -static void +void action_save_default_list(void) { Playlist *playlist = playlist_get_active(); @@ -2361,7 +2090,7 @@ playlist_save(playlist, bmp_paths[BMP_PATH_PLAYLIST_FILE]); } -static void +void action_load_list(void) { Playlist *playlist = playlist_get_active(); @@ -2369,7 +2098,7 @@ playlistwin_select_playlist_to_load(playlist_get_current_name(playlist)); } -static void +void action_refresh_list(void) { Playlist *playlist = playlist_get_active(); @@ -2378,31 +2107,31 @@ playlistwin_update_list(playlist); } -static void +void action_open_list_manager(void) { playlist_manager_ui_show(); } -static void +void action_search_and_select(void) { playlistwin_select_search(); } -static void +void action_invert_selection(void) { playlistwin_inverse_selection(); } -static void +void action_select_none(void) { playlistwin_select_none(); } -static void +void action_select_all(void) { playlistwin_select_all(); @@ -2410,7 +2139,7 @@ /* playlistwin_select_search callback functions placed here to avoid making the code messier :) */ -static void +void playlistwin_select_search_cbt_cb( GtkWidget *called_cbt , gpointer other_cbt ) { if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(called_cbt) ) == TRUE ) diff -r 1148bfa60fd5 -r 6fb65026a8c7 audacious/ui_playlist.h --- a/audacious/ui_playlist.h Tue Jan 02 22:23:09 2007 -0800 +++ b/audacious/ui_playlist.h Wed Jan 03 01:25:18 2007 -0800 @@ -77,4 +77,7 @@ extern gboolean playlistwin_focus; +extern GtkWidget *pladd_menu, *pldel_menu, *plsel_menu, *plsort_menu, *pllist_menu; +extern GtkWidget *playlistwin_popup_menu; + #endif