diff options
author | Balló György <[email protected]> | 2014-10-04 02:49:13 +0200 |
---|---|---|
committer | Stefano Karapetsas <[email protected]> | 2014-10-13 09:27:13 +0200 |
commit | 469727d8d2f9dea7277b89c20bd4e1da0c2969f7 (patch) | |
tree | 55260ef2262dd8711a1d14585e1fd58000b5050a | |
parent | 9144c25beaf0fe63cb668c730bbaaa532069c2d3 (diff) | |
download | mate-panel-469727d8d2f9dea7277b89c20bd4e1da0c2969f7.tar.bz2 mate-panel-469727d8d2f9dea7277b89c20bd4e1da0c2969f7.tar.xz |
Places menu: don't rely on Caja desktop files
This adds better support for other GVFS-compliant file managers (e.g. nautilus, nemo, pcmanfm).
Closes https://github.com/mate-desktop/mate-panel/pull/242
-rw-r--r-- | mate-panel/panel-action-button.c | 13 | ||||
-rw-r--r-- | mate-panel/panel-menu-items.c | 52 |
2 files changed, 46 insertions, 19 deletions
diff --git a/mate-panel/panel-action-button.c b/mate-panel/panel-action-button.c index 6596f6be..0a2c9ff2 100644 --- a/mate-panel/panel-action-button.c +++ b/mate-panel/panel-action-button.c @@ -293,17 +293,26 @@ static void panel_action_connect_server (GtkWidget *widget) { GdkScreen *screen; + char *command; GError *error; screen = gtk_widget_get_screen (GTK_WIDGET (widget)); error = NULL; + if (panel_is_program_in_path ("caja-connect-server")) + command = g_strdup ("caja-connect-server"); + else if (panel_is_program_in_path ("nautilus-connect-server")) + command = g_strdup ("nautilus-connect-server"); + else + command = g_strdup ("nemo-connect-server"); + #if GTK_CHECK_VERSION (3, 0, 0) - mate_gdk_spawn_command_line_on_screen (screen, "caja-connect-server", + mate_gdk_spawn_command_line_on_screen (screen, command, #else - gdk_spawn_command_line_on_screen (screen, "caja-connect-server", + gdk_spawn_command_line_on_screen (screen, command, #endif &error); + g_free (command); if (error) { panel_error_dialog (NULL, screen, diff --git a/mate-panel/panel-menu-items.c b/mate-panel/panel-menu-items.c index 1f4e6475..05082e8e 100644 --- a/mate-panel/panel-menu-items.c +++ b/mate-panel/panel-menu-items.c @@ -1027,7 +1027,7 @@ panel_place_menu_item_create_menu (PanelPlaceMenuItem *place_item) { GtkWidget *places_menu; GtkWidget *item; - char *gsettings_name; + char *gsettings_name = NULL; char *name; char *uri; GFile *file; @@ -1072,27 +1072,39 @@ panel_place_menu_item_create_menu (PanelPlaceMenuItem *place_item) panel_place_menu_item_append_gtk_bookmarks (places_menu); add_menu_separator (places_menu); - if (place_item->priv->caja_desktop_settings != NULL) { + 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); - panel_menu_items_append_from_desktop (places_menu, - "caja-computer.desktop", - gsettings_name, - TRUE); - if (gsettings_name) + + 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_from_desktop (places_menu, - "mate-network-scheme.desktop", - NULL, - TRUE); + 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")) { + 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), @@ -1101,10 +1113,16 @@ panel_place_menu_item_create_menu (PanelPlaceMenuItem *place_item) add_menu_separator (places_menu); - panel_menu_items_append_from_desktop (places_menu, - "mate-search-tool.desktop", - NULL, - FALSE); + 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); |