Bug 681699 - Inapplicable files are listed with 'All images' filter...

In order the fix the obvious confusion, add another file filter which
contains all the types that are savable with the dialog, name it
either "All XCF images" or "All export images", and make it the
default filter.
This commit is contained in:
Michael Natterer 2012-09-02 23:22:21 +02:00
parent ed94e55be9
commit 14f6d5ee44
1 changed files with 35 additions and 13 deletions

View File

@ -94,12 +94,15 @@ static void gimp_file_dialog_add_preview (GimpFileDialog *dialo
Gimp *gimp);
static void gimp_file_dialog_add_filters (GimpFileDialog *dialog,
Gimp *gimp,
GimpFileChooserAction
action,
GSList *file_procs,
GSList *file_procs_all_images);
static void gimp_file_dialog_process_procedure (GimpPlugInProcedure
*file_proc,
GtkFileFilter **filter_out,
GtkFileFilter *all);
GtkFileFilter **filter_out,
GtkFileFilter *all,
GtkFileFilter *all_savable);
static void gimp_file_dialog_add_proc_selection (GimpFileDialog *dialog,
Gimp *gimp,
GSList *file_procs,
@ -402,8 +405,7 @@ gimp_file_dialog_new (Gimp *gimp,
gimp_file_dialog_add_preview (dialog, gimp);
gimp_file_dialog_add_filters (dialog,
gimp,
gimp_file_dialog_add_filters (dialog, gimp, action,
file_procs,
file_procs_all_images);
@ -774,19 +776,22 @@ gimp_file_dialog_add_preview (GimpFileDialog *dialog,
* gimp_file_dialog_add_filters:
* @dialog:
* @gimp:
* @action:
* @file_procs: The image types that can be chosen from
* the drop down
* the file type list
* @file_procs_all_images: The additional images types shown when
* "All images" is selected
*
**/
static void
gimp_file_dialog_add_filters (GimpFileDialog *dialog,
Gimp *gimp,
GSList *file_procs,
GSList *file_procs_all_images)
gimp_file_dialog_add_filters (GimpFileDialog *dialog,
Gimp *gimp,
GimpFileChooserAction action,
GSList *file_procs,
GSList *file_procs_all_images)
{
GtkFileFilter *all;
GtkFileFilter *all_savable = NULL;
GSList *list;
all = gtk_file_filter_new ();
@ -798,6 +803,16 @@ gimp_file_dialog_add_filters (GimpFileDialog *dialog,
gtk_file_filter_set_name (all, _("All images"));
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), all);
if (file_procs_all_images)
{
all_savable = gtk_file_filter_new ();
if (action == GIMP_FILE_CHOOSER_ACTION_SAVE)
gtk_file_filter_set_name (all_savable, _("All XCF images"));
else
gtk_file_filter_set_name (all_savable, _("All export images"));
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), all_savable);
}
/* Add the normal file procs */
for (list = file_procs; list; list = g_slist_next (list))
{
@ -806,7 +821,7 @@ gimp_file_dialog_add_filters (GimpFileDialog *dialog,
gimp_file_dialog_process_procedure (file_proc,
&filter,
all);
all, all_savable);
if (filter)
{
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog),
@ -824,10 +839,13 @@ gimp_file_dialog_add_filters (GimpFileDialog *dialog,
gimp_file_dialog_process_procedure (file_proc,
NULL,
all);
all, NULL);
}
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), all);
if (all_savable)
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), all_savable);
else
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), all);
}
@ -836,6 +854,7 @@ gimp_file_dialog_add_filters (GimpFileDialog *dialog,
* @file_proc:
* @filter_out:
* @all:
* @all_savable:
*
* Creates a #GtkFileFilter of @file_proc and adds the extensions to
* the @all filter. The returned #GtkFileFilter has a normal ref and
@ -844,7 +863,8 @@ gimp_file_dialog_add_filters (GimpFileDialog *dialog,
static void
gimp_file_dialog_process_procedure (GimpPlugInProcedure *file_proc,
GtkFileFilter **filter_out,
GtkFileFilter *all)
GtkFileFilter *all,
GtkFileFilter *all_savable)
{
GtkFileFilter *filter = NULL;
GString *str = NULL;
@ -872,6 +892,8 @@ gimp_file_dialog_process_procedure (GimpPlugInProcedure *file_proc,
pattern = gimp_file_dialog_pattern_from_extension (extension);
gtk_file_filter_add_pattern (filter, pattern);
gtk_file_filter_add_pattern (all, pattern);
if (all_savable)
gtk_file_filter_add_pattern (all_savable, pattern);
g_free (pattern);
if (i == 0)