[gtk+] GtkButton: Convert to g_object_class_install_properties



commit 62d591a550e161f8ab05e246c12f9991e8044620
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jun 7 09:40:55 2014 -0400

    GtkButton: Convert to g_object_class_install_properties

 gtk/gtkbutton.c |  168 ++++++++++++++++++++++++++-----------------------------
 1 files changed, 80 insertions(+), 88 deletions(-)
---
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index 32483b4..8bf2358 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -89,13 +89,16 @@ enum {
   PROP_XALIGN,
   PROP_YALIGN,
   PROP_IMAGE_POSITION,
+  PROP_ALWAYS_SHOW_IMAGE,
+
+  /* actionable properties */
   PROP_ACTION_NAME,
   PROP_ACTION_TARGET,
-  PROP_ALWAYS_SHOW_IMAGE,
 
   /* activatable properties */
   PROP_ACTIVATABLE_RELATED_ACTION,
-  PROP_ACTIVATABLE_USE_ACTION_APPEARANCE
+  PROP_ACTIVATABLE_USE_ACTION_APPEARANCE,
+  LAST_PROP = PROP_ACTION_NAME
 };
 
 
@@ -179,6 +182,7 @@ static void gtk_button_get_preferred_height_and_baseline_for_width (GtkWidget *w
                                                                    gint      *minimum_baseline,
                                                                    gint      *natural_baseline);
   
+static GParamSpec *props[LAST_PROP] = { NULL, };
 static guint button_signals[LAST_SIGNAL] = { 0 };
 
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
@@ -237,51 +241,46 @@ gtk_button_class_init (GtkButtonClass *klass)
   klass->leave = gtk_button_update_state;
   klass->activate = gtk_real_button_activate;
 
