Use mimetypes for audio and images

This commit is contained in:
TingPing 2013-08-31 15:31:22 -04:00
parent 4c406bce17
commit 755932c3bc
3 changed files with 16 additions and 6 deletions

View File

@ -130,6 +130,7 @@ void fe_get_int (char *prompt, int def, void *callback, void *ud);
#define FRF_FILTERISINITIAL 16 /* filter is initial directory */ #define FRF_FILTERISINITIAL 16 /* filter is initial directory */
#define FRF_NOASKOVERWRITE 32 /* don't ask to overwrite existing files */ #define FRF_NOASKOVERWRITE 32 /* don't ask to overwrite existing files */
#define FRF_EXTENSIONS 64 /* specify file extensions to be displayed */ #define FRF_EXTENSIONS 64 /* specify file extensions to be displayed */
#define FRF_MIMETYPES 128 /* specify file mimetypes to be displayed */
void fe_get_file (const char *title, char *initial, void fe_get_file (const char *title, char *initial,
void (*callback) (void *userdata, char *file), void *userdata, void (*callback) (void *userdata, char *file), void *userdata,
int flags); int flags);

View File

@ -214,7 +214,7 @@ gtkutil_file_req (const char *title, void *callback, void *userdata, char *filte
if (flags & FRF_CHOOSEFOLDER) if (flags & FRF_CHOOSEFOLDER)
gtk_file_chooser_set_action (GTK_FILE_CHOOSER (dialog), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); gtk_file_chooser_set_action (GTK_FILE_CHOOSER (dialog), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
if (flags & FRF_EXTENSIONS && extensions != NULL) if ((flags & FRF_EXTENSIONS || flags & FRF_MIMETYPES) && extensions != NULL)
{ {
filefilter = gtk_file_filter_new (); filefilter = gtk_file_filter_new ();
tokenbuffer = g_strdup (extensions); tokenbuffer = g_strdup (extensions);
@ -222,7 +222,10 @@ gtkutil_file_req (const char *title, void *callback, void *userdata, char *filte
while (token != NULL) while (token != NULL)
{ {
if (flags & FRF_EXTENSIONS)
gtk_file_filter_add_pattern (filefilter, token); gtk_file_filter_add_pattern (filefilter, token);
else
gtk_file_filter_add_mime_type (filefilter, token);
token = strtok (NULL, ";"); token = strtok (NULL, ";");
} }

View File

@ -1061,7 +1061,7 @@ setup_browsefile_cb (GtkWidget *button, GtkWidget *entry)
{ {
/* used for background image only */ /* used for background image only */
gtkutil_file_req (_("Select an Image File"), setup_filereq_cb, gtkutil_file_req (_("Select an Image File"), setup_filereq_cb,
entry, NULL, "*.jpg;*.png;*.tif;*.gif", FRF_EXTENSIONS|FRF_RECENTLYUSED); entry, NULL, "image/*", FRF_MIMETYPES|FRF_RECENTLYUSED);
} }
static void static void
@ -1661,12 +1661,18 @@ static void
setup_snd_browse_cb (GtkWidget *button, GtkEntry *entry) setup_snd_browse_cb (GtkWidget *button, GtkEntry *entry)
{ {
char *sounds_dir = g_build_filename (get_xdir (), HEXCHAT_SOUND_DIR, NULL); char *sounds_dir = g_build_filename (get_xdir (), HEXCHAT_SOUND_DIR, NULL);
char *extensions = NULL; char *filter = NULL;
int filter_type;
#ifdef WIN32 /* win32 only supports wav, others could support anything */ #ifdef WIN32 /* win32 only supports wav, others could support anything */
extensions = "*.wav"; filter = "*.wav";
filter_type = FRF_EXTENSIONS;
#else
filter = "audio/*";
filter_type = FRF_MIMETYPES;
#endif #endif
gtkutil_file_req (_("Select a sound file"), setup_snd_filereq_cb, entry, sounds_dir, extensions, FRF_FILTERISINITIAL|FRF_EXTENSIONS); gtkutil_file_req (_("Select a sound file"), setup_snd_filereq_cb, entry,
sounds_dir, filter, FRF_FILTERISINITIAL|filter_type);
g_free (sounds_dir); g_free (sounds_dir);
} }