Index: libseahorse/seahorse-gpgmex-op.c
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-gpgmex-op.c,v
retrieving revision 1.1
diff -u -r1.1 seahorse-gpgmex-op.c
--- libseahorse/seahorse-gpgmex-op.c	23 Feb 2005 00:41:56 -0000	1.1
+++ libseahorse/seahorse-gpgmex-op.c	17 Aug 2005 02:46:49 -0000
@@ -86,3 +86,34 @@
     g_free (output);
     return GPG_OK;
 }
+
+gpgme_error_t 
+gpgmex_op_num_uids (gpgme_ctx_t ctx, const char *pattern, guint *number)
+{
+	gchar *output = NULL;
+    gpgme_error_t err;
+    gchar *args;
+    gchar *found = NULL;
+    
+    g_return_val_if_fail (pattern != NULL, GPG_E (GPG_ERR_INV_VALUE));
+    args = g_strdup_printf ("--list-keys '%s'", pattern);
+    
+    err = execute_gpg_command (ctx, args, &output, NULL);
+    g_free (args);
+    
+    if (!GPG_IS_OK (err))
+        return err;
+    
+    found = output;
+	while ((found = strstr(found, "uid")) != NULL) {
+		*number = *number + 1;
+		found += 3;
+	}
+
+	if ((GPG_MAJOR == 1) && (GPG_MINOR == 2))
+		*number = *number + 1;
+     
+    g_free (output);
+    return GPG_OK;
+}
+
Index: libseahorse/seahorse-gpgmex-util.c
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-gpgmex-util.c,v
retrieving revision 1.6
diff -u -r1.6 seahorse-gpgmex-util.c
--- libseahorse/seahorse-gpgmex-util.c	19 Apr 2005 22:48:48 -0000	1.6
+++ libseahorse/seahorse-gpgmex-util.c	17 Aug 2005 02:46:49 -0000
@@ -319,6 +319,34 @@
     return !(key->keylist_mode & SEAHORSE_KEYLIST_MODE);
 }
 
+gpgmex_photo_id_t 
+gpgmex_photo_id_alloc (guint uid)
+{
+    gpgmex_photo_id_t photoid = g_new0 (struct _gpgmex_photo_id, 1);
+    photoid->uid = uid;
+    return photoid;
+}
+
+void        
+gpgmex_photo_id_free (gpgmex_photo_id_t photoid)
+{
+    if (photoid) {
+        if (photoid->photo)
+            g_object_unref (photoid->photo);
+        g_free (photoid);
+    }
+}
+
+void 
+gpgmex_photo_id_free_all (gpgmex_photo_id_t photoid)
+{
+    while (photoid) {
+        gpgmex_photo_id_t next = photoid->next;
+        gpgmex_photo_id_free (photoid);
+        photoid = next;
+    }
+}
+
 /* -----------------------------------------------------------------------------
  * OTHER MISC FUNCTIONS
  */
Index: libseahorse/seahorse-gpgmex.h
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-gpgmex.h,v
retrieving revision 1.6
diff -u -r1.6 seahorse-gpgmex.h
--- libseahorse/seahorse-gpgmex.h	13 Aug 2005 20:49:27 -0000	1.6
+++ libseahorse/seahorse-gpgmex.h	17 Aug 2005 02:46:49 -0000
@@ -26,7 +26,9 @@
 #ifndef __SEAHORSE_GPGMEX_H__
 #define __SEAHORSE_GPGMEX_H__
 
+#include "config.h"
 #include <gpgme.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
 
 /* -----------------------------------------------------------------------------
  * ERROR HANDLING 
@@ -55,6 +57,14 @@
     GPGMEX_KEY_DISABLED = 0x02
 };
 
+/* A photo id from a key */
+typedef struct _gpgmex_photo_id {
+    struct _gpgmex_photo_id *next;
+    
+    guint uid;            /* The actual uid used with gpgpme_op_edit */
+    GdkPixbuf *photo;     /* The photo itself */
+} *gpgmex_photo_id_t;
+    
 gpgme_key_t gpgmex_key_alloc         ();
 
 void        gpgmex_key_add_subkey    (gpgme_key_t key,
@@ -81,6 +91,14 @@
 
 void        gpgmex_key_unref         (gpgme_key_t key);
 
+gpgmex_photo_id_t 
+            gpgmex_photo_id_alloc    (guint uid);
+            
+void        gpgmex_photo_id_free     (gpgmex_photo_id_t photoid);
+
+void        gpgmex_photo_id_free_all (gpgmex_photo_id_t photoid);
+
+
 /* -----------------------------------------------------------------------------
  * EXTRA FUNCTIONALITY
  */
@@ -88,5 +106,9 @@
 gpgme_error_t gpgmex_op_export_secret  (gpgme_ctx_t ctx, 
                                         const char *pattern,
                                         gpgme_data_t keydata);
+
+gpgme_error_t gpgmex_op_num_uids       (gpgme_ctx_t ctx, 
+                                        const char *pattern,
+                                        guint *number);
 
 #endif /* __SEAHORSE_GPGMEX_H__ */
Index: libseahorse/seahorse-key-store.h
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-key-store.h,v
retrieving revision 1.13
diff -u -r1.13 seahorse-key-store.h
--- libseahorse/seahorse-key-store.h	14 Aug 2005 00:38:50 -0000	1.13
+++ libseahorse/seahorse-key-store.h	17 Aug 2005 02:46:49 -0000
@@ -136,7 +136,7 @@
             G_TYPE_POINTER,  \
             G_TYPE_BOOLEAN,  \
             G_TYPE_BOOLEAN,  \
-            G_TYPE_STRING,  \
+            G_TYPE_STRING,   \
             G_TYPE_STRING,   \
             G_TYPE_STRING,   \
             G_TYPE_INT
Index: libseahorse/seahorse-key.h
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-key.h,v
retrieving revision 1.9
diff -u -r1.9 seahorse-key.h
--- libseahorse/seahorse-key.h	13 Aug 2005 20:49:27 -0000	1.9
+++ libseahorse/seahorse-key.h	17 Aug 2005 02:46:49 -0000
@@ -95,7 +95,7 @@
 
 /* Possible key changes */
 typedef enum {
-    SKEY_CHANGE_ALL,
+    SKEY_CHANGE_ALL = 1,
 	SKEY_CHANGE_SIGNERS,
 	SKEY_CHANGE_PASS,
 	SKEY_CHANGE_TRUST,
@@ -103,7 +103,8 @@
 	SKEY_CHANGE_EXPIRES,
 	SKEY_CHANGE_REVOKERS,
 	SKEY_CHANGE_UIDS,
-	SKEY_CHANGE_SUBKEYS
+	SKEY_CHANGE_SUBKEYS,
+    SKEY_CHANGE_PHOTOS
 } SeahorseKeyChange;
 
 /* Forward declaration */
Index: libseahorse/seahorse-pgp-key-op.c
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-pgp-key-op.c,v
retrieving revision 1.14
diff -u -r1.14 seahorse-pgp-key-op.c
--- libseahorse/seahorse-pgp-key-op.c	15 Aug 2005 17:57:15 -0000	1.14
+++ libseahorse/seahorse-pgp-key-op.c	17 Aug 2005 02:46:50 -0000
@@ -2,6 +2,8 @@
  * Seahorse
  *
  * Copyright (C) 2003 Jacob Perkins
+ * Copyright (C) 2004 Nate Nielsen
+ * Copyright (C) 2005 Adam Schreiber
  *
  * 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
@@ -19,7 +21,9 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#include "config.h"
 #include <gnome.h>
+#include <glib/gstdio.h>
 
 #include "seahorse-gpgmex.h"
 #include "seahorse-pgp-key-op.h"
@@ -30,10 +34,25 @@
 #define QUIT "quit"
 #define SAVE "keyedit.save.okay"
 #define YES "Y"
+#define NO "N"
 
 #define PRINT(args)  if(!seahorse_util_print_fd args) return GPG_E (GPG_ERR_GENERAL)
 #define PRINTF(args) if(!seahorse_util_printf_fd args) return GPG_E (GPG_ERR_GENERAL)
 
+#ifndef DEBUG_OPERATION_ENABLE
+#if _DEBUG
+#define DEBUG_OPERATION_ENABLE 1
+#else
+#define DEBUG_OPERATION_ENABLE 0
+#endif
+#endif
+
+#if DEBUG_OPERATION_ENABLE
+#define DEBUG_OPERATION(x) g_printerr x
+#else
+#define DEBUG_OPERATION(x) 
+#endif
+
 /**
  * seahorse_key_op_generate:
  * @sksrc: #SeahorseKeySource
@@ -223,8 +242,11 @@
 	    status == GPGME_STATUS_BAD_PASSPHRASE || status == GPGME_STATUS_USERID_HINT ||
 	    status == GPGME_STATUS_SIGEXPIRED || status == GPGME_STATUS_KEYEXPIRED ||
 	    status == GPGME_STATUS_PROGRESS || status == GPGME_STATUS_KEY_CREATED ||
-	    status == GPGME_STATUS_ALREADY_SIGNED)
-		return parms->err;
+	    status == GPGME_STATUS_ALREADY_SIGNED || status == GPGME_STATUS_MISSING_PASSPHRASE)		
+        return parms->err;
+    
+    DEBUG_OPERATION (("[edit key] state: %d / status: %d / args: %s\n", 
+                      parms->state, status, args));
 
 	/* Choose the next state based on the current one and the input */
 	parms->state = parms->transit (parms->state, status, args, parms->data, &parms->err);
@@ -256,7 +278,9 @@
 	g_return_val_if_fail (GPG_IS_OK (err), err);
     
 	/* signal key */
-	seahorse_key_changed (SEAHORSE_KEY (pkey), change);
+    if (change != 0)
+	    seahorse_key_changed (SEAHORSE_KEY (pkey), change);
+    
 	return err;
 }
 
