From 9f59657fef60e071e61a08b44c74e693956cbeba Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Mon, 19 Jun 2017 23:29:01 +0200 Subject: [PATCH] app: also manage all contrain and frompivot properties centrally using g_object_bind_property(). --- app/tools/gimpperspectivetool.c | 17 +++------------ app/tools/gimprotatetool.c | 23 ++++++-------------- app/tools/gimpscaletool.c | 27 +++++++---------------- app/tools/gimpsheartool.c | 22 ++++++------------- app/tools/gimptransformtool.c | 32 +++++++++++++++++++--------- app/tools/gimpunifiedtransformtool.c | 17 +++------------ 6 files changed, 48 insertions(+), 90 deletions(-) diff --git a/app/tools/gimpperspectivetool.c b/app/tools/gimpperspectivetool.c index 6cf7b6cd1e..5b7a55d135 100644 --- a/app/tools/gimpperspectivetool.c +++ b/app/tools/gimpperspectivetool.c @@ -185,10 +185,9 @@ gimp_perspective_tool_prepare (GimpTransformTool *tr_tool) static GimpToolWidget * gimp_perspective_tool_get_widget (GimpTransformTool *tr_tool) { - GimpTool *tool = GIMP_TOOL (tr_tool); - GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tr_tool); - GimpDisplayShell *shell = gimp_display_get_shell (tool->display); - GimpToolWidget *widget; + GimpTool *tool = GIMP_TOOL (tr_tool); + GimpDisplayShell *shell = gimp_display_get_shell (tool->display); + GimpToolWidget *widget; widget = gimp_tool_transform_grid_new (shell, &tr_tool->transform, @@ -202,16 +201,6 @@ gimp_perspective_tool_get_widget (GimpTransformTool *tr_tool) "outside-function", GIMP_TRANSFORM_FUNCTION_PERSPECTIVE, "use-perspective-handles", TRUE, "use-center-handle", TRUE, - "constrain-move", options->constrain_move, - "constrain-scale", options->constrain_scale, - "constrain-rotate", options->constrain_rotate, - "constrain-shear", options->constrain_shear, - "constrain-perspective", options->constrain_perspective, - "frompivot-scale", options->frompivot_scale, - "frompivot-shear", options->frompivot_shear, - "frompivot-perspective", options->frompivot_perspective, - "cornersnap", options->cornersnap, - "fixedpivot", options->fixedpivot, NULL); g_signal_connect (widget, "changed", diff --git a/app/tools/gimprotatetool.c b/app/tools/gimprotatetool.c index a17eab86dd..f60d794af9 100644 --- a/app/tools/gimprotatetool.c +++ b/app/tools/gimprotatetool.c @@ -296,10 +296,9 @@ gimp_rotate_tool_prepare (GimpTransformTool *tr_tool) static GimpToolWidget * gimp_rotate_tool_get_widget (GimpTransformTool *tr_tool) { - GimpTool *tool = GIMP_TOOL (tr_tool); - GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tr_tool); - GimpDisplayShell *shell = gimp_display_get_shell (tool->display); - GimpToolWidget *widget; + GimpTool *tool = GIMP_TOOL (tr_tool); + GimpDisplayShell *shell = gimp_display_get_shell (tool->display); + GimpToolWidget *widget; widget = gimp_tool_rotate_grid_new (shell, tr_tool->x1, @@ -311,19 +310,9 @@ gimp_rotate_tool_get_widget (GimpTransformTool *tr_tool) tr_tool->trans_info[ANGLE]); g_object_set (widget, - "inside-function", GIMP_TRANSFORM_FUNCTION_ROTATE, - "outside-function", GIMP_TRANSFORM_FUNCTION_ROTATE, - "use-pivot-handle", TRUE, - "constrain-move", options->constrain_move, - "constrain-scale", options->constrain_scale, - "constrain-rotate", options->constrain_rotate, - "constrain-shear", options->constrain_shear, - "constrain-perspective", options->constrain_perspective, - "frompivot-scale", options->frompivot_scale, - "frompivot-shear", options->frompivot_shear, - "frompivot-perspective", options->frompivot_perspective, - "cornersnap", options->cornersnap, - "fixedpivot", options->fixedpivot, + "inside-function", GIMP_TRANSFORM_FUNCTION_ROTATE, + "outside-function", GIMP_TRANSFORM_FUNCTION_ROTATE, + "use-pivot-handle", TRUE, NULL); g_signal_connect (widget, "changed", diff --git a/app/tools/gimpscaletool.c b/app/tools/gimpscaletool.c index e9228511ff..34ca37793f 100644 --- a/app/tools/gimpscaletool.c +++ b/app/tools/gimpscaletool.c @@ -193,10 +193,9 @@ gimp_scale_tool_prepare (GimpTransformTool *tr_tool) static GimpToolWidget * gimp_scale_tool_get_widget (GimpTransformTool *tr_tool) { - GimpTool *tool = GIMP_TOOL (tr_tool); - GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tr_tool); - GimpDisplayShell *shell = gimp_display_get_shell (tool->display); - GimpToolWidget *widget; + GimpTool *tool = GIMP_TOOL (tr_tool); + GimpDisplayShell *shell = gimp_display_get_shell (tool->display); + GimpToolWidget *widget; widget = gimp_tool_transform_grid_new (shell, &tr_tool->transform, @@ -206,21 +205,11 @@ gimp_scale_tool_get_widget (GimpTransformTool *tr_tool) tr_tool->y2); g_object_set (widget, - "inside-function", GIMP_TRANSFORM_FUNCTION_SCALE, - "outside-function", GIMP_TRANSFORM_FUNCTION_SCALE, - "use-corner-handles", TRUE, - "use-side-handles", TRUE, - "use-center-handle", TRUE, - "constrain-move", options->constrain_move, - "constrain-scale", options->constrain_scale, - "constrain-rotate", options->constrain_rotate, - "constrain-shear", options->constrain_shear, - "constrain-perspective", options->constrain_perspective, - "frompivot-scale", options->frompivot_scale, - "frompivot-shear", options->frompivot_shear, - "frompivot-perspective", options->frompivot_perspective, - "cornersnap", options->cornersnap, - "fixedpivot", options->fixedpivot, + "inside-function", GIMP_TRANSFORM_FUNCTION_SCALE, + "outside-function", GIMP_TRANSFORM_FUNCTION_SCALE, + "use-corner-handles", TRUE, + "use-side-handles", TRUE, + "use-center-handle", TRUE, NULL); g_signal_connect (widget, "changed", diff --git a/app/tools/gimpsheartool.c b/app/tools/gimpsheartool.c index 134aed4a7e..8eccaaadda 100644 --- a/app/tools/gimpsheartool.c +++ b/app/tools/gimpsheartool.c @@ -174,10 +174,9 @@ gimp_shear_tool_prepare (GimpTransformTool *tr_tool) static GimpToolWidget * gimp_shear_tool_get_widget (GimpTransformTool *tr_tool) { - GimpTool *tool = GIMP_TOOL (tr_tool); - GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tr_tool); - GimpDisplayShell *shell = gimp_display_get_shell (tool->display); - GimpToolWidget *widget; + GimpTool *tool = GIMP_TOOL (tr_tool); + GimpDisplayShell *shell = gimp_display_get_shell (tool->display); + GimpToolWidget *widget; widget = gimp_tool_shear_grid_new (shell, tr_tool->x1, @@ -189,18 +188,9 @@ gimp_shear_tool_get_widget (GimpTransformTool *tr_tool) tr_tool->trans_info[SHEAR_Y]); g_object_set (widget, - "inside-function", GIMP_TRANSFORM_FUNCTION_SHEAR, - "outside-function", GIMP_TRANSFORM_FUNCTION_SHEAR, - "constrain-move", options->constrain_move, - "constrain-scale", options->constrain_scale, - "constrain-rotate", options->constrain_rotate, - "constrain-shear", options->constrain_shear, - "constrain-perspective", options->constrain_perspective, - "frompivot-scale", options->frompivot_scale, - "frompivot-shear", TRUE, - "frompivot-perspective", options->frompivot_perspective, - "cornersnap", options->cornersnap, - "fixedpivot", options->fixedpivot, + "inside-function", GIMP_TRANSFORM_FUNCTION_SHEAR, + "outside-function", GIMP_TRANSFORM_FUNCTION_SHEAR, + "frompivot-shear", TRUE, NULL); g_signal_connect (widget, "changed", diff --git a/app/tools/gimptransformtool.c b/app/tools/gimptransformtool.c index 6d9523777c..72b3751d24 100644 --- a/app/tools/gimptransformtool.c +++ b/app/tools/gimptransformtool.c @@ -310,6 +310,22 @@ gimp_transform_tool_initialize (GimpTool *tool, /* Get the on-canvas gui */ if (GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->get_widget) { + static const gchar *properties[] = + { + "constrain-move", + "constrain-scale", + "constrain-rotate", + "constrain-shear", + "constrain-perspective", + "frompivot-scale", + "frompivot-shear", + "frompivot-perspective", + "cornersnap", + "fixedpivot" + }; + + gint i; + tr_tool->widget = GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->get_widget (tr_tool); @@ -322,6 +338,12 @@ gimp_transform_tool_initialize (GimpTool *tool, G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL); + for (i = 0; i < G_N_ELEMENTS (properties); i++) + g_object_bind_property (G_OBJECT (options), properties[i], + G_OBJECT (tr_tool->widget), properties[i], + G_BINDING_SYNC_CREATE | + G_BINDING_BIDIRECTIONAL); + g_signal_connect (tr_tool->widget, "changed", G_CALLBACK (gimp_transform_tool_widget_changed), tr_tool); @@ -772,16 +794,6 @@ gimp_transform_tool_options_notify (GimpTool *tool, ! strcmp (pspec->name, "fixedpivot") || ! strcmp (pspec->name, "cornersnap")) { - gboolean value; - - g_object_get (options, - pspec->name, &value, - NULL); - - g_object_set (tr_tool->widget, - pspec->name, value, - NULL); - gimp_transform_tool_dialog_update (tr_tool); } } diff --git a/app/tools/gimpunifiedtransformtool.c b/app/tools/gimpunifiedtransformtool.c index 6282b6b2bf..2d1a58db93 100644 --- a/app/tools/gimpunifiedtransformtool.c +++ b/app/tools/gimpunifiedtransformtool.c @@ -185,10 +185,9 @@ gimp_unified_transform_tool_prepare (GimpTransformTool *tr_tool) static GimpToolWidget * gimp_unified_transform_tool_get_widget (GimpTransformTool *tr_tool) { - GimpTool *tool = GIMP_TOOL (tr_tool); - GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tr_tool); - GimpDisplayShell *shell = gimp_display_get_shell (tool->display); - GimpToolWidget *widget; + GimpTool *tool = GIMP_TOOL (tr_tool); + GimpDisplayShell *shell = gimp_display_get_shell (tool->display); + GimpToolWidget *widget; widget = gimp_tool_transform_grid_new (shell, &tr_tool->transform, @@ -207,16 +206,6 @@ gimp_unified_transform_tool_get_widget (GimpTransformTool *tr_tool) "use-side-handles", TRUE, "use-shear-handles", TRUE, "use-pivot-handle", TRUE, - "constrain-move", options->constrain_move, - "constrain-scale", options->constrain_scale, - "constrain-rotate", options->constrain_rotate, - "constrain-shear", options->constrain_shear, - "constrain-perspective", options->constrain_perspective, - "frompivot-scale", options->frompivot_scale, - "frompivot-shear", options->frompivot_shear, - "frompivot-perspective", options->frompivot_perspective, - "cornersnap", options->cornersnap, - "fixedpivot", options->fixedpivot, NULL); g_signal_connect (widget, "changed",