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 (GtkButton *b,
37 GtkToggleButton *horizontal)
46 HildonButtonFlags layout;
49 win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
50 gtk_container_set_border_width (GTK_CONTAINER (win), 20);
52 layout = gtk_toggle_button_get_active (horizontal) ?
53 HILDON_BUTTON_WITH_HORIZONTAL_VALUE :
54 HILDON_BUTTON_WITH_VERTICAL_VALUE;
56 /* Create and pack boxes */
57 hbox = GTK_BOX (gtk_hbox_new (FALSE, 10));
58 vbox1 = GTK_BOX (gtk_vbox_new (FALSE, 10));
59 vbox2 = GTK_BOX (gtk_vbox_new (FALSE, 10));
60 vbox3 = GTK_BOX (gtk_vbox_new (FALSE, 10));
62 gtk_box_pack_start (hbox, GTK_WIDGET (vbox1), TRUE, TRUE, 0);
63 gtk_box_pack_start (hbox, GTK_WIDGET (vbox2), TRUE, TRUE, 0);
64 gtk_box_pack_start (hbox, GTK_WIDGET (vbox3), TRUE, TRUE, 0);
67 gtk_box_pack_start (vbox1, gtk_label_new ("Finger height"), FALSE, FALSE, 0);
68 for (i = 0; i < 4; i++) {
69 char *title = g_strdup_printf ("Title %d", i);
70 button = hildon_button_new_with_text (layout |
71 HILDON_BUTTON_FINGER_HEIGHT, title,
72 i % 2 ? "Value" : NULL);
73 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
74 gtk_box_pack_start (vbox1, button, FALSE, FALSE, 0);
79 gtk_box_pack_start (vbox2, gtk_label_new ("Thumb height"), FALSE, FALSE, 0);
80 for (i = 0; i < 3; i++) {
81 char *title = g_strdup_printf ("Title %d", i);
82 button = hildon_button_new_with_text (layout |
83 HILDON_BUTTON_THUMB_HEIGHT, title,
84 i % 2 ? "Value" : NULL);
85 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
86 gtk_box_pack_start (vbox2, button, FALSE, FALSE, 0);
91 gtk_box_pack_start (vbox3, gtk_label_new ("Auto height"), FALSE, FALSE, 0);
92 for (i = 0; i < 6; i++) {
93 char *title = g_strdup_printf ("Title %d", i);
94 button = hildon_button_new_with_text (layout, title,
95 i % 2 ? "Value" : NULL);
96 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
97 gtk_box_pack_start (vbox3, button, FALSE, FALSE, 0);
101 gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (hbox));
103 g_signal_connect (win, "delete_event", G_CALLBACK (gtk_widget_destroy), NULL);
105 gtk_widget_show_all (win);
109 horizontal_buttons_window (GtkButton *b,
110 GtkToggleButton *horizontal)
119 HildonButtonFlags layout;
122 win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
123 gtk_container_set_border_width (GTK_CONTAINER (win), 20);
125 layout = gtk_toggle_button_get_active (horizontal) ?
126 HILDON_BUTTON_WITH_HORIZONTAL_VALUE :
127 HILDON_BUTTON_WITH_VERTICAL_VALUE;
129 /* Create and pack boxes */
130 vbox = GTK_BOX (gtk_vbox_new (FALSE, 10));
131 hbox1 = GTK_BOX (gtk_hbox_new (FALSE, 10));
132 hbox2 = GTK_BOX (gtk_hbox_new (FALSE, 10));
133 hbox3 = GTK_BOX (gtk_hbox_new (FALSE, 10));
134 hbox4 = GTK_BOX (gtk_hbox_new (FALSE, 10));
136 gtk_box_pack_start (vbox, gtk_label_new ("(all buttons have finger height)"), FALSE, FALSE, 0);
137 gtk_box_pack_start (vbox, GTK_WIDGET (hbox1), FALSE, FALSE, 0);
138 gtk_box_pack_start (vbox, GTK_WIDGET (hbox2), FALSE, FALSE, 0);
139 gtk_box_pack_start (vbox, GTK_WIDGET (hbox3), FALSE, FALSE, 0);
140 gtk_box_pack_start (vbox, GTK_WIDGET (hbox4), FALSE, FALSE, 0);
142 /* Full screen width button */
143 button = hildon_button_new_with_text (layout |
144 HILDON_BUTTON_FULLSCREEN_WIDTH |
145 HILDON_BUTTON_FINGER_HEIGHT, "Full width", "Value");
146 gtk_box_pack_start (hbox1, button, TRUE, TRUE, 0);
147 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
149 /* Half screen width buttons */
150 button = hildon_button_new_with_text (layout |
151 HILDON_BUTTON_HALFSCREEN_WIDTH |
152 HILDON_BUTTON_FINGER_HEIGHT, "Half width 1", "Value");
153 gtk_box_pack_start (hbox2, button, TRUE, TRUE, 0);
154 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
156 button = hildon_button_new_with_text (layout |
157 HILDON_BUTTON_HALFSCREEN_WIDTH |
158 HILDON_BUTTON_FINGER_HEIGHT,
159 "Half width 2 with long title",
161 gtk_box_pack_start (hbox2, button, TRUE, TRUE, 0);
162 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
164 /* Half screen width buttons */
165 button = hildon_button_new_with_text (layout |
166 HILDON_BUTTON_HALFSCREEN_WIDTH |
167 HILDON_BUTTON_FINGER_HEIGHT, "Half width 3", NULL);
168 gtk_box_pack_start (hbox3, button, TRUE, TRUE, 0);
169 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
171 button = hildon_button_new_with_text (layout |
172 HILDON_BUTTON_HALFSCREEN_WIDTH |
173 HILDON_BUTTON_FINGER_HEIGHT,
174 "Half width 4 with very long title (REALLY long)",
175 "Value (title is truncated)");
176 gtk_box_pack_start (hbox3, button, TRUE, TRUE, 0);
177 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
179 /* Auto width button */
180 button = hildon_button_new_with_text (layout |
181 HILDON_BUTTON_AUTO_WIDTH |
182 HILDON_BUTTON_FINGER_HEIGHT,
183 "Auto width 1", "Value");
184 gtk_box_pack_start (hbox4, button, TRUE, TRUE, 0);
185 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
187 button = hildon_button_new_with_text (layout |
188 HILDON_BUTTON_AUTO_WIDTH |
189 HILDON_BUTTON_FINGER_HEIGHT,
190 "Auto width 2 with longer text", NULL);
191 gtk_box_pack_start (hbox4, button, TRUE, TRUE, 0);
192 g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), NULL);
194 gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox));
196 g_signal_connect (win, "delete_event", G_CALLBACK (gtk_widget_destroy), NULL);
198 gtk_widget_show_all (win);
211 GtkWidget *horizontal_layout;
214 gtk_init (&argc, &argv);
216 vbox = GTK_BOX (gtk_vbox_new (FALSE, 10));
218 win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
220 label = gtk_label_new ("HildonButton example");
221 but1 = gtk_button_new_with_label ("Buttons with different heights");
222 but2 = gtk_button_new_with_label ("Buttons with different widths");
224 horizontal_layout = gtk_check_button_new_with_label ("Use horizontal layout");
225 align = gtk_alignment_new (0.5, 0.5, 0, 0);
226 gtk_container_add (GTK_CONTAINER (align), horizontal_layout);
228 gtk_box_pack_start (vbox, label, TRUE, TRUE, 0);
229 gtk_box_pack_start (vbox, but1, TRUE, TRUE, 0);
230 gtk_box_pack_start (vbox, but2, TRUE, TRUE, 0);
231 gtk_box_pack_start (vbox, align, FALSE, FALSE, 0);
233 gtk_container_set_border_width (GTK_CONTAINER (win), 20);
234 gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox));
236 g_signal_connect (but1, "clicked", G_CALLBACK (vertical_buttons_window), horizontal_layout);
237 g_signal_connect (but2, "clicked", G_CALLBACK (horizontal_buttons_window), horizontal_layout);
238 g_signal_connect (win, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
240 gtk_widget_show_all (win);