@@ -2037,4 +2061,423 @@
                 del_uid_transit, del_uid_parm);
  
     return edit_key (pkey, parms, SKEY_CHANGE_UIDS);    
+}
+
+typedef struct {
+	gchar *filename;
+} PhotoIdAddParm;
+
+typedef enum {
+    PHOTO_ID_ADD_START,
+    PHOTO_ID_ADD_COMMAND,
+    PHOTO_ID_ADD_URI,
+    PHOTO_ID_ADD_BIG,
+    PHOTO_ID_ADD_QUIT,
+    PHOTO_ID_ADD_SAVE,
+    PHOTO_ID_ADD_ERROR
+} PhotoIdAddState;
+
+/* action helper for adding a photoid to a #SeahorseKey */
+static gpgme_error_t
+photoid_add_action (guint state, gpointer data, int fd)
+{
+    PhotoIdAddParm *parm = (PhotoIdAddParm*)data;
+    GtkWidget *question, *delete_button, *cancel_button;
+    gint response;
+    
+    switch (state) {
+	    case PHOTO_ID_ADD_COMMAND:
+            PRINT ((fd, "addphoto"));
+	        break;
+	    case PHOTO_ID_ADD_URI:
+            PRINT ((fd, parm->filename));
+	    	break;
+	    case PHOTO_ID_ADD_BIG:
+	    	/* let the user know their file is big and ask them if they still want to use it */
+	    	question = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
+		                        _("This photo ID file is very large. Are you sure you want to add it to your key?"));
+		    
+		    delete_button = gtk_button_new_from_stock (GTK_STOCK_ADD);
+		    cancel_button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
+
+		    /* add widgets to action area */
+		    gtk_dialog_add_action_widget (GTK_DIALOG(question), GTK_WIDGET (cancel_button), GTK_RESPONSE_REJECT);
+		    gtk_dialog_add_action_widget (GTK_DIALOG(question), GTK_WIDGET (delete_button), GTK_RESPONSE_ACCEPT);
+		   
+		    /* show widgets */
+		    gtk_widget_show (delete_button);
+		    gtk_widget_show (cancel_button);
+		       
+		    response = gtk_dialog_run (GTK_DIALOG (question));
+		    gtk_widget_destroy (question);
+		    
+	        PRINT ((fd, (response == GTK_RESPONSE_ACCEPT) ? YES : NO));
+	        break;
+	    case PHOTO_ID_ADD_QUIT:
+            PRINT ((fd, QUIT));
+	        break;
+	    case PHOTO_ID_ADD_SAVE:
+            PRINT ((fd, YES));
+	        break;
+	    default:
+	        g_return_val_if_reached (GPG_E (GPG_ERR_GENERAL));
+	        break;
+    }
+  
+    seahorse_util_print_fd (fd, "\n");
+    return GPG_OK;
+}
+
+static guint
+photoid_add_transit (guint current_state, gpgme_status_code_t status,
+                     const gchar *args, gpointer data, gpgme_error_t *err)
+{
+    guint next_state;
+	
+    switch (current_state) {
+    
+    case PHOTO_ID_ADD_START:
+        if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, PROMPT))
+            next_state = PHOTO_ID_ADD_COMMAND;
+        else {
+            *err = GPG_E (GPG_ERR_GENERAL);
+            g_return_val_if_reached (PHOTO_ID_ADD_ERROR);
+        }
+        break;
+    case PHOTO_ID_ADD_COMMAND:
+		if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, "photoid.jpeg.add")) {
+			next_state = PHOTO_ID_ADD_URI;
+		} else {
+			*err = GPG_E (GPG_ERR_GENERAL);
+			g_return_val_if_reached (PHOTO_ID_ADD_ERROR);
+        }
+        break;
+   case PHOTO_ID_ADD_URI:
+		if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, PROMPT)) {
+			next_state = PHOTO_ID_ADD_QUIT;
+		} else if (status == GPGME_STATUS_GET_BOOL && g_str_equal (args, "photoid.jpeg.size")) {
+			next_state = PHOTO_ID_ADD_BIG;
+		} else {
+            *err = GPG_E (GPG_ERR_GENERAL);
+            g_return_val_if_reached (PHOTO_ID_ADD_ERROR);
+        }
+	    break;
+    case PHOTO_ID_ADD_BIG:
+		if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, PROMPT)) {
+			next_state = PHOTO_ID_ADD_QUIT;
+        /* This happens when the file is invalid or can't be accessed */
+		} else if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, "photoid.jpeg.add")) {
+            *err = GPG_E (GPG_ERR_USER_1);
+            return PHOTO_ID_ADD_ERROR;
+		} else {
+            *err = GPG_E (GPG_ERR_GENERAL);
+            g_return_val_if_reached (PHOTO_ID_ADD_ERROR);
+        }
+        break;
+    case PHOTO_ID_ADD_QUIT:
+    	if (status == GPGME_STATUS_GET_BOOL && g_str_equal (args, SAVE)) {
+			next_state = PHOTO_ID_ADD_SAVE;
+		} else {
+            *err = GPG_E (GPG_ERR_GENERAL);
+            g_return_val_if_reached (PHOTO_ID_ADD_ERROR);
+        }
+        break;
+    default:
+        *err = GPG_E (GPG_ERR_GENERAL);
+        g_return_val_if_reached (PHOTO_ID_ADD_ERROR);
+        break;
+    }
+    
+    return next_state;
+}
+
+/**
+ * seahorse_key_op_photoid_add:
+ * @skey: #SeahorseKey to add photoid to
+ * @uri: path to jpeg image to be added
+ *
+ * Tries to add @uri to @skey as a photoid.
+ *
+ * Returns: Error value
+ **/
+gpgme_error_t 
+seahorse_key_op_photoid_add	(SeahorsePGPKey *pkey, gchar *filename)
+{
+	SeahorseEditParm *parms;
+	PhotoIdAddParm *photoid_add_parm;
+	gpgme_error_t err;
+	
+	g_return_val_if_fail (SEAHORSE_IS_PGP_KEY (pkey), GPG_E (GPG_ERR_WRONG_KEY_USAGE));
+    
+	photoid_add_parm = g_new0 (PhotoIdAddParm, 1);
+	photoid_add_parm->filename = filename;
+	
+	parms = seahorse_edit_parm_new (PHOTO_ID_ADD_START, photoid_add_action,
+                                    photoid_add_transit, photoid_add_parm);
+	
+	/* add photoid */
+	err = edit_key (pkey, parms, SKEY_CHANGE_PHOTOS);
+	
+    return err;
+}
+
+/**
+ * seahorse_key_op_photoid_delete:
+ * @skey: #SeahorseKey whose photoid to delete
+ * @uid: uid of photoid to delete
+ *
+ * Tries to delete photoid @uid from @skey. This uses the transit
+ * and action functions from seahorse_key_op_del_uid.
+ *
+ * Returns: Error value
+ **/
+gpgme_error_t 
+seahorse_key_op_photoid_delete	(SeahorsePGPKey *pkey, guint uid)
+{
+    DelUidParm *del_uid_parm;
+    SeahorseEditParm *parms;
+ 
+    g_return_val_if_fail (SEAHORSE_IS_PGP_KEY (pkey), GPG_E (GPG_ERR_WRONG_KEY_USAGE));
+      
+    del_uid_parm = g_new0 (DelUidParm, 1);
+    del_uid_parm->index = uid;
+   
+    parms = seahorse_edit_parm_new (DEL_UID_START, del_uid_action,
+                                    del_uid_transit, del_uid_parm);
+ 
+    return edit_key (pkey, parms, SKEY_CHANGE_PHOTOS);    
+}
+
+typedef struct {
+	gpgmex_photo_id_t list;
+    gpgmex_photo_id_t first;
+	gint uid;
+	guint num_uids;
+	char *output_file;
+} PhotoIdLoadParm;
+
+typedef enum {
+    PHOTO_ID_LOAD_START,
+    PHOTO_ID_LOAD_SELECT,
+    PHOTO_ID_LOAD_OUTPUT_IMAGE,
+    PHOTO_ID_LOAD_QUIT,
+    PHOTO_ID_LOAD_ERROR
+} PhotoIdLoadState;
+
+/* action helper for getting a list of photoids attached to a #SeahorseKey */
+static gpgme_error_t
+photoid_load_action (guint state, gpointer data, int fd)
+{
+    PhotoIdLoadParm *parm = (PhotoIdLoadParm*)data;
+    
+    switch (state) {
+	    case PHOTO_ID_LOAD_SELECT:
+            PRINTF ((fd, "uid %d", parm->uid));            
+	        break;
+	    case PHOTO_ID_LOAD_OUTPUT_IMAGE:
+            PRINT ((fd, "showphoto"));
+	        break;
+	    case PHOTO_ID_LOAD_QUIT:
+            PRINT ((fd, QUIT));
+	        break;
+	    default:
+	        g_return_val_if_reached (GPG_E (GPG_ERR_GENERAL));
+	        break;
+    }
+  
+    seahorse_util_print_fd (fd, "\n");
+    return GPG_OK;
+}
+
+static guint
+photoid_load_transit (guint current_state, gpgme_status_code_t status,
+                      const gchar *args, gpointer data, gpgme_error_t *err)
+{
+    PhotoIdLoadParm *parm = (PhotoIdLoadParm*)data;
+    guint next_state;
+    struct stat buf;
+    GError *error = NULL;
+	
+    switch (current_state) {
+    
+    /* start, get photoid list */
+    case PHOTO_ID_LOAD_START:
+        if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, PROMPT))
+            next_state = PHOTO_ID_LOAD_SELECT;
+        else {
+            *err = GPG_E (GPG_ERR_GENERAL);
+            g_return_val_if_reached (PHOTO_ID_LOAD_ERROR);
+        }
+        break;
+    case PHOTO_ID_LOAD_SELECT:
+		if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, PROMPT)) {
+			next_state = PHOTO_ID_LOAD_OUTPUT_IMAGE;
+		} else {
+            *err = GPG_E (GPG_ERR_GENERAL);
+            g_return_val_if_reached (PHOTO_ID_LOAD_ERROR);
+        }
+		break;
+    case PHOTO_ID_LOAD_OUTPUT_IMAGE:
+
+        if (g_file_test (parm->output_file, G_FILE_TEST_EXISTS)) {
+
+            DEBUG_OPERATION (("PhotoIDLoad uid %i/%i from file %s\n", parm->uid, 
+                             parm->num_uids, parm->output_file));
+            DEBUG_OPERATION(("PhotoIDLoad first %s\n", parm->first ? "NOT_NULL" : "NULL"));
+            DEBUG_OPERATION(("PhotoIDLoad list %s\n", parm->list ? "NOT_NULL" : "NULL"));
+            
+            if ((parm->first == NULL) && (parm->list == NULL)) {
+                parm->first = gpgmex_photo_id_alloc (parm->uid);
+                parm->list = parm->first;
+                parm->list->next = NULL;                     
+            } else {
+                parm->list->next = gpgmex_photo_id_alloc (parm->uid);
+                parm->list = parm->list->next;
+                parm->list->next = NULL;     
+            }
+            
+            DEBUG_OPERATION (("PhotoIDLoad After List Setup\n"));
+            
+            if (g_stat (parm->output_file, &buf) == -1) {
+                g_warning ("couldn't stat output image file '%s': %s", parm->output_file,
+                           g_strerror (errno));
+            
+            } else if (buf.st_size > 0) {
+                DEBUG_OPERATION (("PhotoIDLoad Loading %s\n", parm->output_file));
+                parm->list->photo = gdk_pixbuf_new_from_file (parm->output_file, &error);
+    
+                if ((parm->list->photo == NULL) || (error != NULL)) {
+                    g_warning ("Loading image %s failed: %s", parm->output_file,
+                               error ? error->message : "unknown");
+                    g_error_free (error);
+                }
+            }
+            
+            g_unlink (parm->output_file);
+        
+            if (parm->list->photo == NULL) {
+                /* Load a 'missing' icon */
+                parm->list->photo = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), 
+                                                              "gnome-unknown", 48, 0, NULL);
+                if (parm->list->photo  == NULL) {
+                    g_critical ("couldn't load 'gnome-unknown' icon");
+                    *err = GPG_E (GPG_ERR_GENERAL);
+                    break;
+                }
+            }
+        }
+
+    	if (parm->uid < parm->num_uids) {
+    		parm->uid = parm->uid + 1;
+    		DEBUG_OPERATION (("PhotoIDLoad Next UID %i\n", parm->uid));
+            
+    		if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, PROMPT)) {
+				next_state = PHOTO_ID_LOAD_SELECT;
+			} else {
+	            *err = GPG_E (GPG_ERR_GENERAL);
+	            g_return_val_if_reached (PHOTO_ID_LOAD_ERROR);
+	        }
+        } else {
+			if (status == GPGME_STATUS_GET_LINE && g_str_equal (args, PROMPT)) {
+				next_state = PHOTO_ID_LOAD_QUIT;
+				DEBUG_OPERATION (("PhotoIDLoad Quiting Load\n"));
+			} else {
+	            *err = GPG_E (GPG_ERR_GENERAL);
+	            g_return_val_if_reached (PHOTO_ID_LOAD_ERROR);
+	        }
+        }
+        break;
+    case PHOTO_ID_LOAD_QUIT:
+        /* Shouldn't be reached */
+        *err = GPG_E (GPG_ERR_GENERAL);
+        DEBUG_OPERATION (("PhotoIDLoad Reached Quit\n"));
+        g_return_val_if_reached (PHOTO_ID_LOAD_ERROR);
+        break;
+    default:
+        *err = GPG_E (GPG_ERR_GENERAL);
+        g_return_val_if_reached (PHOTO_ID_LOAD_ERROR);
+        break;
+    }
+    
+    return next_state;
+}
+
+/**
+ * seahorse_key_op_photoid_load
+ * @skey: #SeahorseKey to get list of photoids for
+ * @photoids: The location to put the photoids
+ *
+ * Tries to create list of photoids for skey.
+ *
+ * Returns: Error value
+ **/
+gpgme_error_t 
+seahorse_key_op_photoid_load (SeahorsePGPKey *pkey)
+{
+	SeahorseEditParm *parms;
+	PhotoIdLoadParm *photoid_load_parm;
+	gpgme_error_t err;
+    const gchar *oldpath;
+    gchar *path;
+	guint fd;
+
+    DEBUG_OPERATION (("PhotoIDLoad Start\n"));     
+
+    if (pkey->photoids != NULL) {
+        DEBUG_OPERATION(("pkey->photoids must be NULL\n"));
+        g_assert(pkey->photoids != NULL);
+    }
+    
+    /* Make sure there's enough room for the .jpg extension */
+    gchar image_path[] = "/tmp/seahorse-photoid-XXXXXX\0\0\0\0";
+    
+    g_return_val_if_fail (SEAHORSE_IS_PGP_KEY (pkey), GPG_E(GPG_ERR_WRONG_KEY_USAGE));
+    
+ 	fd = g_mkstemp (image_path);
+ 	
+ 	if(fd == -1)
+ 		err = GPG_E(GPG_ERR_GENERAL);
+    
+ 	else {
+
+		g_unlink(image_path);
+ 		close(fd);
+ 		strcat (image_path, ".jpg");
+	    
+		photoid_load_parm = g_new0 (PhotoIdLoadParm, 1);
+		photoid_load_parm->uid = 1;
+		photoid_load_parm->num_uids = 0;
+		photoid_load_parm->list = pkey->photoids;
+		photoid_load_parm->first = NULL;
+		photoid_load_parm->output_file = image_path;
+		
+		DEBUG_OPERATION (("PhotoIdLoad KeyID %s\n", seahorse_key_get_keyid (SEAHORSE_KEY (pkey))));
+        err = gpgmex_op_num_uids (NULL, 
+                                  seahorse_key_get_keyid (SEAHORSE_KEY (pkey)), 
+							      &(photoid_load_parm->num_uids));
+        DEBUG_OPERATION (("PhotoIDLoad Number of UIDs %i\n", photoid_load_parm->num_uids));
+        
+		if (GPG_IS_OK(err)) {
+            
+			setenv("SEAHORSE_IMAGE_FILE", image_path, 1);
+			oldpath = getenv("PATH");
+            
+            path = g_strdup_printf ("%s:%s", EXECDIR, getenv("PATH"));
+			setenv("PATH", path, 1);
+            g_free (path);
+			
+			parms = seahorse_edit_parm_new (PHOTO_ID_LOAD_START, photoid_load_action,
+							                photoid_load_transit, photoid_load_parm);
+			
+			/* generate list */
+			err = edit_key (pkey, parms, 0);
+            setenv("PATH", oldpath, 1);
+            
+			pkey->photoids = photoid_load_parm->first;  
+		}
+ 	}
+ 	
+ 	DEBUG_OPERATION (("PhotoIDLoad Done\n"));
+ 	
+    return err;
 }
