[gimp] app: in filter tools, allow toggling on-canvas controller visibility
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: in filter tools, allow toggling on-canvas controller visibility
- Date: Sun, 13 Jan 2019 13:18:02 +0000 (UTC)
commit 33c22ae2a395d0685513cdcfd366afcd26e9bfef
Author: Ell <ell_se yahoo com>
Date: Sun Jan 13 08:02:32 2019 -0500
app: in filter tools, allow toggling on-canvas controller visibility
In GimpFilterTool, when the filter uses an on-canvas controller,
provide a toggle in the tool's filter-options dialog allowing to
toggle the controller's visibility. This allows getting the
controller out of the way when unneeded.
app/tools/gimpfilteroptions.c | 16 ++++++++++++++++
app/tools/gimpfilteroptions.h | 1 +
app/tools/gimpfiltertool.c | 36 ++++++++++++++++++++++++++++++++----
app/tools/gimpfiltertool.h | 1 +
4 files changed, 50 insertions(+), 4 deletions(-)
---
diff --git a/app/tools/gimpfilteroptions.c b/app/tools/gimpfilteroptions.c
index cbaedd4f81..f9acd9e705 100644
--- a/app/tools/gimpfilteroptions.c
+++ b/app/tools/gimpfilteroptions.c
@@ -36,6 +36,7 @@ enum
PROP_PREVIEW_SPLIT,
PROP_PREVIEW_ALIGNMENT,
PROP_PREVIEW_POSITION,
+ PROP_CONTROLLER,
PROP_REGION,
PROP_COLOR_MANAGED,
PROP_GAMMA_HACK
@@ -96,6 +97,13 @@ gimp_filter_options_class_init (GimpFilterOptionsClass *klass)
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT));
+ GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_CONTROLLER,
+ "controller",
+ _("On-canvas con_trols"),
+ _("Show on-canvas filter controls"),
+ TRUE,
+ GIMP_PARAM_STATIC_STRINGS);
+
g_object_class_install_property (object_class, PROP_REGION,
g_param_spec_enum ("region",
NULL, NULL,
@@ -152,6 +160,10 @@ gimp_filter_options_set_property (GObject *object,
options->preview_position = g_value_get_double (value);
break;
+ case PROP_CONTROLLER:
+ options->controller = g_value_get_boolean (value);
+ break;
+
case PROP_REGION:
options->region = g_value_get_enum (value);
break;
@@ -196,6 +208,10 @@ gimp_filter_options_get_property (GObject *object,
g_value_set_double (value, options->preview_position);
break;
+ case PROP_CONTROLLER:
+ g_value_set_boolean (value, options->controller);
+ break;
+
case PROP_REGION:
g_value_set_enum (value, options->region);
break;
diff --git a/app/tools/gimpfilteroptions.h b/app/tools/gimpfilteroptions.h
index 468a08281d..3bf38cebbb 100644
--- a/app/tools/gimpfilteroptions.h
+++ b/app/tools/gimpfilteroptions.h
@@ -40,6 +40,7 @@ struct _GimpFilterOptions
gboolean preview_split;
GimpAlignmentType preview_alignment;
gdouble preview_position;
+ gboolean controller;
GimpFilterRegion region;
gboolean color_managed;
gboolean gamma_hack;
diff --git a/app/tools/gimpfiltertool.c b/app/tools/gimpfiltertool.c
index 6b87b97bf7..454bfe205f 100644
--- a/app/tools/gimpfiltertool.c
+++ b/app/tools/gimpfiltertool.c
@@ -245,8 +245,9 @@ gimp_filter_tool_finalize (GObject *object)
g_clear_object (&filter_tool->settings);
g_clear_pointer (&filter_tool->description, g_free);
g_clear_object (&filter_tool->gui);
- filter_tool->settings_box = NULL;
- filter_tool->region_combo = NULL;
+ filter_tool->settings_box = NULL;
+ filter_tool->controller_toggle = NULL;
+ filter_tool->region_combo = NULL;
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -374,6 +375,15 @@ gimp_filter_tool_initialize (GimpTool *tool,
toggle, "sensitive",
G_BINDING_SYNC_CREATE);
+ /* The show-controller toggle */
+ filter_tool->controller_toggle =
+ gimp_prop_check_button_new (G_OBJECT (tool_info->tool_options),
+ "controller", NULL);
+ gtk_box_pack_end (GTK_BOX (vbox), filter_tool->controller_toggle,
+ FALSE, FALSE, 0);
+ if (filter_tool->widget)
+ gtk_widget_show (filter_tool->controller_toggle);
+
/* The Color Options expander */
expander = gtk_expander_new (_("Advanced Color Options"));
gtk_expander_set_resize_toplevel (GTK_EXPANDER (expander), TRUE);
@@ -788,6 +798,12 @@ gimp_filter_tool_options_notify (GimpTool *tool,
if (filter_options->preview_split)
gimp_filter_tool_move_guide (filter_tool);
}
+ else if (! strcmp (pspec->name, "controller") &&
+ filter_tool->widget)
+ {
+ gimp_tool_widget_set_visible (filter_tool->widget,
+ filter_options->controller);
+ }
else if (! strcmp (pspec->name, "region") &&
filter_tool->filter)
{
@@ -978,8 +994,9 @@ gimp_filter_tool_halt (GimpFilterTool *filter_tool)
GTK_CONTAINER (gimp_filter_tool_dialog_get_vbox (filter_tool)));
g_clear_object (&filter_tool->gui);
- filter_tool->settings_box = NULL;
- filter_tool->region_combo = NULL;
+ filter_tool->settings_box = NULL;
+ filter_tool->controller_toggle = NULL;
+ filter_tool->region_combo = NULL;
}
if (filter_tool->filter)
@@ -1750,12 +1767,23 @@ gimp_filter_tool_set_widget (GimpFilterTool *filter_tool,
if (filter_tool->widget)
{
+ GimpFilterOptions *options = GIMP_FILTER_TOOL_GET_OPTIONS (filter_tool);
+
g_object_ref (filter_tool->widget);
+ gimp_tool_widget_set_visible (filter_tool->widget,
+ options->controller);
+
if (GIMP_TOOL (filter_tool)->display)
gimp_draw_tool_start (GIMP_DRAW_TOOL (filter_tool),
GIMP_TOOL (filter_tool)->display);
}
+
+ if (filter_tool->controller_toggle)
+ {
+ gtk_widget_set_visible (filter_tool->controller_toggle,
+ filter_tool->widget != NULL);
+ }
}
gboolean
diff --git a/app/tools/gimpfiltertool.h b/app/tools/gimpfiltertool.h
index eb56374717..a3eaa4fc8e 100644
--- a/app/tools/gimpfiltertool.h
+++ b/app/tools/gimpfiltertool.h
@@ -58,6 +58,7 @@ struct _GimpFilterTool
gboolean overlay;
GimpToolGui *gui;
GtkWidget *settings_box;
+ GtkWidget *controller_toggle;
GtkWidget *region_combo;
GtkWidget *active_picker;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]