seahorse r2670 - in trunk: . gkr libseahorse



Author: nnielsen
Date: Tue Dec 16 03:24:33 2008
New Revision: 2670
URL: http://svn.gnome.org/viewvc/seahorse?rev=2670&view=rev

Log:
	* gkr/Makefile.am:
	* gkr/seahorse-add-keyring.glade: (moved from libseahorse)
	* gkr/seahorse-gkr-add-keyring.c: (added)
	* gkr/seahorse-gkr-commands.c: (removed)
	* gkr/seahorse-gkr-commands.c: (removed)
	* gkr/seahorse-gkr-dialogs.h:
	* gkr/seahorse-gkr-item-commands.c: (added)
	* gkr/seahorse-gkr-item-commands.h: (added)
	* gkr/seahorse-gkr-keyring-commands.c: (added)
	* gkr/seahorse-gkr-keyring-commands.h: (added)
	* gkr/seahorse-gkr-module.c: 
	* gkr/seahorse-gkr-module.h:
	* libseahorse/Makefile.am:
	* libseahorse/seahorse-add-keyring.glade: (moved to gkr)
	* libseahorse/seahorse-prefs.c:
	* libseahorse/seahorse-prefs.glade:
	* libseahorse/seahorse-prefs-keyrings.c: (removed)
	Moved the add keyring and delete keyring functionality into 
	the gkr module.

Added:
   trunk/gkr/seahorse-add-keyring.glade   (props changed)
      - copied unchanged from r2667, /trunk/libseahorse/seahorse-add-keyring.glade
   trunk/gkr/seahorse-gkr-add-keyring.c
   trunk/gkr/seahorse-gkr-item-commands.c   (contents, props changed)
      - copied, changed from r2667, /trunk/gkr/seahorse-gkr-commands.c
   trunk/gkr/seahorse-gkr-item-commands.h   (contents, props changed)
      - copied, changed from r2667, /trunk/gkr/seahorse-gkr-commands.h
   trunk/gkr/seahorse-gkr-keyring-commands.c
   trunk/gkr/seahorse-gkr-keyring-commands.h
Removed:
   trunk/gkr/seahorse-gkr-commands.c
   trunk/gkr/seahorse-gkr-commands.h
   trunk/libseahorse/seahorse-add-keyring.glade
   trunk/libseahorse/seahorse-prefs-keyrings.c
Modified:
   trunk/ChangeLog
   trunk/gkr/Makefile.am
   trunk/gkr/seahorse-gkr-dialogs.h
   trunk/gkr/seahorse-gkr-module.c
   trunk/gkr/seahorse-gkr-module.h
   trunk/libseahorse/Makefile.am
   trunk/libseahorse/seahorse-prefs.c
   trunk/libseahorse/seahorse-prefs.glade

Modified: trunk/gkr/Makefile.am
==============================================================================
--- trunk/gkr/Makefile.am	(original)
+++ trunk/gkr/Makefile.am	Tue Dec 16 03:24:33 2008
@@ -19,11 +19,13 @@
 
 libseahorse_gkr_la_SOURCES = \
 	seahorse-gkr.c seahorse-gkr.h \
-	seahorse-gkr-commands.c seahorse-gkr-commands.h \
+	seahorse-gkr-add-keyring.c \
 	seahorse-gkr-dialogs.h \
 	seahorse-gkr-item.c seahorse-gkr-item.h \
+	seahorse-gkr-item-commands.c seahorse-gkr-item-commands.h \
 	seahorse-gkr-item-properties.c \
 	seahorse-gkr-keyring.c seahorse-gkr-keyring.h \
+	seahorse-gkr-keyring-commands.c seahorse-gkr-keyring-commands.h \
 	seahorse-gkr-keyring-properties.c \
 	seahorse-gkr-module.c seahorse-gkr-module.h \
 	seahorse-gkr-operation.c seahorse-gkr-operation.h \
@@ -35,6 +37,7 @@
 	$(top_builddir)/libcryptui/libcryptui.la
 
 glade_DATA = \
+	seahorse-add-keyring.glade \
 	seahorse-gkr-item-properties.glade \
 	seahorse-gkr-keyring.glade
 