Index: libseahorse/seahorse-pgp-key-op.h
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-pgp-key-op.h,v
retrieving revision 1.7
diff -u -r1.7 seahorse-pgp-key-op.h
--- libseahorse/seahorse-pgp-key-op.h	13 Aug 2005 18:18:05 -0000	1.7
+++ libseahorse/seahorse-pgp-key-op.h	17 Aug 2005 02:46:50 -0000
@@ -28,6 +28,7 @@
 
 #include "seahorse-pgp-source.h"
 #include "seahorse-pgp-key.h"
+#include "seahorse-gpgmex.h"
 
 /* Key type options. */
 typedef enum {
@@ -158,5 +159,12 @@
                                                  SeahorseRevokeReason reason,
                                                  const gchar *description);
 
-                             							 
+gpgme_error_t  seahorse_key_op_photoid_add      (SeahorsePGPKey *pkey,
+                                                 gchar *filename);
+
+gpgme_error_t  seahorse_key_op_photoid_delete   (SeahorsePGPKey *pkey,
+                                                 guint uid);
+
+gpgme_error_t  seahorse_key_op_photoid_load     (SeahorsePGPKey *pkey);                         
+
 #endif /* __SEAHORSE_KEY_OP_H__ */
Index: libseahorse/seahorse-pgp-key.c
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-pgp-key.c,v
retrieving revision 1.2
diff -u -r1.2 seahorse-pgp-key.c
--- libseahorse/seahorse-pgp-key.c	13 Aug 2005 18:17:13 -0000	1.2
+++ libseahorse/seahorse-pgp-key.c	17 Aug 2005 02:46:51 -0000
@@ -139,6 +139,10 @@
     if (skey->seckey)
         gpgmex_key_unref (skey->seckey);
     skey->pubkey = skey->seckey = NULL;
