X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=examples%2Fhildon-app-menu-example.c;h=b018056026f9934f9b7d1726c20c1a8b6665ad3c;hb=a6a438fefa4f44520b42921abe02f3c78df1b2e7;hp=4a4d3499d9c204ecf60904f53d6ec81be9dfa16c;hpb=7e5df20cd26c515d095a8fb0c5fd4b17d284bce6;p=hildon diff --git a/examples/hildon-app-menu-example.c b/examples/hildon-app-menu-example.c index 4a4d349..b018056 100644 --- a/examples/hildon-app-menu-example.c +++ b/examples/hildon-app-menu-example.c @@ -23,117 +23,112 @@ */ #include -#include +#include static void menu_button_clicked (GtkButton *button, GtkLabel *label) { const char *buttontext = gtk_button_get_label (button); - char *text = g_strdup_printf("Last button clicked:\n%s", buttontext); + char *text = g_strdup_printf("Last option selected:\n%s", buttontext); gtk_label_set_text (label, text); g_free (text); + g_debug ("Button clicked: %s", buttontext); } static HildonAppMenu * -create_menu (GtkWidget *label) +create_menu (GtkWidget *label, + GtkAccelGroup *accel) { GtkWidget *button; - GtkWidget *group; + HildonSizeType buttonsize = HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH; HildonAppMenu *menu = HILDON_APP_MENU (hildon_app_menu_new ()); /* Options */ - button = gtk_button_new_with_label ("Menu command one"); - g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label); + button = hildon_gtk_button_new (buttonsize); + gtk_button_set_label (GTK_BUTTON (button), "Menu command one"); + g_signal_connect_after (button, "clicked", G_CALLBACK (menu_button_clicked), label); hildon_app_menu_append (menu, GTK_BUTTON (button)); - button = gtk_button_new_with_label ("Menu command two"); - g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label); + gtk_widget_add_accelerator (button, "activate", accel, GDK_r, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); + + button = hildon_gtk_button_new (buttonsize); + gtk_button_set_label (GTK_BUTTON (button), "Menu command two"); + g_signal_connect_after (button, "clicked", G_CALLBACK (menu_button_clicked), label); hildon_app_menu_append (menu, GTK_BUTTON (button)); - button = gtk_button_new_with_label ("Menu command three"); - g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label); + button = hildon_gtk_button_new (buttonsize); + gtk_button_set_label (GTK_BUTTON (button), "Menu command three"); + g_signal_connect_after (button, "clicked", G_CALLBACK (menu_button_clicked), label); hildon_app_menu_append (menu, GTK_BUTTON (button)); - button = gtk_button_new_with_label ("Menu command four"); - g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label); + button = hildon_gtk_button_new (buttonsize); + gtk_button_set_label (GTK_BUTTON (button), "Menu command four"); + g_signal_connect_after (button, "clicked", G_CALLBACK (menu_button_clicked), label); hildon_app_menu_append (menu, GTK_BUTTON (button)); - button = gtk_button_new_with_label ("Menu command five"); - g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label); + button = hildon_gtk_button_new (buttonsize); + gtk_button_set_label (GTK_BUTTON (button), "Menu command five"); + g_signal_connect_after (button, "clicked", G_CALLBACK (menu_button_clicked), label); hildon_app_menu_append (menu, GTK_BUTTON (button)); /* Filters */ - button = gtk_toggle_button_new_with_label ("filter one"); - g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label); - hildon_app_menu_add_filter (menu, GTK_BUTTON (button), NULL); - - button = gtk_radio_button_new_with_label (NULL, "filter two"); - g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label); - group = hildon_app_menu_add_filter (menu, GTK_BUTTON (button), NULL); + button = hildon_gtk_radio_button_new (buttonsize, NULL); + gtk_button_set_label (GTK_BUTTON (button), "filter one"); + g_signal_connect_after (button, "clicked", G_CALLBACK (menu_button_clicked), label); + hildon_app_menu_add_filter (menu, GTK_BUTTON (button)); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE); - button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button), "filter three"); - g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label); - hildon_app_menu_add_filter (menu, GTK_BUTTON (button), group); + button = hildon_gtk_radio_button_new_from_widget (buttonsize, GTK_RADIO_BUTTON (button)); + gtk_button_set_label (GTK_BUTTON (button), "filter two"); + g_signal_connect_after (button, "clicked", G_CALLBACK (menu_button_clicked), label); + hildon_app_menu_add_filter (menu, GTK_BUTTON (button)); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE); - gtk_container_set_border_width (GTK_CONTAINER (menu), 30); + gtk_widget_show_all (GTK_WIDGET (menu)); return menu; } -static void -button_clicked (GtkButton *button, - HildonAppMenu *menu) -{ - hildon_app_menu_popup (menu); -} - -static void -close_app (GtkWidget *widget, - GdkEvent *event, - GtkWidget *menu) -{ - gtk_widget_destroy (GTK_WIDGET (menu)); - gtk_main_quit (); -} - int main (int argc, char **argv) { GtkWidget *win; - GtkWidget *button; GtkWidget *label; GtkWidget *label2; GtkBox *vbox; HildonAppMenu *menu; + GtkAccelGroup *accel; + + hildon_gtk_init (&argc, &argv); - gtk_init (&argc, &argv); + label = gtk_label_new ("This is an example of the\nHildonAppMenu widget.\n\n" + "Click on the titlebar\nto pop up the menu."); + label2 = gtk_label_new ("No menu option has been selected yet."); - gtk_rc_parse_string ("style \"default\" {\n" - "bg[NORMAL] = \"#505050\"" - "}\n" - "class \"HildonAppMenu\" style \"default\"\n"); + accel = gtk_accel_group_new (); + + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_CENTER); - button = gtk_button_new_with_label ("Press me"); - label = gtk_label_new ("This is an example of the\nHildonAppMenu widget"); - label2 = gtk_label_new ("No button has been clicked"); vbox = GTK_BOX (gtk_vbox_new (FALSE, 10)); - win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + win = hildon_stackable_window_new (); + + menu = create_menu (label2, accel); + + hildon_window_set_app_menu (HILDON_WINDOW (win), menu); - menu = create_menu (label2); + gtk_window_add_accel_group (GTK_WINDOW (win), accel); + g_object_unref (accel); gtk_box_pack_start (vbox, label, TRUE, TRUE, 0); - gtk_box_pack_start (vbox, button, TRUE, TRUE, 0); gtk_box_pack_start (vbox, label2, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (win), 20); gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox)); - g_signal_connect (button, "clicked", G_CALLBACK(button_clicked), menu); - g_signal_connect (win, "delete_event", G_CALLBACK(close_app), menu); + g_signal_connect (win, "delete_event", G_CALLBACK (gtk_main_quit), NULL); gtk_widget_show_all (win);