Added: trunk/gkr/seahorse-gkr-add-keyring.c
==============================================================================
--- (empty file)
+++ trunk/gkr/seahorse-gkr-add-keyring.c	Tue Dec 16 03:24:33 2008
@@ -0,0 +1,180 @@
+/*
+ * Seahorse
+ *
+ * Copyright (C) 2008 Stefan Walter
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+#include "config.h"
+
+#include "seahorse-gkr-dialogs.h"
+#include "seahorse-gkr-keyring.h"
+
+#include "seahorse-widget.h"
+#include "seahorse-util.h"
+
+#include <glib/gi18n.h>
+
+static void
+update_wait_cursor (GtkWidget *dialog, gpointer unused)
+{
+	GdkCursor *cursor;
+    
+	g_return_if_fail (dialog->window);
+    
+	/* No request active? */
+	if (!g_object_get_data (G_OBJECT (dialog), "keyring-request")) {
+		gdk_window_set_cursor (dialog->window, NULL);
+		return;
+	}
+    
+	/* 
+	 * Get the wait cursor. Create a new one and cache it on the widget 
+	 * if first time.
+	 */
+	cursor = (GdkCursor*)g_object_get_data (G_OBJECT (dialog), "wait-cursor");
+	if (!cursor) {
+		cursor = gdk_cursor_new (GDK_WATCH);
+		g_object_set_data_full (G_OBJECT (dialog), "wait-cursor", cursor, 
+		                        (GDestroyNotify)gdk_cursor_unref);
+	}
+    
+	/* Indicate that we're loading stuff */
+	gdk_window_set_cursor (dialog->window, cursor);
+}
+
+static void
+clear_request (SeahorseWidget *swidget, gboolean cancel)
+{
+	GtkWidget *dialog;
+	gpointer request;
+    
+	dialog = seahorse_widget_get_toplevel (swidget);
+	g_return_if_fail (GTK_IS_WIDGET (dialog));
+
+	request = g_object_steal_data (G_OBJECT (dialog), "keyring-request");
+	if (request && cancel)
+		gnome_keyring_cancel_request (request);
+        
+	if (GTK_WIDGET_REALIZED (dialog))
+		update_wait_cursor (dialog, NULL);
+	gtk_widget_set_sensitive (dialog, TRUE);
+}
+
+static void
+setup_request (SeahorseWidget *swidget, gpointer request)
+{
+	GtkWidget *dialog;
+	
+	g_return_if_fail (request);
+    
+	dialog = seahorse_widget_get_toplevel (swidget);
+	g_return_if_fail (GTK_IS_WIDGET (dialog));
+    
+	/* Cancel any old operation going on */
+	clear_request (swidget, TRUE);
+    
+	/* 
+	 * Start the operation and tie it to the widget so that it will get 
+	 * cancelled if the widget is destroyed before the operation is complete
+	 */ 
+	g_object_set_data_full (G_OBJECT (dialog), "keyring-request", request, 
+	                        gnome_keyring_cancel_request); 
+    
+	if (GTK_WIDGET_REALIZED (dialog))
+		update_wait_cursor (dialog, NULL);
+	else
+		g_signal_connect (dialog, "realize", G_CALLBACK (update_wait_cursor), dialog);
+    
+	gtk_widget_set_sensitive (dialog, FALSE);    
+}
+
+static void
+keyring_add_done (GnomeKeyringResult result, gpointer data)
+{
+	SeahorseWidget *swidget = SEAHORSE_WIDGET (data);
+	g_return_if_fail (swidget);
+
+	/* Clear the operation without cancelling it since it is complete */
+	clear_request (swidget, FALSE);
+    
+	/* Successful. Update the listings and stuff. */
+	if (result == GNOME_KEYRING_RESULT_OK) {
+		/* TODO: refresh_keyrings (swidget); */
+        
+	/* Setting the default keyring failed */
+	} else if (result != GNOME_KEYRING_RESULT_CANCELLED) {     
+		seahorse_util_show_error (seahorse_widget_get_toplevel (swidget),
+		                          _("Couldn't add keyring"),
+		                          gnome_keyring_result_to_message (result));
+	}
+}
+
+static void
+keyring_name_changed (GtkEntry *entry, SeahorseWidget *swidget)
+{
+	const gchar *keyring = gtk_entry_get_text (entry);
+	seahorse_widget_set_sensitive (swidget, "ok", keyring && keyring[0]);
+}
+
+static void
+properties_response (GtkDialog *dialog, int response, SeahorseWidget *swidget)
+{
+	GtkEntry *entry;
+	const gchar *keyring;
+	gpointer request;
+	
+	if (response == GTK_RESPONSE_HELP) {
+		seahorse_widget_show_help (swidget);
+		return;
+	}
+
+	if (response == GTK_RESPONSE_ACCEPT) {
+	    
+		entry = GTK_ENTRY (seahorse_widget_get_widget (swidget, "keyring-name"));
+		g_return_if_fail (entry); 
+
+		keyring = gtk_entry_get_text (entry);
+		g_return_if_fail (keyring && keyring[0]);
+	    
+		request = gnome_keyring_create (keyring, NULL, keyring_add_done, swidget, NULL);
+		g_return_if_fail (request);
+		setup_request (swidget, request);
+	}
+
+	seahorse_widget_destroy (swidget);
+}
+
+void
+seahorse_gkr_add_keyring_show (GtkWindow *parent)
+{
+	SeahorseWidget *swidget = NULL;
+	GtkWidget *widget;
+	GtkEntry *entry;
+
+	swidget = seahorse_widget_new_allow_multiple ("add-keyring", parent);
+	g_return_if_fail (swidget);
+
+	entry = GTK_ENTRY (seahorse_widget_get_widget (swidget, "keyring-name"));
+	g_return_if_fail (entry); 
+
+	glade_xml_signal_connect_data (swidget->xml, "keyring_name_changed", 
+	                               G_CALLBACK (keyring_name_changed), swidget);
+	keyring_name_changed (entry, swidget);
+
+	widget = seahorse_widget_get_toplevel (swidget);
+	g_signal_connect (widget, "response", G_CALLBACK (properties_response), swidget);
+}

Modified: trunk/gkr/seahorse-gkr-dialogs.h
==============================================================================
--- trunk/gkr/seahorse-gkr-dialogs.h	(original)
+++ trunk/gkr/seahorse-gkr-dialogs.h	Tue Dec 16 03:24:33 2008
@@ -27,8 +27,12 @@
 #include "seahorse-gkr-item.h"
 #include "seahorse-gkr-keyring.h"
 
-void            seahorse_gkr_item_properties_show (SeahorseGkrItem *git, GtkWindow *parent);
+void            seahorse_gkr_add_keyring_register     (void);
 
-void            seahorse_gkr_keyring_properties_show (SeahorseGkrKeyring *gkr, GtkWindow *parent);
+void            seahorse_gkr_add_keyring_show         (GtkWindow *parent);
+
+void            seahorse_gkr_item_properties_show     (SeahorseGkrItem *git, GtkWindow *parent);
+
+void            seahorse_gkr_keyring_properties_show  (SeahorseGkrKeyring *gkr, GtkWindow *parent);
 
 #endif /* __SEAHORSE_GKR_DIALOGS__ */

Copied: trunk/gkr/seahorse-gkr-item-commands.c (from r2667, /trunk/gkr/seahorse-gkr-commands.c)
==============================================================================
--- /trunk/gkr/seahorse-gkr-commands.c	(original)
+++ trunk/gkr/seahorse-gkr-item-commands.c	Tue Dec 16 03:24:33 2008
@@ -21,7 +21,7 @@
 
 #include "config.h"
 