+    
+    if (skey->photoids)
+        gpgmex_photo_id_free_all (skey->photoids);
+    skey->photoids = NULL;
 	
 	G_OBJECT_CLASS (parent_class)->finalize (gobject);
 }
@@ -547,3 +551,47 @@
     g_return_val_if_fail (subkey, "");
     return subkey->keyid;
 }
+
+
+guint           
+seahorse_pgp_key_get_num_photoids (SeahorsePGPKey *pkey)
+{
+	gint index = 0;
+	gpgmex_photo_id_t photoid;
+
+	g_return_val_if_fail (SEAHORSE_IS_PGP_KEY (pkey), 0);    
+    g_return_val_if_fail (pkey->photoids != NULL, 0);
+		
+	photoid = pkey->photoids;
+	while (photoid) {
+		photoid = photoid->next;
+		index++;
+	}
+	
+	return index;        
+}
+
+/**
+ * seahorse_pgp_key_get_nth_photoid:
+ * @skey: #SeahorseKey
+ * @index: Which photo id
+ *
+ * Gets the the photo id at @index of @skey.
+ *
+ * Returns: subkey of @skey at @index, or NULL if @index is out of bounds
+ */
+gpgmex_photo_id_t  
+seahorse_pgp_key_get_nth_photoid (SeahorsePGPKey *pkey, guint index)
+{
+    gpgmex_photo_id_t photoid;
+    guint n;
+
+    g_return_val_if_fail (pkey != NULL && SEAHORSE_IS_PGP_KEY (pkey), NULL);
+    g_return_val_if_fail (pkey->photoids != NULL, NULL);
+    
+    photoid = pkey->photoids;
+    for (n = index; photoid && n; n--)
+        photoid = photoid->next;
+
+    return photoid;
+}    
Index: libseahorse/seahorse-pgp-key.h
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-pgp-key.h,v
retrieving revision 1.3
diff -u -r1.3 seahorse-pgp-key.h
--- libseahorse/seahorse-pgp-key.h	13 Aug 2005 20:49:27 -0000	1.3
+++ libseahorse/seahorse-pgp-key.h	17 Aug 2005 02:46:51 -0000
@@ -40,6 +40,7 @@
 #include <gtk/gtk.h>
 #include <gpgme.h>
 
+#include "seahorse-gpgmex.h"
 #include "seahorse-key.h"
 #include "seahorse-pgp-source.h"
 
@@ -60,8 +61,9 @@
     SeahorseKey	                parent;
 	
     /*< public >*/
-    gpgme_key_t                 pubkey;
-    gpgme_key_t                 seckey;    
+    gpgme_key_t                 pubkey;         /* The public key */
+    gpgme_key_t                 seckey;         /* The secret key */
+    gpgmex_photo_id_t           photoids;       /* List of photos */
 };
 
 struct _SeahorsePGPKeyClass {
@@ -96,8 +98,12 @@
 gchar*          seahorse_pgp_key_get_userid_comment   (SeahorsePGPKey   *pkey,
                                                        guint            index);
 
+guint           seahorse_pgp_key_get_num_photoids     (SeahorsePGPKey   *pkey);
+ 
+gpgmex_photo_id_t seahorse_pgp_key_get_nth_photoid    (SeahorsePGPKey   *pkey,
+                                                       guint            index);                                                    
+
 const gchar*	seahorse_pgp_key_get_id               (gpgme_key_t      key,
                                                        guint            index);
-
 
 #endif /* __SEAHORSE_KEY_H__ */
Index: libseahorse/seahorse-pgp-source.c
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-pgp-source.c,v
retrieving revision 1.21
diff -u -r1.21 seahorse-pgp-source.c
--- libseahorse/seahorse-pgp-source.c	13 Aug 2005 23:00:33 -0000	1.21
+++ libseahorse/seahorse-pgp-source.c	17 Aug 2005 02:46:51 -0000
@@ -29,6 +29,7 @@
 #include "seahorse-operation.h"
 #include "seahorse-util.h"
 #include "seahorse-pgp-key.h"
+#include "seahorse-pgp-key-op.h"
 #include "seahorse-libdialogs.h"
 #include "seahorse-gpg-options.h"
 
@@ -104,6 +105,7 @@
     guint batch;                    /* Number to load in a batch, or 0 for synchronous */
     guint stag;                     /* The event source handler id (for stopping a load) */
     gboolean all;                   /* When refreshing this is the refresh all keys flag */
+    gboolean complete;              /* Load complete keys */
     GHashTable *checks;             /* When refreshing this is our set of missing keys */
 END_DECLARE_OPERATION        
 
@@ -348,7 +350,7 @@
 }
 
 /* Add a key to the context  */
-static void
+static SeahorsePGPKey*
 add_key_to_context (SeahorsePGPSource *psrc, gpgme_key_t key)
 {
     SeahorsePGPKey *pkey = NULL;
@@ -358,7 +360,7 @@
     
     id = seahorse_pgp_key_get_id (key, 0);
     
-    g_return_if_fail (SEAHORSE_IS_PGP_SOURCE (psrc));
+    g_return_val_if_fail (SEAHORSE_IS_PGP_SOURCE (psrc), NULL);
     prev = SEAHORSE_PGP_KEY (seahorse_context_get_key (SCTX_APP (), SEAHORSE_KEY_SOURCE (psrc), id));
     
     /* Check if we can just replace the key on the object */
@@ -367,7 +369,7 @@
             g_object_set (prev, "seckey", key, NULL);
         else
             g_object_set (prev, "pubkey", key, NULL);
-        return;
+        return prev;
     }
     
     /* Create a new key with secret */    
@@ -377,6 +379,9 @@
         /* Since we don't have a public key yet, save this away */
         psrc->pv->orphan_secret = g_list_append (psrc->pv->orphan_secret, pkey);
         
+        /* No key was loaded as far as everyone is concerned */
+        return NULL;
+        
     /* Just a new public key */
     } else {
         /* Check for orphans */
@@ -405,6 +410,8 @@
 
         /* Add to context */ 
         seahorse_context_add_key (SCTX_APP (), SEAHORSE_KEY (pkey));
+        
+        return pkey;
     }
  
 }
@@ -537,6 +544,7 @@
 static gboolean
 keyload_handler (SeahorseLoadOperation *lop)
 {
+    SeahorsePGPKey *pkey;
     gpgme_key_t key;
     guint batch;
     const gchar *id;
@@ -578,9 +586,19 @@
             }
         }
         
