2008-11-28 Alberto Garcia <agarcia@igalia.com>
authorAlberto Garcia <agarcia@igalia.com>
Fri, 28 Nov 2008 17:53:12 +0000 (17:53 +0000)
committerAlberto Garcia <agarcia@igalia.com>
Fri, 28 Nov 2008 17:53:12 +0000 (17:53 +0000)
* src/hildon-button.c: Add a reference to the button examples in
hildon-button-example.c

* examples/hildon-button-example.c: Added examples of the most
common button layouts.

ChangeLog
examples/hildon-button-example.c
src/hildon-button.c

index 5ea91b3..01947bb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2008-11-28  Alberto Garcia  <agarcia@igalia.com>
 
+       * src/hildon-button.c: Add a reference to the button examples in
+       hildon-button-example.c
+
+       * examples/hildon-button-example.c: Added examples of the most
+       common button layouts.
+
+2008-11-28  Alberto Garcia  <agarcia@igalia.com>
+
        * src/hildon-app-menu.c (hildon_app_menu_show)
        (hildon_app_menu_class_init): Don't show the menu if it's empty.
 
index 306eb74..0d62500 100644 (file)
@@ -125,8 +125,6 @@ vertical_buttons_window                         (GtkButton *b,
 
     gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (hbox));
 
-    g_signal_connect (win, "delete_event", G_CALLBACK (gtk_widget_destroy), NULL);
-
     gtk_widget_show_all (win);
 }
 
@@ -231,7 +229,191 @@ horizontal_buttons_window                       (GtkButton *b,
 
     gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox));
 
-    g_signal_connect (win, "delete_event", G_CALLBACK (gtk_widget_destroy), NULL);
+    gtk_widget_show_all (win);
+}
+
+static void
+common_buttons_window                           (GtkButton *b,
+                                                 gpointer   data)
+{
+    GtkWidget *win;
+    GtkWidget *button;
+    GtkWidget *panarea;
+    GtkBox *vbox;
+    GtkSizeGroup *title1, *value1, *title2, *value2, *centered;
+
+    /* Create window */
+    win = hildon_stackable_window_new ();
+    gtk_container_set_border_width (GTK_CONTAINER (win), 20);
+
+    panarea = hildon_pannable_area_new ();
+    vbox = GTK_BOX (gtk_vbox_new (FALSE, 10));
+
+    /* Single centered title */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                          "Centered title", NULL);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Single left-aligned title */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                          "Left-aligned title", NULL);
+    gtk_button_set_alignment (GTK_BUTTON (button), 0.0, 0.5);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Single right-aligned title */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                          "Right-aligned title", NULL);
+    gtk_button_set_alignment (GTK_BUTTON (button), 1.0, 0.5);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    gtk_box_pack_start (vbox, gtk_hseparator_new (), FALSE, FALSE, 0);
+
+    /* Centered title and value */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                          "Centered title", "Centered value");
+    hildon_button_set_title_alignment (HILDON_BUTTON (button), 0.5, 0.5);
+    hildon_button_set_value_alignment (HILDON_BUTTON (button), 0.5, 0.5);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Left-aligned title and value */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                          "Left-aligned title", "Left-aligned value");
+    gtk_button_set_alignment (GTK_BUTTON (button), 0.0, 0.5);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Right-aligned title and value */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                          "Right-aligned title", "Right-aligned value");
+    gtk_button_set_alignment (GTK_BUTTON (button), 1.0, 0.5);
+    hildon_button_set_title_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_set_value_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    gtk_box_pack_start (vbox, gtk_hseparator_new (), FALSE, FALSE, 0);
+
+    /* Left-aligned title and value (with image) */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                          "Left-aligned title (with image)", "Left-aligned value");
+    hildon_button_set_alignment (HILDON_BUTTON (button), 0.0, 0.5, 1.0, 0.0);
+    hildon_button_set_image (HILDON_BUTTON (button), create_image ());
+    hildon_button_set_image_position (HILDON_BUTTON (button), GTK_POS_RIGHT);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Right-aligned title and value (with image) */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                          "Right-aligned title (with image)", "Right-aligned value");
+    hildon_button_set_alignment (HILDON_BUTTON (button), 1.0, 0.5, 1.0, 0.0);
+    hildon_button_set_title_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_set_value_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_set_image (HILDON_BUTTON (button), create_image ());
+    hildon_button_set_image_position (HILDON_BUTTON (button), GTK_POS_LEFT);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    gtk_box_pack_start (vbox, gtk_hseparator_new (), FALSE, FALSE, 0);
+
+    /* Centered title and value (horizontal) */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+                                          "Centered labels", "Left and right margins are the same");
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Left-aligned title, right-aligned value (horizontal) */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+                                          "Left-aligned title", "Right-aligned value");
+    hildon_button_set_alignment (HILDON_BUTTON (button), 0.5, 0.5, 1.0, 0.0);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    gtk_box_pack_start (vbox, gtk_hseparator_new (), FALSE, FALSE, 0);
+
+    /* Centered title and value (horizontal) */
+    centered = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+                                          "Same sized labels", "All using the same size group");
+    hildon_button_set_title_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_add_size_groups (HILDON_BUTTON (button), centered, centered, NULL);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Centered title and value (horizontal) */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+                                          "Labels aligned to the center", "Both buttons are aligned");
+    hildon_button_set_title_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_add_size_groups (HILDON_BUTTON (button), centered, centered, NULL);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    gtk_box_pack_start (vbox, gtk_hseparator_new (), FALSE, FALSE, 0);
+
+    /* Left-aligned title and value (horizontal) */
+    title1 = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+    value1 = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+                                          "Left-aligned title", "Left-aligned value");
+    gtk_button_set_alignment (GTK_BUTTON (button), 0.0, 0.5);
+    hildon_button_add_size_groups (HILDON_BUTTON (button), title1, value1, NULL);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Left-aligned title and value (horizontal), sharing the same GtkSizeGroup */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+                                          "Left-aligned title (2)", "Left-aligned value (2)");
+    gtk_button_set_alignment (GTK_BUTTON (button), 0.0, 0.5);
+    hildon_button_add_size_groups (HILDON_BUTTON (button), title1, value1, NULL);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    gtk_box_pack_start (vbox, gtk_hseparator_new (), FALSE, FALSE, 0);
+
+    /* Right-aligned title and value (horizontal) */
+    title2 = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+    value2 = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+                                          "Right-aligned title", "Right-aligned value");
+    gtk_button_set_alignment (GTK_BUTTON (button), 1.0, 0.5);
+    hildon_button_set_title_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_set_value_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_add_size_groups (HILDON_BUTTON (button), title2, value2, NULL);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Right-aligned title and value (horizontal), sharing the same GtkSizeGroup */
+    button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH |
+                                          HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+                                          "Right-aligned title (2)", "Right-aligned value (2)");
+    gtk_button_set_alignment (GTK_BUTTON (button), 1.0, 0.5);
+    hildon_button_set_title_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_set_value_alignment (HILDON_BUTTON (button), 1.0, 0.5);
+    hildon_button_add_size_groups (HILDON_BUTTON (button), title2, value2, NULL);
+    gtk_box_pack_start (vbox, button, FALSE, FALSE, 0);
+    g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
+
+    /* Pack widgets */
+    hildon_pannable_area_add_with_viewport (HILDON_PANNABLE_AREA (panarea), GTK_WIDGET (vbox));
+    gtk_container_add (GTK_CONTAINER (win), panarea);
 
     gtk_widget_show_all (win);
 }
