[gimp] app: use gimp_prop_color_button_new() in GimpColorizeTool
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: use gimp_prop_color_button_new() in GimpColorizeTool
- Date: Tue, 28 May 2013 22:47:32 +0000 (UTC)
commit 963275e846b906d9ff4a218066c72eb6777d2b7f
Author: Michael Natterer <mitch gimp org>
Date: Wed May 29 00:45:24 2013 +0200
app: use gimp_prop_color_button_new() in GimpColorizeTool
which removes the remaining old callbacks. Remove the set/get_color()
API from GimpColorizeConfig and instead add an unserialized "color"
property that stores its value in the other properties.
app/operations/gimpcolorizeconfig.c | 98 +++++++++++++++++++----------------
app/operations/gimpcolorizeconfig.h | 7 +--
app/tools/gimpcolorizetool.c | 72 ++++----------------------
app/tools/gimpcolorizetool.h | 7 +--
4 files changed, 67 insertions(+), 117 deletions(-)
---
diff --git a/app/operations/gimpcolorizeconfig.c b/app/operations/gimpcolorizeconfig.c
index 0e9241e..02975d6 100644
--- a/app/operations/gimpcolorizeconfig.c
+++ b/app/operations/gimpcolorizeconfig.c
@@ -37,7 +37,8 @@ enum
PROP_0,
PROP_HUE,
PROP_SATURATION,
- PROP_LIGHTNESS
+ PROP_LIGHTNESS,
+ PROP_COLOR
};
@@ -63,6 +64,8 @@ gimp_colorize_config_class_init (GimpColorizeConfigClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GimpViewableClass *viewable_class = GIMP_VIEWABLE_CLASS (klass);
+ GimpHSL hsl;
+ GimpRGB rgb;
object_class->set_property = gimp_colorize_config_set_property;
object_class->get_property = gimp_colorize_config_get_property;
@@ -83,6 +86,17 @@ gimp_colorize_config_class_init (GimpColorizeConfigClass *klass)
"lightness",
"Lightness",
-1.0, 1.0, 0.0, 0);
+
+ gimp_hsl_set (&hsl, 0.5, 0.5, 0.5);
+ gimp_hsl_to_rgb (&hsl, &rgb);
+ gimp_rgb_set_alpha (&rgb, 1.0);
+
+ g_object_class_install_property (object_class, PROP_COLOR,
+ gimp_param_spec_rgb ("color",
+ "Color",
+ "The color",
+ FALSE, &rgb,
+ G_PARAM_READWRITE));
}
static void
@@ -112,6 +126,21 @@ gimp_colorize_config_get_property (GObject *object,
g_value_set_double (value, self->lightness);
break;
+ case PROP_COLOR:
+ {
+ GimpHSL hsl;
+ GimpRGB rgb;
+
+ gimp_hsl_set (&hsl,
+ self->hue,
+ self->saturation,
+ (self->lightness + 1.0) / 2.0);
+ gimp_hsl_to_rgb (&hsl, &rgb);
+ gimp_rgb_set_alpha (&rgb, 1.0);
+ gimp_value_set_rgb (value, &rgb);
+ }
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -130,62 +159,43 @@ gimp_colorize_config_set_property (GObject *object,
{
case PROP_HUE:
self->hue = g_value_get_double (value);
+ g_object_notify (object, "color");
break;
case PROP_SATURATION:
self->saturation = g_value_get_double (value);
+ g_object_notify (object, "color");
break;
case PROP_LIGHTNESS:
self->lightness = g_value_get_double (value);
+ g_object_notify (object, "color");
break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
+ case PROP_COLOR:
+ {
+ GimpRGB rgb;
+ GimpHSL hsl;
-/* public functions */
+ gimp_value_get_rgb (value, &rgb);
+ gimp_rgb_to_hsl (&rgb, &hsl);
-void
-gimp_colorize_config_get_color (GimpColorizeConfig *config,
- GimpRGB *color)
-{
- GimpHSL hsl;
+ if (hsl.h == -1)
+ hsl.h = self->hue;
- g_return_if_fail (GIMP_IS_COLORIZE_CONFIG (config));
- g_return_if_fail (color != NULL);
+ if (hsl.l == 0.0 || hsl.l == 1.0)
+ hsl.s = self->saturation;
- gimp_hsl_set (&hsl,
- config->hue,
- config->saturation,
- (config->lightness + 1.0) / 2.0);
- gimp_hsl_to_rgb (&hsl, color);
- gimp_rgb_set_alpha (color, 1.0);
-}
-
-void
-gimp_colorize_config_set_color (GimpColorizeConfig *config,
- const GimpRGB *color)
-{
- GimpHSL hsl;
-
- g_return_if_fail (GIMP_IS_COLORIZE_CONFIG (config));
- g_return_if_fail (color != NULL);
-
- gimp_rgb_to_hsl (color, &hsl);
-
- if (hsl.h == -1)
- hsl.h = config->hue;
-
- if (hsl.l == 0.0 || hsl.l == 1.0)
- hsl.s = config->saturation;
+ g_object_set (self,
+ "hue", hsl.h,
+ "saturation", hsl.s,
+ "lightness", hsl.l * 2.0 - 1.0,
+ NULL);
+ }
+ break;
- g_object_set (config,
- "hue", hsl.h,
- "saturation", hsl.s,
- "lightness", hsl.l * 2.0 - 1.0,
- NULL);
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
}
diff --git a/app/operations/gimpcolorizeconfig.h b/app/operations/gimpcolorizeconfig.h
index 2fbaf15..17e159b 100644
--- a/app/operations/gimpcolorizeconfig.h
+++ b/app/operations/gimpcolorizeconfig.h
@@ -50,12 +50,7 @@ struct _GimpColorizeConfigClass
};
-GType gimp_colorize_config_get_type (void) G_GNUC_CONST;
-
-void gimp_colorize_config_get_color (GimpColorizeConfig *config,
- GimpRGB *color);
-void gimp_colorize_config_set_color (GimpColorizeConfig *config,
- const GimpRGB *color);
+GType gimp_colorize_config_get_type (void) G_GNUC_CONST;
#endif /* __GIMP_COLORIZE_CONFIG_H__ */
diff --git a/app/tools/gimpcolorizetool.c b/app/tools/gimpcolorizetool.c
index 45cef66..7ff64ad 100644
--- a/app/tools/gimpcolorizetool.c
+++ b/app/tools/gimpcolorizetool.c
@@ -61,13 +61,6 @@ static void gimp_colorize_tool_color_picked (GimpImageMapTool *im_tool,
const Babl *sample_format,
const GimpRGB *color);
-static void gimp_colorize_tool_config_notify (GObject *object,
- GParamSpec *pspec,
- GimpColorizeTool *col_tool);
-
-static void colorize_color_changed (GtkWidget *button,
- GimpColorizeTool *col_tool);
-
G_DEFINE_TYPE (GimpColorizeTool, gimp_colorize_tool, GIMP_TYPE_IMAGE_MAP_TOOL)
@@ -140,19 +133,11 @@ gimp_colorize_tool_get_operation (GimpImageMapTool *im_tool,
GObject **config,
gchar **undo_desc)
{
- GimpColorizeTool *col_tool = GIMP_COLORIZE_TOOL (im_tool);
-
- col_tool->config = g_object_new (GIMP_TYPE_COLORIZE_CONFIG, NULL);
-
- g_signal_connect_object (col_tool->config, "notify",
- G_CALLBACK (gimp_colorize_tool_config_notify),
- G_OBJECT (col_tool), 0);
-
- *config = G_OBJECT (col_tool->config);
+ *config = g_object_new (GIMP_TYPE_COLORIZE_CONFIG, NULL);
return gegl_node_new_child (NULL,
"operation", "gimp:colorize",
- "config", col_tool->config,
+ "config", *config,
NULL);
}
@@ -171,7 +156,6 @@ gimp_colorize_tool_dialog (GimpImageMapTool *image_map_tool)
GtkWidget *scale;
GtkWidget *hbox;
GtkWidget *button;
- GimpRGB color;
main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool);
@@ -209,22 +193,15 @@ gimp_colorize_tool_dialog (GimpImageMapTool *image_map_tool)
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
- gimp_colorize_config_get_color (col_tool->config, &color);
-
- col_tool->color_button = gimp_color_panel_new (_("Colorize Color"),
- &color,
- GIMP_COLOR_AREA_FLAT,
- 128, 24);
- gimp_color_button_set_update (GIMP_COLOR_BUTTON (col_tool->color_button),
- TRUE);
- gimp_color_panel_set_context (GIMP_COLOR_PANEL (col_tool->color_button),
+ button = gimp_prop_color_button_new (image_map_tool->config, "color",
+ _("Colorize Color"),
+ 128, 24,
+ GIMP_COLOR_AREA_FLAT);
+ gimp_color_button_set_update (GIMP_COLOR_BUTTON (button), TRUE);
+ gimp_color_panel_set_context (GIMP_COLOR_PANEL (button),
GIMP_CONTEXT (GIMP_TOOL_GET_OPTIONS (col_tool)));
- gtk_box_pack_start (GTK_BOX (hbox), col_tool->color_button, TRUE, TRUE, 0);
- gtk_widget_show (col_tool->color_button);
-
- g_signal_connect (col_tool->color_button, "color-changed",
- G_CALLBACK (colorize_color_changed),
- col_tool);
+ gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
+ gtk_widget_show (button);
button = gimp_image_map_tool_add_color_picker (image_map_tool,
"colorize",
@@ -240,32 +217,5 @@ gimp_colorize_tool_color_picked (GimpImageMapTool *im_tool,
const Babl *sample_format,
const GimpRGB *color)
{
- GimpColorizeTool *col_tool = GIMP_COLORIZE_TOOL (im_tool);
-
- gimp_colorize_config_set_color (col_tool->config, color);
-}
-
-static void
-gimp_colorize_tool_config_notify (GObject *object,
- GParamSpec *pspec,
- GimpColorizeTool *col_tool)
-{
- GimpRGB color;
-
- if (! col_tool->color_button)
- return;
-
- gimp_colorize_config_get_color (col_tool->config, &color);
- gimp_color_button_set_color (GIMP_COLOR_BUTTON (col_tool->color_button),
- &color);
-}
-
-static void
-colorize_color_changed (GtkWidget *button,
- GimpColorizeTool *col_tool)
-{
- GimpRGB color;
-
- gimp_color_button_get_color (GIMP_COLOR_BUTTON (button), &color);
- gimp_colorize_config_set_color (col_tool->config, &color);
+ g_object_set (im_tool->config, "color", color, NULL);
}
diff --git a/app/tools/gimpcolorizetool.h b/app/tools/gimpcolorizetool.h
index 8d3c4a7..16c6080 100644
--- a/app/tools/gimpcolorizetool.h
+++ b/app/tools/gimpcolorizetool.h
@@ -35,12 +35,7 @@ typedef struct _GimpColorizeToolClass GimpColorizeToolClass;
struct _GimpColorizeTool
{
- GimpImageMapTool parent_instance;
-
- GimpColorizeConfig *config;
-
- /* dialog */
- GtkWidget *color_button;
+ GimpImageMapTool parent_instance;
};
struct _GimpColorizeToolClass
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]