X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=examples%2Fhildon-button-example.c;h=3a7c0f012d081b5057b033373a6a9e47cdd8cebf;hb=61872c26bf7c893be34d4eb96db8a3beb8262f8f;hp=740b1a84fe0eb6389bef8900c42e58af5e0e143e;hpb=cd3d22e6cde6c7f09d93b54623a36b5d9b97a065;p=hildon diff --git a/examples/hildon-button-example.c b/examples/hildon-button-example.c index 740b1a8..3a7c0f0 100644 --- a/examples/hildon-button-example.c +++ b/examples/hildon-button-example.c @@ -23,7 +23,7 @@ */ #include -#include "hildon.h" +#include static GtkWidget *horizontal_layout; static GtkWidget *images; @@ -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,197 @@ 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); + + g_object_unref (title1); + g_object_unref (value1); + g_object_unref (title2); + g_object_unref (value2); + g_object_unref (centered); gtk_widget_show_all (win); } @@ -243,12 +431,13 @@ main (int argc, GtkWidget *win; GtkWidget *but1; GtkWidget *but2; + GtkWidget *but3; GtkWidget *label; GtkBox *vbox; GtkBox *hbox; GtkWidget *align; - gtk_init (&argc, &argv); + hildon_gtk_init (&argc, &argv); vbox = GTK_BOX (gtk_vbox_new (FALSE, 10)); hbox = GTK_BOX (gtk_hbox_new (TRUE, 10)); @@ -258,6 +447,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 +457,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);