[gimp/gimp-2-10] app: improve gegl:focus-blur prop-gui constructor
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] app: improve gegl:focus-blur prop-gui constructor
- Date: Tue, 2 Jun 2020 20:30:03 +0000 (UTC)
commit 0a82815aeb8a525ec246745a2707c298440628ef
Author: Ell <ell_se yahoo com>
Date: Tue Jun 2 22:59:47 2020 +0300
app: improve gegl:focus-blur prop-gui constructor
... by grouping the geometry options, which can be controlled
through the on-canvas UI, in an expandable frame, which is
collapsed by default. The shape option is not part of the group,
and is moved to the top.
(cherry picked from commit 438babea6bce9c2f3e9f4faec7b56dbd42597d03)
app/propgui/gimppropgui-focus-blur.c | 91 ++++++++++++++++++++++++++++++++++--
1 file changed, 87 insertions(+), 4 deletions(-)
---
diff --git a/app/propgui/gimppropgui-focus-blur.c b/app/propgui/gimppropgui-focus-blur.c
index fbe2eaa137..ecee097b23 100644
--- a/app/propgui/gimppropgui-focus-blur.c
+++ b/app/propgui/gimppropgui-focus-blur.c
@@ -37,6 +37,22 @@
#include "gimp-intl.h"
+static gint
+find_param (GParamSpec **param_specs,
+ guint n_param_specs,
+ const gchar *name)
+{
+ gint i;
+
+ for (i = 0; i < n_param_specs; i++)
+ {
+ if (! strcmp (param_specs[i]->name, name))
+ break;
+ }
+
+ return i;
+}
+
static void
focus_callback (GObject *config,
GeglRectangle *area,
@@ -119,19 +135,86 @@ _gimp_prop_gui_new_focus_blur (GObject *config,
gpointer creator)
{
GtkWidget *vbox;
+ gint first_geometry_param;
+ gint last_geometry_param;
g_return_val_if_fail (G_IS_OBJECT (config), NULL);
g_return_val_if_fail (param_specs != NULL, NULL);
g_return_val_if_fail (n_param_specs > 0, NULL);
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
- vbox = _gimp_prop_gui_new_generic (config,
- param_specs, n_param_specs,
+ first_geometry_param = find_param (param_specs, n_param_specs,
+ "shape") + 1;
+ last_geometry_param = find_param (param_specs, n_param_specs,
+ "high-quality");
+
+ if (last_geometry_param <= first_geometry_param)
+ {
+ vbox = _gimp_prop_gui_new_generic (config,
+ param_specs, n_param_specs,
+ area, context,
+ create_picker_func,
+ create_controller_func,
+ creator);
+ }
+ else
+ {
+ GtkWidget *widget;
+ GtkWidget *expander;
+ GtkWidget *frame;
+ const gchar *label;
+
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
+
+ widget = gimp_prop_widget_new (config,
+ "shape",
area, context,
create_picker_func,
create_controller_func,
- creator);
-
+ creator,
+ &label);
+ gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
+ gtk_widget_show (widget);
+
+ widget = _gimp_prop_gui_new_generic (config,
+ param_specs,
+ first_geometry_param - 1,
+ area, context,
+ create_picker_func,
+ create_controller_func,
+ creator);
+ gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
+ gtk_widget_show (widget);
+
+ widget = _gimp_prop_gui_new_generic (config,
+ param_specs + last_geometry_param,
+ n_param_specs - last_geometry_param,
+ area, context,
+ create_picker_func,
+ create_controller_func,
+ creator);
+ gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
+ gtk_widget_show (widget);
+
+ expander = gtk_expander_new (_("Geometry Options"));
+ gtk_box_pack_start (GTK_BOX (vbox), expander, FALSE, FALSE, 0);
+ gtk_widget_show (expander);
+
+ frame = gimp_frame_new (NULL);
+ gtk_container_add (GTK_CONTAINER (expander), frame);
+ gtk_widget_show (frame);
+
+ widget = _gimp_prop_gui_new_generic (config,
+ param_specs + first_geometry_param,
+ last_geometry_param -
+ first_geometry_param,
+ area, context,
+ create_picker_func,
+ create_controller_func,
+ creator);
+ gtk_container_add (GTK_CONTAINER (frame), widget);
+ gtk_widget_show (widget);
+ }
if (create_controller_func)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]