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.
This commit is contained in:
Ell 2020-06-02 22:59:47 +03:00
parent 323355a708
commit 438babea6b
1 changed files with 86 additions and 3 deletions

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