2 * This file is a part of hildon examples
4 * Copyright (C) 2008 Nokia Corporation, all rights reserved.
6 * Author: Karl Lattimer <karl.lattimer@nokia.com>
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public License
10 * as published by the Free Software Foundation; version 2.1 of
11 * the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
26 #include <hildon-button.h>
29 button_clicked_cb (HildonButton *button,
32 g_debug ("Pressed button: %s", hildon_button_get_title (button));
36 vertical_buttons_window (void)
47 win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
48 gtk_container_set_border_width (GTK_CONTAINER (win), 20);
50 /* Create and pack boxes */
51 hbox = GTK_BOX (gtk_hbox_new (FALSE, 10));
52 vbox1 = GTK_BOX (gtk_vbox_new (FALSE, 10));
53 vbox2 = GTK_BOX (gtk_vbox_new (FALSE, 10));
54 vbox3 = GTK_BOX (gtk_vbox_new (FALSE, 10));
56 gtk_box_pack_start (hbox, GTK_WIDGET (vbox1), TRUE, TRUE, 0);
57 gtk_box_pack_start (hbox, GTK_WIDGET (vbox2), TRUE, TRUE, 0);
58 gtk_box_pack_start (hbox, GTK_WIDGET (vbox3), TRUE, TRUE, 0);
61 gtk_box_pack_start (vbox1, gtk_label_new ("Finger height"), FALSE, FALSE, 0);
62 for (i = 0; i < 4; i++) {
63 char *title = g_strdup_printf ("Title %d", i);
64 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
65 HILDON_BUTTON_FINGER_HEIGHT, title,
66 i % 2 ? "Value" : NULL);
67 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
68 gtk_box_pack_start (vbox1, button, FALSE, FALSE, 0);
73 gtk_box_pack_start (vbox2, gtk_label_new ("Thumb height"), FALSE, FALSE, 0);
74 for (i = 0; i < 3; i++) {
75 char *title = g_strdup_printf ("Title %d", i);
76 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
77 HILDON_BUTTON_THUMB_HEIGHT, title,
78 i % 2 ? "Value" : NULL);
79 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
80 gtk_box_pack_start (vbox2, button, FALSE, FALSE, 0);
85 gtk_box_pack_start (vbox3, gtk_label_new ("Auto height"), FALSE, FALSE, 0);
86 for (i = 0; i < 6; i++) {
87 char *title = g_strdup_printf ("Title %d", i);
88 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE, title,
89 i % 2 ? "Value" : NULL);
90 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
91 gtk_box_pack_start (vbox3, button, FALSE, FALSE, 0);
95 gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (hbox));
97 g_signal_connect (win, "delete_event", G_CALLBACK (gtk_widget_destroy), NULL);
99 gtk_widget_show_all (win);
103 horizontal_buttons_window (void)
114 win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
115 gtk_container_set_border_width (GTK_CONTAINER (win), 20);
117 /* Create and pack boxes */
118 vbox = GTK_BOX (gtk_vbox_new (FALSE, 10));
119 hbox1 = GTK_BOX (gtk_hbox_new (FALSE, 10));
120 hbox2 = GTK_BOX (gtk_hbox_new (FALSE, 10));
121 hbox3 = GTK_BOX (gtk_hbox_new (FALSE, 10));
122 hbox4 = GTK_BOX (gtk_hbox_new (FALSE, 10));
124 gtk_box_pack_start (vbox, gtk_label_new ("(all buttons have finger height)"), FALSE, FALSE, 0);
125 gtk_box_pack_start (vbox, GTK_WIDGET (hbox1), FALSE, FALSE, 0);
126 gtk_box_pack_start (vbox, GTK_WIDGET (hbox2), FALSE, FALSE, 0);
127 gtk_box_pack_start (vbox, GTK_WIDGET (hbox3), FALSE, FALSE, 0);
128 gtk_box_pack_start (vbox, GTK_WIDGET (hbox4), FALSE, FALSE, 0);
130 /* Full screen width button */
131 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
132 HILDON_BUTTON_FULLSCREEN_WIDTH |
133 HILDON_BUTTON_FINGER_HEIGHT, "Full width", "Value");
134 gtk_box_pack_start (hbox1, button, TRUE, TRUE, 0);
135 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
137 /* Half screen width buttons */
138 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
139 HILDON_BUTTON_HALFSCREEN_WIDTH |
140 HILDON_BUTTON_FINGER_HEIGHT, "Half width 1", "Value");
141 gtk_box_pack_start (hbox2, button, TRUE, TRUE, 0);
142 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
144 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
145 HILDON_BUTTON_HALFSCREEN_WIDTH |
146 HILDON_BUTTON_FINGER_HEIGHT,
147 "Half width 2 with long title",
149 gtk_box_pack_start (hbox2, button, TRUE, TRUE, 0);
150 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
152 /* Half screen width buttons */
153 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
154 HILDON_BUTTON_HALFSCREEN_WIDTH |
155 HILDON_BUTTON_FINGER_HEIGHT, "Half width 3", NULL);
156 gtk_box_pack_start (hbox3, button, TRUE, TRUE, 0);
157 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
159 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
160 HILDON_BUTTON_HALFSCREEN_WIDTH |
161 HILDON_BUTTON_FINGER_HEIGHT,
162 "Half width 4 with very long title (REALLY long)",
163 "Value (title is truncated)");
164 gtk_box_pack_start (hbox3, button, TRUE, TRUE, 0);
165 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
167 /* Auto width button */
168 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
169 HILDON_BUTTON_AUTO_WIDTH |
170 HILDON_BUTTON_FINGER_HEIGHT,
171 "Auto width 1", "Value");
172 gtk_box_pack_start (hbox4, button, TRUE, TRUE, 0);
173 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
175 button = hildon_button_new_with_text (HILDON_BUTTON_WITH_VERTICAL_VALUE |
176 HILDON_BUTTON_AUTO_WIDTH |
177 HILDON_BUTTON_FINGER_HEIGHT,
178 "Auto width 2 with longer text", NULL);
179 gtk_box_pack_start (hbox4, button, TRUE, TRUE, 0);
180 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
182 gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox));
184 g_signal_connect (win, "delete_event", G_CALLBACK (gtk_widget_destroy), NULL);
186 gtk_widget_show_all (win);
199 gtk_init (&argc, &argv);
201 vbox = GTK_BOX (gtk_vbox_new (FALSE, 10));
203 win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
205 label = gtk_label_new ("HildonButton example");
206 but1 = gtk_button_new_with_label ("Buttons with different heights");
207 but2 = gtk_button_new_with_label ("Buttons with different widths");
209 gtk_box_pack_start (vbox, label, TRUE, TRUE, 0);
210 gtk_box_pack_start (vbox, but1, TRUE, TRUE, 0);
211 gtk_box_pack_start (vbox, but2, TRUE, TRUE, 0);
213 gtk_container_set_border_width (GTK_CONTAINER (win), 20);
214 gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox));
216 g_signal_connect (but1, "clicked", G_CALLBACK (vertical_buttons_window), NULL);
217 g_signal_connect (but2, "clicked", G_CALLBACK (horizontal_buttons_window), NULL);
218 g_signal_connect (win, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
220 gtk_widget_show_all (win);