[gimp/gtk3-port: 245/444] libgimpwidgets: add GtkGrid variants of gimp_[color_]scale_entry_new()



commit db840482e6b611ff28e27e140bf96d0fb9fc9144
Author: Michael Natterer <mitch gimp org>
Date:   Sun Apr 29 00:47:21 2018 +0200

    libgimpwidgets: add GtkGrid variants of gimp_[color_]scale_entry_new()
    
    as temporary porting hack, they will eventually be renamed to the old
    names once GtkGrid porting is done.

 libgimpwidgets/gimpscaleentry.c |  150 +++++++++++++++++++++++++++++++++++----
 libgimpwidgets/gimpscaleentry.h |   33 +++++++++
 2 files changed, 170 insertions(+), 13 deletions(-)
---
diff --git a/libgimpwidgets/gimpscaleentry.c b/libgimpwidgets/gimpscaleentry.c
index 5d00553..b6dd2a6 100644
--- a/libgimpwidgets/gimpscaleentry.c
+++ b/libgimpwidgets/gimpscaleentry.c
@@ -41,7 +41,7 @@ static gboolean        gimp_scale_entry_log_to_linear (GBinding     *binding,
                                                        gpointer      user_data);
 
 static GtkAdjustment * gimp_scale_entry_new_internal  (gboolean      color_scale,
-                                                       GtkTable     *table,
+                                                       GtkWidget    *grid,
                                                        gint          column,
                                                        gint          row,
                                                        const gchar  *text,
@@ -104,7 +104,7 @@ gimp_scale_entry_log_to_linear (GBinding     *binding,
 
 static GtkAdjustment *
 gimp_scale_entry_new_internal (gboolean     color_scale,
-                               GtkTable    *table,
+                               GtkWidget   *parent,
                                gint         column,
                                gint         row,
                                const gchar *text,
@@ -188,17 +188,32 @@ gimp_scale_entry_new_internal (gboolean     color_scale,
     gtk_widget_set_size_request (scale, scale_width, -1);
   gtk_widget_show (scale);
 
-  gtk_table_attach (GTK_TABLE (table), label,
-                    column, column + 1, row, row + 1,
-                    GTK_FILL, GTK_FILL, 0, 0);
+  if (GTK_IS_GRID (parent))
+    {
+      GtkGrid *grid = GTK_GRID (parent);
+
+      gtk_widget_set_hexpand (scale, TRUE);
+
+      gtk_grid_attach (grid, label,      column,     row, 1, 1);
+      gtk_grid_attach (grid, scale,      column + 1, row, 1, 1);
+      gtk_grid_attach (grid, spinbutton, column + 2, row, 1, 1);
+    }
+  else
+    {
+      GtkTable *table = GTK_TABLE (parent);
+
+      gtk_table_attach (table, label,
+                        column, column + 1, row, row + 1,
+                        GTK_FILL, GTK_FILL, 0, 0);
 
-  gtk_table_attach (GTK_TABLE (table), scale,
-                    column + 1, column + 2, row, row + 1,
-                    GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
+      gtk_table_attach (table, scale,
+                        column + 1, column + 2, row, row + 1,
+                        GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
 
-  gtk_table_attach (GTK_TABLE (table), spinbutton,
-                    column + 2, column + 3, row, row + 1,
-                    GTK_FILL | GTK_SHRINK, GTK_SHRINK, 0, 0);
+      gtk_table_attach (table, spinbutton,
+                        column + 2, column + 3, row, row + 1,
+                        GTK_FILL | GTK_SHRINK, GTK_SHRINK, 0, 0);
+    }
 
   if (tooltip || help_id)
     {
@@ -264,7 +279,67 @@ gimp_scale_entry_new (GtkTable    *table,
                       const gchar *help_id)
 {
   return gimp_scale_entry_new_internal (FALSE,
-                                        table, column, row,
+                                        GTK_WIDGET (table), column, row,
+                                        text, scale_width, spinbutton_width,
+                                        value, lower, upper,
+                                        step_increment, page_increment,
+                                        digits,
+                                        constrain,
+                                        unconstrained_lower,
+                                        unconstrained_upper,
+                                        tooltip, help_id);
+}
+
+/**
+ * gimp_scale_entry_new_grid:
+ * @grid:                The #GtkGrid the widgets will be attached to.
+ * @column:              The column to start with.
+ * @row:                 The row to attach the widgets.
+ * @text:                The text for the #GtkLabel which will appear
+ *                       left of the #GtkHScale.
+ * @scale_width:         The minimum horizontal size of the #GtkHScale.
+ * @spinbutton_width:    The minimum horizontal size of the #GtkSpinButton.
+ * @value:               The initial value.
+ * @lower:               The lower boundary.
+ * @upper:               The upper boundary.
+ * @step_increment:      The step increment.
+ * @page_increment:      The page increment.
+ * @digits:              The number of decimal digits.
+ * @constrain:           %TRUE if the range of possible values of the
+ *                       #GtkSpinButton should be the same as of the #GtkHScale.
+ * @unconstrained_lower: The spinbutton's lower boundary
+ *                       if @constrain == %FALSE.
+ * @unconstrained_upper: The spinbutton's upper boundary
+ *                       if @constrain == %FALSE.
+ * @tooltip:             A tooltip message for the scale and the spinbutton.
+ * @help_id:             The widgets' help_id (see gimp_help_set_help_data()).
+ *
+ * This function creates a #GtkLabel, a #GtkHScale and a #GtkSpinButton and
+ * attaches them to a 3-column #GtkGrid.
+ *
+ * Returns: The #GtkSpinButton's #GtkAdjustment.
+ **/
+GtkAdjustment *
+gimp_scale_entry_new_grid (GtkGrid     *grid,
+                           gint         column,
+                           gint         row,
+                           const gchar *text,
+                           gint         scale_width,
+                           gint         spinbutton_width,
+                           gdouble      value,
+                           gdouble      lower,
+                           gdouble      upper,
+                           gdouble      step_increment,
+                           gdouble      page_increment,
+                           guint        digits,
+                           gboolean     constrain,
+                           gdouble      unconstrained_lower,
+                           gdouble      unconstrained_upper,
+                           const gchar *tooltip,
+                           const gchar *help_id)
+{
+  return gimp_scale_entry_new_internal (FALSE,
+                                        GTK_WIDGET (grid), column, row,
                                         text, scale_width, spinbutton_width,
                                         value, lower, upper,
                                         step_increment, page_increment,
@@ -315,7 +390,56 @@ gimp_color_scale_entry_new (GtkTable    *table,
                             const gchar *help_id)
 {
   return gimp_scale_entry_new_internal (TRUE,
-                                        table, column, row,
+                                        GTK_WIDGET (table), column, row,
+                                        text, scale_width, spinbutton_width,
+                                        value, lower, upper,
+                                        step_increment, page_increment,
+                                        digits,
+                                        TRUE, 0.0, 0.0,
+                                        tooltip, help_id);
+}
+
+/**
+ * gimp_color_scale_entry_new_grid:
+ * @grid:                The #GtkGrid the widgets will be attached to.
+ * @column:              The column to start with.
+ * @row:                 The row to attach the widgets.
+ * @text:                The text for the #GtkLabel which will appear
+ *                       left of the #GtkHScale.
+ * @scale_width:         The minimum horizontal size of the #GtkHScale.
+ * @spinbutton_width:    The minimum horizontal size of the #GtkSpinButton.
+ * @value:               The initial value.
+ * @lower:               The lower boundary.
+ * @upper:               The upper boundary.
+ * @step_increment:      The step increment.
+ * @page_increment:      The page increment.
+ * @digits:              The number of decimal digits.
+ * @tooltip:             A tooltip message for the scale and the spinbutton.
+ * @help_id:             The widgets' help_id (see gimp_help_set_help_data()).
+ *
+ * This function creates a #GtkLabel, a #GimpColorScale and a
+ * #GtkSpinButton and attaches them to a 3-column #GtkGrid.
+ *
+ * Returns: The #GtkSpinButton's #GtkAdjustment.
+ **/
+GtkAdjustment *
+gimp_color_scale_entry_new_grid (GtkGrid     *grid,
+                                 gint         column,
+                                 gint         row,
+                                 const gchar *text,
+                                 gint         scale_width,
+                                 gint         spinbutton_width,
+                                 gdouble      value,
+                                 gdouble      lower,
+                                 gdouble      upper,
+                                 gdouble      step_increment,
+                                 gdouble      page_increment,
+                                 guint        digits,
+                                 const gchar *tooltip,
+                                 const gchar *help_id)
+{
+  return gimp_scale_entry_new_internal (TRUE,
+                                        GTK_WIDGET (grid), column, row,
                                         text, scale_width, spinbutton_width,
                                         value, lower, upper,
                                         step_increment, page_increment,
diff --git a/libgimpwidgets/gimpscaleentry.h b/libgimpwidgets/gimpscaleentry.h
index bca63ac..c0332d6 100644
--- a/libgimpwidgets/gimpscaleentry.h
+++ b/libgimpwidgets/gimpscaleentry.h
@@ -96,6 +96,24 @@ GtkAdjustment * gimp_scale_entry_new             (GtkTable    *table,
                                                   const gchar *tooltip,
                                                   const gchar *help_id);
 
+GtkAdjustment * gimp_scale_entry_new_grid        (GtkGrid     *grid,
+                                                  gint         column,
+                                                  gint         row,
+                                                  const gchar *text,
+                                                  gint         scale_width,
+                                                  gint         spinbutton_width,
+                                                  gdouble      value,
+                                                  gdouble      lower,
+                                                  gdouble      upper,
+                                                  gdouble      step_increment,
+                                                  gdouble      page_increment,
+                                                  guint        digits,
+                                                  gboolean     constrain,
+                                                  gdouble      unconstrained_lower,
+                                                  gdouble      unconstrained_upper,
+                                                  const gchar *tooltip,
+                                                  const gchar *help_id);
+
 GtkAdjustment * gimp_color_scale_entry_new       (GtkTable    *table,
                                                   gint         column,
                                                   gint         row,
@@ -111,6 +129,21 @@ GtkAdjustment * gimp_color_scale_entry_new       (GtkTable    *table,
                                                   const gchar *tooltip,
                                                   const gchar *help_id);
 
+GtkAdjustment * gimp_color_scale_entry_new_grid  (GtkGrid     *grid,
+                                                  gint         column,
+                                                  gint         row,
+                                                  const gchar *text,
+                                                  gint         scale_width,
+                                                  gint         spinbutton_width,
+                                                  gdouble      value,
+                                                  gdouble      lower,
+                                                  gdouble      upper,
+                                                  gdouble      step_increment,
+                                                  gdouble      page_increment,
+                                                  guint        digits,
+                                                  const gchar *tooltip,
+                                                  const gchar *help_id);
+
 void            gimp_scale_entry_set_sensitive   (GtkAdjustment *adjustment,
                                                   gboolean       sensitive);
 


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