-        add_key_to_context (lop->psrc, key);
+        pkey = add_key_to_context (lop->psrc, key);
         gpgmex_key_unref (key);
         lop->loaded++;
+        
+        /* Load additional info */
+        if (lop->complete && pkey != NULL) {
+            if (pkey->photoids) {
+                gpgmex_photo_id_free_all (pkey->photoids);
+                pkey->photoids = NULL;
+            }
+            
+            seahorse_key_op_photoid_load (pkey);
+        }
     }
     
     /* More to do, so queue for next round */        
@@ -620,10 +638,11 @@
     
     /* When loading a specific key, we load extra info */
     if (pattern != NULL) {
+        lop->complete = TRUE;
         gpgme_set_keylist_mode (lop->ctx, GPGME_KEYLIST_MODE_SIGS | 
                 gpgme_get_keylist_mode (lop->ctx));
     }
-    
+
     /* Start the key listing */
     err = gpgme_op_keylist_start (lop->ctx, pattern, secret);
     g_return_val_if_fail (GPG_IS_OK (err), lop);
Index: libseahorse/seahorse-util.c
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-util.c,v
retrieving revision 1.46
diff -u -r1.46 seahorse-util.c
--- libseahorse/seahorse-util.c	16 Aug 2005 00:16:08 -0000	1.46
+++ libseahorse/seahorse-util.c	17 Aug 2005 02:46:51 -0000
@@ -855,6 +855,25 @@
 }
     
 void
+seahorse_util_chooser_show_jpeg_files (GtkWidget *dialog)
+{
+	GtkFileFilter* filter = gtk_file_filter_new ();
+     
+    /* Filter for JPEG files, this is meant to be 
+     * used when searching for images to add as a photoid*/
+     
+    gtk_file_filter_set_name (filter, _("All JPEG files"));
+    gtk_file_filter_add_mime_type (filter, "image/jpeg");
+    gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);    
+    gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
+
+    filter = gtk_file_filter_new ();
+    gtk_file_filter_set_name (filter, _("All files"));
+    gtk_file_filter_add_pattern (filter, "*");    
+    gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
+}   
+
+void
 seahorse_util_chooser_show_archive_files (GtkWidget *dialog)
 {
     GtkFileFilter* filter;
Index: libseahorse/seahorse-util.h
===================================================================
RCS file: /cvs/gnome/seahorse/libseahorse/seahorse-util.h,v
retrieving revision 1.35
diff -u -r1.35 seahorse-util.h
--- libseahorse/seahorse-util.h	13 Aug 2005 20:49:27 -0000	1.35
+++ libseahorse/seahorse-util.h	17 Aug 2005 02:46:51 -0000
@@ -119,6 +119,8 @@
 
 void        seahorse_util_chooser_show_key_files        (GtkWidget *dialog);
 
+void        seahorse_util_chooser_show_jpeg_files       (GtkWidget *dialog);
+
 void        seahorse_util_chooser_show_archive_files    (GtkWidget *dialog);
 
 void        seahorse_util_chooser_set_filename          (GtkWidget *dialog, 
Index: src/seahorse-key-properties.c
===================================================================
RCS file: /cvs/gnome/seahorse/src/seahorse-key-properties.c,v
retrieving revision 1.38
diff -u -r1.38 seahorse-key-properties.c
--- src/seahorse-key-properties.c	15 Aug 2005 17:57:15 -0000	1.38
+++ src/seahorse-key-properties.c	17 Aug 2005 02:46:51 -0000
@@ -30,10 +30,13 @@
 #include "seahorse-util.h"
 #include "seahorse-pgp-key.h"
 #include "seahorse-pgp-key-op.h"
+#include "seahorse-gtkstock.h"
 
 #define NOTEBOOK "notebook"
 #define SPACING 12
 
+static gpgmex_photo_id_t current_photoid = NULL;
+
 static gint
 get_subkey_index (SeahorseWidget *swidget)
 {
@@ -698,6 +701,193 @@
 	}
 }
 
+/*
+ * Begin Photo ID Functions 
+ */
+static void
+photoid_add_clicked(GtkWidget *widget, SeahorseWidget *swidget)
+{
+	SeahorseKey *skey;
+    SeahorsePGPKey *pkey;
+	char* filename = NULL;
+    gpgme_error_t gerr;
+	GtkWidget *chooser;
+	
+    skey = SEAHORSE_KEY_WIDGET (swidget)->skey;
+    pkey = SEAHORSE_PGP_KEY(skey);
+    
+    chooser = seahorse_util_chooser_open_new (_("Add Photo ID"), 
+                	GTK_WINDOW(glade_xml_get_widget (swidget->xml, "key-properties")));             	
+	gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), TRUE);		
+    seahorse_util_chooser_show_jpeg_files (chooser);
+	
+	if(gtk_dialog_run (GTK_DIALOG (chooser)) == GTK_RESPONSE_ACCEPT)
+        filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
+        
+    gtk_widget_destroy (chooser);
+
+    if(!filename)
+        return;
+
+    gerr = seahorse_key_op_photoid_add(pkey, filename);
+    if (!GPG_IS_OK (gerr)) {
+        
+        /* A special error value set by seahorse_key_op_photoid_add to 
+           denote an invalid format file */
+        if (gerr == GPG_E (GPG_ERR_USER_1)) 
+            /* TODO: We really shouldn't be getting here. We should rerender 
+               the photo into a format that will work (along with resizing). */
+            seahorse_util_show_error (NULL, _("Couldn't add photo"), 
+                                      _("The file could not be loaded. It may be in an invalid format"));
+        else        
+            seahorse_util_handle_gpgme (gerr, _("Couldn't add photo"));        
+    }
+    
+    g_free (filename);
+    current_photoid = NULL;
+}
+ 
+static void
+photoid_delete_clicked (GtkWidget *widget, SeahorseWidget *swidget)
+{
+	SeahorseKey *skey;
+	SeahorsePGPKey *pkey;
+	gpgme_error_t gerr;
+	GtkWidget *question, *delete_button, *cancel_button;
+    gint response, uid; 
+    
+	if (current_photoid == NULL)
+        return;
+    
+    question = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL,
+                        GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
+                        _("Are you sure you want to permanently delete the current photo ID?"));
+    
+    delete_button = gtk_button_new_from_stock (GTK_STOCK_DELETE);
+    cancel_button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
+
+    /* add widgets to action area */
+    gtk_dialog_add_action_widget (GTK_DIALOG (question), GTK_WIDGET (cancel_button), GTK_RESPONSE_REJECT);
+    gtk_dialog_add_action_widget (GTK_DIALOG (question), GTK_WIDGET (delete_button), GTK_RESPONSE_ACCEPT);
+   
+    /* show widgets */
+    gtk_widget_show (delete_button);
+    gtk_widget_show (cancel_button);
+       
+    response = gtk_dialog_run (GTK_DIALOG (question));
+    gtk_widget_destroy (question);
+    
+    skey = SEAHORSE_KEY_WIDGET (swidget)->skey;
+    pkey = SEAHORSE_PGP_KEY(skey);
+    
+    uid = current_photoid->uid;
+    
+    if (response != GTK_RESPONSE_ACCEPT)
+        return;
+        
+    gerr = seahorse_key_op_photoid_delete (pkey, uid);
+    if (!GPG_IS_OK (gerr))
+        seahorse_util_handle_gpgme (gerr, _("Couldn't delete photo"));
+    
+    current_photoid = NULL;
+}
+
+static void
+set_photoid_state(SeahorseWidget *swidget, SeahorsePGPKey *pkey)
+{
+    SeahorseKeyEType etype = seahorse_key_get_etype (SEAHORSE_KEY(pkey));
+    GtkWidget *next_button = glade_xml_get_widget(swidget->xml, "photoid-next");
+	GtkWidget *prev_button = glade_xml_get_widget(swidget->xml, "photoid-prev");
+	GtkWidget *del_button = glade_xml_get_widget(swidget->xml, "photoid-delete");
+	GtkWidget *add_button = glade_xml_get_widget(swidget->xml, "photoid-add");
+	GtkWidget *photo_image = glade_xml_get_widget (swidget->xml, "photoid");
+	
+	if (etype == SKEY_PRIVATE) {
+	    gtk_widget_set_sensitive(add_button, TRUE);
+	    
+	    if (current_photoid != NULL)
+	       gtk_widget_set_sensitive(del_button, TRUE);
+	       
+	} else {
+	   gtk_widget_set_sensitive (add_button, FALSE);
+	   gtk_widget_set_sensitive (del_button, FALSE);
+	}
+
+    if (current_photoid != NULL) {	
+    	if (current_photoid == pkey->photoids)
+    	   gtk_widget_set_sensitive (prev_button, FALSE);
+    	else
+    	   gtk_widget_set_sensitive (prev_button, TRUE);
+    	   
+    	if ((current_photoid->next != NULL) && (current_photoid->next->photo != NULL))
+            gtk_widget_set_sensitive (next_button, TRUE);
+        else
+            gtk_widget_set_sensitive (next_button, FALSE);
+    } else {
+        gtk_widget_set_sensitive (del_button, FALSE);
+        gtk_widget_set_sensitive (prev_button, FALSE);
+        gtk_widget_set_sensitive (next_button, FALSE);
+    }
+        
+    if ((current_photoid == NULL) || (current_photoid->photo == NULL))
+        gtk_image_set_from_stock (GTK_IMAGE (photo_image), SEAHORSE_STOCK_PERSON, (GtkIconSize)-1);
+    else 
+        gtk_image_set_from_pixbuf (GTK_IMAGE (photo_image), current_photoid->photo);
+}
+
+static void
+photoid_next_clicked(GtkWidget *widget, SeahorseWidget *swidget)
+{
+	SeahorseKey *skey;
+	SeahorsePGPKey *pkey;
+	
+	skey = SEAHORSE_KEY_WIDGET (swidget)->skey;
+	pkey = SEAHORSE_PGP_KEY (skey);
+	
+	if ((current_photoid != NULL) && (current_photoid->next != NULL))
+        current_photoid = current_photoid->next;
+    else
+        fprintf(stderr, "Next Photo ID is NULL\n");
+        
+    set_photoid_state (swidget, pkey);
+}
+
+static void
+photoid_prev_clicked(GtkWidget *widget, SeahorseWidget *swidget)
+{
+	SeahorseKey *skey;
+	SeahorsePGPKey *pkey;
+	gpgmex_photo_id_t itter;
+	
+	skey = SEAHORSE_KEY_WIDGET (swidget)->skey;
+	pkey = SEAHORSE_PGP_KEY (skey);
+	
+	if (current_photoid != pkey->photoids) {
+    	itter = pkey->photoids;
+    	
+    	while ((itter->next != current_photoid) && (itter->next != NULL))
+    	   itter = itter->next;
+    	
+    	current_photoid = itter;
+	}
+	
+	set_photoid_state (swidget, pkey);
+}
+
+static void
+do_photo_ids (SeahorseWidget *swidget)
+{
+	SeahorseKey *skey;
+    SeahorsePGPKey *pkey;
+
+	skey = SEAHORSE_KEY_WIDGET (swidget)->skey;
+    pkey = SEAHORSE_PGP_KEY (skey);
+
+    current_photoid = pkey->photoids;
+    
+    set_photoid_state (swidget, pkey);
+}
+
 static void
 key_changed (SeahorseKey *skey, SeahorseKeyChange change, SeahorseWidget *swidget)
 {
@@ -708,6 +898,7 @@
             do_signatures (swidget);
             do_signature_list (swidget);
             do_subkeys (swidget);
+            do_photo_ids(swidget);
             break;
 		case SKEY_CHANGE_UIDS:
 			do_uid_list (swidget);
@@ -721,6 +912,10 @@
         case SKEY_CHANGE_EXPIRES:
 			do_subkeys (swidget);
 			break;
+		case SKEY_CHANGE_PHOTOS:
+            do_uid_list (swidget);
+            do_photo_ids (swidget);
+            break;
 		default:
 			break;
 	}
