[gimp] app: show relevant files only by default.



commit 6b4b3bad1323bfb847f68bae820e278504d3b117
Author: Jehan <jehan girinstud io>
Date:   Wed Jul 25 16:50:05 2018 +0200

    app: show relevant files only by default.
    
    Just like it was until now, the default filtering should not be all
    files, but only relevant files (i.e. XCF when saving, exportable images
    when exporting and loadable images/XCF when opening).
    Now all files will only be available through the "Show All Files"
    checkbox.
    
    This is simpler than previous implementations where the list was
    proposing "All Files", "All Images" and "All XCF/export images". That is
    just too much.
    
    With this default, I get the "All Files" checkbox out of the expander so
    that it is visible immediately even when the format list is unexpanded
    (you don't want people to get pissed when not finding how to display all
    their files).

 app/widgets/gimpfiledialog.c   | 23 ++++++++---------------
 app/widgets/gimpfileprocview.c | 25 ++++++++++++++-----------
 2 files changed, 22 insertions(+), 26 deletions(-)
---
diff --git a/app/widgets/gimpfiledialog.c b/app/widgets/gimpfiledialog.c
index 5e3a68478e..c326272d35 100644
--- a/app/widgets/gimpfiledialog.c
+++ b/app/widgets/gimpfiledialog.c
@@ -732,25 +732,23 @@ gimp_file_dialog_add_proc_selection (GimpFileDialog *dialog)
   GtkWidget *scrolled_window;
   GtkWidget *checkbox;
 
+  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 1);
+  gimp_file_dialog_add_extra_widget (dialog, box, TRUE, TRUE, 0);
+  gtk_widget_show (box);
+
   dialog->proc_expander = gtk_expander_new_with_mnemonic (NULL);
   gtk_expander_set_resize_toplevel (GTK_EXPANDER (dialog->proc_expander), TRUE);
   gtk_widget_set_hexpand (GTK_WIDGET (dialog->proc_expander), TRUE);
-  gimp_file_dialog_add_extra_widget (dialog,
-                                     dialog->proc_expander,
-                                     TRUE, TRUE, 0);
+  gtk_box_pack_end (GTK_BOX (box), dialog->proc_expander, FALSE, FALSE, 1);
   gtk_widget_show (dialog->proc_expander);
 
-  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 1);
-  gtk_container_add (GTK_CONTAINER (dialog->proc_expander), box);
-  gtk_widget_show (box);
-
   /* The list of file formats. */
   scrolled_window = gtk_scrolled_window_new (NULL, NULL);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
                                   GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
                                        GTK_SHADOW_IN);
-  gtk_box_pack_start (GTK_BOX (box), scrolled_window, TRUE, TRUE, 1);
+  gtk_container_add (GTK_CONTAINER (dialog->proc_expander), scrolled_window);
   gtk_widget_show (scrolled_window);
 
   gtk_widget_set_size_request (scrolled_window, -1, 200);
@@ -772,7 +770,7 @@ gimp_file_dialog_add_proc_selection (GimpFileDialog *dialog)
   checkbox = gimp_prop_check_button_new (G_OBJECT (dialog),
                                          "show-all-files",
                                          _("Show All Files"));
-  gtk_box_pack_start (GTK_BOX (box), checkbox, FALSE, FALSE, 1);
+  gtk_box_pack_end (GTK_BOX (box), checkbox, FALSE, FALSE, 1);
   gtk_widget_show (checkbox);
 }
 
