summaryrefslogtreecommitdiff
path: root/callbacks.c
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2009-08-16 17:07:35 +0200
committerGravatar waker <wakeroid@gmail.com>2009-08-16 17:07:35 +0200
commitdaaf3edaf115c9adb4485b10b8ed7273ef478bba (patch)
tree6abde1698995119d34518a298ecc9cb2c454d110 /callbacks.c
parent6a27a0b98b01050819a53bb1ea0e7b7be7f0be0c (diff)
added trayicon and lots of related stuff
Diffstat (limited to 'callbacks.c')
-rw-r--r--callbacks.c49
1 files changed, 47 insertions, 2 deletions
diff --git a/callbacks.c b/callbacks.c
index c0cc9bf5..44c428ca 100644
--- a/callbacks.c
+++ b/callbacks.c
@@ -164,6 +164,48 @@ 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);
+
+ GtkFileFilter* flt;
+ flt = gtk_file_filter_new ();
+ gtk_file_filter_set_name (flt, "Supported music files");
+
+ codec_t *codecs[] = {
+ &cdumb, &cvorbis, &cflac, &cgme, &cmp3, &csid, NULL
+ };
+ for (int i = 0; codecs[i]; i++) {
+ if (codecs[i]->getexts && codecs[i]->insert) {
+ const char **exts = codecs[i]->getexts ();
+ if (exts) {
+ for (int e = 0; exts[e]; e++) {
+ char filter[20];
+ snprintf (filter, 20, "*.%s", exts[e]);
+ gtk_file_filter_add_pattern (flt, filter);
+ }
+ }
+ }
+ }
+
+ 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, "Other files (*)");
+ gtk_file_filter_add_pattern (flt, "*");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dlg), flt);
+ gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dlg), TRUE);
+
+ if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK)
+ {
+ pl_free ();
+ GSList *lst = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (dlg));
+ gtk_widget_destroy (dlg);
+ if (lst) {
+ messagepump_push (M_OPENFILES, (uintptr_t)lst, 0, 0);
+ }
+ }
+ else {
+ gtk_widget_destroy (dlg);
+ }
}
@@ -273,7 +315,7 @@ void
on_quit1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
-
+ messagepump_push (M_TERMINATE, 0, 0, 0);
}
@@ -1049,7 +1091,10 @@ on_mainwin_delete_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
- messagepump_push (M_TERMINATE, 0, 0, 0);
+// messagepump_push (M_TERMINATE, 0, 0, 0);
+
+ gtk_widget_hide (widget);
return TRUE;
}
+