-  g_object_class_install_property (gobject_class,
-                                   PROP_LABEL,
-                                   g_param_spec_string ("label",
-                                                        P_("Label"),
-                                                        P_("Text of the label widget inside the button, if 
the button contains a label widget"),
-                                                        NULL,
-                                                        GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+  props[PROP_LABEL] =
+    g_param_spec_string ("label",
+                         P_("Label"),
+                         P_("Text of the label widget inside the button, if the button contains a label 
widget"),
+                         NULL,
+                         GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT);
   
-  g_object_class_install_property (gobject_class,
-                                   PROP_USE_UNDERLINE,
-                                   g_param_spec_boolean ("use-underline",
-                                                        P_("Use underline"),
-                                                        P_("If set, an underline in the text indicates the 
next character should be used for the mnemonic accelerator key"),
-                                                        FALSE,
-                                                        GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+  props[PROP_USE_UNDERLINE] =
+    g_param_spec_boolean ("use-underline",
+                          P_("Use underline"),
+                          P_("If set, an underline in the text indicates the next character should be used 
for the mnemonic accelerator key"),
+                          FALSE,
+                          GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT);
   
   /**
    * GtkButton:use-stock:
    *
    * Deprecated: 3.10
    */
-  g_object_class_install_property (gobject_class,
-                                   PROP_USE_STOCK,
-                                   g_param_spec_boolean ("use-stock",
-                                                        P_("Use stock"),
-                                                        P_("If set, the label is used to pick a stock item 
instead of being displayed"),
-                                                        FALSE,
-                                                        GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT | 
G_PARAM_DEPRECATED));
+  props[PROP_USE_STOCK] =
+    g_param_spec_boolean ("use-stock",
+                          P_("Use stock"),
+                          P_("If set, the label is used to pick a stock item instead of being displayed"),
+                          FALSE,
+                          GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_DEPRECATED);
   
-  g_object_class_install_property (gobject_class,
-                                   PROP_FOCUS_ON_CLICK,
-                                   g_param_spec_boolean ("focus-on-click",
-                                                        P_("Focus on click"),
-                                                        P_("Whether the button grabs focus when it is 
clicked with the mouse"),
-                                                        TRUE,
-                                                        GTK_PARAM_READWRITE));
+  props[PROP_FOCUS_ON_CLICK] =
+    g_param_spec_boolean ("focus-on-click",
+                          P_("Focus on click"),
+                          P_("Whether the button grabs focus when it is clicked with the mouse"),
+                          TRUE,
+                          GTK_PARAM_READWRITE);
   
-  g_object_class_install_property (gobject_class,
-                                   PROP_RELIEF,
-                                   g_param_spec_enum ("relief",
-                                                      P_("Border relief"),
-                                                      P_("The border relief style"),
-                                                      GTK_TYPE_RELIEF_STYLE,
-                                                      GTK_RELIEF_NORMAL,
-                                                      GTK_PARAM_READWRITE));
+  props[PROP_RELIEF] =
+    g_param_spec_enum ("relief",
+                       P_("Border relief"),
+                       P_("The border relief style"),
+                       GTK_TYPE_RELIEF_STYLE,
+                       GTK_RELIEF_NORMAL,
+                       GTK_PARAM_READWRITE);
   
   /**
    * GtkButton:xalign:
@@ -295,15 +294,12 @@ gtk_button_class_init (GtkButtonClass *klass)
    * Deprecated: 3.14: Access the child widget directly if you need to control
    * its alignment.
    */
-  g_object_class_install_property (gobject_class,
-                                   PROP_XALIGN,
-                                   g_param_spec_float ("xalign",
-                                                       P_("Horizontal alignment for child"),
-                                                       P_("Horizontal position of child in available space. 
0.0 is left aligned, 1.0 is right aligned"),
-                                                       0.0,
-                                                       1.0,
-                                                       0.5,
-                                                       GTK_PARAM_READWRITE|G_PARAM_DEPRECATED));
+  props[PROP_XALIGN] =
+    g_param_spec_float ("xalign",
+                        P_("Horizontal alignment for child"),
+                        P_("Horizontal position of child in available space. 0.0 is left aligned, 1.0 is 
right aligned"),
+                        0.0, 1.0, 0.5,
+                        GTK_PARAM_READWRITE|G_PARAM_DEPRECATED);
 
   /**
    * GtkButton:yalign:
@@ -317,15 +313,12 @@ gtk_button_class_init (GtkButtonClass *klass)
    * Deprecated: 3.14: Access the child widget directly if you need to control
    * its alignment.
    */
-  g_object_class_install_property (gobject_class,
-                                   PROP_YALIGN,
-                                   g_param_spec_float ("yalign",
-                                                       P_("Vertical alignment for child"),
-                                                       P_("Vertical position of child in available space. 
0.0 is top aligned, 1.0 is bottom aligned"),
-                                                       0.0,
-                                                       1.0,
-                                                       0.5,
-                                                       GTK_PARAM_READWRITE|G_PARAM_DEPRECATED));
+  props[PROP_YALIGN] =
+    g_param_spec_float ("yalign",
+                        P_("Vertical alignment for child"),
+                        P_("Vertical position of child in available space. 0.0 is top aligned, 1.0 is bottom 
aligned"),
+                        0.0, 1.0, 0.5,
+                        GTK_PARAM_READWRITE|G_PARAM_DEPRECATED);
 
   /**
    * GtkButton:image:
@@ -334,13 +327,12 @@ gtk_button_class_init (GtkButtonClass *klass)
    *
    * Since: 2.6
    */
-  g_object_class_install_property (gobject_class,
-                                   PROP_IMAGE,
-                                   g_param_spec_object ("image",
-                                                        P_("Image widget"),
-                                                        P_("Child widget to appear next to the button text"),
-                                                        GTK_TYPE_WIDGET,
-                                                        GTK_PARAM_READWRITE));
+  props[PROP_IMAGE] =
+    g_param_spec_object ("image",
+                         P_("Image widget"),
+                         P_("Child widget to appear next to the button text"),
+                         GTK_TYPE_WIDGET,
+                         GTK_PARAM_READWRITE);
 
   /**
    * GtkButton:image-position:
@@ -349,14 +341,13 @@ gtk_button_class_init (GtkButtonClass *klass)
    *
    * Since: 2.10
    */
-  g_object_class_install_property (gobject_class,
-                                   PROP_IMAGE_POSITION,
-                                   g_param_spec_enum ("image-position",
-                                            P_("Image position"),
-                                                      P_("The position of the image relative to the text"),
-                                                      GTK_TYPE_POSITION_TYPE,
-                                                      GTK_POS_LEFT,
-                                                      GTK_PARAM_READWRITE));
+  props[PROP_IMAGE_POSITION] =
+    g_param_spec_enum ("image-position",
+                       P_("Image position"),
+                       P_("The position of the image relative to the text"),
+                       GTK_TYPE_POSITION_TYPE,
+                       GTK_POS_LEFT,
+                       GTK_PARAM_READWRITE);
 
   /**
    * GtkButton:always-show-image:
@@ -369,13 +360,14 @@ gtk_button_class_init (GtkButtonClass *klass)
    *
    * Since: 3.6
    */
-  g_object_class_install_property (gobject_class,
-                                   PROP_ALWAYS_SHOW_IMAGE,
-                                   g_param_spec_boolean ("always-show-image",
-                                                         P_("Always show image"),
-                                                         P_("Whether the image will always be shown"),
-                                                         FALSE,
-                                                         GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+  props[PROP_ALWAYS_SHOW_IMAGE] =
+     g_param_spec_boolean ("always-show-image",
+                           P_("Always show image"),
+                           P_("Whether the image will always be shown"),
+                           FALSE,
+                           GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+
+  g_object_class_install_properties (gobject_class, LAST_PROP, props);
 
   g_object_class_override_property (gobject_class, PROP_ACTION_NAME, "action-name");
   g_object_class_override_property (gobject_class, PROP_ACTION_TARGET, "action-target");
@@ -1512,7 +1504,7 @@ gtk_button_set_relief (GtkButton *button,
   if (newrelief != priv->relief)
     {
        priv->relief = newrelief;
-       g_object_notify (G_OBJECT (button), "relief");
+       g_object_notify_by_pspec (G_OBJECT (button), props[PROP_RELIEF]);
        gtk_widget_queue_draw (GTK_WIDGET (button));
     }
 }
@@ -2240,7 +2232,7 @@ gtk_button_set_label (GtkButton   *button,
 
   gtk_button_construct_child (button);
   
-  g_object_notify (G_OBJECT (button), "label");
+  g_object_notify_by_pspec (G_OBJECT (button), props[PROP_LABEL]);
 }
 
 /**
@@ -2290,7 +2282,7 @@ gtk_button_set_use_underline (GtkButton *button,
 
       gtk_button_construct_child (button);
       
-      g_object_notify (G_OBJECT (button), "use-underline");
+      g_object_notify_by_pspec (G_OBJECT (button), props[PROP_USE_UNDERLINE]);
     }
 }
 
@@ -2340,7 +2332,7 @@ gtk_button_set_use_stock (GtkButton *button,
 
       gtk_button_construct_child (button);
       
-      g_object_notify (G_OBJECT (button), "use-stock");
+      g_object_notify_by_pspec (G_OBJECT (button), props[PROP_USE_STOCK]);
     }
 }
 
@@ -2392,7 +2384,7 @@ gtk_button_set_focus_on_click (GtkButton *button,
     {
       priv->focus_on_click = focus_on_click;
       
-      g_object_notify (G_OBJECT (button), "focus-on-click");
+      g_object_notify_by_pspec (G_OBJECT (button), props[PROP_FOCUS_ON_CLICK]);
     }
 }
 
@@ -2450,8 +2442,8 @@ gtk_button_set_alignment (GtkButton *button,
   maybe_set_alignment (button, gtk_bin_get_child (GTK_BIN (button)));
 
   g_object_freeze_notify (G_OBJECT (button));
-  g_object_notify (G_OBJECT (button), "xalign");
-  g_object_notify (G_OBJECT (button), "yalign");
+  g_object_notify_by_pspec (G_OBJECT (button), props[PROP_XALIGN]);
+  g_object_notify_by_pspec (G_OBJECT (button), props[PROP_YALIGN]);
   g_object_thaw_notify (G_OBJECT (button));
 }
 
@@ -2674,7 +2666,7 @@ gtk_button_set_image (GtkButton *button,
 
   gtk_button_construct_child (button);
 
-  g_object_notify (G_OBJECT (button), "image");
+  g_object_notify_by_pspec (G_OBJECT (button), props[PROP_IMAGE]);
 }
 
 /**
@@ -2724,7 +2716,7 @@ gtk_button_set_image_position (GtkButton       *button,
 
       gtk_button_construct_child (button);
 
-      g_object_notify (G_OBJECT (button), "image-position");
+      g_object_notify_by_pspec (G_OBJECT (button), props[PROP_IMAGE_POSITION]);
     }
 }
 
@@ -2782,7 +2774,7 @@ gtk_button_set_always_show_image (GtkButton *button,
             gtk_widget_hide (priv->image);
         }
 
-      g_object_notify (G_OBJECT (button), "always-show-image");
+      g_object_notify_by_pspec (G_OBJECT (button), props[PROP_ALWAYS_SHOW_IMAGE]);
     }
 }
 


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