[gimp] app: use gimp_prop_spin_scale_new() in GimpColorBalanceTool



commit 1822bd1502542473ea4ff7547be0d9db5f8a7d96
Author: Michael Natterer <mitch gimp org>
Date:   Tue May 28 23:18:53 2013 +0200

    app: use gimp_prop_spin_scale_new() in GimpColorBalanceTool

 app/tools/gimpcolorbalancetool.c |  176 +++++++-------------------------------
 app/tools/gimpcolorbalancetool.h |    5 -
 2 files changed, 33 insertions(+), 148 deletions(-)
---
diff --git a/app/tools/gimpcolorbalancetool.c b/app/tools/gimpcolorbalancetool.c
index e7744c0..238e30d 100644
--- a/app/tools/gimpcolorbalancetool.c
+++ b/app/tools/gimpcolorbalancetool.c
@@ -34,6 +34,7 @@
 #include "core/gimpimage.h"
 
 #include "widgets/gimphelp-ids.h"
+#include "widgets/gimppropwidgets.h"
 
 #include "display/gimpdisplay.h"
 
@@ -55,18 +56,8 @@ static GeglNode * gimp_color_balance_tool_get_operation (GimpImageMapTool *im_to
 static void       gimp_color_balance_tool_dialog        (GimpImageMapTool *im_tool);
 static void       gimp_color_balance_tool_reset         (GimpImageMapTool *im_tool);
 
-static void     color_balance_config_notify        (GObject              *object,
-                                                    GParamSpec           *pspec,
-                                                    GimpColorBalanceTool *cb_tool);
-
-static void     color_balance_range_reset_callback (GtkWidget            *widget,
-                                                    GimpColorBalanceTool *cb_tool);
-static void     color_balance_cr_changed           (GtkAdjustment        *adj,
-                                                    GimpColorBalanceTool *cb_tool);
-static void     color_balance_mg_changed           (GtkAdjustment        *adj,
-                                                    GimpColorBalanceTool *cb_tool);
-static void     color_balance_yb_changed           (GtkAdjustment        *adj,
-                                                    GimpColorBalanceTool *cb_tool);
+static void      color_balance_range_reset_callback (GtkWidget            *widget,
+                                                     GimpColorBalanceTool *cb_tool);
 
 
 G_DEFINE_TYPE (GimpColorBalanceTool, gimp_color_balance_tool,
@@ -144,10 +135,6 @@ gimp_color_balance_tool_get_operation (GimpImageMapTool  *im_tool,
 
   cb_tool->config = g_object_new (GIMP_TYPE_COLOR_BALANCE_CONFIG, NULL);
 
-  g_signal_connect_object (cb_tool->config, "notify",
-                           G_CALLBACK (color_balance_config_notify),
-                           G_OBJECT (cb_tool), 0);
-
   *config = G_OBJECT (cb_tool->config);
 
   return gegl_node_new_child (NULL,
@@ -161,17 +148,16 @@ gimp_color_balance_tool_get_operation (GimpImageMapTool  *im_tool,
 /*  Color Balance dialog  */
 /**************************/
 
-static GtkAdjustment *
-create_levels_scale (gdouble        value,
-                     const gchar   *left,
-                     const gchar   *right,
-                     GtkWidget     *table,
-                     gint           col)
+static void
+create_levels_scale (GObject     *config,
+                     const gchar *property_name,
+                     const gchar *left,
+                     const gchar *right,
+                     GtkWidget   *table,
+                     gint         col)
 {
-  GtkWidget     *label;
-  GtkWidget     *slider;
-  GtkWidget     *spinbutton;
-  GtkAdjustment *adj;
+  GtkWidget *label;
+  GtkWidget *scale;
 
   label = gtk_label_new (left);
   gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
@@ -179,40 +165,28 @@ create_levels_scale (gdouble        value,
                     GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
   gtk_widget_show (label);
 
-  spinbutton = gimp_spin_button_new ((GtkObject **) &adj,
-                                     value, -100.0, 100.0,
-                                     1.0, 10.0, 0.0, 1.0, 0);
-
-  slider = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, adj);
-  gtk_scale_set_draw_value (GTK_SCALE (slider), FALSE);
-  gtk_widget_set_size_request (slider, 100, -1);
-  gtk_table_attach_defaults (GTK_TABLE (table), slider, 1, 2, col, col + 1);
-  gtk_widget_show (slider);
+  scale = gimp_prop_spin_scale_new (config, property_name,
+                                    NULL, 0.01, 0.1, 2);
+  gtk_table_attach_defaults (GTK_TABLE (table), scale, 1, 2, col, col + 1);
+  gtk_widget_show (scale);
 
   label = gtk_label_new (right);
   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
   gtk_table_attach (GTK_TABLE (table), label, 2, 3, col, col + 1,
                     GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
   gtk_widget_show (label);
-
-  gtk_table_attach (GTK_TABLE (table), spinbutton, 3, 4, col, col + 1,
-                    GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
-  gtk_widget_show (spinbutton);
-
-  return adj;
 }
 
 static void
 gimp_color_balance_tool_dialog (GimpImageMapTool *image_map_tool)
 {
-  GimpColorBalanceTool   *cb_tool = GIMP_COLOR_BALANCE_TOOL (image_map_tool);
-  GimpColorBalanceConfig *config  = cb_tool->config;
-  GtkWidget              *main_vbox;
-  GtkWidget              *vbox;
-  GtkWidget              *hbox;
-  GtkWidget              *table;
-  GtkWidget              *button;
-  GtkWidget              *frame;
+  GimpColorBalanceTool *cb_tool = GIMP_COLOR_BALANCE_TOOL (image_map_tool);
+  GtkWidget            *main_vbox;
+  GtkWidget            *vbox;
+  GtkWidget            *hbox;
+  GtkWidget            *table;
+  GtkWidget            *button;
+  GtkWidget            *frame;
 
   main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool);
 
@@ -231,38 +205,23 @@ gimp_color_balance_tool_dialog (GimpImageMapTool *image_map_tool)
   gtk_widget_show (vbox);
 
   /*  The table containing sliders  */
-  table = gtk_table_new (3, 4, FALSE);
+  table = gtk_table_new (3, 3, FALSE);
   gtk_table_set_col_spacings (GTK_TABLE (table), 4);
   gtk_table_set_row_spacings (GTK_TABLE (table), 2);
   gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
   gtk_widget_show (table);
 
-  cb_tool->cyan_red_adj =
-    create_levels_scale (config->cyan_red[config->range] * 100.0,
-                         _("Cyan"), _("Red"),
-                         table, 0);
-
-  g_signal_connect (cb_tool->cyan_red_adj, "value-changed",
-                    G_CALLBACK (color_balance_cr_changed),
-                    cb_tool);
-
-  cb_tool->magenta_green_adj =
-    create_levels_scale (config->magenta_green[config->range] * 100.0,
-                         _("Magenta"), _("Green"),
-                         table, 1);
+  create_levels_scale (image_map_tool->config, "cyan-red",
+                       _("Cyan"), _("Red"),
+                       table, 0);
 
-  g_signal_connect (cb_tool->magenta_green_adj, "value-changed",
-                    G_CALLBACK (color_balance_mg_changed),
-                    cb_tool);
+  create_levels_scale (image_map_tool->config, "magenta-green",
+                       _("Magenta"), _("Green"),
+                       table, 1);
 
-  cb_tool->yellow_blue_adj =
-    create_levels_scale (config->yellow_blue[config->range] * 100.0,
-                         _("Yellow"), _("Blue"),
-                         table, 2);
-
-  g_signal_connect (cb_tool->yellow_blue_adj, "value-changed",
-                    G_CALLBACK (color_balance_yb_changed),
-                    cb_tool);
+  create_levels_scale (image_map_tool->config, "yellow-blue",
+                       _("Yellow"), _("Blue"),
+                       table, 2);
 
   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
@@ -310,77 +269,8 @@ gimp_color_balance_tool_reset (GimpImageMapTool *im_tool)
 }
 
 static void
-color_balance_config_notify (GObject              *object,
-                             GParamSpec           *pspec,
-                             GimpColorBalanceTool *cb_tool)
-{
-  GimpColorBalanceConfig *config = GIMP_COLOR_BALANCE_CONFIG (object);
-
-  if (! cb_tool->cyan_red_adj)
-    return;
-
-  if (! strcmp (pspec->name, "cyan-red"))
-    {
-      gtk_adjustment_set_value (cb_tool->cyan_red_adj,
-                                config->cyan_red[config->range] * 100.0);
-    }
-  else if (! strcmp (pspec->name, "magenta-green"))
-    {
-      gtk_adjustment_set_value (cb_tool->magenta_green_adj,
-                                config->magenta_green[config->range] * 100.0);
-    }
-  else if (! strcmp (pspec->name, "yellow-blue"))
-    {
-      gtk_adjustment_set_value (cb_tool->yellow_blue_adj,
-                                config->yellow_blue[config->range] * 100.0);
-    }
-}
-
-static void
 color_balance_range_reset_callback (GtkWidget            *widget,
                                     GimpColorBalanceTool *cb_tool)
 {
   gimp_color_balance_config_reset_range (cb_tool->config);
 }
-
-static void
-color_balance_cr_changed (GtkAdjustment        *adjustment,
-                          GimpColorBalanceTool *cb_tool)
-{
-  gdouble value = gtk_adjustment_get_value (adjustment) / 100.0;
-
-  if (cb_tool->config->cyan_red[cb_tool->config->range] != value)
-    {
-      g_object_set (cb_tool->config,
-                    "cyan-red", value,
-                    NULL);
-    }
-}
-
-static void
-color_balance_mg_changed (GtkAdjustment        *adjustment,
-                          GimpColorBalanceTool *cb_tool)
-{
-  gdouble value = gtk_adjustment_get_value (adjustment) / 100.0;
-
-  if (cb_tool->config->magenta_green[cb_tool->config->range] != value)
-    {
-      g_object_set (cb_tool->config,
-                    "magenta-green", value,
-                    NULL);
-    }
-}
-
-static void
-color_balance_yb_changed (GtkAdjustment        *adjustment,
-                          GimpColorBalanceTool *cb_tool)
-{
-  gdouble value = gtk_adjustment_get_value (adjustment) / 100.0;
-
-  if (cb_tool->config->yellow_blue[cb_tool->config->range] != value)
-    {
-      g_object_set (cb_tool->config,
-                    "yellow-blue", value,
-                    NULL);
-    }
-}
diff --git a/app/tools/gimpcolorbalancetool.h b/app/tools/gimpcolorbalancetool.h
index 7ad7d6e..3032b83 100644
--- a/app/tools/gimpcolorbalancetool.h
+++ b/app/tools/gimpcolorbalancetool.h
@@ -39,11 +39,6 @@ struct _GimpColorBalanceTool
   GimpImageMapTool        parent_instance;
 
   GimpColorBalanceConfig *config;
-
-  /*  dialog  */
-  GtkAdjustment          *cyan_red_adj;
-  GtkAdjustment          *magenta_green_adj;
-  GtkAdjustment          *yellow_blue_adj;
 };
 
 struct _GimpColorBalanceToolClass


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]