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-app-menu.h>
29 menu_button_clicked (GtkButton *button,
32 const char *buttontext = gtk_button_get_label (button);
33 char *text = g_strdup_printf("Last button clicked:\n%s", buttontext);
34 gtk_label_set_text (label, text);
38 static HildonAppMenu *
39 create_menu (GtkWidget *label)
43 HildonAppMenu *menu = HILDON_APP_MENU (hildon_app_menu_new ());
46 button = gtk_button_new_with_label ("Menu command one");
47 g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
48 hildon_app_menu_append (menu, GTK_BUTTON (button));
50 button = gtk_button_new_with_label ("Menu command two");
51 g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
52 hildon_app_menu_append (menu, GTK_BUTTON (button));
54 button = gtk_button_new_with_label ("Menu command three");
55 g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
56 hildon_app_menu_append (menu, GTK_BUTTON (button));
58 button = gtk_button_new_with_label ("Menu command four");
59 g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
60 hildon_app_menu_append (menu, GTK_BUTTON (button));
62 button = gtk_button_new_with_label ("Menu command five");
63 g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
64 hildon_app_menu_append (menu, GTK_BUTTON (button));
67 button = gtk_toggle_button_new_with_label ("filter one");
68 g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
69 hildon_app_menu_add_filter (menu, GTK_BUTTON (button), NULL);
71 button = gtk_radio_button_new_with_label (NULL, "filter two");
72 g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
73 group = hildon_app_menu_add_filter (menu, GTK_BUTTON (button), NULL);
74 gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE);
76 button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button), "filter three");
77 g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
78 hildon_app_menu_add_filter (menu, GTK_BUTTON (button), group);
79 gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE);
85 button_clicked (GtkButton *button,
88 gtk_widget_show (menu);
92 close_app (GtkWidget *widget,
96 gtk_widget_destroy (GTK_WIDGET (menu));
111 gtk_init (&argc, &argv);
113 gtk_rc_parse_string ("style \"default\" {\n"
114 "bg[NORMAL] = \"#505050\""
116 "class \"HildonAppMenu\" style \"default\"\n");
118 button = gtk_button_new_with_label ("Press me");
119 label = gtk_label_new ("This is an example of the\nHildonAppMenu widget");
120 label2 = gtk_label_new ("No button has been clicked");
121 vbox = GTK_BOX (gtk_vbox_new (FALSE, 10));
122 win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
124 menu = create_menu (label2);
126 gtk_box_pack_start (vbox, label, TRUE, TRUE, 0);
127 gtk_box_pack_start (vbox, button, TRUE, TRUE, 0);
128 gtk_box_pack_start (vbox, label2, TRUE, TRUE, 0);
130 gtk_container_set_border_width (GTK_CONTAINER (win), 20);
131 gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox));
133 g_signal_connect (button, "clicked", G_CALLBACK(button_clicked), menu);
134 g_signal_connect (win, "delete_event", G_CALLBACK(close_app), menu);
136 gtk_widget_show_all (win);