[gthumb] reset size to sensible defaults when switchin between % and pixels
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] reset size to sensible defaults when switchin between % and pixels
- Date: Wed, 6 Jul 2011 22:00:07 +0000 (UTC)
commit 29d3c7a325af1b105a304247ee7cdef9a4493805
Author: Paolo Bacchilega <paobac src gnome org>
Date: Wed Jul 6 23:59:54 2011 +0200
reset size to sensible defaults when switchin between % and pixels
[bug #622427]
extensions/resize_images/dlg-resize-images.c | 60 +++++++++++++++++++++++--
1 files changed, 55 insertions(+), 5 deletions(-)
---
diff --git a/extensions/resize_images/dlg-resize-images.c b/extensions/resize_images/dlg-resize-images.c
index 2e5bc27..28e79de 100644
--- a/extensions/resize_images/dlg-resize-images.c
+++ b/extensions/resize_images/dlg-resize-images.c
@@ -27,8 +27,10 @@
#define GET_WIDGET(name) _gtk_builder_get_widget (data->builder, (name))
-#define DEFAULT_WIDTH 640
-#define DEFAULT_HEIGHT 480
+#define DEFAULT_WIDTH_PERCENTAGE 100
+#define DEFAULT_HEIGHT_PERCENTAGE 100
+#define DEFAULT_WIDTH_PIXELS 640
+#define DEFAULT_HEIGHT_PIXELS 480
enum {
@@ -49,6 +51,10 @@ typedef struct {
gboolean use_destination;
gulong width_spinbutton_event;
gulong height_spinbutton_event;
+ double latest_width_in_pixel;
+ double latest_height_in_pixel;
+ double latest_width_in_percentage;
+ double latest_height_in_percentage;
} DialogData;
@@ -192,10 +198,24 @@ update_width_height_properties (DialogData *data)
if (unit == GTH_UNIT_PERCENTAGE) {
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), 2);
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), 2);
+
+ g_signal_handler_block (GET_WIDGET ("height_spinbutton"), data->height_spinbutton_event);
+ g_signal_handler_block (GET_WIDGET ("width_spinbutton"), data->width_spinbutton_event);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), data->latest_height_in_percentage);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), data->latest_width_in_percentage);
+ g_signal_handler_unblock (GET_WIDGET ("height_spinbutton"), data->height_spinbutton_event);
+ g_signal_handler_unblock (GET_WIDGET ("width_spinbutton"), data->width_spinbutton_event);
}
else if (unit == GTH_UNIT_PIXELS) {
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), 0);
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), 0);
+
+ g_signal_handler_block (GET_WIDGET ("height_spinbutton"), data->height_spinbutton_event);
+ g_signal_handler_block (GET_WIDGET ("width_spinbutton"), data->width_spinbutton_event);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), data->latest_height_in_pixel);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), data->latest_width_in_pixel);
+ g_signal_handler_unblock (GET_WIDGET ("height_spinbutton"), data->height_spinbutton_event);
+ g_signal_handler_unblock (GET_WIDGET ("width_spinbutton"), data->width_spinbutton_event);
}
}
@@ -204,6 +224,18 @@ static void
unit_combobox_changed_cb (GtkComboBox *combobox,
DialogData *data)
{
+ GthUnit unit;
+
+ unit = units[gtk_combo_box_get_active (GTK_COMBO_BOX (GET_WIDGET ("unit_combobox")))];
+ if (unit == GTH_UNIT_PERCENTAGE) {
+ data->latest_width_in_pixel = gtk_spin_button_get_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")));
+ data->latest_height_in_pixel = gtk_spin_button_get_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")));
+ }
+ else if (unit == GTH_UNIT_PIXELS) {
+ data->latest_width_in_percentage = gtk_spin_button_get_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")));
+ data->latest_height_in_percentage = gtk_spin_button_get_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")));
+ }
+
update_width_height_properties (data);
}
@@ -266,6 +298,7 @@ dlg_resize_images (GthBrowser *browser,
DialogData *data;
GArray *savers;
GthFileData *first_file_data;
+ GthUnit unit;
if (gth_browser_get_dialog (browser, "resize_images") != NULL) {
gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, "resize_images")));
@@ -286,10 +319,27 @@ dlg_resize_images (GthBrowser *browser,
/* Set widgets data. */
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), eel_gconf_get_integer (PREF_RESIZE_IMAGES_SERIES_WIDTH, DEFAULT_WIDTH));
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), eel_gconf_get_integer (PREF_RESIZE_IMAGES_SERIES_HEIGHT, DEFAULT_HEIGHT));
- gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("unit_combobox")), eel_gconf_get_enum (PREF_RESIZE_IMAGES_UNIT, GTH_TYPE_UNIT, GTH_UNIT_PIXELS));
+ unit = eel_gconf_get_enum (PREF_RESIZE_IMAGES_UNIT, GTH_TYPE_UNIT, GTH_UNIT_PIXELS);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("unit_combobox")), unit);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_ratio_checkbutton")), eel_gconf_get_boolean (PREF_RESIZE_IMAGES_KEEP_RATIO, TRUE));
+
+ if (unit == GTH_UNIT_PERCENTAGE) {
+ data->latest_width_in_pixel = DEFAULT_WIDTH_PIXELS;
+ data->latest_height_in_pixel = DEFAULT_HEIGHT_PIXELS;
+ data->latest_width_in_percentage = eel_gconf_get_integer (PREF_RESIZE_IMAGES_SERIES_WIDTH, DEFAULT_WIDTH_PERCENTAGE);
+ data->latest_height_in_percentage = eel_gconf_get_integer (PREF_RESIZE_IMAGES_SERIES_HEIGHT, DEFAULT_HEIGHT_PERCENTAGE);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), data->latest_width_in_percentage);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), data->latest_height_in_percentage);
+ }
+ else if (unit == GTH_UNIT_PIXELS) {
+ data->latest_width_in_percentage = DEFAULT_WIDTH_PERCENTAGE;
+ data->latest_height_in_percentage = DEFAULT_HEIGHT_PERCENTAGE;
+ data->latest_width_in_pixel = eel_gconf_get_integer (PREF_RESIZE_IMAGES_SERIES_WIDTH, DEFAULT_WIDTH_PIXELS);
+ data->latest_height_in_pixel = eel_gconf_get_integer (PREF_RESIZE_IMAGES_SERIES_HEIGHT, DEFAULT_HEIGHT_PIXELS);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), data->latest_width_in_pixel);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), data->latest_height_in_pixel);
+ }
+
update_width_height_properties (data);
savers = gth_main_get_type_set ("pixbuf-saver");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]