[gimp/soc-2011-gimpunitentry: 33/68] libgimpwidgets: port GimpPropWidgets to GimpUnitEntry



commit 3dd68c1e937f0896c04180ea3478a810f0c8a9c6
Author: Enrico Schröder <enni schroeder gmail com>
Date:   Sun Jul 3 20:59:54 2011 +0200

    libgimpwidgets: port GimpPropWidgets to GimpUnitEntry
    
    Finished porting of GimpPropWidgets to UnitEntry. The old functions are still there to maintain 
compatibility for the classes which have not been ported yet (namely GimpSizeBox).

 libgimpwidgets/gimppropwidgets.c |  176 +++++++++++++++++++++++++-------------
 libgimpwidgets/gimppropwidgets.h |   11 ++-
 libgimpwidgets/gimpwidgets.def   |    2 +
 3 files changed, 128 insertions(+), 61 deletions(-)
---
diff --git a/libgimpwidgets/gimppropwidgets.c b/libgimpwidgets/gimppropwidgets.c
index 10b5379..8d79e8c 100644
--- a/libgimpwidgets/gimppropwidgets.c
+++ b/libgimpwidgets/gimppropwidgets.c
@@ -2908,6 +2908,48 @@ gimp_prop_coordinates_new (GObject                   *config,
   return entry;
 }
 
