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 438babea6b)
This commit is contained in:
Ell
2020-06-02 22:59:47 +03:00
parent 8da94a5751
commit 0a82815aeb

View File

@ -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)
{