[gimp] libgimpwidgets: move all GimpSizeEntry members to private
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] libgimpwidgets: move all GimpSizeEntry members to private
- Date: Fri, 25 May 2018 17:49:48 +0000 (UTC)
commit d57ab7faf238c9d7aa9f5fc415a28598b2b462e1
Author: Michael Natterer <mitch gimp org>
Date: Fri May 25 04:08:59 2018 +0200
libgimpwidgets: move all GimpSizeEntry members to private
app/dialogs/print-size-dialog.c | 2 +-
app/widgets/gimptemplateeditor.c | 2 +-
libgimpwidgets/gimppropwidgets.c | 12 +-
libgimpwidgets/gimpsizeentry.c | 417 ++++++++++++++++++++++++--------------
libgimpwidgets/gimpsizeentry.h | 17 +-
libgimpwidgets/gimpwidgetsutils.c | 6 +-
6 files changed, 283 insertions(+), 173 deletions(-)
---
diff --git a/app/dialogs/print-size-dialog.c b/app/dialogs/print-size-dialog.c
index 84df29099b..ccdcb0f4f8 100644
--- a/app/dialogs/print-size-dialog.c
+++ b/app/dialogs/print-size-dialog.c
@@ -277,7 +277,7 @@ print_size_dialog_new (GimpImage *image,
private->chain = GIMP_CHAIN_BUTTON (chain);
- focus_chain = g_list_prepend (focus_chain, GIMP_SIZE_ENTRY (entry)->unitmenu);
+ focus_chain = g_list_prepend (focus_chain, gimp_size_entry_get_unit_combo (GIMP_SIZE_ENTRY (entry)));
focus_chain = g_list_prepend (focus_chain, chain);
focus_chain = g_list_prepend (focus_chain, height);
focus_chain = g_list_prepend (focus_chain, width);
diff --git a/app/widgets/gimptemplateeditor.c b/app/widgets/gimptemplateeditor.c
index ee0946f98f..fcf7d2a2f3 100644
--- a/app/widgets/gimptemplateeditor.c
+++ b/app/widgets/gimptemplateeditor.c
@@ -373,7 +373,7 @@ gimp_template_editor_constructed (GObject *object)
1.0, 1.0);
focus_chain = g_list_prepend (focus_chain,
- GIMP_SIZE_ENTRY (private->resolution_se)->unitmenu);
+ gimp_size_entry_get_unit_combo (GIMP_SIZE_ENTRY (private->resolution_se)));
focus_chain = g_list_prepend (focus_chain, private->chain_button);
focus_chain = g_list_prepend (focus_chain, yres);
focus_chain = g_list_prepend (focus_chain, xres);
diff --git a/libgimpwidgets/gimppropwidgets.c b/libgimpwidgets/gimppropwidgets.c
index 83bcae7935..ae0a11b370 100644
--- a/libgimpwidgets/gimppropwidgets.c
+++ b/libgimpwidgets/gimppropwidgets.c
@@ -2869,7 +2869,9 @@ gimp_prop_size_entry_new (GObject *config,
param_spec);
if (unit_param_spec)
- set_param_spec (NULL, GIMP_SIZE_ENTRY (entry)->unitmenu, unit_param_spec);
+ set_param_spec (NULL,
+ gimp_size_entry_get_unit_combo (GIMP_SIZE_ENTRY (entry)),
+ unit_param_spec);
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (entry), unit_value);
@@ -3175,7 +3177,8 @@ gimp_prop_coordinates_connect (GObject *config,
gboolean chain_checked;
g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (entry), FALSE);
- g_return_val_if_fail (GIMP_SIZE_ENTRY (entry)->number_of_fields == 2, FALSE);
+ g_return_val_if_fail (gimp_size_entry_get_n_fields (GIMP_SIZE_ENTRY (entry)) == 2,
+ FALSE);
g_return_val_if_fail (chainbutton == NULL ||
GIMP_IS_CHAIN_BUTTON (chainbutton), FALSE);
@@ -3219,11 +3222,12 @@ gimp_prop_coordinates_connect (GObject *config,
if (unit_param_spec)
set_param_spec (NULL,
- GIMP_SIZE_ENTRY (entry)->unitmenu, unit_param_spec);
+ gimp_size_entry_get_unit_combo (GIMP_SIZE_ENTRY (entry)),
+ unit_param_spec);
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (entry), unit_value);
- switch (GIMP_SIZE_ENTRY (entry)->update_policy)
+ switch (gimp_size_entry_get_update_policy (GIMP_SIZE_ENTRY (entry)))
{
case GIMP_SIZE_ENTRY_UPDATE_SIZE:
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (entry), 0,
diff --git a/libgimpwidgets/gimpsizeentry.c b/libgimpwidgets/gimpsizeentry.c
index 85695ee356..e964cb153c 100644
--- a/libgimpwidgets/gimpsizeentry.c
+++ b/libgimpwidgets/gimpsizeentry.c
@@ -103,6 +103,23 @@ struct _GimpSizeEntryField
};
+struct _GimpSizeEntryPrivate
+{
+ GSList *fields;
+ gint number_of_fields;
+
+ GtkWidget *unit_combo;
+ GimpUnit unit;
+ gboolean menu_show_pixels;
+ gboolean menu_show_percent;
+
+ gboolean show_refval;
+ GimpSizeEntryUpdatePolicy update_policy;
+};
+
+#define GET_PRIVATE(obj) (((GimpSizeEntry *) (obj))->priv)
+
+
static void gimp_size_entry_finalize (GObject *object);
static void gimp_size_entry_update_value (GimpSizeEntryField *gsef,
gdouble value);
@@ -170,35 +187,42 @@ gimp_size_entry_class_init (GimpSizeEntryClass *klass)
klass->value_changed = NULL;
klass->refval_changed = NULL;
klass->unit_changed = NULL;
+
+ g_type_class_add_private (klass, sizeof (GimpSizeEntryPrivate));
}
static void
gimp_size_entry_init (GimpSizeEntry *gse)
{
- gse->fields = NULL;
- gse->number_of_fields = 0;
- gse->unitmenu = NULL;
- gse->unit = GIMP_UNIT_PIXEL;
- gse->menu_show_pixels = TRUE;
- gse->menu_show_percent = TRUE;
- gse->show_refval = FALSE;
- gse->update_policy = GIMP_SIZE_ENTRY_UPDATE_NONE;
+ GimpSizeEntryPrivate *priv;
+
+ gse->priv = G_TYPE_INSTANCE_GET_PRIVATE (gse,
+ GIMP_TYPE_SIZE_ENTRY,
+ GimpSizeEntryPrivate);
+
+ priv = gse->priv;
+
+ priv->unit = GIMP_UNIT_PIXEL;
+ priv->menu_show_pixels = TRUE;
+ priv->menu_show_percent = TRUE;
+ priv->show_refval = FALSE;
+ priv->update_policy = GIMP_SIZE_ENTRY_UPDATE_NONE;
}
static void
gimp_size_entry_finalize (GObject *object)
{
- GimpSizeEntry *gse = GIMP_SIZE_ENTRY (object);
+ GimpSizeEntryPrivate *priv = GET_PRIVATE (object);
- if (gse->fields)
+ if (priv->fields)
{
GSList *list;
- for (list = gse->fields; list; list = list->next)
+ for (list = priv->fields; list; list = list->next)
g_slice_free (GimpSizeEntryField, list->data);
- g_slist_free (gse->fields);
- gse->fields = NULL;
+ g_slist_free (priv->fields);
+ priv->fields = NULL;
}
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -260,42 +284,45 @@ gimp_size_entry_new (gint number_of_fields,
gint spinbutton_width,
GimpSizeEntryUpdatePolicy update_policy)
{
- GimpSizeEntry *gse;
- GimpUnitStore *store;
- gint i;
+ GimpSizeEntry *gse;
+ GimpSizeEntryPrivate *priv;
+ GimpUnitStore *store;
+ gint i;
g_return_val_if_fail ((number_of_fields >= 0) && (number_of_fields <= 16),
NULL);
gse = g_object_new (GIMP_TYPE_SIZE_ENTRY, NULL);
- gse->number_of_fields = number_of_fields;
- gse->unit = unit;
- gse->show_refval = show_refval;
- gse->update_policy = update_policy;
+ priv = GET_PRIVATE (gse);
+
+ priv->number_of_fields = number_of_fields;
+ priv->unit = unit;
+ priv->show_refval = show_refval;
+ priv->update_policy = update_policy;
/* show the 'pixels' menu entry only if we are a 'size' sizeentry and
* don't have the reference value spinbutton
*/
if ((update_policy == GIMP_SIZE_ENTRY_UPDATE_RESOLUTION) ||
(show_refval == TRUE))
- gse->menu_show_pixels = FALSE;
+ priv->menu_show_pixels = FALSE;
else
- gse->menu_show_pixels = menu_show_pixels;
+ priv->menu_show_pixels = menu_show_pixels;
/* show the 'percent' menu entry only if we are a 'size' sizeentry
*/
if (update_policy == GIMP_SIZE_ENTRY_UPDATE_RESOLUTION)
- gse->menu_show_percent = FALSE;
+ priv->menu_show_percent = FALSE;
else
- gse->menu_show_percent = menu_show_percent;
+ priv->menu_show_percent = menu_show_percent;
for (i = 0; i < number_of_fields; i++)
{
GimpSizeEntryField *gsef = g_slice_new0 (GimpSizeEntryField);
gint digits;
- gse->fields = g_slist_append (gse->fields, gsef);
+ priv->fields = g_slist_append (priv->fields, gsef);
gsef->gse = gse;
gsef->resolution = 1.0; /* just to avoid division by zero */
@@ -340,14 +367,14 @@ gimp_size_entry_new (gint number_of_fields,
}
gtk_grid_attach (GTK_GRID (gse), gsef->value_spinbutton,
- i+1, gse->show_refval+1, 1, 1);
+ i+1, priv->show_refval+1, 1, 1);
g_signal_connect (gsef->value_adjustment, "value-changed",
G_CALLBACK (gimp_size_entry_value_callback),
gsef);
gtk_widget_show (gsef->value_spinbutton);
- if (gse->show_refval)
+ if (priv->show_refval)
{
gsef->refval_adjustment = gtk_adjustment_new (gsef->refval,
gsef->min_refval,
@@ -371,15 +398,15 @@ gimp_size_entry_new (gint number_of_fields,
gtk_widget_show (gsef->refval_spinbutton);
}
- if (gse->menu_show_pixels && (unit == GIMP_UNIT_PIXEL) &&
- ! gse->show_refval)
+ if (priv->menu_show_pixels && (unit == GIMP_UNIT_PIXEL) &&
+ ! priv->show_refval)
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (gsef->value_spinbutton),
gsef->refval_digits);
}
- store = gimp_unit_store_new (gse->number_of_fields);
- gimp_unit_store_set_has_pixels (store, gse->menu_show_pixels);
- gimp_unit_store_set_has_percent (store, gse->menu_show_percent);
+ store = gimp_unit_store_new (priv->number_of_fields);
+ gimp_unit_store_set_has_pixels (store, priv->menu_show_pixels);
+ gimp_unit_store_set_has_percent (store, priv->menu_show_percent);
if (unit_format)
{
@@ -402,17 +429,17 @@ gimp_size_entry_new (gint number_of_fields,
g_free (short_format);
}
- gse->unitmenu = gimp_unit_combo_box_new_with_model (store);
+ priv->unit_combo = gimp_unit_combo_box_new_with_model (store);
g_object_unref (store);
- gimp_unit_combo_box_set_active (GIMP_UNIT_COMBO_BOX (gse->unitmenu), unit);
+ gimp_unit_combo_box_set_active (GIMP_UNIT_COMBO_BOX (priv->unit_combo), unit);
- gtk_grid_attach (GTK_GRID (gse), gse->unitmenu,
- i+2, gse->show_refval+1, 1, 1);
- g_signal_connect (gse->unitmenu, "changed",
+ gtk_grid_attach (GTK_GRID (gse), priv->unit_combo,
+ i+2, priv->show_refval+1, 1, 1);
+ g_signal_connect (priv->unit_combo, "changed",
G_CALLBACK (gimp_size_entry_unit_callback),
gse);
- gtk_widget_show (gse->unitmenu);
+ gtk_widget_show (priv->unit_combo);
return GTK_WIDGET (gse);
}
@@ -436,21 +463,24 @@ gimp_size_entry_add_field (GimpSizeEntry *gse,
GtkSpinButton *value_spinbutton,
GtkSpinButton *refval_spinbutton)
{
- GimpSizeEntryField *gsef;
- gint digits;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
+ gint digits;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
g_return_if_fail (GTK_IS_SPIN_BUTTON (value_spinbutton));
- if (gse->show_refval)
+ priv = GET_PRIVATE (gse);
+
+ if (priv->show_refval)
{
g_return_if_fail (GTK_IS_SPIN_BUTTON (refval_spinbutton));
}
gsef = g_slice_new0 (GimpSizeEntryField);
- gse->fields = g_slist_prepend (gse->fields, gsef);
- gse->number_of_fields++;
+ priv->fields = g_slist_prepend (priv->fields, gsef);
+ priv->number_of_fields++;
gsef->gse = gse;
gsef->resolution = 1.0; /* just to avoid division by zero */
@@ -463,7 +493,7 @@ gimp_size_entry_add_field (GimpSizeEntry *gse,
gsef->min_refval = 0;
gsef->max_refval = SIZE_MAX_VALUE;
gsef->refval_digits =
- (gse->update_policy == GIMP_SIZE_ENTRY_UPDATE_SIZE) ? 0 : 3;
+ (priv->update_policy == GIMP_SIZE_ENTRY_UPDATE_SIZE) ? 0 : 3;
gsef->stop_recursion = 0;
gsef->value_adjustment = gtk_spin_button_get_adjustment (value_spinbutton);
@@ -475,7 +505,7 @@ gimp_size_entry_add_field (GimpSizeEntry *gse,
gimp_size_entry_attach_eevl (GTK_SPIN_BUTTON (gsef->value_spinbutton),
gsef);
- if (gse->show_refval)
+ if (priv->show_refval)
{
gsef->refval_adjustment = gtk_spin_button_get_adjustment (refval_spinbutton);
gsef->refval_spinbutton = GTK_WIDGET (refval_spinbutton);
@@ -484,21 +514,45 @@ gimp_size_entry_add_field (GimpSizeEntry *gse,
gsef);
}
- digits = ((gse->unit == GIMP_UNIT_PIXEL) ? gsef->refval_digits :
- (gse->unit == GIMP_UNIT_PERCENT) ? 2 :
- GIMP_SIZE_ENTRY_DIGITS (gse->unit));
+ digits = ((priv->unit == GIMP_UNIT_PIXEL) ? gsef->refval_digits :
+ (priv->unit == GIMP_UNIT_PERCENT) ? 2 :
+ GIMP_SIZE_ENTRY_DIGITS (priv->unit));
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (value_spinbutton), digits);
- if (gse->menu_show_pixels &&
- !gse->show_refval &&
- (gse->unit == GIMP_UNIT_PIXEL))
+ if (priv->menu_show_pixels &&
+ !priv->show_refval &&
+ (priv->unit == GIMP_UNIT_PIXEL))
{
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (gsef->value_spinbutton),
gsef->refval_digits);
}
}
+GimpSizeEntryUpdatePolicy
+gimp_size_entry_get_update_policy (GimpSizeEntry *gse)
+{
+ g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (gse), GIMP_SIZE_ENTRY_UPDATE_SIZE);
+
+ return GET_PRIVATE (gse)->update_policy;
+}
+
+gint
+gimp_size_entry_get_n_fields (GimpSizeEntry *gse)
+{
+ g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (gse), 0);
+
+ return GET_PRIVATE (gse)->number_of_fields;
+}
+
+GtkWidget *
+gimp_size_entry_get_unit_combo (GimpSizeEntry *gse)
+{
+ g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (gse), NULL);
+
+ return GET_PRIVATE (gse)->unit_combo;
+}
+
/**
* gimp_size_entry_attach_label:
* @gse: The sizeentry you want to add a label to.
@@ -584,15 +638,19 @@ gimp_size_entry_set_resolution (GimpSizeEntry *gse,
gdouble resolution,
gboolean keep_size)
{
- GimpSizeEntryField *gsef;
- gfloat val;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
+ gfloat val;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- g_return_if_fail ((field >= 0) && (field < gse->number_of_fields));
+
+ priv = GET_PRIVATE (gse);
+
+ g_return_if_fail ((field >= 0) && (field < priv->number_of_fields));
resolution = CLAMP (resolution, GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION);
- gsef = (GimpSizeEntryField*) g_slist_nth_data (gse->fields, field);
+ gsef = (GimpSizeEntryField*) g_slist_nth_data (priv->fields, field);
gsef->resolution = resolution;
val = gsef->value;
@@ -629,13 +687,17 @@ gimp_size_entry_set_size (GimpSizeEntry *gse,
gdouble lower,
gdouble upper)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- g_return_if_fail ((field >= 0) && (field < gse->number_of_fields));
+
+ priv = GET_PRIVATE (gse);
+
+ g_return_if_fail ((field >= 0) && (field < priv->number_of_fields));
g_return_if_fail (lower <= upper);
- gsef = (GimpSizeEntryField*) g_slist_nth_data (gse->fields, field);
+ gsef = (GimpSizeEntryField*) g_slist_nth_data (priv->fields, field);
gsef->lower = lower;
gsef->upper = upper;
@@ -668,13 +730,17 @@ gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse,
gdouble lower,
gdouble upper)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- g_return_if_fail ((field >= 0) && (field < gse->number_of_fields));
+
+ priv = GET_PRIVATE (gse);
+
+ g_return_if_fail ((field >= 0) && (field < priv->number_of_fields));
g_return_if_fail (lower <= upper);
- gsef = (GimpSizeEntryField*) g_slist_nth_data (gse->fields, field);
+ gsef = (GimpSizeEntryField*) g_slist_nth_data (priv->fields, field);
gsef->min_value = lower;
gsef->max_value = upper;
@@ -690,13 +756,13 @@ gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse,
}
gsef->stop_recursion++;
- switch (gsef->gse->update_policy)
+ switch (priv->update_policy)
{
case GIMP_SIZE_ENTRY_UPDATE_NONE:
break;
case GIMP_SIZE_ENTRY_UPDATE_SIZE:
- switch (gse->unit)
+ switch (priv->unit)
{
case GIMP_UNIT_PIXEL:
gimp_size_entry_set_refval_boundaries (gse, field,
@@ -716,10 +782,10 @@ gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse,
gimp_size_entry_set_refval_boundaries (gse, field,
gsef->min_value *
gsef->resolution /
- gimp_unit_get_factor (gse->unit),
+ gimp_unit_get_factor (priv->unit),
gsef->max_value *
gsef->resolution /
- gimp_unit_get_factor (gse->unit));
+ gimp_unit_get_factor (priv->unit));
break;
}
break;
@@ -727,9 +793,9 @@ gimp_size_entry_set_value_boundaries (GimpSizeEntry *gse,
case GIMP_SIZE_ENTRY_UPDATE_RESOLUTION:
gimp_size_entry_set_refval_boundaries (gse, field,
gsef->min_value *
- gimp_unit_get_factor (gse->unit),
+ gimp_unit_get_factor (priv->unit),
gsef->max_value *
- gimp_unit_get_factor (gse->unit));
+ gimp_unit_get_factor (priv->unit));
break;
default:
@@ -763,12 +829,17 @@ gdouble
gimp_size_entry_get_value (GimpSizeEntry *gse,
gint field)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (gse), 0);
- g_return_val_if_fail ((field >= 0) && (field < gse->number_of_fields), 0);
- gsef = (GimpSizeEntryField *) g_slist_nth_data (gse->fields, field);
+ priv = GET_PRIVATE (gse);
+
+ g_return_val_if_fail ((field >= 0) && (field < priv->number_of_fields), 0);
+
+ gsef = (GimpSizeEntryField *) g_slist_nth_data (priv->fields, field);
+
return gsef->value;
}
@@ -776,18 +847,20 @@ static void
gimp_size_entry_update_value (GimpSizeEntryField *gsef,
gdouble value)
{
+ GimpSizeEntryPrivate *priv = gsef->gse->priv;
+
if (gsef->stop_recursion > 1)
return;
gsef->value = value;
- switch (gsef->gse->update_policy)
+ switch (priv->update_policy)
{
case GIMP_SIZE_ENTRY_UPDATE_NONE:
break;
case GIMP_SIZE_ENTRY_UPDATE_SIZE:
- switch (gsef->gse->unit)
+ switch (priv->unit)
{
case GIMP_UNIT_PIXEL:
gsef->refval = value;
@@ -800,19 +873,19 @@ gimp_size_entry_update_value (GimpSizeEntryField *gsef,
default:
gsef->refval =
CLAMP (value * gsef->resolution /
- gimp_unit_get_factor (gsef->gse->unit),
+ gimp_unit_get_factor (priv->unit),
gsef->min_refval, gsef->max_refval);
break;
}
- if (gsef->gse->show_refval)
+ if (priv->show_refval)
gtk_adjustment_set_value (gsef->refval_adjustment, gsef->refval);
break;
case GIMP_SIZE_ENTRY_UPDATE_RESOLUTION:
gsef->refval =
- CLAMP (value * gimp_unit_get_factor (gsef->gse->unit),
+ CLAMP (value * gimp_unit_get_factor (priv->unit),
gsef->min_refval, gsef->max_refval);
- if (gsef->gse->show_refval)
+ if (priv->show_refval)
gtk_adjustment_set_value (gsef->refval_adjustment, gsef->refval);
break;
@@ -844,15 +917,18 @@ gimp_size_entry_set_value (GimpSizeEntry *gse,
gint field,
gdouble value)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- g_return_if_fail ((field >= 0) && (field < gse->number_of_fields));
- gsef = (GimpSizeEntryField *) g_slist_nth_data (gse->fields, field);
+ priv = GET_PRIVATE (gse);
- value = CLAMP (value, gsef->min_value, gsef->max_value);
+ g_return_if_fail ((field >= 0) && (field < priv->number_of_fields));
+
+ gsef = (GimpSizeEntryField *) g_slist_nth_data (priv->fields, field);
+ value = CLAMP (value, gsef->min_value, gsef->max_value);
gtk_adjustment_set_value (gsef->value_adjustment, value);
gimp_size_entry_update_value (gsef, value);
}
@@ -894,17 +970,21 @@ gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse,
gdouble lower,
gdouble upper)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- g_return_if_fail ((field >= 0) && (field < gse->number_of_fields));
+
+ priv = GET_PRIVATE (gse);
+
+ g_return_if_fail ((field >= 0) && (field < priv->number_of_fields));
g_return_if_fail (lower <= upper);
- gsef = (GimpSizeEntryField *) g_slist_nth_data (gse->fields, field);
+ gsef = (GimpSizeEntryField *) g_slist_nth_data (priv->fields, field);
gsef->min_refval = lower;
gsef->max_refval = upper;
- if (gse->show_refval)
+ if (priv->show_refval)
{
g_object_freeze_notify (G_OBJECT (gsef->refval_adjustment));
@@ -914,20 +994,20 @@ gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse,
if (gsef->stop_recursion) /* this is a hack (but useful ;-) */
{
- if (gse->show_refval)
+ if (priv->show_refval)
g_object_thaw_notify (G_OBJECT (gsef->refval_adjustment));
return;
}
gsef->stop_recursion++;
- switch (gsef->gse->update_policy)
+ switch (priv->update_policy)
{
case GIMP_SIZE_ENTRY_UPDATE_NONE:
break;
case GIMP_SIZE_ENTRY_UPDATE_SIZE:
- switch (gse->unit)
+ switch (priv->unit)
{
case GIMP_UNIT_PIXEL:
gimp_size_entry_set_value_boundaries (gse, field,
@@ -946,10 +1026,10 @@ gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse,
default:
gimp_size_entry_set_value_boundaries (gse, field,
gsef->min_refval *
- gimp_unit_get_factor (gse->unit) /
+ gimp_unit_get_factor (priv->unit) /
gsef->resolution,
gsef->max_refval *
- gimp_unit_get_factor (gse->unit) /
+ gimp_unit_get_factor (priv->unit) /
gsef->resolution);
break;
}
@@ -958,9 +1038,9 @@ gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse,
case GIMP_SIZE_ENTRY_UPDATE_RESOLUTION:
gimp_size_entry_set_value_boundaries (gse, field,
gsef->min_refval /
- gimp_unit_get_factor (gse->unit),
+ gimp_unit_get_factor (priv->unit),
gsef->max_refval /
- gimp_unit_get_factor (gse->unit));
+ gimp_unit_get_factor (priv->unit));
break;
default:
@@ -970,7 +1050,7 @@ gimp_size_entry_set_refval_boundaries (GimpSizeEntry *gse,
gimp_size_entry_set_refval (gse, field, gsef->refval);
- if (gse->show_refval)
+ if (priv->show_refval)
g_object_thaw_notify (G_OBJECT (gsef->refval_adjustment));
}
@@ -993,21 +1073,25 @@ gimp_size_entry_set_refval_digits (GimpSizeEntry *gse,
gint field,
gint digits)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- g_return_if_fail ((field >= 0) && (field < gse->number_of_fields));
+
+ priv = GET_PRIVATE (gse);
+
+ g_return_if_fail ((field >= 0) && (field < priv->number_of_fields));
g_return_if_fail ((digits >= 0) && (digits <= 6));
- gsef = (GimpSizeEntryField*) g_slist_nth_data (gse->fields, field);
+ gsef = (GimpSizeEntryField*) g_slist_nth_data (priv->fields, field);
gsef->refval_digits = digits;
- if (gse->update_policy == GIMP_SIZE_ENTRY_UPDATE_SIZE)
+ if (priv->update_policy == GIMP_SIZE_ENTRY_UPDATE_SIZE)
{
- if (gse->show_refval)
+ if (priv->show_refval)
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (gsef->refval_spinbutton),
gsef->refval_digits);
- else if (gse->unit == GIMP_UNIT_PIXEL)
+ else if (priv->unit == GIMP_UNIT_PIXEL)
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (gsef->value_spinbutton),
gsef->refval_digits);
}
@@ -1030,13 +1114,18 @@ gdouble
gimp_size_entry_get_refval (GimpSizeEntry *gse,
gint field)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
/* return 1.0 to avoid division by zero */
g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (gse), 1.0);
- g_return_val_if_fail ((field >= 0) && (field < gse->number_of_fields), 1.0);
- gsef = (GimpSizeEntryField*) g_slist_nth_data (gse->fields, field);
+ priv = GET_PRIVATE (gse);
+
+ g_return_val_if_fail ((field >= 0) && (field < priv->number_of_fields), 1.0);
+
+ gsef = (GimpSizeEntryField*) g_slist_nth_data (priv->fields, field);
+
return gsef->refval;
}
@@ -1044,18 +1133,20 @@ static void
gimp_size_entry_update_refval (GimpSizeEntryField *gsef,
gdouble refval)
{
+ GimpSizeEntryPrivate *priv = GET_PRIVATE (gsef->gse);
+
if (gsef->stop_recursion > 1)
return;
gsef->refval = refval;
- switch (gsef->gse->update_policy)
+ switch (priv->update_policy)
{
case GIMP_SIZE_ENTRY_UPDATE_NONE:
break;
case GIMP_SIZE_ENTRY_UPDATE_SIZE:
- switch (gsef->gse->unit)
+ switch (priv->unit)
{
case GIMP_UNIT_PIXEL:
gsef->value = refval;
@@ -1067,7 +1158,7 @@ gimp_size_entry_update_refval (GimpSizeEntryField *gsef,
break;
default:
gsef->value =
- CLAMP (refval * gimp_unit_get_factor (gsef->gse->unit) /
+ CLAMP (refval * gimp_unit_get_factor (priv->unit) /
gsef->resolution,
gsef->min_value, gsef->max_value);
break;
@@ -1077,7 +1168,7 @@ gimp_size_entry_update_refval (GimpSizeEntryField *gsef,
case GIMP_SIZE_ENTRY_UPDATE_RESOLUTION:
gsef->value =
- CLAMP (refval / gimp_unit_get_factor (gsef->gse->unit),
+ CLAMP (refval / gimp_unit_get_factor (priv->unit),
gsef->min_value, gsef->max_value);
gtk_adjustment_set_value (gsef->value_adjustment, gsef->value);
break;
@@ -1106,16 +1197,20 @@ gimp_size_entry_set_refval (GimpSizeEntry *gse,
gint field,
gdouble refval)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- g_return_if_fail ((field >= 0) && (field < gse->number_of_fields));
- gsef = (GimpSizeEntryField *) g_slist_nth_data (gse->fields, field);
+ priv = GET_PRIVATE (gse);
+
+ g_return_if_fail ((field >= 0) && (field < priv->number_of_fields));
+
+ gsef = (GimpSizeEntryField *) g_slist_nth_data (priv->fields, field);
refval = CLAMP (refval, gsef->min_refval, gsef->max_refval);
- if (gse->show_refval)
+ if (priv->show_refval)
gtk_adjustment_set_value (gsef->refval_adjustment, refval);
gimp_size_entry_update_refval (gsef, refval);
@@ -1151,27 +1246,28 @@ gimp_size_entry_get_unit (GimpSizeEntry *gse)
{
g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (gse), GIMP_UNIT_INCH);
- return gse->unit;
+ return GET_PRIVATE (gse)->unit;
}
static void
gimp_size_entry_update_unit (GimpSizeEntry *gse,
GimpUnit unit)
{
- GimpSizeEntryField *gsef;
- gint i;
- gint digits;
+ GimpSizeEntryPrivate *priv = GET_PRIVATE (gse);
+ GimpSizeEntryField *gsef;
+ gint i;
+ gint digits;
- gse->unit = unit;
+ priv->unit = unit;
digits = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (gse),
"gimp-pixel-digits"));
- for (i = 0; i < gse->number_of_fields; i++)
+ for (i = 0; i < priv->number_of_fields; i++)
{
- gsef = (GimpSizeEntryField *) g_slist_nth_data (gse->fields, i);
+ gsef = (GimpSizeEntryField *) g_slist_nth_data (priv->fields, i);
- if (gse->update_policy == GIMP_SIZE_ENTRY_UPDATE_SIZE)
+ if (priv->update_policy == GIMP_SIZE_ENTRY_UPDATE_SIZE)
{
if (unit == GIMP_UNIT_PIXEL)
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (gsef->value_spinbutton),
@@ -1183,7 +1279,7 @@ gimp_size_entry_update_unit (GimpSizeEntry *gse,
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (gsef->value_spinbutton),
GIMP_SIZE_ENTRY_DIGITS (unit) + digits);
}
- else if (gse->update_policy == GIMP_SIZE_ENTRY_UPDATE_RESOLUTION)
+ else if (priv->update_policy == GIMP_SIZE_ENTRY_UPDATE_RESOLUTION)
{
digits = (gimp_unit_get_digits (GIMP_UNIT_INCH) -
gimp_unit_get_digits (unit));
@@ -1216,11 +1312,16 @@ void
gimp_size_entry_set_unit (GimpSizeEntry *gse,
GimpUnit unit)
{
+ GimpSizeEntryPrivate *priv;
+
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- g_return_if_fail (gse->menu_show_pixels || (unit != GIMP_UNIT_PIXEL));
- g_return_if_fail (gse->menu_show_percent || (unit != GIMP_UNIT_PERCENT));
- gimp_unit_combo_box_set_active (GIMP_UNIT_COMBO_BOX (gse->unitmenu), unit);
+ priv = GET_PRIVATE (gse);
+
+ g_return_if_fail (priv->menu_show_pixels || (unit != GIMP_UNIT_PIXEL));
+ g_return_if_fail (priv->menu_show_percent || (unit != GIMP_UNIT_PERCENT));
+
+ gimp_unit_combo_box_set_active (GIMP_UNIT_COMBO_BOX (priv->unit_combo), unit);
gimp_size_entry_update_unit (gse, unit);
}
@@ -1232,7 +1333,7 @@ gimp_size_entry_unit_callback (GtkWidget *widget,
new_unit = gimp_unit_combo_box_get_active (GIMP_UNIT_COMBO_BOX (widget));
- if (gse->unit != new_unit)
+ if (GET_PRIVATE (gse)->unit != new_unit)
gimp_size_entry_update_unit (gse, new_unit);
}
@@ -1261,12 +1362,13 @@ gimp_size_entry_eevl_input_callback (GtkSpinButton *spinner,
gdouble *return_val,
gpointer *data)
{
- GimpSizeEntryField *gsef = (GimpSizeEntryField *) data;
- GimpEevlOptions options = GIMP_EEVL_OPTIONS_INIT;
- gboolean success = FALSE;
- const gchar *error_pos = 0;
- GError *error = NULL;
- GimpEevlQuantity result;
+ GimpSizeEntryField *gsef = (GimpSizeEntryField *) data;
+ GimpSizeEntryPrivate *priv = GET_PRIVATE (gsef->gse);
+ GimpEevlOptions options = GIMP_EEVL_OPTIONS_INIT;
+ gboolean success = FALSE;
+ const gchar *error_pos = 0;
+ GError *error = NULL;
+ GimpEevlQuantity result;
g_return_val_if_fail (GTK_IS_SPIN_BUTTON (spinner), FALSE);
g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (gsef->gse), FALSE);
@@ -1275,22 +1377,22 @@ gimp_size_entry_eevl_input_callback (GtkSpinButton *spinner,
options.data = data;
/* enable ratio expressions when there are two fields */
- if (gsef->gse->number_of_fields == 2)
+ if (priv->number_of_fields == 2)
{
GimpSizeEntryField *other_gsef;
GimpEevlQuantity default_unit_factor;
options.ratio_expressions = TRUE;
- if (gsef == gsef->gse->fields->data)
+ if (gsef == priv->fields->data)
{
- other_gsef = gsef->gse->fields->next->data;
+ other_gsef = priv->fields->next->data;
options.ratio_invert = FALSE;
}
else
{
- other_gsef = gsef->gse->fields->data;
+ other_gsef = priv->fields->data;
options.ratio_invert = TRUE;
}
@@ -1323,14 +1425,14 @@ gimp_size_entry_eevl_input_callback (GtkSpinButton *spinner,
gtk_widget_error_bell (GTK_WIDGET (spinner));
return GTK_INPUT_ERROR;
}
- else if (result.dimension != 1 && gsef->gse->unit != GIMP_UNIT_PERCENT)
+ else if (result.dimension != 1 && priv->unit != GIMP_UNIT_PERCENT)
{
g_printerr ("ERROR: result has wrong dimension (expected 1, got %d)\n", result.dimension);
gtk_widget_error_bell (GTK_WIDGET (spinner));
return GTK_INPUT_ERROR;
}
- else if (result.dimension != 0 && gsef->gse->unit == GIMP_UNIT_PERCENT)
+ else if (result.dimension != 0 && priv->unit == GIMP_UNIT_PERCENT)
{
g_printerr ("ERROR: result has wrong dimension (expected 0, got %d)\n", result.dimension);
@@ -1344,7 +1446,7 @@ gimp_size_entry_eevl_input_callback (GtkSpinButton *spinner,
GtkAdjustment *adj;
gdouble val;
- switch (gsef->gse->unit)
+ switch (priv->unit)
{
case GIMP_UNIT_PIXEL:
ui_unit.value = gsef->resolution;
@@ -1355,7 +1457,7 @@ gimp_size_entry_eevl_input_callback (GtkSpinButton *spinner,
ui_unit.dimension = 0;
break;
default:
- ui_unit.value = gimp_unit_get_factor(gsef->gse->unit);
+ ui_unit.value = gimp_unit_get_factor(priv->unit);
ui_unit.dimension = 1;
break;
}
@@ -1387,9 +1489,10 @@ gimp_size_entry_eevl_unit_resolver (const gchar *identifier,
GimpEevlQuantity *result,
gpointer data)
{
- GimpSizeEntryField *gsef = (GimpSizeEntryField *) data;
- gboolean resolve_default_unit = (identifier == NULL);
- GimpUnit unit;
+ GimpSizeEntryField *gsef = (GimpSizeEntryField *) data;
+ GimpSizeEntryPrivate *priv = GET_PRIVATE (gsef->gse);
+ gboolean resolve_default_unit = (identifier == NULL);
+ GimpUnit unit;
g_return_val_if_fail (gsef, FALSE);
g_return_val_if_fail (result != NULL, FALSE);
@@ -1404,7 +1507,7 @@ gimp_size_entry_eevl_unit_resolver (const gchar *identifier,
if (unit == gimp_unit_get_number_of_units ())
unit = GIMP_UNIT_PERCENT;
- if ((resolve_default_unit && unit == gsef->gse->unit) ||
+ if ((resolve_default_unit && unit == priv->unit) ||
(identifier &&
(strcmp (gimp_unit_get_symbol (unit), identifier) == 0 ||
strcmp (gimp_unit_get_abbreviation (unit), identifier) == 0)))
@@ -1412,7 +1515,7 @@ gimp_size_entry_eevl_unit_resolver (const gchar *identifier,
switch (unit)
{
case GIMP_UNIT_PERCENT:
- if (gsef->gse->unit == GIMP_UNIT_PERCENT)
+ if (priv->unit == GIMP_UNIT_PERCENT)
{
result->value = 1;
result->dimension = 0;
@@ -1433,7 +1536,7 @@ gimp_size_entry_eevl_unit_resolver (const gchar *identifier,
break;
}
- if (gsef->gse->unit == GIMP_UNIT_PERCENT)
+ if (priv->unit == GIMP_UNIT_PERCENT)
{
/* map non-percentages onto percent */
result->value = gsef->upper/(100*gsef->resolution);
@@ -1468,7 +1571,7 @@ gimp_size_entry_show_unit_menu (GimpSizeEntry *gse,
{
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- gtk_widget_set_visible (gse->unitmenu, show);
+ gtk_widget_set_visible (GET_PRIVATE (gse)->unit_combo, show);
}
@@ -1488,7 +1591,7 @@ gimp_size_entry_set_pixel_digits (GimpSizeEntry *gse,
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- combo = GIMP_UNIT_COMBO_BOX (gse->unitmenu);
+ combo = GIMP_UNIT_COMBO_BOX (GET_PRIVATE (gse)->unit_combo);
g_object_set_data (G_OBJECT (gse), "gimp-pixel-digits",
GINT_TO_POINTER (digits));
@@ -1506,13 +1609,16 @@ gimp_size_entry_set_pixel_digits (GimpSizeEntry *gse,
void
gimp_size_entry_grab_focus (GimpSizeEntry *gse)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- gsef = gse->fields->data;
+ priv = GET_PRIVATE (gse);
+
+ gsef = priv->fields->data;
if (gsef)
- gtk_widget_grab_focus (gse->show_refval ?
+ gtk_widget_grab_focus (priv->show_refval ?
gsef->refval_spinbutton : gsef->value_spinbutton);
}
@@ -1530,11 +1636,14 @@ void
gimp_size_entry_set_activates_default (GimpSizeEntry *gse,
gboolean setting)
{
- GSList *list;
+ GimpSizeEntryPrivate *priv;
+ GSList *list;
g_return_if_fail (GIMP_IS_SIZE_ENTRY (gse));
- for (list = gse->fields; list; list = g_slist_next (list))
+ priv = GET_PRIVATE (gse);
+
+ for (list = priv->fields; list; list = g_slist_next (list))
{
GimpSizeEntryField *gsef = list->data;
@@ -1563,12 +1672,16 @@ GtkWidget *
gimp_size_entry_get_help_widget (GimpSizeEntry *gse,
gint field)
{
- GimpSizeEntryField *gsef;
+ GimpSizeEntryPrivate *priv;
+ GimpSizeEntryField *gsef;
g_return_val_if_fail (GIMP_IS_SIZE_ENTRY (gse), NULL);
- g_return_val_if_fail ((field >= 0) && (field < gse->number_of_fields), NULL);
- gsef = g_slist_nth_data (gse->fields, field);
+ priv = GET_PRIVATE (gse);
+
+ g_return_val_if_fail ((field >= 0) && (field < priv->number_of_fields), NULL);
+
+ gsef = g_slist_nth_data (priv->fields, field);
if (!gsef)
return NULL;
diff --git a/libgimpwidgets/gimpsizeentry.h b/libgimpwidgets/gimpsizeentry.h
index 998c95504b..2cfe3d5559 100644
--- a/libgimpwidgets/gimpsizeentry.h
+++ b/libgimpwidgets/gimpsizeentry.h
@@ -50,18 +50,6 @@ struct _GimpSizeEntry
GtkGrid parent_instance;
GimpSizeEntryPrivate *priv;
-
- /* FIXME MOVE TO PRIVATE */
- GSList *fields;
- gint number_of_fields;
-
- GtkWidget *unitmenu;
- GimpUnit unit;
- gboolean menu_show_pixels;
- gboolean menu_show_percent;
-
- gboolean show_refval;
- GimpSizeEntryUpdatePolicy update_policy;
};
struct _GimpSizeEntryClass
@@ -101,6 +89,11 @@ void gimp_size_entry_add_field (GimpSizeEntry *gse,
GtkSpinButton *value_spinbutton,
GtkSpinButton *refval_spinbutton);
+GimpSizeEntryUpdatePolicy
+ gimp_size_entry_get_update_policy (GimpSizeEntry *gse);
+gint gimp_size_entry_get_n_fields (GimpSizeEntry *gse);
+GtkWidget * gimp_size_entry_get_unit_combo (GimpSizeEntry *gse);
+
GtkWidget * gimp_size_entry_attach_label (GimpSizeEntry *gse,
const gchar *text,
gint row,
diff --git a/libgimpwidgets/gimpwidgetsutils.c b/libgimpwidgets/gimpwidgetsutils.c
index 98d2d4414d..0e1cda22e6 100644
--- a/libgimpwidgets/gimpwidgetsutils.c
+++ b/libgimpwidgets/gimpwidgetsutils.c
@@ -74,10 +74,10 @@ find_mnemonic_widget (GtkWidget *widget,
if (GIMP_IS_SIZE_ENTRY (widget))
{
- GimpSizeEntry *entry = GIMP_SIZE_ENTRY (widget);
+ GimpSizeEntry *entry = GIMP_SIZE_ENTRY (widget);
+ gint n_fields = gimp_size_entry_get_n_fields (entry);
- return gimp_size_entry_get_help_widget (entry,
- entry->number_of_fields - 1);
+ return gimp_size_entry_get_help_widget (entry, n_fields - 1);
}
else if (GTK_IS_CONTAINER (widget))
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]