app: use GimpSpinScales in GimpHueSaturationTool

This commit is contained in:
Michael Natterer 2013-05-29 00:04:35 +02:00
parent 3f193cd503
commit 8ba777f5b1
2 changed files with 27 additions and 169 deletions

View File

@ -35,6 +35,8 @@
#include "core/gimpimage.h"
#include "widgets/gimphelp-ids.h"
#include "widgets/gimppropwidgets.h"
#include "widgets/gimpspinscale.h"
#include "display/gimpdisplay.h"
@ -44,9 +46,8 @@
#include "gimp-intl.h"
#define SLIDER_WIDTH 200
#define DA_WIDTH 40
#define DA_HEIGHT 20
#define DA_WIDTH 40
#define DA_HEIGHT 20
/* local function prototypes */
@ -71,14 +72,6 @@ static void hue_saturation_range_callback (GtkWidget
GimpHueSaturationTool *hs_tool);
static void hue_saturation_range_reset_callback (GtkWidget *widget,
GimpHueSaturationTool *hs_tool);
static void hue_saturation_hue_changed (GtkAdjustment *adjustment,
GimpHueSaturationTool *hs_tool);
static void hue_saturation_lightness_changed (GtkAdjustment *adjustment,
GimpHueSaturationTool *hs_tool);
static void hue_saturation_saturation_changed (GtkAdjustment *adjustment,
GimpHueSaturationTool *hs_tool);
static void hue_saturation_overlap_changed (GtkAdjustment *adjustment,
GimpHueSaturationTool *hs_tool);
G_DEFINE_TYPE (GimpHueSaturationTool, gimp_hue_saturation_tool,
@ -179,15 +172,13 @@ gimp_hue_saturation_tool_dialog (GimpImageMapTool *image_map_tool)
GimpHueSaturationTool *hs_tool = GIMP_HUE_SATURATION_TOOL (image_map_tool);
GimpHueSaturationConfig *config = hs_tool->config;
GtkWidget *main_vbox;
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *abox;
GtkWidget *table;
GtkWidget *scale;
GtkWidget *button;
GtkWidget *frame;
GtkWidget *hbox;
GtkObject *data;
GtkSizeGroup *label_group;
GtkSizeGroup *spinner_group;
GSList *group = NULL;
gint i;
@ -292,32 +283,12 @@ gimp_hue_saturation_tool_dialog (GimpImageMapTool *image_map_tool)
gtk_widget_show (table);
label_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
spinner_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
/* Create the 'Overlap' option slider */
table = gtk_table_new (3, 1, 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);
data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
_("_Overlap:"), SLIDER_WIDTH, -1,
config->overlap * 100.0,
0.0, 100.0, 1.0, 15.0, 0,
TRUE, 0.0, 0.0,
NULL, NULL);
hs_tool->overlap_data = GTK_ADJUSTMENT (data);
gtk_size_group_add_widget (label_group, GIMP_SCALE_ENTRY_LABEL (data));
gtk_size_group_add_widget (spinner_group, GIMP_SCALE_ENTRY_SPINBUTTON (data));
g_object_unref (label_group);
g_object_unref (spinner_group);
g_signal_connect (data, "value-changed",
G_CALLBACK (hue_saturation_overlap_changed),
hs_tool);
scale = gimp_prop_spin_scale_new (image_map_tool->config, "overlap",
_("_Overlap"), 0.01, 0.1, 0);
gimp_spin_scale_set_factor (GIMP_SPIN_SCALE (scale), 100.0);
gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
gtk_widget_show (scale);
frame = gimp_frame_new (_("Adjust Selected Color"));
gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
@ -328,59 +299,26 @@ gimp_hue_saturation_tool_dialog (GimpImageMapTool *image_map_tool)
gtk_container_add (GTK_CONTAINER (frame), vbox);
gtk_widget_show (vbox);
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);
/* Create the hue scale widget */
data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
_("_Hue:"), SLIDER_WIDTH, -1,
config->hue[config->range] * 180.0,
-180.0, 180.0, 1.0, 15.0, 0,
TRUE, 0.0, 0.0,
NULL, NULL);
hs_tool->hue_data = GTK_ADJUSTMENT (data);
gtk_size_group_add_widget (label_group, GIMP_SCALE_ENTRY_LABEL (data));
gtk_size_group_add_widget (spinner_group, GIMP_SCALE_ENTRY_SPINBUTTON (data));
g_signal_connect (data, "value-changed",
G_CALLBACK (hue_saturation_hue_changed),
hs_tool);
scale = gimp_prop_spin_scale_new (image_map_tool->config, "hue",
_("_Hue"), 1.0 / 180.0, 15.0 / 180.0, 0);
gimp_spin_scale_set_factor (GIMP_SPIN_SCALE (scale), 180.0);
gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
gtk_widget_show (scale);
/* Create the lightness scale widget */
data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
_("_Lightness:"), SLIDER_WIDTH, -1,
config->lightness[config->range] * 100.0,
-100.0, 100.0, 1.0, 10.0, 0,
TRUE, 0.0, 0.0,
NULL, NULL);
hs_tool->lightness_data = GTK_ADJUSTMENT (data);
gtk_size_group_add_widget (label_group, GIMP_SCALE_ENTRY_LABEL (data));
gtk_size_group_add_widget (spinner_group, GIMP_SCALE_ENTRY_SPINBUTTON (data));
g_signal_connect (data, "value-changed",
G_CALLBACK (hue_saturation_lightness_changed),
hs_tool);
scale = gimp_prop_spin_scale_new (image_map_tool->config, "lightness",
_("_Lightness"), 0.01, 0.1, 0);
gimp_spin_scale_set_factor (GIMP_SPIN_SCALE (scale), 180.0);
gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
gtk_widget_show (scale);
/* Create the saturation scale widget */
data = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
_("_Saturation:"), SLIDER_WIDTH, -1,
config->saturation[config->range] * 100.0,
-100.0, 100.0, 1.0, 10.0, 0,
TRUE, 0.0, 0.0,
NULL, NULL);
hs_tool->saturation_data = GTK_ADJUSTMENT (data);
gtk_size_group_add_widget (label_group, GIMP_SCALE_ENTRY_LABEL (data));
gtk_size_group_add_widget (spinner_group, GIMP_SCALE_ENTRY_SPINBUTTON (data));
g_signal_connect (hs_tool->saturation_data, "value-changed",
G_CALLBACK (hue_saturation_saturation_changed),
hs_tool);
scale = gimp_prop_spin_scale_new (image_map_tool->config, "saturation",
_("_Saturation"), 0.01, 0.1, 0);
gimp_spin_scale_set_factor (GIMP_SPIN_SCALE (scale), 180.0);
gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
gtk_widget_show (scale);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
@ -433,7 +371,7 @@ hue_saturation_config_notify (GObject *object,
{
GimpHueSaturationConfig *config = GIMP_HUE_SATURATION_CONFIG (object);
if (! hs_tool->hue_data)
if (! hs_tool->range_radio)
return;
if (! strcmp (pspec->name, "range"))
@ -441,26 +379,6 @@ hue_saturation_config_notify (GObject *object,
gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (hs_tool->range_radio),
config->range);
}
else if (! strcmp (pspec->name, "hue"))
{
gtk_adjustment_set_value (hs_tool->hue_data,
config->hue[config->range] * 180.0);
}
else if (! strcmp (pspec->name, "lightness"))
{
gtk_adjustment_set_value (hs_tool->lightness_data,
config->lightness[config->range] * 100.0);
}
else if (! strcmp (pspec->name, "saturation"))
{
gtk_adjustment_set_value (hs_tool->saturation_data,
config->saturation[config->range] * 100.0);
}
else if (! strcmp (pspec->name, "overlap"))
{
gtk_adjustment_set_value (hs_tool->overlap_data,
config->overlap * 100.0);
}
hue_saturation_update_color_areas (hs_tool);
}
@ -513,59 +431,3 @@ hue_saturation_range_reset_callback (GtkWidget *widget,
{
gimp_hue_saturation_config_reset_range (hs_tool->config);
}
static void
hue_saturation_hue_changed (GtkAdjustment *adjustment,
GimpHueSaturationTool *hs_tool)
{
gdouble value = gtk_adjustment_get_value (adjustment) / 180.0;
if (hs_tool->config->hue[hs_tool->config->range] != value)
{
g_object_set (hs_tool->config,
"hue", value,
NULL);
}
}
static void
hue_saturation_lightness_changed (GtkAdjustment *adjustment,
GimpHueSaturationTool *hs_tool)
{
gdouble value = gtk_adjustment_get_value (adjustment) / 100.0;
if (hs_tool->config->lightness[hs_tool->config->range] != value)
{
g_object_set (hs_tool->config,
"lightness", value,
NULL);
}
}
static void
hue_saturation_saturation_changed (GtkAdjustment *adjustment,
GimpHueSaturationTool *hs_tool)
{
gdouble value = gtk_adjustment_get_value (adjustment) / 100.0;
if (hs_tool->config->saturation[hs_tool->config->range] != value)
{
g_object_set (hs_tool->config,
"saturation", value,
NULL);
}
}
static void
hue_saturation_overlap_changed (GtkAdjustment *adjustment,
GimpHueSaturationTool *hs_tool)
{
gdouble value = gtk_adjustment_get_value (adjustment) / 100.0;
if (hs_tool->config->overlap != value)
{
g_object_set (hs_tool->config,
"overlap", value,
NULL);
}
}

View File

@ -42,10 +42,6 @@ struct _GimpHueSaturationTool
/* dialog */
GtkWidget *range_radio;
GtkWidget *hue_range_color_area[6];
GtkAdjustment *overlap_data;
GtkAdjustment *hue_data;
GtkAdjustment *lightness_data;
GtkAdjustment *saturation_data;
};
struct _GimpHueSaturationToolClass