[gimp] app: use a propgui for display filters that return a NULL config widget



commit 5a726a028ecbdc40cc35a2a88642dc766366772d
Author: Ell <ell_se yahoo com>
Date:   Thu Nov 2 13:57:02 2017 -0400

    app: use a propgui for display filters that return a NULL config widget
    
    When a display filter's configure() function returns NULL, use a
    propgui for the filter, instead of not showing a widget at all, to
    spare filters the need to manually construct a configuration gui.

 app/display/gimpdisplayshell-filter-dialog.c |    3 ++-
 app/widgets/gimpcolordisplayeditor.c         |   21 ++++++++++++++++++++-
 app/widgets/gimpcolordisplayeditor.h         |    4 +++-
 3 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-filter-dialog.c b/app/display/gimpdisplayshell-filter-dialog.c
index aedd279..307a160 100644
--- a/app/display/gimpdisplayshell-filter-dialog.c
+++ b/app/display/gimpdisplayshell-filter-dialog.c
@@ -118,7 +118,8 @@ gimp_display_shell_filter_dialog_new (GimpDisplayShell *shell)
       g_object_unref (stack);
     }
 
-  editor = gimp_color_display_editor_new (shell->filter_stack,
+  editor = gimp_color_display_editor_new (shell->display->gimp,
+                                          shell->filter_stack,
                                           gimp_display_shell_get_color_config (shell),
                                           GIMP_COLOR_MANAGED (shell));
   gtk_container_set_border_width (GTK_CONTAINER (editor), 12);
diff --git a/app/widgets/gimpcolordisplayeditor.c b/app/widgets/gimpcolordisplayeditor.c
index 8cb855c..87e3260 100644
--- a/app/widgets/gimpcolordisplayeditor.c
+++ b/app/widgets/gimpcolordisplayeditor.c
@@ -29,6 +29,12 @@
 
 #include "widgets-types.h"
 
+#include "propgui/propgui-types.h"
+
+#include "core/gimp.h"
+
+#include "propgui/gimppropgui.h"
+
 #include "gimpcolordisplayeditor.h"
 #include "gimpeditor.h"
 
@@ -355,7 +361,8 @@ gimp_color_display_editor_dispose (GObject *object)
 }
 
 GtkWidget *
-gimp_color_display_editor_new (GimpColorDisplayStack *stack,
+gimp_color_display_editor_new (Gimp                  *gimp,
+                               GimpColorDisplayStack *stack,
                                GimpColorConfig       *config,
                                GimpColorManaged      *managed)
 {
@@ -365,12 +372,14 @@ gimp_color_display_editor_new (GimpColorDisplayStack *stack,
   gint                    i;
   GList                  *list;
 
+  g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
   g_return_val_if_fail (GIMP_IS_COLOR_DISPLAY_STACK (stack), NULL);
   g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), NULL);
   g_return_val_if_fail (GIMP_IS_COLOR_MANAGED (managed), NULL);
 
   editor = g_object_new (GIMP_TYPE_COLOR_DISPLAY_EDITOR, NULL);
 
+  editor->gimp    = gimp;
   editor->stack   = g_object_ref (stack);
   editor->config  = g_object_ref (config);
   editor->managed = g_object_ref (managed);
@@ -573,6 +582,16 @@ gimp_color_display_editor_dest_changed (GtkTreeSelection       *sel,
 
       editor->config_widget = gimp_color_display_configure (display);
 
+      if (! editor->config_widget)
+        {
+          editor->config_widget =
+            gimp_prop_gui_new (G_OBJECT (display),
+                               G_TYPE_FROM_INSTANCE (display), 0,
+                               NULL,
+                               gimp_get_user_context (editor->gimp),
+                               NULL, NULL, NULL);
+        }
+
       gtk_frame_set_label (GTK_FRAME (editor->config_frame),
                            GIMP_COLOR_DISPLAY_GET_CLASS (display)->name);
     }
diff --git a/app/widgets/gimpcolordisplayeditor.h b/app/widgets/gimpcolordisplayeditor.h
index e81d8fe..63a9805 100644
--- a/app/widgets/gimpcolordisplayeditor.h
+++ b/app/widgets/gimpcolordisplayeditor.h
@@ -36,6 +36,7 @@ struct _GimpColorDisplayEditor
 {
   GtkBox                 parent_instance;
 
+  Gimp                  *gimp;
   GimpColorDisplayStack *stack;
   GimpColorConfig       *config;
   GimpColorManaged      *managed;
@@ -69,7 +70,8 @@ struct _GimpColorDisplayEditorClass
 
 GType       gimp_color_display_editor_get_type (void) G_GNUC_CONST;
 
-GtkWidget * gimp_color_display_editor_new      (GimpColorDisplayStack *stack,
+GtkWidget * gimp_color_display_editor_new      (Gimp                  *gimp,
+                                                GimpColorDisplayStack *stack,
                                                 GimpColorConfig       *config,
                                                 GimpColorManaged      *managed);
 


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