[seahorse] Only enable export and copy actions if exportable objects selected



commit 100433b2c40b26dcc4c023fd8bbf65ec0fcc83cb
Author: Stef Walter <stefw collabora co uk>
Date:   Wed Nov 30 12:38:39 2011 +0100

    Only enable export and copy actions if exportable objects selected

 libseahorse/seahorse-viewer.c |   25 ++++++++++++++++++++++---
 1 files changed, 22 insertions(+), 3 deletions(-)
---
diff --git a/libseahorse/seahorse-viewer.c b/libseahorse/seahorse-viewer.c
index bb42111..ae3893b 100644
--- a/libseahorse/seahorse-viewer.c
+++ b/libseahorse/seahorse-viewer.c
@@ -51,6 +51,8 @@ struct _SeahorseViewerPrivate {
 	GHashTable *actions;
 	GtkAction *edit_delete;
 	GtkAction *properties_object;
+	GtkAction *file_export;
+	GtkAction *edit_copy;
 	GList *selection_actions;
 };
 
@@ -329,15 +331,24 @@ seahorse_viewer_real_selection_changed (SeahorseViewer *self)
 	GList *previous;
 	gboolean can_properties;
 	gboolean can_delete;
+	gboolean can_export;
 	GList *l;
 
+	can_properties = FALSE;
+	can_delete = FALSE;
+	can_export = FALSE;
+
 	objects = seahorse_viewer_get_selected_objects (self);
+	for (l = objects; l != NULL; l = g_list_next (l)) {
+		if (SEAHORSE_IS_EXPORTABLE (l->data)) {
+			can_export = TRUE;
+			break;
+		}
+	}
+
 	groups = lookup_actions_for_objects (self, objects);
 	g_list_free (objects);
 
-	can_properties = FALSE;
-	can_delete = FALSE;
-
 	/* Add all those actions */
 	for (l = groups; l != NULL; l = g_list_next (l)) {
 		if (gtk_action_group_get_action (l->data, "properties"))
@@ -348,6 +359,8 @@ seahorse_viewer_real_selection_changed (SeahorseViewer *self)
 
 	gtk_action_set_sensitive (self->pv->properties_object, can_properties);
 	gtk_action_set_sensitive (self->pv->edit_delete, can_delete);
+	gtk_action_set_sensitive (self->pv->edit_copy, can_export);
+	gtk_action_set_sensitive (self->pv->file_export, can_export);
 
 	objects = seahorse_viewer_get_selected_places (self);
 	groups = g_list_concat (groups, lookup_actions_for_objects (self, objects));
@@ -422,6 +435,10 @@ seahorse_viewer_constructed (GObject *obj)
 	g_object_ref (self->pv->edit_delete);
 	self->pv->properties_object = gtk_action_group_get_action (actions, "properties-object");
 	g_object_ref (self->pv->properties_object);
+	self->pv->edit_copy = gtk_action_group_get_action (actions, "edit-export-clipboard");
+	g_object_ref (self->pv->edit_copy);
+	self->pv->file_export = gtk_action_group_get_action (actions, "file-export");
+	g_object_ref (self->pv->file_export);
 	gtk_ui_manager_insert_action_group (self->pv->ui_manager, actions, 0);
 	g_object_unref (actions);
 }
@@ -449,7 +466,9 @@ seahorse_viewer_dispose (GObject *obj)
 	SeahorseViewer *self = SEAHORSE_VIEWER (obj);
 	GList *l;
 
+	g_clear_object (&self->pv->edit_copy);
 	g_clear_object (&self->pv->edit_delete);
+	g_clear_object (&self->pv->file_export);
 	g_clear_object (&self->pv->properties_object);
 
 	for (l = self->pv->selection_actions; l != NULL; l = g_list_next (l))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]