@@ -243,6 +425,7 @@ main                                            (int    argc,
     GtkWidget *win;
     GtkWidget *but1;
     GtkWidget *but2;
+    GtkWidget *but3;
     GtkWidget *label;
     GtkBox *vbox;
     GtkBox *hbox;
@@ -258,6 +441,7 @@ main                                            (int    argc,
     label = gtk_label_new ("HildonButton example");
     but1 = gtk_button_new_with_label ("Buttons with different heights");
     but2 = gtk_button_new_with_label ("Buttons with different widths");
+    but3 = gtk_button_new_with_label ("Common button layouts");
 
     horizontal_layout = gtk_check_button_new_with_label ("Use horizontal layout");
     images = gtk_check_button_new_with_label ("Use images");
@@ -267,16 +451,20 @@ main                                            (int    argc,
     gtk_container_add (GTK_CONTAINER (align), GTK_WIDGET (hbox));
 
     gtk_box_pack_start (vbox, label, TRUE, TRUE, 0);
+    gtk_box_pack_start (vbox, gtk_hseparator_new (), FALSE, FALSE, 0);
     gtk_box_pack_start (vbox, but1, TRUE, TRUE, 0);
     gtk_box_pack_start (vbox, but2, TRUE, TRUE, 0);
     gtk_box_pack_start (vbox, align, FALSE, FALSE, 0);
+    gtk_box_pack_start (vbox, gtk_hseparator_new (), FALSE, FALSE, 0);
+    gtk_box_pack_start (vbox, but3, TRUE, TRUE, 0);
 
     gtk_container_set_border_width (GTK_CONTAINER (win), 20);
     gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox));
 
     g_signal_connect (but1, "clicked", G_CALLBACK (vertical_buttons_window), NULL);
     g_signal_connect (but2, "clicked", G_CALLBACK (horizontal_buttons_window), NULL);
-    g_signal_connect (win, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
+    g_signal_connect (but3, "clicked", G_CALLBACK (common_buttons_window), NULL);
+    g_signal_connect (win, "destroy", G_CALLBACK (gtk_main_quit), NULL);
 
     gtk_widget_show_all (win);
 
index ebde54f..ffde430 100644 (file)
  * hildon_button_set_title_alignment() and
  * hildon_button_set_value_alignment().
  *
+ * In hildon-button-example.c included in the Hildon distribution you
+ * can see examples of how to create the most common button
+ * layouts.
+ *
  * If only one label is needed, #GtkButton can be used as well, see
  * also hildon_gtk_button_new().
  *