@@ -790,10 +985,21 @@
         gtk_widget_set_sensitive (widget, TRUE);
         glade_xml_signal_connect_data (swidget->xml, "export_clicked",
                     G_CALLBACK (export_clicked), swidget);
+
+        widget = glade_xml_get_widget (swidget->xml, "photoid-add");
+        //gtk_widget_set_sensitive (widget, TRUE);
+        glade_xml_signal_connect_data (swidget->xml, "photoid_add_clicked",
+        	    G_CALLBACK (photoid_add_clicked), swidget);
+
+		widget = glade_xml_get_widget (swidget->xml, "photoid-delete");
+        //gtk_widget_set_sensitive (widget, FALSE);
+        glade_xml_signal_connect_data (swidget->xml, "photoid_delete_clicked",
+        	    G_CALLBACK (photoid_delete_clicked), swidget); 
     }
 
 	do_subkeys (swidget);
     do_uid_list (swidget);
+    do_photo_ids (swidget);
 
     /* Disable stuff not appropriate for remote */
     if (remote) {
@@ -839,6 +1045,12 @@
                                        G_CALLBACK (trust_changed), swidget);
         glade_xml_signal_connect_data (swidget->xml, "disabled_toggled",
                                        G_CALLBACK (disabled_toggled), swidget);
+    
+        /* Photo ID controls */
+        glade_xml_signal_connect_data (swidget->xml, "photoid_next_clicked",
+        	    G_CALLBACK (photoid_next_clicked), swidget);
+        glade_xml_signal_connect_data (swidget->xml, "photoid_prev_clicked",
+        	    G_CALLBACK (photoid_prev_clicked), swidget);
     }
 	
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (swidget->xml, "disabled")),
Index: src/seahorse-key-properties.glade
===================================================================
RCS file: /cvs/gnome/seahorse/src/seahorse-key-properties.glade,v
retrieving revision 1.6
diff -u -r1.6 seahorse-key-properties.glade
--- src/seahorse-key-properties.glade	23 Feb 2005 00:41:56 -0000	1.6
+++ src/seahorse-key-properties.glade	17 Aug 2005 02:46:51 -0000
@@ -16,6 +16,7 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <signal name="delete_event" handler="delete_event" last_modification_time="Sat, 08 Mar 2003 02:23:32 GMT"/>
 
   <child>
@@ -36,725 +37,1202 @@
 	  <property name="enable_popup">True</property>
 
 	  <child>
-	    <widget class="GtkVBox" id="vbox2">
-	      <property name="border_width">12</property>
+	    <widget class="GtkHBox" id="hbox9">
 	      <property name="visible">True</property>
 	      <property name="homogeneous">False</property>
-	      <property name="spacing">6</property>
+	      <property name="spacing">0</property>
 
 	      <child>
-		<widget class="GtkTable" id="primary_table">
+		<widget class="GtkVBox" id="vbox4">
 		  <property name="visible">True</property>
-		  <property name="n_rows">9</property>
-		  <property name="n_columns">4</property>
 		  <property name="homogeneous">False</property>
-		  <property name="row_spacing">0</property>
-		  <property name="column_spacing">12</property>
+		  <property name="spacing">0</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label_name">
+		    <widget class="GtkImage" id="photoid">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></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</property>
+		      <property name="icon_name"></property>
+		      <property name="xalign">0.5</property>
 		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
+		      <property name="xpad">13</property>
 		      <property name="ypad">0</property>
 		    </widget>
 		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">1</property>
-		      <property name="bottom_attach">2</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
 		    </packing>
 		  </child>
 
 		  <child>
-		    <widget class="GtkLabel" id="label24">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Name:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">1</property>
-		      <property name="bottom_attach">2</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
+		    <placeholder/>
 		  </child>
 
 		  <child>
-		    <widget class="GtkLabel" id="label25">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;b&gt;Owner&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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">6</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">0</property>
-		      <property name="bottom_attach">1</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
+		    <placeholder/>
 		  </child>
 
 		  <child>
-		    <widget class="GtkLabel" id="label26">
+		    <widget class="GtkHButtonBox" id="hbuttonbox2">
+		      <property name="border_width">4</property>
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Email:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">2</property>
-		      <property name="bottom_attach">3</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property>
+		      <property name="spacing">0</property>
 
-		  <child>
-		    <widget class="GtkLabel" id="label_email">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">2</property>
-		      <property name="bottom_attach">3</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkButton" id="photoid-prev">
+			  <property name="visible">True</property>
+			  <property name="sensitive">False</property>
+			  <property name="tooltip" translatable="yes">Go to previous Photo ID</property>
+			  <property name="can_default">True</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="photoid_prev_clicked" last_modification_time="Sat, 23 Jul 2005 20:11:17 GMT"/>
 
-		  <child>
-		    <widget class="GtkLabel" id="labelComment">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Comment:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">3</property>
-		      <property name="bottom_attach">4</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+			  <child>
+			    <widget class="GtkAlignment" id="alignment9">
+			      <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="GtkLabel" id="label_comment">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">3</property>
-		      <property name="bottom_attach">4</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+			      <child>
+				<widget class="GtkHBox" id="hbox11">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
 
-		  <child>
-		    <widget class="GtkLabel" id="label20">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;b&gt;Properties&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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">6</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">4</property>
-		      <property name="bottom_attach">5</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+				  <child>
+				    <widget class="GtkImage" id="image9">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-go-back</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="label30">
+				      <property name="visible">True</property>
+				      <property name="label">Previous Photo ID</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>
+		      </child>
 
