diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c
index 14b568dce4..96ddeaedc8 100644
--- a/gtk/gtkplacesview.c
+++ b/gtk/gtkplacesview.c
@@ -72,6 +72,7 @@ struct _GtkPlacesViewPrivate
GtkWidget *recent_servers_stack;
GtkWidget *stack;
GtkWidget *server_adresses_popover;
+ GtkWidget *available_protocols_grid;
GtkWidget *network_placeholder;
GtkWidget *network_placeholder_label;
@@ -1605,6 +1606,54 @@ unmount_cb (GtkMenuItem *item,
unmount_mount (GTK_PLACES_VIEW (view), mount);
}
+static void
+attach_protocol_row_to_grid (GtkGrid *grid,
+ const gchar *protocol_name,
+ const gchar *protocol_prefix)
+{
+ GtkWidget *name_label;
+ GtkWidget *prefix_label;
+
+ name_label = gtk_label_new (protocol_name);
+ gtk_widget_set_halign (name_label, GTK_ALIGN_START);
+ gtk_grid_attach_next_to (grid, name_label, NULL, GTK_POS_BOTTOM, 1, 1);
+
+ prefix_label = gtk_label_new (protocol_prefix);
+ gtk_widget_set_halign (prefix_label, GTK_ALIGN_START);
+ gtk_grid_attach_next_to (grid, prefix_label, name_label, GTK_POS_RIGHT, 1, 1);
+}
+
+static void
+populate_available_protocols_grid (GtkGrid *grid)
+{
+ const gchar* const *supported_protocols;
+
+ supported_protocols = g_vfs_get_supported_uri_schemes (g_vfs_get_default ());
+
+ if (g_strv_contains (supported_protocols, "afp"))
+ attach_protocol_row_to_grid (grid, _("AppleTalk"), "afp://");
+
+ if (g_strv_contains (supported_protocols, "ftp"))
+ /* Translators: do not translate ftp:// and ftps:// */
+ attach_protocol_row_to_grid (grid, _("File Transfer Protocol"), _("ftp:// or ftps://"));
+
+ if (g_strv_contains (supported_protocols, "nfs"))
+ attach_protocol_row_to_grid (grid, _("Network File System"), "nfs://");
+
+ if (g_strv_contains (supported_protocols, "smb"))
+ attach_protocol_row_to_grid (grid, _("Samba"), "smb://");
+
+ if (g_strv_contains (supported_protocols, "ssh"))
+ /* Translators: do not translate sftp:// and ssh:// */
+ attach_protocol_row_to_grid (grid, _("SSH File Transfer Protocol"), _("sftp:// or ssh://"));
+
+ if (g_strv_contains (supported_protocols, "dav"))
+ /* Translators: do not translate dav:// and davs:// */
+ attach_protocol_row_to_grid (grid, _("WebDAV"), _("dav:// or davs://"));
+
+ gtk_widget_show_all (GTK_WIDGET (grid));
+}
+
/* Constructs the popup menu if needed */
static void
build_popup_menu (GtkPlacesView *view,
@@ -2309,6 +2358,7 @@ gtk_places_view_class_init (GtkPlacesViewClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, GtkPlacesView, recent_servers_stack);
gtk_widget_class_bind_template_child_private (widget_class, GtkPlacesView, stack);
gtk_widget_class_bind_template_child_private (widget_class, GtkPlacesView, server_adresses_popover);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkPlacesView, available_protocols_grid);
gtk_widget_class_bind_template_callback (widget_class, on_address_entry_text_changed);
gtk_widget_class_bind_template_callback (widget_class, on_address_entry_show_help_pressed);
@@ -2333,6 +2383,8 @@ gtk_places_view_init (GtkPlacesView *self)
priv->space_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
gtk_widget_init_template (GTK_WIDGET (self));
+
+ populate_available_protocols_grid (GTK_GRID (priv->available_protocols_grid));
}
/**
diff --git a/gtk/ui/gtkplacesview.ui b/gtk/ui/gtkplacesview.ui
index 5990c78406..5ede5900ba 100644
--- a/gtk/ui/gtkplacesview.ui
+++ b/gtk/ui/gtkplacesview.ui
@@ -65,7 +65,7 @@
-
-
-
- 1
- AppleTalk
- 0
-
-
- 0
- 1
-
-
-
-
- 1
- File Transfer Protocol
- 0
-
-
- 0
- 2
-
-
-
-
- 1
- Network File System
- 0
-
-
- 0
- 3
-
-
-
-
- 1
- Samba
- 0
-
-
- 0
- 4
-
-
-
-
- 1
- SSH File Transfer Protocol
- 0
-
-
- 0
- 5
-
-
-
-
- 1
- WebDAV
- 0
-
-
- 0
- 6
-
-
1
@@ -166,72 +100,6 @@
0
-
-
- 1
- afp://
- 0
-
-
- 1
- 1
-
-
-
-
- 1
- ftp:// or ftps://
- 0
-
-
- 1
- 2
-
-
-
-
- 1
- nfs://
- 0
-
-
- 1
- 3
-
-
-
-
- 1
- smb://
- 0
-
-
- 1
- 4
-
-
-
-
- 1
- sftp:// or ssh://
- 0
-
-
- 1
- 5
-
-
-
-
- 1
- dav:// or davs://
- 0
-
-
- 1
- 6
-
-
3