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.
This commit is contained in:
@ -701,6 +701,7 @@ add_volume (GtkPlacesView *view,
|
|||||||
"volume", volume,
|
"volume", volume,
|
||||||
"mount", mount,
|
"mount", mount,
|
||||||
"file", NULL,
|
"file", NULL,
|
||||||
|
"is-network", is_network,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
insert_row (view, row, is_network);
|
insert_row (view, row, is_network);
|
||||||
@ -748,6 +749,7 @@ add_mount (GtkPlacesView *view,
|
|||||||
"volume", NULL,
|
"volume", NULL,
|
||||||
"mount", mount,
|
"mount", mount,
|
||||||
"file", NULL,
|
"file", NULL,
|
||||||
|
"is-network", is_network,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
insert_row (view, row, is_network);
|
insert_row (view, row, is_network);
|
||||||
@ -1314,10 +1316,12 @@ build_popup_menu (GtkPlacesView *view,
|
|||||||
GtkWidget *item;
|
GtkWidget *item;
|
||||||
GMount *mount;
|
GMount *mount;
|
||||||
GFile *file;
|
GFile *file;
|
||||||
|
gboolean is_network;
|
||||||
|
|
||||||
priv = gtk_places_view_get_instance_private (view);
|
priv = gtk_places_view_get_instance_private (view);
|
||||||
mount = gtk_places_view_row_get_mount (row);
|
mount = gtk_places_view_row_get_mount (row);
|
||||||
file = gtk_places_view_row_get_file (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 ();
|
priv->popup_menu = gtk_menu_new ();
|
||||||
gtk_style_context_add_class (gtk_widget_get_style_context (priv->popup_menu),
|
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 */
|
/* Mount/Unmount items */
|
||||||
if (mount)
|
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,
|
g_signal_connect (item,
|
||||||
"activate",
|
"activate",
|
||||||
G_CALLBACK (unmount_cb),
|
G_CALLBACK (unmount_cb),
|
||||||
@ -1383,7 +1387,7 @@ build_popup_menu (GtkPlacesView *view,
|
|||||||
}
|
}
|
||||||
else
|
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,
|
g_signal_connect (item,
|
||||||
"activate",
|
"activate",
|
||||||
G_CALLBACK (mount_cb),
|
G_CALLBACK (mount_cb),
|
||||||
|
@ -31,6 +31,7 @@ struct _GtkPlacesViewRow
|
|||||||
|
|
||||||
GtkSpinner *busy_spinner;
|
GtkSpinner *busy_spinner;
|
||||||
GtkButton *eject_button;
|
GtkButton *eject_button;
|
||||||
|
GtkImage *eject_icon;
|
||||||
GtkEventBox *event_box;
|
GtkEventBox *event_box;
|
||||||
GtkImage *icon_image;
|
GtkImage *icon_image;
|
||||||
GtkLabel *name_label;
|
GtkLabel *name_label;
|
||||||
@ -39,6 +40,8 @@ struct _GtkPlacesViewRow
|
|||||||
GVolume *volume;
|
GVolume *volume;
|
||||||
GMount *mount;
|
GMount *mount;
|
||||||
GFile *file;
|
GFile *file;
|
||||||
|
|
||||||
|
gint is_network : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (GtkPlacesViewRow, gtk_places_view_row, GTK_TYPE_LIST_BOX_ROW)
|
G_DEFINE_TYPE (GtkPlacesViewRow, gtk_places_view_row, GTK_TYPE_LIST_BOX_ROW)
|
||||||
@ -51,6 +54,7 @@ enum {
|
|||||||
PROP_VOLUME,
|
PROP_VOLUME,
|
||||||
PROP_MOUNT,
|
PROP_MOUNT,
|
||||||
PROP_FILE,
|
PROP_FILE,
|
||||||
|
PROP_IS_NETWORK,
|
||||||
LAST_PROP
|
LAST_PROP
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -107,6 +111,10 @@ gtk_places_view_row_get_property (GObject *object,
|
|||||||
g_value_set_object (value, self->file);
|
g_value_set_object (value, self->file);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_IS_NETWORK:
|
||||||
|
g_value_set_boolean (value, self->is_network);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
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));
|
g_set_object (&self->file, g_value_get_object (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_IS_NETWORK:
|
||||||
|
gtk_places_view_row_set_is_network (self, g_value_get_boolean (value));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
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_TYPE_FILE,
|
||||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
|
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);
|
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_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, busy_spinner);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, eject_button);
|
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, event_box);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, icon_image);
|
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, icon_image);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GtkPlacesViewRow, name_label);
|
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);
|
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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -48,6 +48,11 @@ GFile* gtk_places_view_row_get_file (GtkPlacesViewR
|
|||||||
void gtk_places_view_row_set_busy (GtkPlacesViewRow *row,
|
void gtk_places_view_row_set_busy (GtkPlacesViewRow *row,
|
||||||
gboolean is_busy);
|
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
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* GTK_PLACES_VIEW_ROW_H */
|
#endif /* GTK_PLACES_VIEW_ROW_H */
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
<property name="valign">center</property>
|
<property name="valign">center</property>
|
||||||
<property name="tooltip-text" translatable="yes">Unmount</property>
|
<property name="tooltip-text" translatable="yes">Unmount</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage" id="eject_icon">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="icon_name">media-eject-symbolic</property>
|
<property name="icon_name">media-eject-symbolic</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
|
Reference in New Issue
Block a user