diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2015-08-10 15:35:56 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2015-08-10 15:35:56 -0300 |
commit | e548c7139496067dca2757124963e62ce115b4d1 (patch) | |
tree | 22914dcb75a979d76ac1acb2ac58b66684506439 | |
parent | 0dff2485165b13a7dd7264aff64a7dcce6e6bb5d (diff) | |
download | gtk+-e548c7139496067dca2757124963e62ce115b4d1.tar.gz |
placesview: show Disconnect instead of Eject
Since we're dealing with networks, terms like "Eject" or
the eject button are misleading, since we're not actually
ejecting but disconnecting.
Fix that by showing the appropriate icon and tooltip.
-rw-r--r-- | gtk/gtkplacesview.c | 8 | ||||
-rw-r--r-- | gtk/gtkplacesviewrow.c | 43 | ||||
-rw-r--r-- | gtk/gtkplacesviewrowprivate.h | 5 | ||||
-rw-r--r-- | gtk/ui/gtkplacesviewrow.ui | 2 |
4 files changed, 55 insertions, 3 deletions
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c index ca02fe04b5..3721be71bf 100644 --- a/gtk/gtkplacesview.c +++ b/gtk/gtkplacesview.c @@ -701,6 +701,7 @@ add_volume (GtkPlacesView *view, "volume", volume, "mount", mount, "file", NULL, + "is-network", is_network, NULL); insert_row (view, row, is_network); @@ -748,6 +749,7 @@ add_mount (GtkPlacesView *view, "volume", NULL, "mount", mount, "file", NULL, + "is-network", is_network, NULL); insert_row (view, row, is_network); @@ -1314,10 +1316,12 @@ build_popup_menu (GtkPlacesView *view, GtkWidget *item; GMount *mount; GFile *file; + gboolean is_network; priv = gtk_places_view_get_instance_private (view); mount = gtk_places_view_row_get_mount (row); file = gtk_places_view_row_get_file (row); + is_network = gtk_places_view_row_get_is_network (row); priv->popup_menu = gtk_menu_new (); gtk_style_context_add_class (gtk_widget_get_style_context (priv->popup_menu), @@ -1373,7 +1377,7 @@ build_popup_menu (GtkPlacesView *view, /* Mount/Unmount items */ if (mount) { - item = gtk_menu_item_new_with_mnemonic (_("_Unmount")); + item = gtk_menu_item_new_with_mnemonic (is_network ? P_("_Disconnect") : P_("_Unmount")); g_signal_connect (item, "activate", G_CALLBACK (unmount_cb), @@ -1383,7 +1387,7 @@ build_popup_menu (GtkPlacesView *view, } else { - item = gtk_menu_item_new_with_mnemonic (_("_Mount")); + item = gtk_menu_item_new_with_mnemonic (is_network ? P_("_Connect") : P_("_Mount")); g_signal_connect (item, "activate", G_CALLBACK (mount_cb), diff --git a/gtk/gtkplacesviewrow.c b/gtk/gtkplacesviewrow.c index 641399f709..3e66398e29 100644 --- a/gtk/gtkplacesviewrow.c +++ b/gtk/gtkplacesviewrow.c @@ -31,6 +31,7 @@ struct _GtkPlacesViewRow GtkSpinner *busy_spinner; GtkButton *eject_button; + GtkImage *eject_icon; GtkEventBox *event_box; GtkImage *icon_image; GtkLabel *name_label; @@ -39,6 +40,8 @@ struct _GtkPlacesViewRow GVolume *volume; GMount *mount; GFile *file; + + gint is_network : 1; }; G_DEFINE_TYPE (GtkPlacesViewRow, gtk_places_view_row, GTK_TYPE_LIST_BOX_ROW) @@ -51,6 +54,7 @@ enum { PROP_VOLUME, PROP_MOUNT, PROP_FILE, + PROP_IS_NETWORK, LAST_PROP }; @@ -107,6 +111,10 @@ gtk_places_view_row_get_property (GObject *object, g_value_set_object (value, self->file); break; + case PROP_IS_NETWORK: + g_value_set_boolean (value, self->is_network); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -149,6 +157,10 @@ gtk_places_view_row_set_property (GObject *object, g_set_object (&self->file, g_value_get_object (value)); break; + case PROP_IS_NETWORK: + gtk_places_view_row_set_is_network (self, g_value_get_boolean (value)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -206,12 +218,20 @@ gtk_places_view_row_class_init (GtkPlacesViewRowClass *klass) G_TYPE_FILE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + properties[PROP_IS_NETWORK] = + g_param_spec_boolean ("is-network", + P_("Whether the row represents a network location"), + P_("Whether the row represents a network location"), + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + g_object_class_install_properties (object_class, LAST_PROP, properties); gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/ui/gtkplacesviewrow.ui"); gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, busy_spinner); gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, eject_button); + gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, eject_icon); gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, event_box); gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, icon_image); gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, name_label); @@ -282,3 +302,26 @@ gtk_places_view_row_set_busy (GtkPlacesViewRow *row, gtk_widget_set_visible (GTK_WIDGET (row->busy_spinner), is_busy); } + +gboolean +gtk_places_view_row_get_is_network (GtkPlacesViewRow *row) +{ + g_return_val_if_fail (GTK_IS_PLACES_VIEW_ROW (row), FALSE); + + return row->is_network; +} + +void +gtk_places_view_row_set_is_network (GtkPlacesViewRow *row, + gboolean is_network) +{ + if (row->is_network != is_network) + { + row->is_network = is_network; + + gtk_image_set_from_icon_name (row->eject_icon, + is_network ? "network-offline-symbolic" : "media-eject-symbolic", + GTK_ICON_SIZE_BUTTON); + gtk_widget_set_tooltip_text (GTK_WIDGET (row->eject_button), is_network ? P_("Disconnect") : P_("Unmount")); + } +} diff --git a/gtk/gtkplacesviewrowprivate.h b/gtk/gtkplacesviewrowprivate.h index 20add04241..3c46d5d9a5 100644 --- a/gtk/gtkplacesviewrowprivate.h +++ b/gtk/gtkplacesviewrowprivate.h @@ -48,6 +48,11 @@ GFile* gtk_places_view_row_get_file (GtkPlacesViewR void gtk_places_view_row_set_busy (GtkPlacesViewRow *row, gboolean is_busy); +gboolean gtk_places_view_row_get_is_network (GtkPlacesViewRow *row); + +void gtk_places_view_row_set_is_network (GtkPlacesViewRow *row, + gboolean is_network); + G_END_DECLS #endif /* GTK_PLACES_VIEW_ROW_H */ diff --git a/gtk/ui/gtkplacesviewrow.ui b/gtk/ui/gtkplacesviewrow.ui index c46079bbcf..d1e923b191 100644 --- a/gtk/ui/gtkplacesviewrow.ui +++ b/gtk/ui/gtkplacesviewrow.ui @@ -72,7 +72,7 @@ <property name="valign">center</property> <property name="tooltip-text" translatable="yes">Unmount</property> <child> - <object class="GtkImage"> + <object class="GtkImage" id="eject_icon"> <property name="visible">True</property> <property name="icon_name">media-eject-symbolic</property> <property name="icon_size">1</property> |