summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2012-11-10 20:42:09 +0100
committerGravatar waker <wakeroid@gmail.com>2012-11-10 20:44:13 +0100
commite8cb55bdcf835daaa775186d129a9872ac98a625 (patch)
treec9d6749a99e9fde77978e3eae1caff4b089c3bd2
parent3fca08e59e1e2a497c3ca4526a9f76233e51d2bf (diff)
gtkui: removed menu accels; started implementing hotkey actions
-rw-r--r--plugins/gtkui/Makefile.am1
-rw-r--r--plugins/gtkui/callbacks.c217
-rw-r--r--plugins/gtkui/deadbeef.glade26
-rw-r--r--plugins/gtkui/gtkui.c87
-rw-r--r--plugins/gtkui/hotkeys.c8
-rw-r--r--plugins/gtkui/interface.c114
-rw-r--r--plugins/hotkeys/hotkeys.c62
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 = {