diff options
author | Charles Kerr <charles.kerr@canonical.com> | 2013-05-31 19:51:15 +0000 |
---|---|---|
committer | Tarmac <Unknown> | 2013-05-31 19:51:15 +0000 |
commit | e5d21874d8c6a0d0adfab5e5294b3d0d02445f11 (patch) | |
tree | 87d34939e9de15291122684b5b81105fc111fb14 /example/menus.c | |
parent | 27f3661cfb2266ee87a552738e5c03774dc9ae68 (diff) | |
parent | 18f2ca9e20c5ea1ac895f7892ae9d652153333ad (diff) | |
download | ayatana-ido-e5d21874d8c6a0d0adfab5e5294b3d0d02445f11.tar.gz ayatana-ido-e5d21874d8c6a0d0adfab5e5294b3d0d02445f11.tar.bz2 ayatana-ido-e5d21874d8c6a0d0adfab5e5294b3d0d02445f11.zip |
Put a framework in place to move custom menu items from the indicator packages into ido. It depends on a vendor-patch to gtk (see bug #1183505), because gtk+ does not yet have an API for inserting arbitrary menu items into menus created with gtk_menu_new_from_model().
IdoMenuItemFactory implements the GtkMenuItemFactory interface, which is used by (the patched) gtk+ to create menu items that have an "x-canonical-type" attribute.
IdoActionHelper contains some common functionality that all menu items need (watching the action group for action additions and removals, as well es enabled and state changes). It can be used to glue a menu item widget to an action in IdoMenuItemFactory.
This changeset also adds the first widget: IdoUserMenuItem (merged from lp:~charlesk/ido/add-idousermenuitem). Please follow this example when adding additional widgets.
Approved by PS Jenkins bot, Ted Gould.
Diffstat (limited to 'example/menus.c')
-rw-r--r-- | example/menus.c | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/example/menus.c b/example/menus.c index 5687b8e..1675f45 100644 --- a/example/menus.c +++ b/example/menus.c @@ -4,6 +4,7 @@ #include "idocalendarmenuitem.h" #include "idoentrymenuitem.h" #include "idoswitchmenuitem.h" +#include "idousermenuitem.h" #include "config.h" static void @@ -92,10 +93,52 @@ main (int argc, char *argv[]) image = ido_scale_menu_item_get_secondary_image (IDO_SCALE_MENU_ITEM (menuitem)); gtk_image_set_from_stock (GTK_IMAGE (image), GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); - g_signal_connect (menuitem, "slider-grabbed", G_CALLBACK (slider_grabbed), NULL); g_signal_connect (menuitem, "slider-released", G_CALLBACK (slider_released), NULL); + /** + *** Users + **/ + + menuitem = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); + + menuitem = ido_user_menu_item_new (); + g_object_set (menuitem, + "label", "Guest", + "icon-filename", NULL, + "is-logged-in", FALSE, + "is-current-user", FALSE, + NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); + + menuitem = ido_user_menu_item_new (); + g_object_set (menuitem, + "label", "Bobby Fischer", + "icon-filename", "/usr/share/pixmaps/faces/chess.jpg", + "is-logged-in", FALSE, + "is-current-user", FALSE, + NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); + + menuitem = ido_user_menu_item_new (); + g_object_set (menuitem, + "label", "Linus Torvalds", + "icon-filename", "/usr/share/pixmaps/faces/penguin.jpg", + "is-logged-in", TRUE, + "is-current-user", FALSE, + NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); + + menuitem = ido_user_menu_item_new (); + g_object_set (menuitem, "label", "Mark Shuttleworth", + "icon-filename", "/usr/share/pixmaps/faces/astronaut.jpg", + "is-logged-in", TRUE, + "is-current-user", TRUE, + NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); + + /* Add the menubar */ gtk_menu_shell_append (GTK_MENU_SHELL (menubar), root); |