+GObject *
+gimp_prop_coordinates_new2 (GObject                   *config,
+                           const gchar               *x_property_name,
+                           const gchar               *y_property_name,
+                           const gchar               *x_label_str,
+                           const gchar               *y_label_str,
+                           const gchar               *unit_property_name,
+                           gdouble                    xresolution,
+                           gdouble                    yresolution,
+                           gboolean                   has_chainbutton)
+{
+  GimpUnitEntryTable *UETable;
+  GtkWidget          *chainbutton = NULL;
+
+  UETable = GIMP_UNIT_ENTRY_TABLE (gimp_unit_entry_table_new ());
+
+  gimp_unit_entry_table_add_entry_defaults (UETable, x_property_name, x_label_str);
+  gimp_unit_entry_table_add_entry_defaults (UETable, y_property_name, y_label_str);
+
+  if (has_chainbutton)
+    {
+      chainbutton = gimp_unit_entry_table_add_chainbutton  (UETable,
+                                                            x_property_name,
+                                                            y_property_name);
+    }
+
+  if (! gimp_prop_coordinates_connect2 (config,
+                                       x_property_name,
+                                       y_property_name,
+                                       unit_property_name,
+                                       G_OBJECT (UETable),
+                                       chainbutton,
+                                       xresolution,
+                                       yresolution))
+    {
+      gtk_widget_destroy (UETable->table);
+      return NULL;
+    }
+
+  return G_OBJECT (UETable);
+}
+
 gboolean
 gimp_prop_coordinates_connect (GObject     *config,
                                const gchar *x_property_name,
@@ -3067,31 +3109,31 @@ gimp_prop_coordinates_connect (GObject     *config,
   return TRUE;
 }
 
-gboolean        gimp_prop_coordinates_connect2     (GObject       *config,
+gboolean        gimp_prop_coordinates_connect2    (GObject       *config,
                                                    const gchar   *x_property_name,
                                                    const gchar   *y_property_name,
                                                    const gchar   *unit_property_name,
-                                                   GObject       *sizeentry,
+                                                   GObject       *unitentrytable,
                                                    GtkWidget     *chainbutton,
                                                    gdouble        xresolution,
                                                    gdouble        yresolution)
 {
-  GParamSpec *x_param_spec;
-  GParamSpec *y_param_spec;
-  GParamSpec *unit_param_spec;
-  gdouble     x_value, x_lower, x_upper;
-  gdouble     y_value, y_lower, y_upper;
-  GimpUnit    unit_value;
-  gdouble    *old_x_value;
-  gdouble    *old_y_value;
-  GimpUnit   *old_unit_value;
-  gboolean    chain_checked;
-  GimpUnitEntry *entry1, *entry2;
-  GimpUnitEntryTable *entry;
-
-  g_return_val_if_fail (GIMP_IS_UNIT_ENTRY_TABLE (sizeentry), FALSE);
-  entry = GIMP_UNIT_ENTRY_TABLE (sizeentry);
-  g_return_val_if_fail (gimp_unit_entry_table_get_entry_count(entry) == 2, FALSE);
+  GParamSpec          *x_param_spec;
+  GParamSpec          *y_param_spec;
+  GParamSpec          *unit_param_spec;
+  gdouble             x_value, x_lower, x_upper;
+  gdouble             y_value, y_lower, y_upper;
+  GimpUnit            unit_value;
+  gdouble             *old_x_value;
+  gdouble             *old_y_value;
+  GimpUnit            *old_unit_value;
+  gboolean            chain_checked;
+  GimpUnitEntry       *entry1, *entry2;
+  GimpUnitEntryTable  *ue_table;
+
+  g_return_val_if_fail (GIMP_IS_UNIT_ENTRY_TABLE (unitentrytable), FALSE);
+  ue_table = GIMP_UNIT_ENTRY_TABLE (unitentrytable);
+  g_return_val_if_fail (gimp_unit_entry_table_get_entry_count(ue_table) == 2, FALSE);
   g_return_val_if_fail (chainbutton == NULL ||
                         GIMP_IS_CHAIN_BUTTON (chainbutton), FALSE);
 
@@ -3126,8 +3168,10 @@ gboolean        gimp_prop_coordinates_connect2     (GObject       *config,
       unit_value      = GIMP_UNIT_INCH;
     }
 
-  entry1 = gimp_unit_entry_table_get_nth_entry (entry, 0);
-  entry2 = gimp_unit_entry_table_get_nth_entry (entry, 1);
+  entry1 = gimp_unit_entry_table_get_nth_entry (ue_table, 0);
+  entry2 = gimp_unit_entry_table_get_nth_entry (ue_table, 1);
+  g_return_val_if_fail (GIMP_IS_UNIT_ENTRY (entry1), FALSE);
+  g_return_val_if_fail (GIMP_IS_UNIT_ENTRY (entry2), FALSE);
 
   set_param_spec (NULL,
                   GTK_WIDGET (entry1),
@@ -3136,7 +3180,7 @@ gboolean        gimp_prop_coordinates_connect2     (GObject       *config,
                   GTK_WIDGET (entry2),
                   y_param_spec);
 
-  gimp_unit_entry_table_set_unit (entry, unit_value);
+  gimp_unit_entry_table_set_unit (ue_table, unit_value);
 
   gimp_unit_entry_set_resolution (entry1, xresolution);
   gimp_unit_entry_set_resolution (entry2, yresolution);
@@ -3144,32 +3188,32 @@ gboolean        gimp_prop_coordinates_connect2     (GObject       *config,
   chain_checked = (ABS (x_value - y_value) < 1);
 
   gimp_unit_entry_set_bounds (entry1,
-                              unit_value,
+                              GIMP_UNIT_PIXEL,
                               x_upper,
                               x_lower);
 
   gimp_unit_entry_set_bounds (entry2,
-                              unit_value,
+                              GIMP_UNIT_PIXEL,
                               y_upper,
                               y_lower);
 
   gimp_unit_entry_set_value_in_unit (entry1, x_value, GIMP_UNIT_PIXEL);
   gimp_unit_entry_set_value_in_unit (entry2, y_value, GIMP_UNIT_PIXEL);                                      
 
 
-  g_object_set_data (G_OBJECT (entry), "gimp-config-param-spec-x",
+  g_object_set_data (G_OBJECT (ue_table), "gimp-config-param-spec-x",
                      x_param_spec);
-  g_object_set_data (G_OBJECT (entry), "gimp-config-param-spec-y",
+  g_object_set_data (G_OBJECT (ue_table), "gimp-config-param-spec-y",
                      y_param_spec);
 
   old_x_value  = g_new0 (gdouble, 1);
   *old_x_value = x_value;
-  g_object_set_data_full (G_OBJECT (entry), "old-x-value",
+  g_object_set_data_full (G_OBJECT (ue_table), "old-x-value",
                           old_x_value,
                           (GDestroyNotify) g_free);
 
   old_y_value  = g_new0 (gdouble, 1);
   *old_y_value = y_value;
-  g_object_set_data_full (G_OBJECT (entry), "old-y-value",
+  g_object_set_data_full (G_OBJECT (ue_table), "old-y-value",
                           old_y_value,
                           (GDestroyNotify) g_free);
 
@@ -3178,38 +3222,38 @@ gboolean        gimp_prop_coordinates_connect2     (GObject       *config,
       if (chain_checked)
         gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (chainbutton), TRUE);
 
-      g_object_set_data (G_OBJECT (entry), "chainbutton", chainbutton);
+      g_object_set_data (G_OBJECT (ue_table), "chainbutton", chainbutton);
     }
 
-  g_signal_connect (entry, "changed",
+  g_signal_connect (ue_table, "changed",
                     G_CALLBACK (gimp_prop_coordinates_callback2),
                     config);
 
   connect_notify (config, x_property_name,
                   G_CALLBACK (gimp_prop_coordinates_notify_x2),
-                  entry);
+                  ue_table);
   connect_notify (config, y_property_name,
                   G_CALLBACK (gimp_prop_coordinates_notify_y2),
-                  entry);
+                  ue_table);
 
   if (unit_property_name)
     {
-      g_object_set_data (G_OBJECT (entry), "gimp-config-param-spec-unit",
+      g_object_set_data (G_OBJECT (ue_table), "gimp-config-param-spec-unit",
                          unit_param_spec);
 
       old_unit_value  = g_new0 (GimpUnit, 1);
       *old_unit_value = unit_value;
-      g_object_set_data_full (G_OBJECT (entry), "old-unit-value",
+      g_object_set_data_full (G_OBJECT (ue_table), "old-unit-value",
                               old_unit_value,
                               (GDestroyNotify) g_free);
 
-      g_signal_connect (entry1, "changed",
+      g_signal_connect (ue_table, "changed",
                         G_CALLBACK (gimp_prop_coordinates_callback2),
                         config);
 
       connect_notify (config, unit_property_name,
                       G_CALLBACK (gimp_prop_coordinates_notify_unit2),
-                      entry);
+                      ue_table);
     }
 
   return TRUE;
@@ -3325,8 +3369,8 @@ gimp_prop_coordinates_callback (GimpSizeEntry *entry,
 
 static void
 gimp_prop_coordinates_callback2 (GimpUnitEntryTable *entry,
-                                 GimpUnitEntry  *e,
-                                 GObject       *config)
+                                 GimpUnitEntry      *e,
+                                 GObject            *config)
 {
   GParamSpec *x_param_spec;
   GParamSpec *y_param_spec;
@@ -3351,7 +3395,7 @@ gimp_prop_coordinates_callback2 (GimpUnitEntryTable *entry,
                                        "gimp-config-param-spec-unit");
 
   entry1 = gimp_unit_entry_table_get_nth_entry (entry, 0);
-  entry2 = gimp_unit_entry_table_get_nth_entry (entry, 1);                                        
+  entry2 = gimp_unit_entry_table_get_nth_entry (entry, 1);                                    
 
   x_value    = gimp_unit_entry_get_value_in_unit (entry1, GIMP_UNIT_PIXEL);
   y_value    = gimp_unit_entry_get_value_in_unit (entry2, GIMP_UNIT_PIXEL);
@@ -3560,8 +3604,12 @@ gimp_prop_coordinates_notify_unit2 (GObject             *config,
                                     GParamSpec          *param_spec,
                                     GimpUnitEntryTable  *entryTable)
 {
-  GimpUnit value;
-  GimpUnitEntry *entry = gimp_unit_entry_table_get_nth_entry (entryTable, 0);
+  GimpUnit       value;
+  GimpUnitEntry *entry;
+  
+  g_return_if_fail (GIMP_IS_UNIT_ENTRY_TABLE (entryTable));
+  entry = gimp_unit_entry_table_get_nth_entry (entryTable, 0);
+  g_return_if_fail (GIMP_IS_UNIT_ENTRY (entry));
 
   g_object_get (config,
                 param_spec->name, &value,
@@ -3582,12 +3630,16 @@ gimp_prop_coordinates_notify_unit2 (GObject             *config,
 }
 
 static void
-gimp_prop_coordinates_notify_x2 (GObject       *config,
-                                GParamSpec    *param_spec,
-                                GimpUnitEntryTable *entry)
+gimp_prop_coordinates_notify_x2 (GObject           *config,
+                                 GParamSpec         *param_spec,
+                                 GimpUnitEntryTable *entryTable)
 {
-  gdouble value;
-  GimpUnitEntry *entry1 = gimp_unit_entry_table_get_nth_entry (entry, 0);
+  gdouble        value;
+  GimpUnitEntry *entry;
+  
+  g_return_if_fail (GIMP_IS_UNIT_ENTRY_TABLE (entryTable));
+  entry = gimp_unit_entry_table_get_nth_entry (entryTable, 0);
+  g_return_if_fail (GIMP_IS_UNIT_ENTRY (entry));
 
   if (G_IS_PARAM_SPEC_INT (param_spec))
     {
@@ -3606,33 +3658,37 @@ gimp_prop_coordinates_notify_x2 (GObject       *config,
                     NULL);
     }
 
-  if (value != gimp_unit_entry_get_value_in_unit (entry1, GIMP_UNIT_PIXEL))
+  if (value != gimp_unit_entry_get_value_in_unit (entry, GIMP_UNIT_PIXEL))
     {
-      gdouble *old_x_value = g_object_get_data (G_OBJECT (entry),
+      gdouble *old_x_value = g_object_get_data (G_OBJECT (entryTable),
                                                 "old-x-value");
 
-      g_signal_handlers_block_by_func (entry,
+      g_signal_handlers_block_by_func (entryTable,
                                        gimp_prop_coordinates_callback2,
                                        config);
 
-      gimp_unit_entry_set_value_in_unit (entry1, value, GIMP_UNIT_PIXEL);
+      gimp_unit_entry_set_value_in_unit (entry, value, GIMP_UNIT_PIXEL);
 
       if (old_x_value)
         *old_x_value = value;
 
-      g_signal_handlers_unblock_by_func (entry,
+      g_signal_handlers_unblock_by_func (entryTable,
                                          gimp_prop_coordinates_callback2,
                                          config);
     }
 }
 
 static void
-gimp_prop_coordinates_notify_y2 (GObject       *config,
-                                GParamSpec    *param_spec,
-                                GimpUnitEntryTable *entry)
+gimp_prop_coordinates_notify_y2 (GObject           *config,
+                                GParamSpec         *param_spec,
+                                GimpUnitEntryTable *entryTable)
 {
-  gdouble value;
-  GimpUnitEntry *entry1 = gimp_unit_entry_table_get_nth_entry (entry, 1);
+  gdouble        value;
+  GimpUnitEntry *entry;
+  
+  g_return_if_fail (GIMP_IS_UNIT_ENTRY_TABLE (entryTable));
+  entry = gimp_unit_entry_table_get_nth_entry (entryTable, 1);
+  g_return_if_fail (GIMP_IS_UNIT_ENTRY (entry));
 
   if (G_IS_PARAM_SPEC_INT (param_spec))
     {
@@ -3651,21 +3707,21 @@ gimp_prop_coordinates_notify_y2 (GObject       *config,
                     NULL);
     }
 
-  if (value != gimp_unit_entry_get_value_in_unit (entry1, GIMP_UNIT_PIXEL))
+  if (value != gimp_unit_entry_get_value_in_unit (entry, GIMP_UNIT_PIXEL))
     {
-      gdouble *old_y_value = g_object_get_data (G_OBJECT (entry),
+      gdouble *old_y_value = g_object_get_data (G_OBJECT (entryTable),
                                                 "old-y-value");
 
-      g_signal_handlers_block_by_func (entry,
+      g_signal_handlers_block_by_func (entryTable,
                                        gimp_prop_coordinates_callback2,
                                        config);
 
-      gimp_unit_entry_set_value_in_unit (entry1, value, GIMP_UNIT_PIXEL);
+      gimp_unit_entry_set_value_in_unit (entry, value, GIMP_UNIT_PIXEL);
 
       if (old_y_value)
         *old_y_value = value;
 
-      g_signal_handlers_unblock_by_func (entry,
+      g_signal_handlers_unblock_by_func (entryTable,
                                          gimp_prop_coordinates_callback2,
                                          config);
     }
diff --git a/libgimpwidgets/gimppropwidgets.h b/libgimpwidgets/gimppropwidgets.h
index ceaa939..5046e25 100644
--- a/libgimpwidgets/gimppropwidgets.h
+++ b/libgimpwidgets/gimppropwidgets.h
@@ -177,7 +177,7 @@ GtkWidget     * gimp_prop_size_entry_new          (GObject       *config,
 
 /*  x,y: GParamInt, GParamDouble   unit: GimpParamUnit  */
 
-GtkWidget     * gimp_prop_coordinates_new         (GObject       *config,
+GtkWidget      * gimp_prop_coordinates_new         (GObject       *config,
                                                    const gchar   *x_property_name,
                                                    const gchar   *y_property_name,
                                                    const gchar   *unit_property_name,
@@ -186,6 +186,15 @@ GtkWidget     * gimp_prop_coordinates_new         (GObject       *config,
                                                    gdouble        xresolution,
                                                    gdouble        yresolution,
                                                    gboolean       has_chainbutton);
+GObject       * gimp_prop_coordinates_new2         (GObject       *config,
+                                                   const gchar   *x_property_name,
+                                                   const gchar   *y_property_name,
+                                                   const gchar   *x_label_str,
+                                                   const gchar   *y_label_str,
+                                                   const gchar   *unit_property_name,
+                                                   gdouble        xresolution,
+                                                   gdouble        yresolution,
+                                                   gboolean       has_chainbutton);                          
                         
 gboolean        gimp_prop_coordinates_connect     (GObject       *config,
                                                    const gchar   *x_property_name,
                                                    const gchar   *y_property_name,
diff --git a/libgimpwidgets/gimpwidgets.def b/libgimpwidgets/gimpwidgets.def
index 779d242..4ff6d2f 100644
--- a/libgimpwidgets/gimpwidgets.def
+++ b/libgimpwidgets/gimpwidgets.def
@@ -272,7 +272,9 @@ EXPORTS
        gimp_prop_check_button_new
        gimp_prop_color_area_new
        gimp_prop_coordinates_connect
+       gimp_prop_coordinates_connect2
        gimp_prop_coordinates_new
+       gimp_prop_coordinates_new2
        gimp_prop_entry_new
        gimp_prop_enum_check_button_new
        gimp_prop_enum_combo_box_new


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]