-		  <child>
-		    <widget class="GtkLabel" id="label23">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Key ID:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">5</property>
-		      <property name="bottom_attach">6</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkButton" id="photoid-next">
+			  <property name="visible">True</property>
+			  <property name="sensitive">False</property>
+			  <property name="tooltip" translatable="yes">Go to next Photo ID</property>
+			  <property name="can_default">True</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="photoid_next_clicked" last_modification_time="Sat, 23 Jul 2005 20:09:53 GMT"/>
 
-		  <child>
-		    <widget class="GtkLabel" id="keyid">
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="label" translatable="yes"></property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">True</property>
-		      <property name="selectable">True</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">5</property>
-		      <property name="bottom_attach">6</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+			  <child>
+			    <widget class="GtkAlignment" id="alignment10">
+			      <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="GtkLabel" id="label28">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;b&gt;Dates&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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">2</property>
-		      <property name="right_attach">3</property>
-		      <property name="top_attach">0</property>
-		      <property name="bottom_attach">1</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+			      <child>
+				<widget class="GtkHBox" id="hbox12">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
 
-		  <child>
-		    <widget class="GtkLabel" id="label27">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Created:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
+				  <child>
+				    <widget class="GtkImage" id="image10">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-go-forward</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="label31">
+				      <property name="visible">True</property>
+				      <property name="label">Next Photo ID</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>
+		      </child>
 		    </widget>
 		    <packing>
-		      <property name="left_attach">2</property>
-		      <property name="right_attach">3</property>
-		      <property name="top_attach">1</property>
-		      <property name="bottom_attach">2</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
 		    </packing>
 		  </child>
 
 		  <child>
-		    <widget class="GtkLabel" id="label_expires">
+		    <widget class="GtkHButtonBox" id="hbuttonbox3">
+		      <property name="border_width">4</property>
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Expires:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">2</property>
-		      <property name="right_attach">3</property>
-		      <property name="top_attach">2</property>
-		      <property name="bottom_attach">3</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property>
+		      <property name="spacing">0</property>
 
-		  <child>
-		    <widget class="GtkLabel" id="label_created">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">3</property>
-		      <property name="right_attach">4</property>
-		      <property name="top_attach">1</property>
-		      <property name="bottom_attach">2</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkButton" id="photoid-delete">
+			  <property name="visible">True</property>
+			  <property name="sensitive">False</property>
+			  <property name="tooltip" translatable="yes">Delete Current Visible Photo ID</property>
+			  <property name="can_default">True</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="photoid_delete_clicked" last_modification_time="Sat, 23 Jul 2005 20:11:41 GMT"/>
 
-		  <child>
-		    <widget class="GtkLabel" id="label_expires">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
+			  <child>
+			    <widget class="GtkAlignment" id="alignment12">
+			      <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="hbox14">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
+
+				  <child>
+				    <widget class="GtkImage" id="image12">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-delete</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="label33">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Delete Photo ID</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>
+		      </child>
+
+		      <child>
+			<widget class="GtkButton" id="photoid-add">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Add new Photo ID</property>
+			  <property name="can_default">True</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="photoid_add_clicked" last_modification_time="Sat, 23 Jul 2005 20:11:58 GMT"/>
+
+			  <child>
+			    <widget class="GtkAlignment" id="alignment11">
+			      <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="hbox13">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
+
+				  <child>
+				    <widget class="GtkImage" id="image11">
+				      <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="label32">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Add Photo ID</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>
+		      </child>
 		    </widget>
 		    <packing>
-		      <property name="left_attach">3</property>
-		      <property name="right_attach">4</property>
-		      <property name="top_attach">2</property>
-		      <property name="bottom_attach">3</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</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="GtkVBox" id="vbox2">
+		  <property name="border_width">12</property>
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label8">
+		    <widget class="GtkTable" id="primary_table">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;b&gt;_Trust&lt;/b&gt;</property>
-		      <property name="use_underline">True</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">6</property>
-		      <property name="mnemonic_widget">trust</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">2</property>
-		      <property name="right_attach">3</property>
-		      <property name="top_attach">4</property>
-		      <property name="bottom_attach">5</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <property name="n_rows">9</property>
+		      <property name="n_columns">4</property>
+		      <property name="homogeneous">False</property>
+		      <property name="row_spacing">0</property>
+		      <property name="column_spacing">12</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label_name">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></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</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="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label24">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Name:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label25">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">&lt;b&gt;Owner&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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">6</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="left_attach">0</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label26">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Email:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label_email">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></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</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="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="labelComment">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Comment:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">3</property>
+			  <property name="bottom_attach">4</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label_comment">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></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</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="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">3</property>
+			  <property name="bottom_attach">4</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label20">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">&lt;b&gt;Properties&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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">6</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="left_attach">0</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">4</property>
+			  <property name="bottom_attach">5</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label23">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Key ID:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">5</property>
+			  <property name="bottom_attach">6</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="keyid">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes"></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">True</property>
+			  <property name="selectable">True</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="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">5</property>
+			  <property name="bottom_attach">6</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label28">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">&lt;b&gt;Dates&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</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="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label27">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Created:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label_expires">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Expires:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-		  <child>
-		    <widget class="GtkOptionMenu" id="trust">
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="history">0</property>
-		      <signal name="changed" handler="trust_changed" last_modification_time="Sat, 08 Mar 2003 02:36:28 GMT"/>
+		      <child>
+			<widget class="GtkLabel" id="label_created">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></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</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="left_attach">3</property>
+			  <property name="right_attach">4</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
 		      <child>
-			<widget class="GtkMenu" id="menu1">
+			<widget class="GtkLabel" id="label_expires">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></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</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="left_attach">3</property>
+			  <property name="right_attach">4</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-			  <child>
-			    <widget class="GtkMenuItem" id="unknown">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Owner is unknown</property>
-			      <property name="label" translatable="yes">Unknown</property>
-			      <property name="use_underline">True</property>
-			    </widget>
-			  </child>
+		      <child>
+			<widget class="GtkLabel" id="label8">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">&lt;b&gt;_Trust&lt;/b&gt;</property>
+			  <property name="use_underline">True</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">6</property>
+			  <property name="mnemonic_widget">trust</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="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">4</property>
+			  <property name="bottom_attach">5</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-			  <child>
-			    <widget class="GtkMenuItem" id="never">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Never trust owner</property>
-			      <property name="label" translatable="yes">Never</property>
-			      <property name="use_underline">True</property>
-			    </widget>
-			  </child>
+		      <child>
+			<widget class="GtkOptionMenu" id="trust">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="history">0</property>
+			  <signal name="changed" handler="trust_changed" last_modification_time="Sat, 08 Mar 2003 02:36:28 GMT"/>
 
 			  <child>
-			    <widget class="GtkMenuItem" id="marginal">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Marginally trust owner</property>
-			      <property name="label" translatable="yes">Marginal</property>
-			      <property name="use_underline">True</property>
-			    </widget>
-			  </child>
+			    <widget class="GtkMenu" id="menu1">
 
-			  <child>
-			    <widget class="GtkMenuItem" id="full">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Fully trust owner</property>
-			      <property name="label" translatable="yes">Full</property>
-			      <property name="use_underline">True</property>
-			    </widget>
-			  </child>
+			      <child>
+				<widget class="GtkMenuItem" id="unknown">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Owner is unknown</property>
+				  <property name="label" translatable="yes">Unknown</property>
+				  <property name="use_underline">True</property>
+				</widget>
+			      </child>
 
-			  <child>
-			    <widget class="GtkMenuItem" id="ultimate">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Your personal key</property>
-			      <property name="label" translatable="yes">Ultimate</property>
-			      <property name="use_underline">True</property>
+			      <child>
+				<widget class="GtkMenuItem" id="never">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Never trust owner</property>
+				  <property name="label" translatable="yes">Never</property>
+				  <property name="use_underline">True</property>
+				</widget>
+			      </child>
+
+			      <child>
+				<widget class="GtkMenuItem" id="marginal">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Marginally trust owner</property>
+				  <property name="label" translatable="yes">Marginal</property>
+				  <property name="use_underline">True</property>
+				</widget>
+			      </child>
+
+			      <child>
+				<widget class="GtkMenuItem" id="full">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Fully trust owner</property>
+				  <property name="label" translatable="yes">Full</property>
+				  <property name="use_underline">True</property>
+				</widget>
+			      </child>
+
+			      <child>
+				<widget class="GtkMenuItem" id="ultimate">
+				  <property name="visible">True</property>
+				  <property name="tooltip" translatable="yes">Your personal key</property>
+				  <property name="label" translatable="yes">Ultimate</property>
+				  <property name="use_underline">True</property>
+				</widget>
+			      </child>
 			    </widget>
 			  </child>
 			</widget>
