diff options
-rw-r--r-- | plugins/gtkui/Makefile.am | 1 | ||||
-rw-r--r-- | plugins/gtkui/callbacks.c | 217 | ||||
-rw-r--r-- | plugins/gtkui/deadbeef.glade | 26 | ||||
-rw-r--r-- | plugins/gtkui/gtkui.c | 87 | ||||
-rw-r--r-- | plugins/gtkui/hotkeys.c | 8 | ||||
-rw-r--r-- | plugins/gtkui/interface.c | 114 | ||||
-rw-r--r-- | plugins/hotkeys/hotkeys.c | 62 |
7 files changed, 156 insertions, 359 deletions
diff --git a/plugins/gtkui/Makefile.am b/plugins/gtkui/Makefile.am index 33e1c16b..0471465d 100644 --- a/plugins/gtkui/Makefile.am +++ b/plugins/gtkui/Makefile.am @@ -40,6 +40,7 @@ GTKUI_SOURCES = gtkui.c gtkui.h\ ddbseekbar.c ddbequalizer.c ddbcellrenderertextmultiline.c\ gtkuigl.c gtkuigl.h\ hotkeys.c hotkeys.h\ + actionhandlers.c actionhandlers.h\ $(SM_SOURCES) sdkdir = $(pkgincludedir) diff --git a/plugins/gtkui/callbacks.c b/plugins/gtkui/callbacks.c index 60305973..919c5f54 100644 --- a/plugins/gtkui/callbacks.c +++ b/plugins/gtkui/callbacks.c @@ -47,6 +47,7 @@ #include "wingeom.h" #include "widgets.h" #include "../hotkeys/hotkeys.h" +#include "actionhandlers.h" //#define trace(...) { fprintf (stderr, __VA_ARGS__); } #define trace(fmt,...) @@ -59,119 +60,12 @@ DdbListview *last_playlist; extern DB_functions_t *deadbeef; // defined in gtkui.c -static gboolean -file_filter_func (const GtkFileFilterInfo *filter_info, gpointer data) { - // get ext - const char *p = strrchr (filter_info->filename, '.'); - if (!p) { - return FALSE; - } - p++; - - // get beginning of fname - const char *fn = strrchr (filter_info->filename, '/'); - if (!fn) { - fn = filter_info->filename; - } - else { - fn++; - } - - - DB_decoder_t **codecs = deadbeef->plug_get_decoder_list (); - for (int i = 0; codecs[i]; i++) { - if (codecs[i]->exts && codecs[i]->insert) { - const char **exts = codecs[i]->exts; - for (int e = 0; exts[e]; e++) { - if (!strcasecmp (exts[e], p)) { - return TRUE; - } - } - } - if (codecs[i]->prefixes && codecs[i]->insert) { - const char **prefixes = codecs[i]->prefixes; - for (int e = 0; prefixes[e]; e++) { - if (!strncasecmp (prefixes[e], fn, strlen(prefixes[e])) && *(fn + strlen (prefixes[e])) == '.') { - return TRUE; - } - } - } - } -#if 0 - if (!strcasecmp (p, "pls")) { - return TRUE; - } - if (!strcasecmp (p, "m3u")) { - return TRUE; - } -#endif - - // test container (vfs) formats - DB_vfs_t **vfsplugs = deadbeef->plug_get_vfs_list (); - for (int i = 0; vfsplugs[i]; i++) { - if (vfsplugs[i]->is_container) { - if (vfsplugs[i]->is_container (filter_info->filename)) { - return TRUE; - } - } - } - - - return FALSE; -} - -static GtkFileFilter * -set_file_filter (GtkWidget *dlg, const char *name) { - if (!name) { - name = _("Supported sound formats"); - } - - GtkFileFilter* flt; - flt = gtk_file_filter_new (); - gtk_file_filter_set_name (flt, name); - - gtk_file_filter_add_custom (flt, GTK_FILE_FILTER_FILENAME, file_filter_func, NULL, NULL); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dlg), flt); - gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dlg), flt); - flt = gtk_file_filter_new (); - gtk_file_filter_set_name (flt, _("All files (*)")); - gtk_file_filter_add_pattern (flt, "*"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dlg), flt); - return flt; -} void on_open_activate (GtkMenuItem *menuitem, gpointer user_data) { - GtkWidget *dlg = gtk_file_chooser_dialog_new (_("Open file(s)..."), GTK_WINDOW (mainwin), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); - - set_file_filter (dlg, NULL); - - gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dlg), TRUE); - // restore folder - deadbeef->conf_lock (); - gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), deadbeef->conf_get_str_fast ("filechooser.lastdir", "")); - deadbeef->conf_unlock (); - int response = gtk_dialog_run (GTK_DIALOG (dlg)); - // store folder - gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg)); - if (folder) { - deadbeef->conf_set_str ("filechooser.lastdir", folder); - g_free (folder); - } - if (response == GTK_RESPONSE_OK) - { - deadbeef->pl_clear (); - GSList *lst = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (dlg)); - gtk_widget_destroy (dlg); - if (lst) { - gtkui_open_files (lst); - } - } - else { - gtk_widget_destroy (dlg); - } + open_files_handler (NULL, 0); } @@ -179,88 +73,14 @@ void on_add_files_activate (GtkMenuItem *menuitem, gpointer user_data) { - GtkWidget *dlg = gtk_file_chooser_dialog_new (_("Add file(s) to playlist..."), GTK_WINDOW (mainwin), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); - - set_file_filter (dlg, NULL); - - gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dlg), TRUE); - - // restore folder - deadbeef->conf_lock (); - gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), deadbeef->conf_get_str_fast ("filechooser.lastdir", "")); - deadbeef->conf_unlock (); - int response = gtk_dialog_run (GTK_DIALOG (dlg)); - // store folder - gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg)); - if (folder) { - deadbeef->conf_set_str ("filechooser.lastdir", folder); - g_free (folder); - } - if (response == GTK_RESPONSE_OK) - { - GSList *lst = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (dlg)); - gtk_widget_destroy (dlg); - if (lst) { - gtkui_add_files (lst); - } - } - else { - gtk_widget_destroy (dlg); - } -} - -void -on_follow_symlinks_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - deadbeef->conf_set_int ("add_folders_follow_symlinks", gtk_toggle_button_get_active (togglebutton)); + add_files_handler (NULL, 0); } void on_add_folders_activate (GtkMenuItem *menuitem, gpointer user_data) { - GtkWidget *dlg = gtk_file_chooser_dialog_new (_("Add folder(s) to playlist..."), GTK_WINDOW (mainwin), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); - - GtkWidget *box = gtk_hbox_new (FALSE, 8); - gtk_widget_show (box); - - GtkWidget *check = gtk_check_button_new_with_mnemonic (_("Follow symlinks")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), deadbeef->conf_get_int ("add_folders_follow_symlinks", 0)); - g_signal_connect ((gpointer) check, "toggled", - G_CALLBACK (on_follow_symlinks_toggled), - NULL); - gtk_widget_show (check); - gtk_box_pack_start (GTK_BOX (box), check, FALSE, FALSE, 0); - - gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dlg), box); - - set_file_filter (dlg, NULL); - - gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dlg), TRUE); - // restore folder - deadbeef->conf_lock (); - gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), deadbeef->conf_get_str_fast ("filechooser.lastdir", "")); - deadbeef->conf_unlock (); - int response = gtk_dialog_run (GTK_DIALOG (dlg)); - // store folder - gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg)); - if (folder) { - deadbeef->conf_set_str ("filechooser.lastdir", folder); - g_free (folder); - } - if (response == GTK_RESPONSE_OK) - { - //gchar *folder = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dlg)); - GSList *lst = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (dlg)); - gtk_widget_destroy (dlg); - if (lst) { - gtkui_add_dirs (lst); - } - } - else { - gtk_widget_destroy (dlg); - } + add_folders_handler (NULL, 0); } @@ -271,13 +91,11 @@ on_preferences1_activate (GtkMenuItem *menuitem, } - void on_quit_activate (GtkMenuItem *menuitem, gpointer user_data) { - progress_abort (); - deadbeef->sendmessage (DB_EV_TERMINATE, 0, 0, 0); + action_quit_handler (NULL, 0); } @@ -286,12 +104,7 @@ void on_select_all1_activate (GtkMenuItem *menuitem, gpointer user_data) { - deadbeef->pl_select_all (); - deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0); - DdbListview *pl = DDB_LISTVIEW (lookup_widget (searchwin, "searchlist")); - if (pl) { - ddb_listview_refresh (pl, DDB_REFRESH_LIST); - } + action_select_all_handler (NULL, 0); } @@ -377,6 +190,7 @@ on_mainwin_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { + printf ("mainwin keypress\n"); // local hotkeys // first translate gdk modifiers into X11 constants int mods = 0; @@ -1028,22 +842,7 @@ void on_deselect_all1_activate (GtkMenuItem *menuitem, gpointer user_data) { - deadbeef->pl_lock (); - DB_playItem_t *it = deadbeef->pl_get_first (PL_MAIN); - while (it) { - if (deadbeef->pl_is_selected (it)) { - deadbeef->pl_set_selected (it, 0); - } - DB_playItem_t *next = deadbeef->pl_get_next (it, PL_MAIN); - deadbeef->pl_item_unref (it); - it = next; - } - deadbeef->pl_unlock (); - deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0); - DdbListview *pl = DDB_LISTVIEW (lookup_widget (searchwin, "searchlist")); - if (pl) { - ddb_listview_refresh (pl, DDB_REFRESH_LIST); - } + action_deselect_all_handler (NULL, 0); } diff --git a/plugins/gtkui/deadbeef.glade b/plugins/gtkui/deadbeef.glade index 20a305e9..4c6a27ae 100644 --- a/plugins/gtkui/deadbeef.glade +++ b/plugins/gtkui/deadbeef.glade @@ -59,10 +59,9 @@ <property name="label" translatable="yes">_Open file(s)</property> <property name="use_underline">True</property> <signal name="activate" handler="on_open_activate" last_modification_time="Sat, 04 Jul 2009 12:57:58 GMT"/> - <accelerator key="O" modifiers="GDK_CONTROL_MASK" signal="activate"/> <child internal-child="image"> - <widget class="GtkImage" id="image587"> + <widget class="GtkImage" id="image603"> <property name="visible">True</property> <property name="stock">gtk-open</property> <property name="icon_size">1</property> @@ -89,7 +88,7 @@ <signal name="activate" handler="on_add_files_activate" last_modification_time="Sat, 04 Jul 2009 13:04:01 GMT"/> <child internal-child="image"> - <widget class="GtkImage" id="image588"> + <widget class="GtkImage" id="image604"> <property name="visible">True</property> <property name="stock">gtk-add</property> <property name="icon_size">1</property> @@ -110,7 +109,7 @@ <signal name="activate" handler="on_add_folders_activate" last_modification_time="Sun, 06 Sep 2009 17:51:40 GMT"/> <child internal-child="image"> - <widget class="GtkImage" id="image589"> + <widget class="GtkImage" id="image605"> <property name="visible">True</property> <property name="stock">gtk-add</property> <property name="icon_size">1</property> @@ -144,7 +143,6 @@ <property name="label" translatable="yes">New playlist</property> <property name="use_underline">True</property> <signal name="activate" handler="on_new_playlist1_activate" last_modification_time="Fri, 02 Apr 2010 18:06:51 GMT"/> - <accelerator key="n" modifiers="GDK_CONTROL_MASK" signal="activate"/> </widget> </child> @@ -178,10 +176,9 @@ <property name="label" translatable="yes">_Quit</property> <property name="use_underline">True</property> <signal name="activate" handler="on_quit_activate" last_modification_time="Sat, 04 Jul 2009 12:57:58 GMT"/> - <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/> <child internal-child="image"> - <widget class="GtkImage" id="image590"> + <widget class="GtkImage" id="image606"> <property name="visible">True</property> <property name="stock">gtk-quit</property> <property name="icon_size">1</property> @@ -215,7 +212,7 @@ <signal name="activate" handler="on_clear1_activate" last_modification_time="Sun, 06 Sep 2009 18:30:03 GMT"/> <child internal-child="image"> - <widget class="GtkImage" id="image591"> + <widget class="GtkImage" id="image607"> <property name="visible">True</property> <property name="stock">gtk-clear</property> <property name="icon_size">1</property> @@ -234,7 +231,6 @@ <property name="label" translatable="yes">Select all</property> <property name="use_underline">True</property> <signal name="activate" handler="on_select_all1_activate" last_modification_time="Sun, 06 Sep 2009 18:30:03 GMT"/> - <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/> </widget> </child> @@ -244,7 +240,6 @@ <property name="label" translatable="yes">Deselect all</property> <property name="use_underline">True</property> <signal name="activate" handler="on_deselect_all1_activate" last_modification_time="Fri, 02 Apr 2010 11:30:31 GMT"/> - <accelerator key="Escape" modifiers="0" signal="activate"/> </widget> </child> @@ -274,7 +269,7 @@ <signal name="activate" handler="on_remove1_activate" last_modification_time="Sun, 06 Sep 2009 18:30:03 GMT"/> <child internal-child="image"> - <widget class="GtkImage" id="image592"> + <widget class="GtkImage" id="image608"> <property name="visible">True</property> <property name="stock">gtk-remove</property> <property name="icon_size">1</property> @@ -306,7 +301,6 @@ <property name="label" translatable="yes">_Find</property> <property name="use_underline">True</property> <signal name="activate" handler="on_find_activate" last_modification_time="Sun, 06 Sep 2009 18:30:03 GMT"/> - <accelerator key="F" modifiers="GDK_CONTROL_MASK" signal="activate"/> </widget> </child> @@ -605,7 +599,6 @@ <property name="use_underline">True</property> <property name="active">False</property> <signal name="activate" handler="on_stop_after_current_activate" last_modification_time="Sun, 20 Dec 2009 13:32:19 GMT"/> - <accelerator key="M" modifiers="GDK_CONTROL_MASK" signal="activate"/> </widget> </child> @@ -621,7 +614,6 @@ <property name="label" translatable="yes">Jump to current track</property> <property name="use_underline">True</property> <signal name="activate" handler="on_jump_to_current_track1_activate" last_modification_time="Wed, 01 Sep 2010 19:11:01 GMT"/> - <accelerator key="J" modifiers="GDK_CONTROL_MASK" signal="activate"/> </widget> </child> </widget> @@ -646,7 +638,7 @@ <signal name="activate" handler="on_help1_activate" last_modification_time="Tue, 08 Sep 2009 17:32:06 GMT"/> <child internal-child="image"> - <widget class="GtkImage" id="image593"> + <widget class="GtkImage" id="image609"> <property name="visible">True</property> <property name="stock">gtk-help</property> <property name="icon_size">1</property> @@ -706,7 +698,7 @@ <signal name="activate" handler="on_about1_activate" last_modification_time="Sat, 04 Jul 2009 12:57:58 GMT"/> <child internal-child="image"> - <widget class="GtkImage" id="image594"> + <widget class="GtkImage" id="image610"> <property name="visible">True</property> <property name="stock">gtk-about</property> <property name="icon_size">1</property> @@ -727,7 +719,7 @@ <signal name="activate" handler="on_translators1_activate" last_modification_time="Sun, 19 Sep 2010 13:38:07 GMT"/> <child internal-child="image"> - <widget class="GtkImage" id="image595"> + <widget class="GtkImage" id="image611"> <property name="visible">True</property> <property name="stock">gtk-about</property> <property name="icon_size">1</property> diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index 1e08b5d6..3e79274a 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -26,6 +26,7 @@ #include <math.h> #include <sys/time.h> #include <unistd.h> +#include <sys/stat.h> #include "../../gettext.h" #include "gtkui.h" #include "ddblistview.h" @@ -52,6 +53,7 @@ #ifdef EGG_SM_CLIENT_BACKEND_XSMP #include "smclient/eggsmclient.h" #endif +#include "actionhandlers.h" #define trace(...) { fprintf(stderr, __VA_ARGS__); } //#define trace(fmt,...) @@ -1086,6 +1088,22 @@ gtkui_thread (void *ctx) { mainwin = create_mainwin (); + // initialize default hotkey mapping + struct stat st; + char checkpath[PATH_MAX]; + snprintf (checkpath, sizeof (checkpath), "%s/config", deadbeef->get_config_dir ()); + if (stat (checkpath, &st)) { + printf ("file %s doesn't exist\n", checkpath); + deadbeef->conf_set_str ("hotkey.key1", "\"Ctrl f\" 0 0 find"); + deadbeef->conf_set_str ("hotkey.key2", "\"Ctrl o\" 0 0 open_files"); + deadbeef->conf_set_str ("hotkey.key3", "\"Ctrl q\" 0 0 quit"); + deadbeef->conf_set_str ("hotkey.key4", "\"Ctrl n\" 0 0 new_playlist"); + deadbeef->conf_set_str ("hotkey.key5", "\"Ctrl a\" 0 0 select_all"); + deadbeef->conf_set_str ("hotkey.key6", "\"Escape\" 0 0 deselect_all"); + deadbeef->conf_set_str ("hotkey.key7", "\"Ctrl m\" 0 0 toggle_stop_after_current"); + deadbeef->conf_set_str ("hotkey.key8", "\"Ctrl j\" 0 0 jump_to_current_track"); + } + // construct mainwindow widgets { @@ -1096,7 +1114,7 @@ gtkui_thread (void *ctx) { // load layout char layout[4000]; - deadbeef->conf_get_str ("gtkui.layout", "tabbed_playlist { }", layout, sizeof (layout)); + deadbeef->conf_get_str ("gtkui.layout", "tabbed_playlist \"\" { }", layout, sizeof (layout)); ddb_gtkui_widget_t *w = NULL; w_create_from_string (layout, &w); @@ -1396,12 +1414,77 @@ gtkui_get_mainwin (void) { return mainwin; } +static DB_plugin_action_t action_deselect_all = { + .title = "Edit/Deselect All", + .name = "deselect_all", + .flags = DB_ACTION_COMMON, + .callback = action_deselect_all_handler, + .next = NULL +}; + +static DB_plugin_action_t action_select_all = { + .title = "Edit/Select All", + .name = "select_all", + .flags = DB_ACTION_COMMON, + .callback = action_select_all_handler, + .next = &action_deselect_all +}; + +static DB_plugin_action_t action_quit = { + .title = "Quit", + .name = "quit", + .flags = DB_ACTION_COMMON, + .callback = action_quit_handler, + .next = &action_select_all +}; + +static DB_plugin_action_t action_delete_from_disk = { + .title = "[stub] Delete From Disk", + .name = "delete_from_disk", + .flags = DB_ACTION_SINGLE_TRACK | DB_ACTION_MULTIPLE_TRACKS, + .callback = action_quit_handler, + .next = &action_quit +}; + +static DB_plugin_action_t action_add_location = { + .title = "File/[stub] Add Location", + .name = "add_location", + .flags = DB_ACTION_COMMON, + .callback = NULL, + .next = &action_delete_from_disk +}; + +static DB_plugin_action_t action_add_folders = { + .title = "File/Add Folder(s)", + .name = "add_folders", + .flags = DB_ACTION_COMMON, + .callback = add_folders_handler, + .next = &action_add_location +}; + +static DB_plugin_action_t action_add_files = { + .title = "File/Add File(s)", + .name = "add_files", + .flags = DB_ACTION_COMMON, + .callback = add_files_handler, + .next = &action_add_folders +}; + +static DB_plugin_action_t action_open_files = { + .title = "File/Open File(s)", + .name = "open_files", + .flags = DB_ACTION_COMMON, + .callback = open_files_handler, + .next = &action_add_files +}; + + static DB_plugin_action_t action_track_properties = { .title = "[stub] Track properties", .name = "track_properties", .flags = DB_ACTION_MULTIPLE_TRACKS, .callback = NULL, - .next = NULL + .next = &action_open_files }; static DB_plugin_action_t action_show_help = { diff --git a/plugins/gtkui/hotkeys.c b/plugins/gtkui/hotkeys.c index c8cca149..0963c5d9 100644 --- a/plugins/gtkui/hotkeys.c +++ b/plugins/gtkui/hotkeys.c @@ -652,10 +652,10 @@ on_hotkeys_set_key_key_press_event (GtkWidget *widget, { switch (event->keyval) { - case GDK_Escape: - get_keycombo_string (last_accel_key, last_accel_mask, name); - gtk_button_set_label (GTK_BUTTON (widget), name); - goto out; /* cancel */ +// case GDK_Escape: +// get_keycombo_string (last_accel_key, last_accel_mask, name); +// gtk_button_set_label (GTK_BUTTON (widget), name); +// goto out; /* cancel */ case GDK_BackSpace: gtk_button_set_label (GTK_BUTTON (widget), _("<Not set>")); last_accel_key = 0; diff --git a/plugins/gtkui/interface.c b/plugins/gtkui/interface.c index f81a9a55..36be0be9 100644 --- a/plugins/gtkui/interface.c +++ b/plugins/gtkui/interface.c @@ -35,12 +35,12 @@ create_mainwin (void) GtkWidget *File; GtkWidget *File_menu; GtkWidget *open; - GtkWidget *image587; + GtkWidget *image603; GtkWidget *separator2; GtkWidget *add_files; - GtkWidget *image588; + GtkWidget *image604; GtkWidget *add_folders; - GtkWidget *image589; + GtkWidget *image605; GtkWidget *add_location1; GtkWidget *separatormenuitem1; GtkWidget *new_playlist1; @@ -48,18 +48,18 @@ create_mainwin (void) GtkWidget *playlist_save_as; GtkWidget *separator8; GtkWidget *quit; - GtkWidget *image590; + GtkWidget *image606; GtkWidget *Edit; GtkWidget *Edit_menu; GtkWidget *clear1; - GtkWidget *image591; + GtkWidget *image607; GtkWidget *select_all1; GtkWidget *deselect_all1; GtkWidget *invert_selection1; GtkWidget *Selection; GtkWidget *Selection_menu; GtkWidget *remove1; - GtkWidget *image592; + GtkWidget *image608; GtkWidget *crop1; GtkWidget *find1; GtkWidget *sort_by1; @@ -103,16 +103,16 @@ create_mainwin (void) GtkWidget *Help; GtkWidget *Help_menu; GtkWidget *help1; - GtkWidget *image593; + GtkWidget *image609; GtkWidget *changelog1; GtkWidget *separator10; GtkWidget *gpl1; GtkWidget *lgpl1; GtkWidget *separator9; GtkWidget *about1; - GtkWidget *image594; + GtkWidget *image610; GtkWidget *translators1; - GtkWidget *image595; + GtkWidget *image611; GtkWidget *hbox2; GtkWidget *hbox3; GtkWidget *stopbtn; @@ -156,13 +156,10 @@ create_mainwin (void) open = gtk_image_menu_item_new_with_mnemonic (_("_Open file(s)")); gtk_widget_show (open); gtk_container_add (GTK_CONTAINER (File_menu), open); - gtk_widget_add_accelerator (open, "activate", accel_group, - GDK_O, (GdkModifierType) GDK_CONTROL_MASK, - GTK_ACCEL_VISIBLE); - image587 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); - gtk_widget_show (image587); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open), image587); + image603 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); + gtk_widget_show (image603); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open), image603); separator2 = gtk_separator_menu_item_new (); gtk_widget_show (separator2); @@ -173,17 +170,17 @@ create_mainwin (void) gtk_widget_show (add_files); gtk_container_add (GTK_CONTAINER (File_menu), add_files); - image588 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image588); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_files), image588); + image604 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image604); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_files), image604); add_folders = gtk_image_menu_item_new_with_mnemonic (_("Add folder(s)")); gtk_widget_show (add_folders); gtk_container_add (GTK_CONTAINER (File_menu), add_folders); - image589 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image589); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_folders), image589); + image605 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image605); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_folders), image605); add_location1 = gtk_menu_item_new_with_mnemonic (_("Add location")); gtk_widget_show (add_location1); @@ -197,9 +194,6 @@ create_mainwin (void) new_playlist1 = gtk_menu_item_new_with_mnemonic (_("New playlist")); gtk_widget_show (new_playlist1); gtk_container_add (GTK_CONTAINER (File_menu), new_playlist1); - gtk_widget_add_accelerator (new_playlist1, "activate", accel_group, - GDK_n, (GdkModifierType) GDK_CONTROL_MASK, - GTK_ACCEL_VISIBLE); playlist_load = gtk_menu_item_new_with_mnemonic (_("Load playlist")); gtk_widget_show (playlist_load); @@ -217,13 +211,10 @@ create_mainwin (void) quit = gtk_image_menu_item_new_with_mnemonic (_("_Quit")); gtk_widget_show (quit); gtk_container_add (GTK_CONTAINER (File_menu), quit); - gtk_widget_add_accelerator (quit, "activate", accel_group, - GDK_Q, (GdkModifierType) GDK_CONTROL_MASK, - GTK_ACCEL_VISIBLE); - image590 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU); - gtk_widget_show (image590); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (quit), image590); + image606 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU); + gtk_widget_show (image606); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (quit), image606); Edit = gtk_menu_item_new_with_mnemonic (_("_Edit")); gtk_widget_show (Edit); @@ -236,23 +227,17 @@ create_mainwin (void) gtk_widget_show (clear1); gtk_container_add (GTK_CONTAINER (Edit_menu), clear1); - image591 = gtk_image_new_from_stock ("gtk-clear", GTK_ICON_SIZE_MENU); - gtk_widget_show (image591); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (clear1), image591); + image607 = gtk_image_new_from_stock ("gtk-clear", GTK_ICON_SIZE_MENU); + gtk_widget_show (image607); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (clear1), image607); select_all1 = gtk_menu_item_new_with_mnemonic (_("Select all")); gtk_widget_show (select_all1); gtk_container_add (GTK_CONTAINER (Edit_menu), select_all1); - gtk_widget_add_accelerator (select_all1, "activate", accel_group, - GDK_A, (GdkModifierType) GDK_CONTROL_MASK, - GTK_ACCEL_VISIBLE); deselect_all1 = gtk_menu_item_new_with_mnemonic (_("Deselect all")); gtk_widget_show (deselect_all1); gtk_container_add (GTK_CONTAINER (Edit_menu), deselect_all1); - gtk_widget_add_accelerator (deselect_all1, "activate", accel_group, - GDK_Escape, (GdkModifierType) 0, - GTK_ACCEL_VISIBLE); invert_selection1 = gtk_menu_item_new_with_mnemonic (_("Invert selection")); gtk_widget_show (invert_selection1); @@ -269,9 +254,9 @@ create_mainwin (void) gtk_widget_show (remove1); gtk_container_add (GTK_CONTAINER (Selection_menu), remove1); - image592 = gtk_image_new_from_stock ("gtk-remove", GTK_ICON_SIZE_MENU); - gtk_widget_show (image592); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (remove1), image592); + image608 = gtk_image_new_from_stock ("gtk-remove", GTK_ICON_SIZE_MENU); + gtk_widget_show (image608); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (remove1), image608); crop1 = gtk_menu_item_new_with_mnemonic (_("Crop")); gtk_widget_show (crop1); @@ -280,9 +265,6 @@ create_mainwin (void) find1 = gtk_menu_item_new_with_mnemonic (_("_Find")); gtk_widget_show (find1); gtk_container_add (GTK_CONTAINER (Edit_menu), find1); - gtk_widget_add_accelerator (find1, "activate", accel_group, - GDK_F, (GdkModifierType) GDK_CONTROL_MASK, - GTK_ACCEL_VISIBLE); sort_by1 = gtk_menu_item_new_with_mnemonic (_("Sort by")); gtk_widget_show (sort_by1); @@ -430,9 +412,6 @@ create_mainwin (void) stop_after_current = gtk_check_menu_item_new_with_mnemonic (_("Stop after current")); gtk_widget_show (stop_after_current); gtk_container_add (GTK_CONTAINER (Playback_menu), stop_after_current); - gtk_widget_add_accelerator (stop_after_current, "activate", accel_group, - GDK_M, (GdkModifierType) GDK_CONTROL_MASK, - GTK_ACCEL_VISIBLE); separator11 = gtk_separator_menu_item_new (); gtk_widget_show (separator11); @@ -442,9 +421,6 @@ create_mainwin (void) jump_to_current_track1 = gtk_menu_item_new_with_mnemonic (_("Jump to current track")); gtk_widget_show (jump_to_current_track1); gtk_container_add (GTK_CONTAINER (Playback_menu), jump_to_current_track1); - gtk_widget_add_accelerator (jump_to_current_track1, "activate", accel_group, - GDK_J, (GdkModifierType) GDK_CONTROL_MASK, - GTK_ACCEL_VISIBLE); Help = gtk_menu_item_new_with_mnemonic (_("_Help")); gtk_widget_show (Help); @@ -457,9 +433,9 @@ create_mainwin (void) gtk_widget_show (help1); gtk_container_add (GTK_CONTAINER (Help_menu), help1); - image593 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU); - gtk_widget_show (image593); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1), image593); + image609 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU); + gtk_widget_show (image609); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1), image609); changelog1 = gtk_menu_item_new_with_mnemonic (_("_ChangeLog")); gtk_widget_show (changelog1); @@ -487,17 +463,17 @@ create_mainwin (void) gtk_widget_show (about1); gtk_container_add (GTK_CONTAINER (Help_menu), about1); - image594 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_MENU); - gtk_widget_show (image594); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (about1), image594); + image610 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_MENU); + gtk_widget_show (image610); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (about1), image610); translators1 = gtk_image_menu_item_new_with_mnemonic (_("_Translators")); gtk_widget_show (translators1); gtk_container_add (GTK_CONTAINER (Help_menu), translators1); - image595 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_MENU); - gtk_widget_show (image595); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (translators1), image595); + image611 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_MENU); + gtk_widget_show (image611); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (translators1), image611); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox2); @@ -788,12 +764,12 @@ create_mainwin (void) GLADE_HOOKUP_OBJECT (mainwin, File, "File"); GLADE_HOOKUP_OBJECT (mainwin, File_menu, "File_menu"); GLADE_HOOKUP_OBJECT (mainwin, open, "open"); - GLADE_HOOKUP_OBJECT (mainwin, image587, "image587"); + GLADE_HOOKUP_OBJECT (mainwin, image603, "image603"); GLADE_HOOKUP_OBJECT (mainwin, separator2, "separator2"); GLADE_HOOKUP_OBJECT (mainwin, add_files, "add_files"); - GLADE_HOOKUP_OBJECT (mainwin, image588, "image588"); + GLADE_HOOKUP_OBJECT (mainwin, image604, "image604"); GLADE_HOOKUP_OBJECT (mainwin, add_folders, "add_folders"); - GLADE_HOOKUP_OBJECT (mainwin, image589, "image589"); + GLADE_HOOKUP_OBJECT (mainwin, image605, "image605"); GLADE_HOOKUP_OBJECT (mainwin, add_location1, "add_location1"); GLADE_HOOKUP_OBJECT (mainwin, separatormenuitem1, "separatormenuitem1"); GLADE_HOOKUP_OBJECT (mainwin, new_playlist1, "new_playlist1"); @@ -801,18 +777,18 @@ create_mainwin (void) GLADE_HOOKUP_OBJECT (mainwin, playlist_save_as, "playlist_save_as"); GLADE_HOOKUP_OBJECT (mainwin, separator8, "separator8"); GLADE_HOOKUP_OBJECT (mainwin, quit, "quit"); - GLADE_HOOKUP_OBJECT (mainwin, image590, "image590"); + GLADE_HOOKUP_OBJECT (mainwin, image606, "image606"); GLADE_HOOKUP_OBJECT (mainwin, Edit, "Edit"); GLADE_HOOKUP_OBJECT (mainwin, Edit_menu, "Edit_menu"); GLADE_HOOKUP_OBJECT (mainwin, clear1, "clear1"); - GLADE_HOOKUP_OBJECT (mainwin, image591, "image591"); + GLADE_HOOKUP_OBJECT (mainwin, image607, "image607"); GLADE_HOOKUP_OBJECT (mainwin, select_all1, "select_all1"); GLADE_HOOKUP_OBJECT (mainwin, deselect_all1, "deselect_all1"); GLADE_HOOKUP_OBJECT (mainwin, invert_selection1, "invert_selection1"); GLADE_HOOKUP_OBJECT (mainwin, Selection, "Selection"); GLADE_HOOKUP_OBJECT (mainwin, Selection_menu, "Selection_menu"); GLADE_HOOKUP_OBJECT (mainwin, remove1, "remove1"); - GLADE_HOOKUP_OBJECT (mainwin, image592, "image592"); + GLADE_HOOKUP_OBJECT (mainwin, image608, "image608"); GLADE_HOOKUP_OBJECT (mainwin, crop1, "crop1"); GLADE_HOOKUP_OBJECT (mainwin, find1, "find1"); GLADE_HOOKUP_OBJECT (mainwin, sort_by1, "sort_by1"); @@ -854,16 +830,16 @@ create_mainwin (void) GLADE_HOOKUP_OBJECT (mainwin, Help, "Help"); GLADE_HOOKUP_OBJECT (mainwin, Help_menu, "Help_menu"); GLADE_HOOKUP_OBJECT (mainwin, help1, "help1"); - GLADE_HOOKUP_OBJECT (mainwin, image593, "image593"); + GLADE_HOOKUP_OBJECT (mainwin, image609, "image609"); GLADE_HOOKUP_OBJECT (mainwin, changelog1, "changelog1"); GLADE_HOOKUP_OBJECT (mainwin, separator10, "separator10"); GLADE_HOOKUP_OBJECT (mainwin, gpl1, "gpl1"); GLADE_HOOKUP_OBJECT (mainwin, lgpl1, "lgpl1"); GLADE_HOOKUP_OBJECT (mainwin, separator9, "separator9"); GLADE_HOOKUP_OBJECT (mainwin, about1, "about1"); - GLADE_HOOKUP_OBJECT (mainwin, image594, "image594"); + GLADE_HOOKUP_OBJECT (mainwin, image610, "image610"); GLADE_HOOKUP_OBJECT (mainwin, translators1, "translators1"); - GLADE_HOOKUP_OBJECT (mainwin, image595, "image595"); + GLADE_HOOKUP_OBJECT (mainwin, image611, "image611"); GLADE_HOOKUP_OBJECT (mainwin, hbox2, "hbox2"); GLADE_HOOKUP_OBJECT (mainwin, hbox3, "hbox3"); GLADE_HOOKUP_OBJECT (mainwin, stopbtn, "stopbtn"); diff --git a/plugins/hotkeys/hotkeys.c b/plugins/hotkeys/hotkeys.c index 0b533065..cbbc8145 100644 --- a/plugins/hotkeys/hotkeys.c +++ b/plugins/hotkeys/hotkeys.c @@ -1,6 +1,7 @@ /* Hotkeys plugin for DeaDBeeF Copyright (C) 2009 Viktor Semykin <thesame.ml@gmail.com> + Copyright (C) 2012 Alexey Yakovenko <waker@users.sourceforge.net> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,6 +26,7 @@ #include "hotkeys.h" #include "../../deadbeef.h" +#include "actionhandlers.h" //#define trace(...) { fprintf(stderr, __VA_ARGS__); } #define trace(fmt,...) @@ -778,68 +780,12 @@ static DB_plugin_action_t action_invert_selection = { .next = &action_remove_from_playlist }; -static DB_plugin_action_t action_deselect_all = { - .title = "Edit/[stub] Deselect All", - .name = "deselect_all", - .flags = DB_ACTION_COMMON, - .callback = NULL, - .next = &action_invert_selection -}; - -static DB_plugin_action_t action_select_all = { - .title = "Edit/[stub] Select All", - .name = "select_all", - .flags = DB_ACTION_COMMON, - .callback = NULL, - .next = &action_deselect_all -}; - static DB_plugin_action_t action_clear_playlist = { .title = "Edit/[stub] Clear playlist", .name = "clear_playlist", .flags = DB_ACTION_COMMON, .callback = NULL, - .next = &action_select_all -}; - -static DB_plugin_action_t action_quit = { - .title = "[stub] Quit", - .name = "quit", - .flags = DB_ACTION_COMMON, - .callback = NULL, - .next = &action_clear_playlist -}; - -static DB_plugin_action_t action_delete_from_disk = { - .title = "[stub] Delete From Disk", - .name = "delete_from_disk", - .flags = DB_ACTION_SINGLE_TRACK | DB_ACTION_MULTIPLE_TRACKS, - .callback = NULL, - .next = &action_quit -}; - -static DB_plugin_action_t action_add_location = { - .title = "File/[stub] Add Location", - .name = "add_location", - .flags = DB_ACTION_COMMON, - .callback = NULL, - .next = &action_delete_from_disk -}; - -static DB_plugin_action_t action_add_folders = { - .title = "File/[stub] Add Folder(s)", - .name = "add_folders", - .flags = DB_ACTION_COMMON, - .callback = NULL, - .next = &action_add_location -}; - -static DB_plugin_action_t action_add_files = { - .title = "File/[stub] Add File(s)", - .name = "add_files", - .flags = DB_ACTION_COMMON, - .callback = NULL, - .next = &action_add_folders + .next = &action_invert_selection }; static DB_plugin_action_t action_remove_from_playqueue = { @@ -847,7 +793,7 @@ static DB_plugin_action_t action_remove_from_playqueue = { .name = "remove_from_playback_queue", .flags = DB_ACTION_MULTIPLE_TRACKS, .callback = NULL, - .next = &action_add_files + .next = &action_clear_playlist }; static DB_plugin_action_t action_add_to_playqueue = { |