-#include "seahorse-gkr-commands.h"
+#include "seahorse-gkr-item-commands.h"
 
 #include "seahorse-gkr.h"
 #include "seahorse-gkr-item.h"
@@ -34,18 +34,7 @@
 
 #include <glib/gi18n.h>
 
-enum {
-	PROP_0
-};
-
-struct _SeahorseGkrCommandsPrivate {
-	guint dummy;
-};
-
-G_DEFINE_TYPE (SeahorseGkrCommands, seahorse_gkr_commands, SEAHORSE_TYPE_COMMANDS);
-
-#define SEAHORSE_GKR_COMMANDS_GET_PRIVATE(o) \
-	(G_TYPE_INSTANCE_GET_PRIVATE ((o), SEAHORSE_TYPE_GKR_COMMANDS, SeahorseGkrCommandsPrivate))
+G_DEFINE_TYPE (SeahorseGkrItemCommands, seahorse_gkr_item_commands, SEAHORSE_TYPE_COMMANDS);
 
 /* -----------------------------------------------------------------------------
  * INTERNAL 
@@ -56,7 +45,7 @@
  */
 
 static void 
-seahorse_gkr_commands_show_properties (SeahorseCommands* base, SeahorseObject* object) 
+seahorse_gkr_item_commands_show_properties (SeahorseCommands* base, SeahorseObject* object) 
 {
 	GtkWindow *window;
 
@@ -67,15 +56,12 @@
 	if (G_OBJECT_TYPE (object) == SEAHORSE_TYPE_GKR_ITEM) 
 		seahorse_gkr_item_properties_show (SEAHORSE_GKR_ITEM (object), window); 
 	
-	else if (G_OBJECT_TYPE (object) == SEAHORSE_TYPE_GKR_KEYRING) 
-		seahorse_gkr_keyring_properties_show (SEAHORSE_GKR_KEYRING (object), window);
-	
 	else
 		g_return_if_reached ();
 }
 
 static SeahorseOperation* 
-seahorse_gkr_commands_delete_objects (SeahorseCommands* base, GList* objects) 
+seahorse_gkr_item_commands_delete_objects (SeahorseCommands* base, GList* objects) 
 {
 	gchar *prompt;
 	GtkWidget *parent;
@@ -106,19 +92,16 @@
 }
 
 static GObject* 
-seahorse_gkr_commands_constructor (GType type, guint n_props, GObjectConstructParam *props) 
+seahorse_gkr_item_commands_constructor (GType type, guint n_props, GObjectConstructParam *props) 
 {
-	GObject *obj = G_OBJECT_CLASS (seahorse_gkr_commands_parent_class)->constructor (type, n_props, props);
+	GObject *obj = G_OBJECT_CLASS (seahorse_gkr_item_commands_parent_class)->constructor (type, n_props, props);
 	SeahorseCommands *base = NULL;
 	SeahorseView *view;
 	
 	if (obj) {
 		base = SEAHORSE_COMMANDS (obj);
-		
 		view = seahorse_commands_get_view (base);
 		g_return_val_if_fail (view, NULL);
-		
-		seahorse_view_register_commands (view, base, SEAHORSE_TYPE_GKR_KEYRING);
 		seahorse_view_register_commands (view, base, SEAHORSE_TYPE_GKR_ITEM);
 	}
 	
@@ -126,65 +109,26 @@
 }
 
 static void
-seahorse_gkr_commands_init (SeahorseGkrCommands *self)
-{
-
-}
-
-static void
-seahorse_gkr_commands_dispose (GObject *obj)
-{
-	G_OBJECT_CLASS (seahorse_gkr_commands_parent_class)->dispose (obj);
-}
-
-static void
-seahorse_gkr_commands_finalize (GObject *obj)
+seahorse_gkr_item_commands_init (SeahorseGkrItemCommands *self)
 {
-	G_OBJECT_CLASS (seahorse_gkr_commands_parent_class)->finalize (obj);
-}
-
-static void
-seahorse_gkr_commands_set_property (GObject *obj, guint prop_id, const GValue *value, 
-                           GParamSpec *pspec)
-{
-	switch (prop_id) {
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
-		break;
-	}
-}
 
-static void
-seahorse_gkr_commands_get_property (GObject *obj, guint prop_id, GValue *value, 
-                         	  GParamSpec *pspec)
-{
-	switch (prop_id) {
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
-		break;
-	}
 }
 
 static void
