2008-07-22 Claudio Saavedra <csaavedra@igalia.com>
authorClaudio Saavedra <csaavedra@igalia.com>
Tue, 22 Jul 2008 15:16:45 +0000 (15:16 +0000)
committerClaudio Saavedra <csaavedra@igalia.com>
Tue, 22 Jul 2008 15:16:45 +0000 (15:16 +0000)
* src/hildon-button.c: (hildon_button_set_property),
(hildon_button_class_init), (hildon_button_new_full),
(hildon_button_set_arrangement): Added "arrangement-flags"
property.

Make the HildonButtonFlags a construction-only property, to allow
subclasses to set them properly.

ChangeLog
src/hildon-button.c

index e444bbe..ff011d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-07-22  Claudio Saavedra  <csaavedra@igalia.com>
+
+       * src/hildon-button.c: (hildon_button_set_property),
+       (hildon_button_class_init), (hildon_button_new_full),
+       (hildon_button_set_arrangement): Added "arrangement-flags"
+       property.
+
+       Make the HildonButtonFlags a construction-only property, to allow
+       subclasses to set them properly.
+
 2008-07-21 Tim Janik  <timj@imendio.com>
 
        * src/hildon-code-dialog.c (hildon_code_dialog_backspace): fixed up
index 4807004..863fda0 100644 (file)
@@ -48,9 +48,12 @@ struct                                          _HildonButtonPrivate
 
 enum {
   PROP_TITLE = 1,
-  PROP_VALUE
+  PROP_VALUE,
+  PROP_ARRANGEMENT_FLAGS
 };
 
+static void hildon_button_set_arrangement (HildonButton *button, HildonButtonFlags flags);
+
 static void
 hildon_button_set_property                      (GObject      *object,
                                                  guint         prop_id,
@@ -67,6 +70,9 @@ hildon_button_set_property                      (GObject      *object,
     case PROP_VALUE:
         hildon_button_set_value (button, g_value_get_string (value));
         break;
+    case PROP_ARRANGEMENT_FLAGS:
+        hildon_button_set_arrangement (button, g_value_get_int (value));
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -125,6 +131,16 @@ hildon_button_class_init                        (HildonButtonClass *klass)
             NULL,
             G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
+    g_object_class_install_property (
+            gobject_class,
+            PROP_ARRANGEMENT_FLAGS,
+            g_param_spec_int ("arrangement-flags",
+                              "Arrangement flags",
+                              "How the button contents must be arranged",
+                              0, 64,
+                              HILDON_BUTTON_WITH_HORIZONTAL_VALUE,
+                              G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+
     gtk_widget_class_install_style_property (
         widget_class,
         g_param_spec_uint (
@@ -195,6 +211,25 @@ hildon_button_new_full                          (HildonButtonFlags  flags,
                                                  GtkSizeGroup      *value_size_group)
 {
     GtkWidget *button;
+
+    /* Create widget */
+    button = g_object_new (HILDON_TYPE_BUTTON,
+                           "arrangement-flags", flags,
+                           "title", title,
+                           "value", value,
+                           "name", "hildon-button",
+                           NULL);
+    /* Set size groups */
+    if (title_size_group || value_size_group)
+        hildon_button_set_size_groups (HILDON_BUTTON (button), title_size_group, value_size_group);
+
+    return button;
+}
+
+static void
+hildon_button_set_arrangement (HildonButton *button,
+                               HildonButtonFlags flags)
+{
     GtkWidget *box;
     GtkWidget *alignment;
     HildonButtonPrivate *priv;
@@ -202,7 +237,9 @@ hildon_button_new_full                          (HildonButtonFlags  flags,
     guint vertical_spacing;
     gint width = -1;
     gint height = -1;
-    const char *widget_name = "hildon-button";
+    char *widget_name;
+
+    priv = HILDON_BUTTON_GET_PRIVATE (button);
 
     /* Requested height */
     if (flags & HILDON_BUTTON_FINGER_HEIGHT) {
@@ -213,6 +250,8 @@ hildon_button_new_full                          (HildonButtonFlags  flags,
         widget_name = "hildon-thumb-button";
     }
 
+    gtk_widget_set_name (GTK_WIDGET (button), widget_name);
+
     /* Requested width */
     if (flags & HILDON_BUTTON_HALFSCREEN_WIDTH) {
         width = HALFSCREEN_BUTTON_WIDTH;
@@ -220,19 +259,13 @@ hildon_button_new_full                          (HildonButtonFlags  flags,
         width = FULLSCREEN_BUTTON_WIDTH;
     }
 
-    /* Create widget */
-    button = g_object_new (HILDON_TYPE_BUTTON,
-                           "title", title,
-                           "value", value,
-                           "width-request", width,
-                           "height-request", height,
-                           "name", widget_name,
-                           NULL);
-
-    priv = HILDON_BUTTON_GET_PRIVATE (button);
+    g_object_set (button,
+                  "width-request", width,
+                  "height-request", height,
+                  NULL);
 
     /* Pack everything */
-    gtk_widget_style_get (button,
+    gtk_widget_style_get (GTK_WIDGET (button),
                           "horizontal-spacing", &horizontal_spacing,
                           "vertical-spacing", &vertical_spacing,
                           NULL);
@@ -251,13 +284,7 @@ hildon_button_new_full                          (HildonButtonFlags  flags,
     gtk_container_add (GTK_CONTAINER (alignment), box);
     gtk_container_add (GTK_CONTAINER (button), alignment);
 
-    /* Set size groups */
-    if (title_size_group || value_size_group)
-        hildon_button_set_size_groups (HILDON_BUTTON (button), title_size_group, value_size_group);
-
     gtk_widget_show_all (alignment);
-
-    return button;
 }
 
 void