2008-07-31 Alberto Garcia <agarcia@igalia.com>
[hildon] / examples / hildon-app-menu-example.c
index 4a4d349..469d1df 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include                                        <gtk/gtk.h>
+#include                                        <hildon-stackable-window.h>
 #include                                        <hildon-app-menu.h>
 
 static void
@@ -30,7 +31,7 @@ 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);
 }
@@ -39,7 +40,6 @@ static HildonAppMenu *
 create_menu                                     (GtkWidget *label)
 {
     GtkWidget *button;
-    GtkWidget *group;
     HildonAppMenu *menu = HILDON_APP_MENU (hildon_app_menu_new ());
 
     /* Options */
@@ -64,47 +64,24 @@ create_menu                                     (GtkWidget *label)
     hildon_app_menu_append (menu, GTK_BUTTON (button));
 
     /* Filters */
-    button = gtk_toggle_button_new_with_label ("filter one");
+    button = gtk_radio_button_new_with_label (NULL, "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);
+    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");
+    button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button), "filter two");
     g_signal_connect (button, "clicked", G_CALLBACK (menu_button_clicked), label);
-    hildon_app_menu_add_filter (menu, GTK_BUTTON (button), group);
+    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);
-
     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;
@@ -117,23 +94,27 @@ main                                            (int argc,
                          "}\n"
                          "class \"HildonAppMenu\" style \"default\"\n");
 
-    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");
+    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_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);
+    gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_CENTER);
+
     vbox = GTK_BOX (gtk_vbox_new (FALSE, 10));
-    win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+    win = hildon_stackable_window_new ();
 
     menu = create_menu (label2);
 
+    hildon_stackable_window_set_main_menu (HILDON_STACKABLE_WINDOW (win), menu);
+
     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);