-seahorse_gkr_commands_class_init (SeahorseGkrCommandsClass *klass)
+seahorse_gkr_item_commands_class_init (SeahorseGkrItemCommandsClass *klass)
 {
 	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 	SeahorseCommandsClass *cmd_class = SEAHORSE_COMMANDS_CLASS (klass);
 	
-	seahorse_gkr_commands_parent_class = g_type_class_peek_parent (klass);
-	g_type_class_add_private (klass, sizeof (SeahorseGkrCommandsPrivate));
+	seahorse_gkr_item_commands_parent_class = g_type_class_peek_parent (klass);
 
-	gobject_class->constructor = seahorse_gkr_commands_constructor;
-	gobject_class->dispose = seahorse_gkr_commands_dispose;
-	gobject_class->finalize = seahorse_gkr_commands_finalize;
-	gobject_class->set_property = seahorse_gkr_commands_set_property;
-	gobject_class->get_property = seahorse_gkr_commands_get_property;
-    
-	cmd_class->show_properties = seahorse_gkr_commands_show_properties;
-	cmd_class->delete_objects = seahorse_gkr_commands_delete_objects;
+	gobject_class->constructor = seahorse_gkr_item_commands_constructor;
+
+	cmd_class->show_properties = seahorse_gkr_item_commands_show_properties;
+	cmd_class->delete_objects = seahorse_gkr_item_commands_delete_objects;
 
 	/* Register this class as a commands */
-	seahorse_registry_register_type (seahorse_registry_get (), SEAHORSE_TYPE_GKR_COMMANDS, 
+	seahorse_registry_register_type (seahorse_registry_get (), SEAHORSE_TYPE_GKR_ITEM_COMMANDS, 
 	                                 SEAHORSE_GKR_TYPE_STR, "commands", NULL, NULL);
 }
 
@@ -192,8 +136,3 @@
  * PUBLIC 
  */
 
-SeahorseGkrCommands*
-seahorse_gkr_commands_new (void)
-{
-	return g_object_new (SEAHORSE_TYPE_GKR_COMMANDS, NULL);
-}

Copied: trunk/gkr/seahorse-gkr-item-commands.h (from r2667, /trunk/gkr/seahorse-gkr-commands.h)
==============================================================================
--- /trunk/gkr/seahorse-gkr-commands.h	(original)
+++ trunk/gkr/seahorse-gkr-item-commands.h	Tue Dec 16 03:24:33 2008
@@ -19,34 +19,31 @@
  * 02111-1307, USA.  
  */
 
-#ifndef __SEAHORSE_GKR_COMMANDS_H__
-#define __SEAHORSE_GKR_COMMANDS_H__
+#ifndef __SEAHORSE_GKR_ITEM_COMMANDS_H__
+#define __SEAHORSE_GKR_ITEM_COMMANDS_H__
 
 #include "seahorse-commands.h"
 
 #include <glib-object.h>
 
-#define SEAHORSE_TYPE_GKR_COMMANDS               (seahorse_gkr_commands_get_type ())
-#define SEAHORSE_GKR_COMMANDS(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), SEAHORSE_TYPE_GKR_COMMANDS, SeahorseGkrCommands))
-#define SEAHORSE_GKR_COMMANDS_CLASS(klass)       (G_TYPE_CHECK_CLASS_CAST ((klass), SEAHORSE_TYPE_GKR_COMMANDS, SeahorseGkrCommandsClass))
-#define SEAHORSE_IS_GKR_COMMANDS(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SEAHORSE_TYPE_GKR_COMMANDS))
-#define SEAHORSE_IS_GKR_COMMANDS_CLASS(klass)    (G_TYPE_CHECK_CLASS_TYPE ((klass), SEAHORSE_TYPE_GKR_COMMANDS))
-#define SEAHORSE_GKR_COMMANDS_GET_CLASS(obj)     (G_TYPE_INSTANCE_GET_CLASS ((obj), SEAHORSE_TYPE_GKR_COMMANDS, SeahorseGkrCommandsClass))
-
-typedef struct _SeahorseGkrCommands SeahorseGkrCommands;
-typedef struct _SeahorseGkrCommandsClass SeahorseGkrCommandsClass;
-typedef struct _SeahorseGkrCommandsPrivate SeahorseGkrCommandsPrivate;
-    
-struct _SeahorseGkrCommands {
+#define SEAHORSE_TYPE_GKR_ITEM_COMMANDS               (seahorse_gkr_item_commands_get_type ())
+#define SEAHORSE_GKR_ITEM_COMMANDS(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), SEAHORSE_TYPE_GKR_ITEM_COMMANDS, SeahorseGkrItemCommands))
+#define SEAHORSE_GKR_ITEM_COMMANDS_CLASS(klass)       (G_TYPE_CHECK_CLASS_CAST ((klass), SEAHORSE_TYPE_GKR_ITEM_COMMANDS, SeahorseGkrItemCommandsClass))
+#define SEAHORSE_IS_GKR_ITEM_COMMANDS(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SEAHORSE_TYPE_GKR_ITEM_COMMANDS))
+#define SEAHORSE_IS_GKR_ITEM_COMMANDS_CLASS(klass)    (G_TYPE_CHECK_CLASS_TYPE ((klass), SEAHORSE_TYPE_GKR_ITEM_COMMANDS))
+#define SEAHORSE_GKR_ITEM_COMMANDS_GET_CLASS(obj)     (G_TYPE_INSTANCE_GET_CLASS ((obj), SEAHORSE_TYPE_GKR_ITEM_COMMANDS, SeahorseGkrItemCommandsClass))
+
+typedef struct _SeahorseGkrItemCommands SeahorseGkrItemCommands;
+typedef struct _SeahorseGkrItemCommandsClass SeahorseGkrItemCommandsClass;
+
+struct _SeahorseGkrItemCommands {
 	SeahorseCommands parent;
 };
 
-struct _SeahorseGkrCommandsClass {
+struct _SeahorseGkrItemCommandsClass {
 	SeahorseCommandsClass parent_class;
 };
 
-GType                  seahorse_gkr_commands_get_type               (void);
-
-SeahorseGkrCommands*   seahorse_gkr_commands_new                    (void);
+GType                      seahorse_gkr_item_commands_get_type               (void);
 
-#endif /* __SEAHORSE_GKR_COMMANDS_H__ */
+#endif /* __SEAHORSE_GKR_ITEM_COMMANDS_H__ */

Added: trunk/gkr/seahorse-gkr-keyring-commands.c
==============================================================================
--- (empty file)
+++ trunk/gkr/seahorse-gkr-keyring-commands.c	Tue Dec 16 03:24:33 2008
@@ -0,0 +1,168 @@
+/* 
+ * Seahorse
+ * 
+ * Copyright (C) 2008 Stefan Walter
+ * 
+ * This program is free software; you can redistribute it and/or modify 
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *  
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *  
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.  
+ */
+
+#include "config.h"
+
+#include "seahorse-gkr-keyring-commands.h"
+
+#include "seahorse-gkr.h"
+#include "seahorse-gkr-keyring.h"
+#include "seahorse-gkr-dialogs.h"
+
+#include "common/seahorse-registry.h"
+
+#include "seahorse-source.h"
+#include "seahorse-util.h"
+
+#include <glib/gi18n.h>
+
+enum {
+	PROP_0
+};
+
+G_DEFINE_TYPE (SeahorseGkrKeyringCommands, seahorse_gkr_keyring_commands, SEAHORSE_TYPE_COMMANDS);
+
+/* -----------------------------------------------------------------------------
+ * INTERNAL 
+ */
+
+static void
+on_gkr_add_keyring (GtkAction *action, gpointer unused)
+{
+	g_return_if_fail (GTK_IS_ACTION (action));
+	seahorse_gkr_add_keyring_show (NULL);
+}
+
+static const GtkActionEntry ACTION_ENTRIES[] = {
+	{ "gkr-add-keyring", "folder", N_ ("Password Keyring"), "", 
+	  N_("Used to store application and network passwords"), G_CALLBACK (on_gkr_add_keyring) }
+};
+
+/* -----------------------------------------------------------------------------
+ * OBJECT 
+ */
+
+static void 
+seahorse_gkr_keyring_commands_show_properties (SeahorseCommands* base, SeahorseObject* object) 
+{
+	GtkWindow *window;
+
+	g_return_if_fail (SEAHORSE_IS_OBJECT (object));
+	g_return_if_fail (seahorse_object_get_tag (object) == SEAHORSE_GKR_TYPE);
+
+	window = seahorse_view_get_window (seahorse_commands_get_view (base));
+	if (G_OBJECT_TYPE (object) == SEAHORSE_TYPE_GKR_KEYRING) 
+		seahorse_gkr_keyring_properties_show (SEAHORSE_GKR_KEYRING (object), window);
+	
+	else
+		g_return_if_reached ();
+}
+
+static SeahorseOperation* 
+seahorse_gkr_keyring_commands_delete_objects (SeahorseCommands* base, GList* objects) 
+{
+	gchar *prompt;
+	
+	if (!objects)
+		return NULL;
+
+	prompt = g_strdup_printf (_ ("Are you sure you want to delete the password keyring '%s'?"), 
+	                          seahorse_object_get_label (objects->data));
+
+	return seahorse_object_delete (objects->data);
+}
+
+static GObject* 
+seahorse_gkr_keyring_commands_constructor (GType type, guint n_props, GObjectConstructParam *props) 
+{
+	GObject *obj = G_OBJECT_CLASS (seahorse_gkr_keyring_commands_parent_class)->constructor (type, n_props, props);
+	SeahorseCommands *base = NULL;
+	SeahorseView *view;
+	
+	if (obj) {
+		base = SEAHORSE_COMMANDS (obj);
+		view = seahorse_commands_get_view (base);
+		g_return_val_if_fail (view, NULL);
+		seahorse_view_register_commands (view, base, SEAHORSE_TYPE_GKR_KEYRING);
+	}
+	
+	return obj;
+}
+
+static void
+seahorse_gkr_keyring_commands_init (SeahorseGkrKeyringCommands *self)
+{
+
+}
+
+static void
+seahorse_gkr_keyring_commands_set_property (GObject *obj, guint prop_id, const GValue *value, 
+                           GParamSpec *pspec)
+{
+	switch (prop_id) {
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+seahorse_gkr_keyring_commands_get_property (GObject *obj, guint prop_id, GValue *value, 
+                         	  GParamSpec *pspec)
+{
+	switch (prop_id) {
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+seahorse_gkr_keyring_commands_class_init (SeahorseGkrKeyringCommandsClass *klass)
+{
+	GtkActionGroup *actions;
+	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+	SeahorseCommandsClass *cmd_class = SEAHORSE_COMMANDS_CLASS (klass);
+	
+	seahorse_gkr_keyring_commands_parent_class = g_type_class_peek_parent (klass);
+
+	gobject_class->constructor = seahorse_gkr_keyring_commands_constructor;
+
+	cmd_class->show_properties = seahorse_gkr_keyring_commands_show_properties;
+	cmd_class->delete_objects = seahorse_gkr_keyring_commands_delete_objects;
+
+	/* Register this class as a commands */
+	seahorse_registry_register_type (seahorse_registry_get (), SEAHORSE_TYPE_GKR_KEYRING_COMMANDS, 
+	                                 SEAHORSE_GKR_TYPE_STR, "commands", NULL, NULL);
+	
+	
+	/* Register this as a generator */
+	actions = gtk_action_group_new ("gkr-generate");
+	gtk_action_group_set_translation_domain (actions, GETTEXT_PACKAGE);
+	gtk_action_group_add_actions (actions, ACTION_ENTRIES, G_N_ELEMENTS (ACTION_ENTRIES), NULL);
+	seahorse_registry_register_object (NULL, G_OBJECT (actions), SEAHORSE_GKR_TYPE_STR, "generator", NULL);
+}
+
+/* -----------------------------------------------------------------------------
+ * PUBLIC 
+ */
+
+

Added: trunk/gkr/seahorse-gkr-keyring-commands.h
==============================================================================
--- (empty file)
+++ trunk/gkr/seahorse-gkr-keyring-commands.h	Tue Dec 16 03:24:33 2008
@@ -0,0 +1,52 @@
+/* 
+ * Seahorse
+ * 
+ * Copyright (C) 2008 Stefan Walter
+ * 
+ * This program is free software; you can redistribute it and/or modify 
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *  
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *  
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.  
+ */
+
+#ifndef __SEAHORSE_GKR_KEYRING_COMMANDS_H__
+#define __SEAHORSE_GKR_KEYRING_COMMANDS_H__
+
+#include "seahorse-commands.h"
+
+#include <glib-object.h>
+
+#define SEAHORSE_TYPE_GKR_KEYRING_COMMANDS               (seahorse_gkr_keyring_commands_get_type ())
+#define SEAHORSE_GKR_KEYRING_COMMANDS(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), SEAHORSE_TYPE_GKR_KEYRING_COMMANDS, SeahorseGkrKeyringCommands))
+#define SEAHORSE_GKR_KEYRING_COMMANDS_CLASS(klass)       (G_TYPE_CHECK_CLASS_CAST ((klass), SEAHORSE_TYPE_GKR_KEYRING_COMMANDS, SeahorseGkrKeyringCommandsClass))
+#define SEAHORSE_IS_GKR_KEYRING_COMMANDS(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SEAHORSE_TYPE_GKR_KEYRING_COMMANDS))
+#define SEAHORSE_IS_GKR_KEYRING_COMMANDS_CLASS(klass)    (G_TYPE_CHECK_CLASS_TYPE ((klass), SEAHORSE_TYPE_GKR_KEYRING_COMMANDS))
+#define SEAHORSE_GKR_KEYRING_COMMANDS_GET_CLASS(obj)     (G_TYPE_INSTANCE_GET_CLASS ((obj), SEAHORSE_TYPE_GKR_KEYRING_COMMANDS, SeahorseGkrKeyringCommandsClass))
+
+typedef struct _SeahorseGkrKeyringCommands SeahorseGkrKeyringCommands;
+typedef struct _SeahorseGkrKeyringCommandsClass SeahorseGkrKeyringCommandsClass;
+typedef struct _SeahorseGkrKeyringCommandsPrivate SeahorseGkrKeyringCommandsPrivate;
+    
+struct _SeahorseGkrKeyringCommands {
+	SeahorseCommands parent;
+};
+
+struct _SeahorseGkrKeyringCommandsClass {
+	SeahorseCommandsClass parent_class;
+};
+
+GType                         seahorse_gkr_keyring_commands_get_type               (void);
+
+SeahorseGkrKeyringCommands*   seahorse_gkr_keyring_commands_new                    (void);
+
+#endif /* __SEAHORSE_GKR_KEYRING_COMMANDS_H__ */

Modified: trunk/gkr/seahorse-gkr-module.c
==============================================================================
--- trunk/gkr/seahorse-gkr-module.c	(original)
+++ trunk/gkr/seahorse-gkr-module.c	Tue Dec 16 03:24:33 2008
@@ -23,7 +23,9 @@
 
 #include "seahorse-gkr-module.h"
 
-#include "seahorse-gkr-commands.h"
+#include "seahorse-gkr-dialogs.h"
+#include "seahorse-gkr-item-commands.h"
+#include "seahorse-gkr-keyring-commands.h"
 #include "seahorse-gkr-source.h"
 
 #include "seahorse-context.h"
@@ -40,5 +42,6 @@
 	
 	/* Let these classes register themselves */
 	g_type_class_unref (g_type_class_ref (SEAHORSE_TYPE_GKR_SOURCE));
-	g_type_class_unref (g_type_class_ref (SEAHORSE_TYPE_GKR_COMMANDS));
+	g_type_class_unref (g_type_class_ref (SEAHORSE_TYPE_GKR_ITEM_COMMANDS));
+	g_type_class_unref (g_type_class_ref (SEAHORSE_TYPE_GKR_KEYRING_COMMANDS));
 }

Modified: trunk/gkr/seahorse-gkr-module.h
==============================================================================
--- trunk/gkr/seahorse-gkr-module.h	(original)
+++ trunk/gkr/seahorse-gkr-module.h	Tue Dec 16 03:24:33 2008
@@ -25,6 +25,6 @@
 #define SEAHORSE_GKR_STR                     "gnome-keyring"
 #define SEAHORSE_GKR                         (g_quark_from_static_string (SEAHORSE_GKR_STR))
 
-void         seahorse_gkr_module_init        (void);
+void             seahorse_gkr_module_init        (void);
 
 #endif /*SEAHORSEGKR_H_*/

Modified: trunk/libseahorse/Makefile.am
==============================================================================
--- trunk/libseahorse/Makefile.am	(original)
+++ trunk/libseahorse/Makefile.am	Tue Dec 16 03:24:33 2008
@@ -45,7 +45,6 @@
 	seahorse-operation.c seahorse-operation.h \
 	seahorse-passphrase.c seahorse-passphrase.h \
 	seahorse-prefs.c seahorse-prefs.h \
-	seahorse-prefs-keyrings.c \
 	seahorse-progress.c seahorse-progress.h \
 	seahorse-secure-memory.c seahorse-secure-memory.h \
 	seahorse-secure-entry.c seahorse-secure-entry.h \
@@ -78,7 +77,6 @@
 
 glade_DATA = \
 	seahorse-prefs.glade \
-	seahorse-add-keyring.glade \
 	seahorse-add-keyserver.glade \
 	seahorse-progress.glade \
 	seahorse-notify.glade

Modified: trunk/libseahorse/seahorse-prefs.c
==============================================================================
--- trunk/libseahorse/seahorse-prefs.c	(original)
+++ trunk/libseahorse/seahorse-prefs.c	Tue Dec 16 03:24:33 2008
@@ -37,9 +37,6 @@
 /* From seahorse-prefs-cache.c */
 void seahorse_prefs_cache (SeahorseWidget *widget);
 
-/* From sehorse-prefs-keyrings.c */
-void seahorse_prefs_keyrings (SeahorseWidget *widget);
-
 /* Key Server Prefs --------------------------------------------------------- */
 
 #ifdef WITH_KEYSERVER
@@ -502,8 +499,6 @@
     seahorse_prefs_remove_tab (swidget, widget);
 #endif    
 
-    seahorse_prefs_keyrings (swidget);
-
     seahorse_widget_show (swidget);
     return swidget;
 }

Modified: trunk/libseahorse/seahorse-prefs.glade
==============================================================================
--- trunk/libseahorse/seahorse-prefs.glade	(original)
+++ trunk/libseahorse/seahorse-prefs.glade	Tue Dec 16 03:24:33 2008
@@ -81,490 +81,6 @@
 	  <property name="enable_popup">False</property>
 
 	  <child>
-	    <widget class="GtkEventBox" id="keyring-tab">
-	      <property name="visible">True</property>
-	      <property name="visible_window">True</property>
-	      <property name="above_child">False</property>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox333">
-		  <property name="border_width">12</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">12</property>
-
-		  <child>
-		    <widget class="GtkFrame" id="keyring-frame">
-		      <property name="visible">True</property>
-		      <property name="label_xalign">0</property>
-		      <property name="label_yalign">0.5</property>
-		      <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-		      <child>
-			<widget class="GtkAlignment" id="alignment7">
-			  <property name="visible">True</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xscale">1</property>
-			  <property name="yscale">1</property>
-			  <property name="top_padding">6</property>
-			  <property name="bottom_padding">0</property>
-			  <property name="left_padding">12</property>
-			  <property name="right_padding">0</property>
-
-			  <child>
-			    <widget class="GtkVBox" id="vbox29">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">6</property>
-
-			      <child>
-				<widget class="GtkScrolledWindow" id="scrolledwindow2">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-				  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-				  <property name="shadow_type">GTK_SHADOW_IN</property>
-				  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-				  <child>
-				    <widget class="GtkTreeView" id="keyring-list">
-				      <property name="height_request">150</property>
-				      <property name="visible">True</property>
-				      <property name="can_focus">True</property>
-				      <property name="headers_visible">False</property>
-				      <property name="rules_hint">False</property>
-				      <property name="reorderable">False</property>
-				      <property name="enable_search">True</property>
-				      <property name="fixed_height_mode">False</property>
-				      <property name="hover_selection">False</property>
-				      <property name="hover_expand">False</property>
-				    </widget>
-				  </child>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">True</property>
-				  <property name="fill">True</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkHBox" id="hbox13">
-				  <property name="visible">True</property>
-				  <property name="homogeneous">False</property>
-				  <property name="spacing">12</property>
-
-				  <child>
-				    <widget class="GtkButton" id="add-keyring">
-				      <property name="visible">True</property>
-				      <property name="sensitive">False</property>
-				      <property name="can_focus">True</property>
-				      <property name="relief">GTK_RELIEF_NORMAL</property>
-				      <property name="focus_on_click">True</property>
-				      <signal name="clicked" handler="keyring_add_clicked" last_modification_time="Sat, 08 Dec 2007 20:52:46 GMT"/>
-
-				      <child>
-					<widget class="GtkAlignment" id="alignment5">
-					  <property name="visible">True</property>
-					  <property name="xalign">0.5</property>
-					  <property name="yalign">0.5</property>
-					  <property name="xscale">0</property>
-					  <property name="yscale">0</property>
-					  <property name="top_padding">0</property>
-					  <property name="bottom_padding">0</property>
-					  <property name="left_padding">0</property>
-					  <property name="right_padding">0</property>
-
-					  <child>
-					    <widget class="GtkHBox" id="hbox11">
-					      <property name="visible">True</property>
-					      <property name="homogeneous">False</property>
-					      <property name="spacing">2</property>
-
-					      <child>
-						<widget class="GtkImage" id="image5">
-						  <property name="visible">True</property>
-						  <property name="stock">gtk-add</property>
-						  <property name="icon_size">4</property>
-						  <property name="xalign">0.5</property>
-						  <property name="yalign">0.5</property>
-						  <property name="xpad">0</property>
-						  <property name="ypad">0</property>
-						</widget>
-						<packing>
-						  <property name="padding">0</property>
-						  <property name="expand">False</property>
-						  <property name="fill">False</property>
-						</packing>
-					      </child>
-
-					      <child>
-						<widget class="GtkLabel" id="label25">
-						  <property name="visible">True</property>
-						  <property name="label" translatable="yes">_Add Keyring</property>
-						  <property name="use_underline">True</property>
-						  <property name="use_markup">False</property>
-						  <property name="justify">GTK_JUSTIFY_LEFT</property>
-						  <property name="wrap">False</property>
-						  <property name="selectable">False</property>
-						  <property name="xalign">0.5</property>
-						  <property name="yalign">0.5</property>
-						  <property name="xpad">0</property>
-						  <property name="ypad">0</property>
-						  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-						  <property name="width_chars">-1</property>
-						  <property name="single_line_mode">False</property>
-						  <property name="angle">0</property>
-						</widget>
-						<packing>
-						  <property name="padding">0</property>
-						  <property name="expand">False</property>
-						  <property name="fill">False</property>
-						</packing>
-					      </child>
-					    </widget>
-					  </child>
-					</widget>
-				      </child>
-				    </widget>
-				    <packing>
-				      <property name="padding">0</property>
-				      <property name="expand">False</property>
-				      <property name="fill">False</property>
-				    </packing>
-				  </child>
-
-				  <child>
-				    <widget class="GtkButton" id="remove-keyring">
-				      <property name="visible">True</property>
-				      <property name="sensitive">False</property>
-				      <property name="can_focus">True</property>
-				      <property name="relief">GTK_RELIEF_NORMAL</property>
-				      <property name="focus_on_click">True</property>
-				      <signal name="clicked" handler="keyring_remove_clicked" last_modification_time="Sat, 08 Dec 2007 20:52:58 GMT"/>
-
-				      <child>
-					<widget class="GtkAlignment" id="alignment6">
-					  <property name="visible">True</property>
-					  <property name="xalign">0.5</property>
-					  <property name="yalign">0.5</property>
-					  <property name="xscale">0</property>
-					  <property name="yscale">0</property>
-					  <property name="top_padding">0</property>
-					  <property name="bottom_padding">0</property>
-					  <property name="left_padding">0</property>
-					  <property name="right_padding">0</property>
-
-					  <child>
-					    <widget class="GtkHBox" id="hbox12">
-					      <property name="visible">True</property>
-					      <property name="homogeneous">False</property>
-					      <property name="spacing">2</property>
-
-					      <child>
-						<widget class="GtkImage" id="image6">
-						  <property name="visible">True</property>
-						  <property name="stock">gtk-remove</property>
-						  <property name="icon_size">4</property>
-						  <property name="xalign">0.5</property>
-						  <property name="yalign">0.5</property>
-						  <property name="xpad">0</property>
-						  <property name="ypad">0</property>
-						</widget>
-						<packing>
-						  <property name="padding">0</property>
-						  <property name="expand">False</property>
-						  <property name="fill">False</property>
-						</packing>
-					      </child>
-
-					      <child>
-						<widget class="GtkLabel" id="label26">
-						  <property name="visible">True</property>
-						  <property name="label" translatable="yes">_Remove Keyring</property>
-						  <property name="use_underline">True</property>
-						  <property name="use_markup">False</property>
-						  <property name="justify">GTK_JUSTIFY_LEFT</property>
-						  <property name="wrap">False</property>
-						  <property name="selectable">False</property>
-						  <property name="xalign">0.5</property>
-						  <property name="yalign">0.5</property>
-						  <property name="xpad">0</property>
-						  <property name="ypad">0</property>
-						  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-						  <property name="width_chars">-1</property>
-						  <property name="single_line_mode">False</property>
-						  <property name="angle">0</property>
-						</widget>
-						<packing>
-						  <property name="padding">0</property>
-						  <property name="expand">False</property>
-						  <property name="fill">False</property>
-						</packing>
-					      </child>
-					    </widget>
-					  </child>
-					</widget>
-				      </child>
-				    </widget>
-				    <packing>
-				      <property name="padding">0</property>
-				      <property name="expand">False</property>
-				      <property name="fill">False</property>
-				    </packing>
-				  </child>
-
-				  <child>
-				    <widget class="GtkButton" id="password-keyring">
-				      <property name="visible">True</property>
-				      <property name="sensitive">False</property>
-				      <property name="can_focus">True</property>
-				      <property name="relief">GTK_RELIEF_NORMAL</property>
-				      <property name="focus_on_click">True</property>
-				      <signal name="clicked" handler="keyring_password_clicked" last_modification_time="Sat, 08 Dec 2007 20:53:08 GMT"/>
-
-				      <child>
-					<widget class="GtkAlignment" id="alignment4">
-					  <property name="visible">True</property>
-					  <property name="xalign">0.5</property>
-					  <property name="yalign">0.5</property>
-					  <property name="xscale">0</property>
-					  <property name="yscale">0</property>
-					  <property name="top_padding">0</property>
-					  <property name="bottom_padding">0</property>
-					  <property name="left_padding">0</property>
-					  <property name="right_padding">0</property>
-
-					  <child>
-					    <widget class="GtkHBox" id="hbox10">
-					      <property name="visible">True</property>
-					      <property name="homogeneous">False</property>
-					      <property name="spacing">2</property>
-
-					      <child>
-						<widget class="GtkImage" id="image4">
-						  <property name="visible">True</property>
-						  <property name="stock">gtk-dialog-authentication</property>
-						  <property name="icon_size">4</property>
-						  <property name="xalign">0.5</property>
-						  <property name="yalign">0.5</property>
-						  <property name="xpad">0</property>
-						  <property name="ypad">0</property>
-						</widget>
-						<packing>
-						  <property name="padding">0</property>
-						  <property name="expand">False</property>
-						  <property name="fill">False</property>
-						</packing>
-					      </child>
-
-					      <child>
-						<widget class="GtkLabel" id="label24">
-						  <property name="visible">True</property>
-						  <property name="label" translatable="yes">Change Unlock _Password</property>
-						  <property name="use_underline">True</property>
-						  <property name="use_markup">False</property>
-						  <property name="justify">GTK_JUSTIFY_LEFT</property>
-						  <property name="wrap">False</property>
-						  <property name="selectable">False</property>
-						  <property name="xalign">0.5</property>
-						  <property name="yalign">0.5</property>
-						  <property name="xpad">0</property>
-						  <property name="ypad">0</property>
-						  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-						  <property name="width_chars">-1</property>
-						  <property name="single_line_mode">False</property>
-						  <property name="angle">0</property>
-						</widget>
-						<packing>
-						  <property name="padding">0</property>
-						  <property name="expand">False</property>
-						  <property name="fill">False</property>
-						</packing>
-					      </child>
-					    </widget>
-					  </child>
-					</widget>
-				      </child>
-				    </widget>
-				    <packing>
-				      <property name="padding">0</property>
-				      <property name="expand">False</property>
-				      <property name="fill">False</property>
-				    </packing>
-				  </child>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">True</property>
-				</packing>
-			      </child>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label27">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">&lt;b&gt;Password Keyrings&lt;/b&gt;</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">True</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			  <property name="width_chars">-1</property>
-			  <property name="single_line_mode">False</property>
-			  <property name="angle">0</property>
-			</widget>
-			<packing>
-			  <property name="type">label_item</property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkFrame" id="frame2">
-		      <property name="visible">True</property>
-		      <property name="label_xalign">0</property>
-		      <property name="label_yalign">0.5</property>
-		      <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-		      <child>
-			<widget class="GtkAlignment" id="alignment8">
-			  <property name="visible">True</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xscale">1</property>
-			  <property name="yscale">1</property>
-			  <property name="top_padding">6</property>
-			  <property name="bottom_padding">0</property>
-			  <property name="left_padding">12</property>
-			  <property name="right_padding">0</property>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox14">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">12</property>
-
-			      <child>
-				<widget class="GtkLabel" id="label29">
-				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">_Location for application passwords:</property>
-				  <property name="use_underline">True</property>
-				  <property name="use_markup">False</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkComboBox" id="default-keyring">
-				  <property name="visible">True</property>
-				  <property name="add_tearoffs">False</property>
-				  <property name="focus_on_click">True</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">True</property>
-				  <property name="fill">True</property>
-				</packing>
-			      </child>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label28">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">&lt;b&gt;Default Keyring&lt;/b&gt;</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">True</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			  <property name="width_chars">-1</property>
-			  <property name="single_line_mode">False</property>
-			  <property name="angle">0</property>
-			</widget>
-			<packing>
-			  <property name="type">label_item</property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label3">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Password Keyrings</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-	      <property name="width_chars">-1</property>
-	      <property name="single_line_mode">False</property>
-	      <property name="angle">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
 	    <widget class="GtkTable" id="keyserver-tab">
 	      <property name="border_width">12</property>
 	      <property name="visible">True</property>



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