diff options
author | waker <wakeroid@gmail.com> | 2009-08-08 20:14:54 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2009-08-08 20:14:54 +0200 |
commit | 9aed1e396be8c506de66047a1f26d2289c1642cb (patch) | |
tree | 91cc0aee4f091c3de1ac0f5e0e6ff3b9012a276d /callbacks.c | |
parent | c69ec2a38cdfec2932d7e726c87cf1d6930bf788 (diff) |
fileopen dialogs now take file extensions from codecs
Diffstat (limited to 'callbacks.c')
-rw-r--r-- | callbacks.c | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/callbacks.c b/callbacks.c index e56f5131..8b753cc3 100644 --- a/callbacks.c +++ b/callbacks.c @@ -37,6 +37,14 @@ #include "codec.h" #include "playback.h" +#include "cwav.h" +#include "cvorbis.h" +#include "cdumb.h" +#include "cmp3.h" +#include "cgme.h" +#include "cflac.h" +#include "csid.h" + extern GtkWidget *mainwin; void @@ -156,12 +164,23 @@ on_add_files_activate (GtkMenuItem *menuitem, GtkFileFilter* flt; flt = gtk_file_filter_new (); gtk_file_filter_set_name (flt, "Supported music files"); - gtk_file_filter_add_pattern (flt, "*.ogg"); - gtk_file_filter_add_pattern (flt, "*.mod"); - gtk_file_filter_add_pattern (flt, "*.wav"); - gtk_file_filter_add_pattern (flt, "*.mp3"); - gtk_file_filter_add_pattern (flt, "*.nsf"); - gtk_file_filter_add_pattern (flt, "*.flac"); + + 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 (); @@ -190,6 +209,32 @@ on_add_folder1_activate (GtkMenuItem *menuitem, GtkWidget *dlg = gtk_file_chooser_dialog_new ("Add folder to playlist...", GTK_WINDOW (mainwin), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, 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); if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK) { gchar *folder = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dlg)); |