forked from AuroraMiddleware/gtk
placesview: List only available protocols as available
We display a list of supported protocols in the server_addresses_popover. However, this curated list contains protocols which may or may not be available, depending on the respective gvfs backend being installed. So, populate the list only with protocols which are available. https://gitlab.gnome.org/GNOME/gtk/issues/1476
This commit is contained in:
parent
3bbfff9280
commit
7601bca758
@ -74,6 +74,7 @@ struct _GtkPlacesViewPrivate
|
||||
GtkWidget *recent_servers_stack;
|
||||
GtkWidget *stack;
|
||||
GtkWidget *server_adresses_popover;
|
||||
GtkWidget *available_protocols_grid;
|
||||
GtkWidget *network_placeholder;
|
||||
GtkWidget *network_placeholder_label;
|
||||
|
||||
@ -1583,6 +1584,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,
|
||||
@ -2257,6 +2306,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);
|
||||
@ -2285,6 +2335,8 @@ gtk_places_view_init (GtkPlacesView *self)
|
||||
gtk_widget_add_controller (GTK_WIDGET (self), controller);
|
||||
|
||||
gtk_widget_init_template (GTK_WIDGET (self));
|
||||
|
||||
populate_available_protocols_grid (GTK_GRID (priv->available_protocols_grid));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -61,7 +61,7 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<object class="GtkGrid" id="available_protocols_grid">
|
||||
<property name="margin-top">12</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="row-spacing">6</property>
|
||||
@ -80,66 +80,6 @@
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">AppleTalk</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">File Transfer Protocol</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Network File System</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Samba</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">SSH File Transfer Protocol</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">WebDAV</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Prefix</property>
|
||||
@ -153,66 +93,6 @@
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label">afp://</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes" comments="Translators: do not translate ftp:// and ftps://">ftp:// or ftps://</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label">nfs://</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">smb://</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes" comments="Translators: do not translate sftp:// and ssh://">sftp:// or ssh://</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes" comments="Translators: do not translate dav:// and davs://">dav:// or davs://</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
|
Loading…
Reference in New Issue
Block a user