static GtkWidget * panel_desktop_menu_item_create_menu (PanelDesktopMenuItem *desktop_item, gboolean append_lock_logout) { GtkWidget *desktop_menu; GtkWidget *item; #ifdef HAVE_TELEPATHY_GLIB gboolean added; #endif desktop_menu = panel_create_menu (); #ifdef HAVE_TELEPATHY_GLIB desktop_item->priv->account_manager = tp_account_manager_dup (); item = panel_menu_item_presence_new (desktop_item->priv->account_manager, PANEL_SESSION_MANAGER_PRESENCE_AVAILABLE, _("Available"), PANEL_ICON_USER_AVAILABLE, TRUE); if (item) { desktop_item->priv->presence_items = g_list_prepend (desktop_item->priv->presence_items, item); gtk_menu_shell_append (GTK_MENU_SHELL (desktop_menu), item); added = TRUE; } item = panel_menu_item_presence_new (desktop_item->priv->account_manager, PANEL_SESSION_MANAGER_PRESENCE_BUSY, _("Busy"), PANEL_ICON_USER_BUSY, TRUE); if (item) { desktop_item->priv->presence_items = g_list_prepend (desktop_item->priv->presence_items, item); gtk_menu_shell_append (GTK_MENU_SHELL (desktop_menu), item); added = TRUE; } if (added) add_menu_separator (desktop_menu); #endif item = panel_menu_item_desktop_new ("gnome-online-accounts-panel.desktop", NULL, FALSE); if (item) gtk_menu_shell_append (GTK_MENU_SHELL (desktop_menu), item); /* Do not force the string like in gnome-shell, but just use the one * from the .desktop file */ item = panel_menu_item_desktop_new ("gnome-control-center.desktop", NULL, FALSE); if (item) gtk_menu_shell_append (GTK_MENU_SHELL (desktop_menu), item); if (append_lock_logout) panel_menu_items_append_lock_logout (desktop_menu); return desktop_menu; }
static GtkWidget * create_empty_menu (void) { GtkWidget *retval; retval = panel_create_menu (); /* intercept all right button clicks makes sure they don't go to the object itself */ g_signal_connect (retval, "button_press_event", G_CALLBACK (menu_dummy_button_press_event), NULL); return retval; }
static GtkWidget * panel_place_menu_item_create_menu (PanelPlaceMenuItem *place_item) { GtkWidget *places_menu; GtkWidget *item; char *gsettings_name; char *name; char *uri; GFile *file; places_menu = panel_create_menu (); file = g_file_new_for_path (g_get_home_dir ()); uri = g_file_get_uri (file); name = panel_util_get_label_for_uri (uri); g_object_unref (file); panel_menu_items_append_place_item (PANEL_ICON_HOME, NULL, name, _("Open your personal folder"), places_menu, G_CALLBACK (activate_home_uri), uri); g_free (name); g_free (uri); if (!g_settings_get_boolean (place_item->priv->caja_prefs_settings, CAJA_PREFS_DESKTOP_IS_HOME_DIR_KEY)) { file = g_file_new_for_path (g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP)); uri = g_file_get_uri (file); g_object_unref (file); panel_menu_items_append_place_item ( PANEL_ICON_DESKTOP, NULL, /* Translators: Desktop is used here as in * "Desktop Folder" (this is not the Desktop * environment). */ C_("Desktop Folder", "Desktop"), _("Open the contents of your desktop in a folder"), places_menu, G_CALLBACK (activate_desktop_uri), /* FIXME: if the dir changes, we'd need to update the drag data since the uri is not the same */ uri); g_free (uri); } panel_place_menu_item_append_gtk_bookmarks (places_menu); add_menu_separator (places_menu); gsettings_name = g_settings_get_string (place_item->priv->caja_desktop_settings, CAJA_DESKTOP_COMPUTER_ICON_NAME_KEY); panel_menu_items_append_from_desktop (places_menu, "caja-computer.desktop", gsettings_name, TRUE); if (gsettings_name) g_free (gsettings_name); panel_place_menu_item_append_local_gio (place_item, places_menu); add_menu_separator (places_menu); panel_menu_items_append_from_desktop (places_menu, "mate-network-scheme.desktop", NULL, TRUE); panel_place_menu_item_append_remote_gio (place_item, places_menu); if (panel_is_program_in_path ("caja-connect-server")) { item = panel_menu_items_create_action_item (PANEL_ACTION_CONNECT_SERVER); if (item != NULL) gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item); } add_menu_separator (places_menu); panel_menu_items_append_from_desktop (places_menu, "mate-search-tool.desktop", NULL, FALSE); panel_recent_append_documents_menu (places_menu, place_item->priv->recent_manager); return places_menu; }
static GtkWidget * panel_place_menu_item_create_menu (PanelPlaceMenuItem *place_item) { GtkWidget *places_menu; GtkWidget *item; char *gsettings_name = NULL; char *name; char *uri; GFile *file; places_menu = panel_create_menu (); file = g_file_new_for_path (g_get_home_dir ()); uri = g_file_get_uri (file); name = panel_util_get_label_for_uri (uri); g_object_unref (file); panel_menu_items_append_place_item (PANEL_ICON_HOME, NULL, name, _("Open your personal folder"), places_menu, G_CALLBACK (activate_home_uri), uri); g_free (name); g_free (uri); if (!place_item->priv->caja_prefs_settings || !g_settings_get_boolean (place_item->priv->caja_prefs_settings, CAJA_PREFS_DESKTOP_IS_HOME_DIR_KEY)) { file = g_file_new_for_path (g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP)); uri = g_file_get_uri (file); g_object_unref (file); panel_menu_items_append_place_item ( PANEL_ICON_DESKTOP, NULL, /* Translators: Desktop is used here as in * "Desktop Folder" (this is not the Desktop * environment). */ C_("Desktop Folder", "Desktop"), _("Open the contents of your desktop in a folder"), places_menu, G_CALLBACK (activate_desktop_uri), /* FIXME: if the dir changes, we'd need to update the drag data since the uri is not the same */ uri); g_free (uri); } panel_place_menu_item_append_gtk_bookmarks (places_menu, g_settings_get_uint (place_item->priv->menubar_settings, PANEL_MENU_BAR_MAX_ITEMS_OR_SUBMENU)); add_menu_separator (places_menu); if (place_item->priv->caja_desktop_settings != NULL) gsettings_name = g_settings_get_string (place_item->priv->caja_desktop_settings, CAJA_DESKTOP_COMPUTER_ICON_NAME_KEY); if (PANEL_GLIB_STR_EMPTY (gsettings_name)) gsettings_name = g_strdup (_("Computer")); panel_menu_items_append_place_item ( PANEL_ICON_COMPUTER, NULL, gsettings_name, _("Browse all local and remote disks and folders accessible from this computer"), places_menu, G_CALLBACK (activate_uri), "computer://"); if (gsettings_name) g_free (gsettings_name); panel_place_menu_item_append_local_gio (place_item, places_menu); add_menu_separator (places_menu); panel_menu_items_append_place_item ( PANEL_ICON_NETWORK, NULL, _("Network"), _("Browse bookmarked and local network locations"), places_menu, G_CALLBACK (activate_uri), "network://"); panel_place_menu_item_append_remote_gio (place_item, places_menu); if (panel_is_program_in_path ("caja-connect-server") || panel_is_program_in_path ("nautilus-connect-server") || panel_is_program_in_path ("nemo-connect-server")) { item = panel_menu_items_create_action_item (PANEL_ACTION_CONNECT_SERVER); if (item != NULL) gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item); } add_menu_separator (places_menu); if (panel_is_program_in_path ("mate-search-tool")) panel_menu_items_append_from_desktop (places_menu, "mate-search-tool.desktop", NULL, FALSE); else panel_menu_items_append_from_desktop (places_menu, "gnome-search-tool.desktop", NULL, FALSE); panel_recent_append_documents_menu (places_menu, place_item->priv->recent_manager); /* Fix any failures of compiz/other wm's to communicate with gtk for transparency */ GtkWidget *toplevel = gtk_widget_get_toplevel (places_menu); GdkScreen *screen = gtk_widget_get_screen(GTK_WIDGET(toplevel)); GdkVisual *visual = gdk_screen_get_rgba_visual(screen); gtk_widget_set_visual(GTK_WIDGET(toplevel), visual); return places_menu; }
static GtkWidget * panel_place_menu_item_create_menu (PanelPlaceMenuItem *place_item) { GtkWidget *places_menu; GtkWidget *item; char *gconf_name; char *name; char *uri; GFile *file; places_menu = panel_create_menu (); file = g_file_new_for_path (g_get_home_dir ()); uri = g_file_get_uri (file); name = panel_util_get_label_for_uri (uri); g_object_unref (file); item = panel_menu_item_uri_new (uri, PANEL_ICON_HOME, NULL, name, _("Open your personal folder"), G_CALLBACK (activate_home_uri)); gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item); g_free (name); g_free (uri); if (!gconf_client_get_bool (panel_gconf_get_client (), DESKTOP_IS_HOME_DIR_KEY, NULL)) { file = g_file_new_for_path (g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP)); uri = g_file_get_uri (file); g_object_unref (file); item = panel_menu_item_uri_new ( /* FIXME: if the dir changes, we'd need to update the drag data since the uri is not the same */ uri, PANEL_ICON_DESKTOP, NULL, /* Translators: Desktop is used here as in * "Desktop Folder" (this is not the Desktop * environment). */ C_("Desktop Folder", "Desktop"), _("Open the contents of your desktop in a folder"), G_CALLBACK (activate_desktop_uri)); gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item); g_free (uri); } panel_place_menu_item_append_gtk_bookmarks (places_menu); add_menu_separator (places_menu); gconf_name = gconf_client_get_string (panel_gconf_get_client (), COMPUTER_NAME_KEY, NULL); if (gconf_name == NULL) { gconf_name = g_strdup (_("Computer")); } item = panel_menu_item_uri_new ("computer://", PANEL_ICON_COMPUTER, NULL, gconf_name, _("Browse all local and remote disks and folders accessible from this computer"), G_CALLBACK (activate_uri)); gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item); g_free (gconf_name); panel_place_menu_item_append_local_gio (place_item, places_menu); add_menu_separator (places_menu); item = panel_menu_item_uri_new ("network://", PANEL_ICON_NETWORK, NULL, _("Network"), _("Browse bookmarked and local network locations"), G_CALLBACK (activate_uri)); gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item); panel_place_menu_item_append_remote_gio (place_item, places_menu); if (panel_is_program_in_path ("nautilus-connect-server")) { item = panel_menu_items_create_action_item (PANEL_ACTION_CONNECT_SERVER); if (item != NULL) gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item); } add_menu_separator (places_menu); item = panel_menu_item_desktop_new ("gnome-search-tool.desktop", NULL, FALSE); if (item) gtk_menu_shell_append (GTK_MENU_SHELL (places_menu), item); panel_recent_append_documents_menu (places_menu, place_item->priv->recent_manager); return places_menu; }