@@ -804,12 +802,7 @@ gimp_file_dialog_proc_changed (GimpFileProcView *view,
 
   if (name)
     {
-      gchar *label;
-
-      if (dialog->show_all_files)
-        label = g_strdup_printf (_("Select File _Type (%s) - Show All Files"), name);
-      else
-        label = g_strdup_printf (_("Select File _Type (%s)"), name);
+      gchar *label = g_strdup_printf (_("Select File _Type (%s)"), name);
 
       gtk_expander_set_label (GTK_EXPANDER (dialog->proc_expander), label);
 
diff --git a/app/widgets/gimpfileprocview.c b/app/widgets/gimpfileprocview.c
index 6a1371f9fe..8f0a30d4f7 100644
--- a/app/widgets/gimpfileprocview.c
+++ b/app/widgets/gimpfileprocview.c
@@ -61,7 +61,8 @@ static void            gimp_file_proc_view_finalize               (GObject
 static void            gimp_file_proc_view_selection_changed      (GtkTreeSelection    *selection,
                                                                    GimpFileProcView    *view);
 
-static GtkFileFilter * gimp_file_proc_view_process_procedure      (GimpPlugInProcedure *file_proc);
+static GtkFileFilter * gimp_file_proc_view_process_procedure      (GimpPlugInProcedure *file_proc,
+                                                                   GtkFileFilter       *all);
 static gchar         * gimp_file_proc_view_pattern_from_extension (const gchar         *extension);
 
 
@@ -116,6 +117,7 @@ gimp_file_proc_view_new (Gimp        *gimp,
                          const gchar *automatic,
                          const gchar *automatic_help_id)
 {
+  GtkFileFilter     *all_filter;
   GtkTreeView       *view;
   GtkTreeViewColumn *column;
   GtkCellRenderer   *cell;
@@ -139,6 +141,8 @@ gimp_file_proc_view_new (Gimp        *gimp,
 
   g_object_unref (store);
 
+  all_filter = gtk_file_filter_new ();
+
   for (list = procedures; list; list = g_slist_next (list))
     {
       GimpPlugInProcedure *proc = list->data;
@@ -153,7 +157,7 @@ gimp_file_proc_view_new (Gimp        *gimp,
             {
               GtkFileFilter *filter;
 
-              filter = gimp_file_proc_view_process_procedure (proc);
+              filter = gimp_file_proc_view_process_procedure (proc, all_filter);
               gtk_list_store_append (store, &iter);
               gtk_list_store_set (store, &iter,
                                   COLUMN_PROC,       proc,
@@ -182,18 +186,12 @@ gimp_file_proc_view_new (Gimp        *gimp,
 
   if (automatic)
     {
-      GtkFileFilter *filter = gtk_file_filter_new ();
-
       gtk_list_store_prepend (store, &iter);
-
-      gtk_file_filter_set_name (filter, _("All files"));
-      gtk_file_filter_add_pattern (filter, "*");
-
       gtk_list_store_set (store, &iter,
                           COLUMN_PROC,    NULL,
                           COLUMN_LABEL,   automatic,
                           COLUMN_HELP_ID, automatic_help_id,
-                          COLUMN_FILTER,  filter,
+                          COLUMN_FILTER,  all_filter,
                           -1);
     }
 
@@ -353,13 +351,16 @@ gimp_file_proc_view_selection_changed (GtkTreeSelection *selection,
 /**
  * gimp_file_proc_view_process_procedure:
  * @file_proc:
+ * @all:
  *
- * Creates a #GtkFileFilter of @file_proc.
+ * Creates a #GtkFileFilter of @file_proc and adds the extensions to
+ * the @all filter.
  * The returned #GtkFileFilter has a normal ref and must be unreffed
  * when used.
  **/
 static GtkFileFilter *
-gimp_file_proc_view_process_procedure (GimpPlugInProcedure *file_proc)
+gimp_file_proc_view_process_procedure (GimpPlugInProcedure *file_proc,
+                                       GtkFileFilter       *all)
 {
   GtkFileFilter *filter;
   GString       *str;
@@ -382,6 +383,7 @@ gimp_file_proc_view_process_procedure (GimpPlugInProcedure *file_proc)
       const gchar *mime_type = list->data;
 
       gtk_file_filter_add_mime_type (filter, mime_type);
+      gtk_file_filter_add_mime_type (all, mime_type);
     }
 
   for (list = file_proc->extensions_list, i = 0;
@@ -393,6 +395,7 @@ gimp_file_proc_view_process_procedure (GimpPlugInProcedure *file_proc)
 
       pattern = gimp_file_proc_view_pattern_from_extension (extension);
       gtk_file_filter_add_pattern (filter, pattern);
+      gtk_file_filter_add_pattern (all, pattern);
       g_free (pattern);
 
       if (i == 0)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]