[gimp/soc-2011-gimpunitentry] GimpUnitAdjustment: add function for setting boundaries
- From: Enrico Schröder <eschroeder src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/soc-2011-gimpunitentry] GimpUnitAdjustment: add function for setting boundaries
- Date: Sat, 11 Jun 2011 11:16:58 +0000 (UTC)
commit 5a7c634e948f9b4071eb9e4aed1c4e2792773d33
Author: Enrico SchroÌ?der <enni schroeder gmail com>
Date: Sat Jun 11 13:16:27 2011 +0200
GimpUnitAdjustment: add function for setting boundaries
Adds a function for setting the upper and lower bounds of a UnitAdjustment
app/dialogs/layer-options-dialog.c | 13 +++++----
libgimpwidgets/gimpunitadjustment.c | 45 +++++++++++++++++++++++++++++++++-
libgimpwidgets/gimpunitadjustment.h | 1 +
libgimpwidgets/gimpunitentry.c | 6 ++++
libgimpwidgets/gimpunitentry.h | 1 +
5 files changed, 58 insertions(+), 8 deletions(-)
---
diff --git a/app/dialogs/layer-options-dialog.c b/app/dialogs/layer-options-dialog.c
index 5a0628c..b455156 100644
--- a/app/dialogs/layer-options-dialog.c
+++ b/app/dialogs/layer-options-dialog.c
@@ -70,7 +70,6 @@ layer_options_dialog_new (GimpImage *image,
GtkWidget *spinbutton;
GtkWidget *frame;
GtkWidget *button;
- GimpUnitEntryTable *unitEntryTable;
GtkWidget *entry1;
GtkWidget *entry2;
@@ -204,11 +203,13 @@ layer_options_dialog_new (GimpImage *image,
entry2 = gimp_unit_entry_table_add_entry (options->size_se, "height", _("Height:"));
gimp_unit_entry_table_add_label (options->size_se, GIMP_UNIT_PIXEL, "width", "height");
- gimp_unit_entry_set_unit (GIMP_UNIT_ENTRY (entry1), GIMP_UNIT_PIXEL);
- gimp_unit_entry_set_resolution (GIMP_UNIT_ENTRY (entry1), xres);
- gimp_unit_entry_set_resolution (GIMP_UNIT_ENTRY (entry2), yres);
- gimp_unit_entry_set_value (GIMP_UNIT_ENTRY (entry1), gimp_image_get_width (image));
- gimp_unit_entry_set_value (GIMP_UNIT_ENTRY (entry2), gimp_image_get_height (image));
+ gimp_unit_entry_set_unit (GIMP_UNIT_ENTRY (entry1), GIMP_UNIT_PIXEL);
+ gimp_unit_entry_set_resolution (GIMP_UNIT_ENTRY (entry1), xres);
+ gimp_unit_entry_set_resolution (GIMP_UNIT_ENTRY (entry2), yres);
+ gimp_unit_entry_set_value (GIMP_UNIT_ENTRY (entry1), gimp_image_get_width (image));
+ gimp_unit_entry_set_value (GIMP_UNIT_ENTRY (entry2), gimp_image_get_height (image));
+ gimp_unit_entry_set_bounds (GIMP_UNIT_ENTRY (entry1), GIMP_UNIT_PIXEL, GIMP_MAX_IMAGE_SIZE, GIMP_MIN_IMAGE_SIZE);
+ gimp_unit_entry_set_bounds (GIMP_UNIT_ENTRY (entry2), GIMP_UNIT_PIXEL, GIMP_MAX_IMAGE_SIZE, GIMP_MIN_IMAGE_SIZE);
gtk_table_attach (GTK_TABLE (table), options->size_se->table, 0, 2, 1, 3,
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
diff --git a/libgimpwidgets/gimpunitadjustment.c b/libgimpwidgets/gimpunitadjustment.c
index 9309d1e..a762c4f 100644
--- a/libgimpwidgets/gimpunitadjustment.c
+++ b/libgimpwidgets/gimpunitadjustment.c
@@ -121,11 +121,11 @@ gimp_unit_adjustment_connect (GimpUnitAdjustment *adj, GimpUnitAdjustment *targe
(gpointer*) adj);
}
-/* converts from one current unit to another */
+/* converts value from one unit to another */
static void
gimp_unit_adjustment_convert_unit (GimpUnitAdjustment *adj, GimpUnit unit)
{
- gdouble newValue = 0;
+ gdouble newValue = 0, lower, upper;
if (adj->unit != unit)
{
DEBUG (("GimpUnitAdjustment: changing unit from %s to %s\n",
@@ -140,6 +140,25 @@ gimp_unit_adjustment_convert_unit (GimpUnitAdjustment *adj, GimpUnit unit)
unit,
adj->resolution);
+ /* also convert bounds */
+ upper = gimp_units_to_pixels (gtk_adjustment_get_upper (GTK_ADJUSTMENT (adj)),
+ adj->unit,
+ adj->resolution);
+ lower = gimp_units_to_pixels (gtk_adjustment_get_lower (GTK_ADJUSTMENT (adj)),
+ adj->unit,
+ adj->resolution);
+
+ upper = gimp_pixels_to_units (upper,
+ unit,
+ adj->resolution);
+ lower = gimp_pixels_to_units (lower,
+ unit,
+ adj->resolution);
+
+ gtk_adjustment_set_upper (GTK_ADJUSTMENT (adj), upper);
+ gtk_adjustment_set_lower (GTK_ADJUSTMENT (adj), lower);
+
+ /* set the new unit */
adj->unit = unit;
gimp_unit_adjustment_set_value (adj, newValue);
@@ -228,4 +247,26 @@ gimp_unit_adjustment_get_unit (GimpUnitAdjustment *adj)
{
return adj->unit;
}
+void
+gimp_unit_adjustment_set_bounds (GimpUnitAdjustment *adj, GimpUnit unit, gdouble upper, gdouble lower)
+{
+ /* convert bounds from given unit to current unit */
+ upper = gimp_units_to_pixels (upper,
+ unit,
+ adj->resolution);
+ lower = gimp_units_to_pixels (lower,
+ unit,
+ adj->resolution);
+
+ upper = gimp_pixels_to_units (upper,
+ adj->unit,
+ adj->resolution);
+ lower = gimp_pixels_to_units (lower,
+ adj->unit,
+ adj->resolution);
+
+ /* set bounds */
+ gtk_adjustment_set_upper (GTK_ADJUSTMENT (adj), upper);
+ gtk_adjustment_set_lower (GTK_ADJUSTMENT (adj), lower);
+}
diff --git a/libgimpwidgets/gimpunitadjustment.h b/libgimpwidgets/gimpunitadjustment.h
index 27b91af..728afb0 100644
--- a/libgimpwidgets/gimpunitadjustment.h
+++ b/libgimpwidgets/gimpunitadjustment.h
@@ -76,6 +76,7 @@ gdouble gimp_unit_adjustment_get_value_in_unit (GimpUnitAdjustment *adj, Gimp
void gimp_unit_adjustment_set_resolution (GimpUnitAdjustment *adj, gdouble res);
gdouble gimp_unit_adjustment_get_resolution (GimpUnitAdjustment *adj);
GimpUnit gimp_unit_adjustment_get_unit (GimpUnitAdjustment *adj);
+void gimp_unit_adjustment_set_bounds (GimpUnitAdjustment *adj, GimpUnit unit, gdouble upper, gdouble lower);
/* get string in format "value unit" */
gchar* gimp_unit_adjustment_to_string (GimpUnitAdjustment *adj);
gchar* gimp_unit_adjustment_to_string_in_unit (GimpUnitAdjustment *adj, GimpUnit unit);
diff --git a/libgimpwidgets/gimpunitentry.c b/libgimpwidgets/gimpunitentry.c
index 6e2a640..5359c64 100644
--- a/libgimpwidgets/gimpunitentry.c
+++ b/libgimpwidgets/gimpunitentry.c
@@ -476,3 +476,9 @@ gimp_unit_entry_get_unit (GimpUnitEntry *entry)
GimpUnitAdjustment *adj = gimp_unit_entry_get_adjustment (entry);
return gimp_unit_adjustment_get_unit (adj);
}
+void
+gimp_unit_entry_set_bounds (GimpUnitEntry *entry, GimpUnit unit, gdouble upper, gdouble lower)
+{
+ GimpUnitAdjustment *adj = gimp_unit_entry_get_adjustment (entry);
+ gimp_unit_adjustment_set_bounds (adj, unit, upper, lower);
+}
diff --git a/libgimpwidgets/gimpunitentry.h b/libgimpwidgets/gimpunitentry.h
index 9330747..81358ab 100644
--- a/libgimpwidgets/gimpunitentry.h
+++ b/libgimpwidgets/gimpunitentry.h
@@ -77,6 +77,7 @@ void gimp_unit_entry_set_value (GimpUnitEntry *entry, gdouble resolution);
gdouble gimp_unit_entry_get_value (GimpUnitEntry *entry);
gdouble gimp_unit_entry_get_value_in_unit (GimpUnitEntry *entry, GimpUnit unit);
GimpUnit gimp_unit_entry_get_unit (GimpUnitEntry *entry);
+void gimp_unit_entry_set_bounds (GimpUnitEntry *entry, GimpUnit unit, gdouble upper, gdouble lower);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]