+			<packing>
+			  <property name="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">5</property>
+			  <property name="bottom_attach">6</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
 		      </child>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">2</property>
-		      <property name="right_attach">3</property>
-		      <property name="top_attach">5</property>
-		      <property name="bottom_attach">6</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
 
-		  <child>
-		    <widget class="GtkCheckButton" id="disabled">
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Disabled keys cannot be used for operations</property>
-		      <property name="can_focus">True</property>
-		      <property name="label" translatable="yes">Dis_abled</property>
-		      <property name="use_underline">True</property>
-		      <property name="relief">GTK_RELIEF_NORMAL</property>
-		      <property name="focus_on_click">True</property>
-		      <property name="active">False</property>
-		      <property name="inconsistent">False</property>
-		      <property name="draw_indicator">True</property>
-		      <signal name="toggled" handler="disabled_toggled" last_modification_time="Sat, 08 Mar 2003 02:37:04 GMT"/>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">3</property>
-		      <property name="right_attach">4</property>
-		      <property name="top_attach">5</property>
-		      <property name="bottom_attach">6</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkCheckButton" id="disabled">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Disabled keys cannot be used for operations</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Dis_abled</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			  <signal name="toggled" handler="disabled_toggled" last_modification_time="Sat, 08 Mar 2003 02:37:04 GMT"/>
+			</widget>
+			<packing>
+			  <property name="left_attach">3</property>
+			  <property name="right_attach">4</property>
+			  <property name="top_attach">5</property>
+			  <property name="bottom_attach">6</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-		  <child>
-		    <widget class="GtkLabel" id="label21">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Strength:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">6</property>
-		      <property name="bottom_attach">7</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkLabel" id="label21">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Strength:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">6</property>
+			  <property name="bottom_attach">7</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-		  <child>
-		    <widget class="GtkLabel" id="label_strength">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">4</property>
-		      <property name="top_attach">6</property>
-		      <property name="bottom_attach">7</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkLabel" id="label_strength">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></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</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="left_attach">1</property>
+			  <property name="right_attach">4</property>
+			  <property name="top_attach">6</property>
+			  <property name="bottom_attach">7</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-		  <child>
-		    <widget class="GtkLabel" id="label22">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Type:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">7</property>
-		      <property name="bottom_attach">8</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkLabel" id="label22">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Type:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">7</property>
+			  <property name="bottom_attach">8</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-		  <child>
-		    <widget class="GtkLabel" id="label_type">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">2</property>
-		      <property name="top_attach">7</property>
-		      <property name="bottom_attach">8</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkLabel" id="label_type">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></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</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="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">7</property>
+			  <property name="bottom_attach">8</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-		  <child>
-		    <widget class="GtkLabel" id="label9">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Fingerprint:</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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">10</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="left_attach">0</property>
-		      <property name="right_attach">1</property>
-		      <property name="top_attach">8</property>
-		      <property name="bottom_attach">9</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
-		    </packing>
-		  </child>
+		      <child>
+			<widget class="GtkLabel" id="label9">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Fingerprint:</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</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">10</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="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">8</property>
+			  <property name="bottom_attach">9</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 
-		  <child>
-		    <widget class="GtkLabel" id="fingerprint">
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="label" translatable="yes"></property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">True</property>
-		      <property name="selectable">True</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
+		      <child>
+			<widget class="GtkLabel" id="fingerprint">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes"></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">True</property>
+			  <property name="selectable">True</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="left_attach">1</property>
+			  <property name="right_attach">4</property>
+			  <property name="top_attach">8</property>
+			  <property name="bottom_attach">9</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
 		    </widget>
 		    <packing>
-		      <property name="left_attach">1</property>
-		      <property name="right_attach">4</property>
-		      <property name="top_attach">8</property>
-		      <property name="bottom_attach">9</property>
-		      <property name="x_options">fill</property>
-		      <property name="y_options"></property>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">False</property>
 		    </packing>
 		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkHBox" id="hbox8">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
 
 		  <child>
-		    <widget class="GtkButton" id="passphrase">
-		      <property name="border_width">6</property>
+		    <widget class="GtkHBox" id="hbox8">
 		      <property name="visible">True</property>
-		      <property name="sensitive">False</property>
-		      <property name="can_default">True</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="passphrase_clicked" last_modification_time="Wed, 13 Oct 2004 18:19:31 GMT"/>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
 
 		      <child>
-			<widget class="GtkAlignment" id="alignment7">
+			<widget class="GtkButton" id="passphrase">
+			  <property name="border_width">6</property>
 			  <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>
+			  <property name="sensitive">False</property>
+			  <property name="can_default">True</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="passphrase_clicked" last_modification_time="Wed, 13 Oct 2004 18:19:31 GMT"/>
 
 			  <child>
-			    <widget class="GtkHBox" id="hbox9">
+			    <widget class="GtkAlignment" id="alignment7">
 			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">2</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="GtkImage" id="image7">
+				<widget class="GtkHBox" id="hbox9">
 				  <property name="visible">True</property>
-				  <property name="stock">gnome-stock-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>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
 
-			      <child>
-				<widget class="GtkLabel" id="label19">
-				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">Change _Passphrase</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>
+				  <child>
+				    <widget class="GtkImage" id="image7">
+				      <property name="visible">True</property>
+				      <property name="stock">gnome-stock-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="label19">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Change _Passphrase</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>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
 			      </child>
 			    </widget>
 			  </child>
 			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
 		      </child>
 		    </widget>
 		    <packing>
@@ -823,6 +1301,10 @@
 				  <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>
@@ -844,8 +1326,8 @@
 		</widget>
 		<packing>
 		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
 		</packing>
 	      </child>
 	    </widget>
@@ -868,6 +1350,10 @@
 	      <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>
@@ -900,6 +1386,10 @@
 		      <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>
@@ -965,6 +1455,10 @@
 				  <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>
@@ -1041,6 +1535,10 @@
 				  <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>
@@ -1117,6 +1615,10 @@
 				  <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>
@@ -1193,6 +1695,10 @@
 				  <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>
@@ -1236,6 +1742,9 @@
 		      <property name="rules_hint">True</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>
@@ -1265,6 +1774,10 @@
 	      <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>
@@ -1295,6 +1808,10 @@
 		  <property name="xpad">0</property>
 		  <property name="ypad">0</property>
 		  <property name="mnemonic_widget">sigs</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="left_attach">0</property>
@@ -1323,6 +1840,9 @@
 		      <property name="rules_hint">True</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>
@@ -1398,6 +1918,10 @@
 				  <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>
@@ -1439,6 +1963,8 @@
 		<widget class="GtkComboBox" id="sigs">
 		  <property name="visible">True</property>
 		  <property name="items" translatable="yes">All</property>
+		  <property name="add_tearoffs">False</property>
+		  <property name="focus_on_click">True</property>
 		  <signal name="changed" handler="sigs_changed" last_modification_time="Tue, 12 Oct 2004 23:24:12 GMT"/>
 		</widget>
 		<packing>
@@ -1470,6 +1996,10 @@
 	      <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>
Index: src/seahorse-xloadimage.c
===================================================================
RCS file: /cvs/gnome/seahorse/src/seahorse-xloadimage.c,v
retrieving revision 1.1
diff -u -r1.1 seahorse-xloadimage.c
--- src/seahorse-xloadimage.c	27 Jul 2005 05:04:21 -0000	1.1
+++ src/seahorse-xloadimage.c	17 Aug 2005 02:46:51 -0000
@@ -1,3 +1,24 @@
+/*
+ * Seahorse
+ *
+ * Copyright (C) 2005 Nate Nielsen
+ *
+ * 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 <stdio.h>
 #include <stdlib.h>
 
@@ -11,20 +32,26 @@
     FILE* f;
 
     fname = getenv ("SEAHORSE_IMAGE_FILE");
-    if (!fname)
-        errx (2, "specify output file in $SEAHORSE_IMAGE_FILE");
+    if (!fname) {
+        fprintf (stderr, "seahorse-xloadimage: specify output file in $SEAHORSE_IMAGE_FILE\n");
+        exit (2);
+    }
 
     f = fopen (fname, "wb");
-    if (!f)
-        err (1, "couldn't open output file: %s", fname);
+    if (!f) {
+        fprintf (stderr, "seahorse-xloadimage: couldn't open output file: %s", fname);
+        exit (1);
+    }
 
     do {
         len = fread (buf, sizeof(unsigned char), BUF_SIZE, stdin);
     } while (fwrite (buf, sizeof(unsigned char), len, f) == BUF_SIZE);
 
-    if (ferror (f))
-        err (1, "couldn't write to output file: %s", fname);
-
+    if (ferror (f)) {
+        fprintf (stderr, "seahorse-xloadimage: couldn't write to output file: %s", fname);
+        exit (1);
+    }
+        
     fclose(f);
     return 0;
 }
