[Winpt-commits] r176 - in trunk: . Include Po Src icons

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Mon Feb 13 10:38:09 CET 2006


Author: twoaday
Date: 2006-02-13 10:38:03 +0100 (Mon, 13 Feb 2006)
New Revision: 176

Added:
   trunk/icons/ChangeLog
   trunk/icons/keysig.ico
   trunk/icons/userid.ico
Modified:
   trunk/Include/wptKeyEdit.h
   trunk/Include/wptKeylist.h
   trunk/Include/wptNLS.h
   trunk/Include/wptRegistry.h
   trunk/NEWS
   trunk/Po/de.po
   trunk/Src/ChangeLog
   trunk/Src/WinPT-en.rc
   trunk/Src/WinPT.cpp
   trunk/Src/resource.h
   trunk/Src/wptClipEncryptDlg.cpp
   trunk/Src/wptClipSignEncDlg.cpp
   trunk/Src/wptFileManagerDlg.cpp
   trunk/Src/wptKeyEdit.cpp
   trunk/Src/wptKeyEditCB.cpp
   trunk/Src/wptKeyEditDlgs.cpp
   trunk/Src/wptKeyManagerDlg.cpp
   trunk/Src/wptKeyPropsDlg.cpp
   trunk/Src/wptKeylist.cpp
   trunk/Src/wptKeysigDlg.cpp
   trunk/Src/wptKeysignDlg.cpp
   trunk/Src/wptNLS.c
   trunk/Src/wptPreferencesDlg.cpp
   trunk/Src/wptRegistry.cpp
   trunk/Src/wptSigTreeDlg.cpp
   trunk/icons/Makefile.am
Log:


Modified: trunk/Include/wptKeyEdit.h
===================================================================
--- trunk/Include/wptKeyEdit.h	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Include/wptKeyEdit.h	2006-02-13 09:38:03 UTC (rev 176)
@@ -91,10 +91,14 @@
     int resval;
     int type;
 
+    bool key_has_passwd;
+
     int sig_index;
     int key_index;
     int uid_index;
 
+    int valid;
+
 public:
     int cnt;
     int cmd_sent;
@@ -106,7 +110,6 @@
     const char *exp_date; /* XXX */
     gpgme_pubkey_algo_t pubkey_algo;
     int pubkey_size;
-    int valid; /* XXX */
     int flags;
     int sig_class;
     int reason;
@@ -122,6 +125,7 @@
     void clear (void);
     void clearPassphrase (void);
 
+    void setNoPassphrase (bool val);
     void setPassphrase (const char *pass);
     void setKey (gpgme_key_t key);
     void setKeyID (const char *keyid);
@@ -135,6 +139,7 @@
     int getUseridIndex (void);
     int getKeyIndex (void);
     int getSigIndex (void);
+    int getValidDays (void);
 
     gpgme_error_t signUserid (int uid_idx, int mode, int sig_class, 
 			      const char *exp_date);

Modified: trunk/Include/wptKeylist.h
===================================================================
--- trunk/Include/wptKeylist.h	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Include/wptKeylist.h	2006-02-13 09:38:03 UTC (rev 176)
@@ -39,8 +39,8 @@
 /* Valid keylist modes. */
 enum keylist_mode_t {	
     KEYLIST_ALL         =  0,	
-    KEYLIST_LIST        =  1,	
-    KEYLIST_ENCRYPT     =  2,
+    KEYLIST_LIST        =  1,
+    KEYLIST_ENCRYPT	=  2, /* obsolete */
     KEYLIST_ENCRYPT_MIN =  4,	
     KEYLIST_SIGN        =  8,	
     KEYLIST_FLAG_FILE   = 16,

Modified: trunk/Include/wptNLS.h
===================================================================
--- trunk/Include/wptNLS.h	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Include/wptNLS.h	2006-02-13 09:38:03 UTC (rev 176)
@@ -25,12 +25,19 @@
 extern "C" {
 #endif
 
+struct gettext_tab_s {
+    int ctlid;
+    const char *trans;
+};
+
 #define _(a) gettext (a)
 #define N_(a) (a)
 
 int set_gettext_file (const char * filename, const char * nls_dir);
 const char *gettext (const char * msgid);
 const char *get_gettext_langid (void);
+void gettext_localize_dialog (HWND dlg, struct gettext_tab_s *tab,
+			       const char *title);
 
 #ifdef __cplusplus
 }

Modified: trunk/Include/wptRegistry.h
===================================================================
--- trunk/Include/wptRegistry.h	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Include/wptRegistry.h	2006-02-13 09:38:03 UTC (rev 176)
@@ -28,7 +28,6 @@
     CFG_WORDWRAP,
     CFG_FASTMODE,
     CFG_VIEWER,
-    CFG_KEYLISTMODE,
     CFG_WIPEMODE,
     CFG_ALWAYSTRUST,
     CFG_AUTOBACKUP,
@@ -57,7 +56,6 @@
     int use_tmpfiles;	/* use tempfiles for gpg communication */
     int use_viewer;	/* use clipboard viewer for displaying plaintext */
     int no_zip_mmedia;  /* disable compression for multi-media files (movies, music) */
-    int keylist_mode;   /* normal=0 minimal=1 or  */
     int wipe_mode;	/* simple=0, dod=1, gutmann=2 */
     int always_trust;	/* skip key validation (1 means yes) */
     int auto_backup;	/* automatic backup (1 means activated) */

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/NEWS	2006-02-13 09:38:03 UTC (rev 176)
@@ -751,4 +751,6 @@
   different OS systems.
 * Check for ultimately trusted keys and issue a warning
   if appropriate.
-  
\ No newline at end of file
+* The program can now handle keys without a passphrase (again).
+* New tree based dialog to list the signatures.
+

Modified: trunk/Po/de.po
===================================================================
--- trunk/Po/de.po	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Po/de.po	2006-02-13 09:38:03 UTC (rev 176)
@@ -15,7 +15,7 @@
 msgstr ""
 "Project-Id-Version: WinPT 0.11.6\n"
 "Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2006-02-06 20:54+0100\n"
+"POT-Creation-Date: 2006-02-09 15:39+0100\n"
 "PO-Revision-Date: 2005-12-28 16:10+0100\n"
 "Last-Translator: Timo Schulz <ts at g10code.de>\n"
 "Language-Team: DE <twoaday at freakmail.de>\n"
@@ -28,9 +28,9 @@
 msgstr "Konnte GPG-Heimatverzeichnis nicht erstellen"
 
 #: Src/WinPT.cpp:185 Src/WinPT.cpp:217 Src/WinPT.cpp:267 Src/WinPT.cpp:271
-#: Src/WinPT.cpp:434 Src/WinPT.cpp:441 Src/WinPT.cpp:486 Src/WinPT.cpp:514
-#: Src/WinPT.cpp:523 Src/WinPT.cpp:527 Src/WinPT.cpp:544 Src/WinPT.cpp:614
-#: Src/WinPT.cpp:627 Src/WinPT.cpp:674 Src/WinPT.cpp:700 Src/WinPT.cpp:718
+#: Src/WinPT.cpp:433 Src/WinPT.cpp:440 Src/WinPT.cpp:482 Src/WinPT.cpp:510
+#: Src/WinPT.cpp:519 Src/WinPT.cpp:523 Src/WinPT.cpp:540 Src/WinPT.cpp:610
+#: Src/WinPT.cpp:623 Src/WinPT.cpp:670 Src/WinPT.cpp:696 Src/WinPT.cpp:714
 #: Src/wptErrors.cpp:141 Src/wptGPG.cpp:912 Src/wptGPG.cpp:923
 #: Src/wptGPG.cpp:932 Src/wptGPG.cpp:942 Src/wptMainProc.cpp:346
 #: Src/wptMainProc.cpp:530
@@ -77,16 +77,16 @@
 msgstr "Das Kopieren der keyserver.conf ist fehlgeschlagen"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:245
-#: Src/WinPT.cpp:433
+#: Src/WinPT.cpp:432
 msgid "Cryptographic selftest failed."
 msgstr "Kryptographischer Selbsttest ist fehlgeschlagen."
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:252
-#: Src/WinPT.cpp:440
+#: Src/WinPT.cpp:439
 msgid "A newer GPGME version is needed; at least "
 msgstr "Eine neuere GPGME version wird benötigt; mindestens "
 
-#: Src/WinPT.cpp:487
+#: Src/WinPT.cpp:483
 #, c-format
 msgid ""
 "GPG home directory is not set correctly.\n"
@@ -97,17 +97,17 @@
 "Bitte überprüfen Sie die GPG Registryseinträge:\n"
 "%s"
 
-#: Src/WinPT.cpp:491
+#: Src/WinPT.cpp:487
 msgid "Select GPG Public Keyring"
 msgstr "Öffentlichen GPG-Schlüsselbund auswählen"
 
 # XXX: the \0\0 problem
 # c:\oss\winpt-gpgme\src\WinPT.cpp:313
-#: Src/WinPT.cpp:513
+#: Src/WinPT.cpp:509
 msgid "GPG home directory could not be determited."
 msgstr "GPG-Home-Dir konnte nicht bestimmt werden."
 
-#: Src/WinPT.cpp:521
+#: Src/WinPT.cpp:517
 msgid ""
 "Could not find the GPG binary (gpg.exe).\n"
 "Do you want to start the GPG preferences to correct  this problem?"
@@ -116,7 +116,7 @@
 "öffnen um das Problem zu beheben?"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:339
-#: Src/WinPT.cpp:536
+#: Src/WinPT.cpp:532
 msgid ""
 "Could not access and/or find the public and secret keyring.\n"
 "If this is an accident, quit the program and fix it.\n"
@@ -131,20 +131,20 @@
 # c:\oss\winpt-gpgme\src\WinPT.cpp:376
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:426
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:711
-#: Src/WinPT.cpp:569 Src/wptFileManagerDlg.cpp:487
-#: Src/wptFileManagerDlg.cpp:801
+#: Src/WinPT.cpp:565 Src/wptFileManagerDlg.cpp:488
+#: Src/wptFileManagerDlg.cpp:802
 msgid "Wipe Free Space"
 msgstr "Freien Speicher Löschen"
 
-#: Src/WinPT.cpp:613
+#: Src/WinPT.cpp:609
 msgid "Could not register window class"
 msgstr "Konnte keine Fensterklasse registrieren"
 
-#: Src/WinPT.cpp:627
+#: Src/WinPT.cpp:623
 msgid "Could not create window"
 msgstr "Konnte Fenster nicht erstellen"
 
-#: Src/WinPT.cpp:698
+#: Src/WinPT.cpp:694
 msgid ""
 "The keycache was not initialized or is empty.\n"
 "Please check your GPG config (keyrings, pathes...)"
@@ -152,7 +152,7 @@
 "Der Schlüsselspeicher wurde nicht initialisiert oder ist leer.\n"
 "Bitte checken Sie die GPG Konfiguration (Schlüsselbunde, Pfade)"
 
-#: Src/WinPT.cpp:701
+#: Src/WinPT.cpp:697
 msgid ""
 "It seems that GPG is not set properly.\n"
 "Do you want to start the GPG preferences dialog?"
@@ -160,7 +160,7 @@
 "GPG ist nicht richtig konfiguriert.\n"
 "Den GPG-Einstellungsdialog starten?"
 
-#: Src/WinPT.cpp:719
+#: Src/WinPT.cpp:715
 #, c-format
 msgid ""
 "Default key (from the GPG config file) could not be found.\n"
@@ -232,7 +232,7 @@
 msgstr "Über &GPG"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:700
-#: Src/wptAboutDlgs.cpp:113 Src/wptKeyEditDlgs.cpp:1953
+#: Src/wptAboutDlgs.cpp:113 Src/wptKeyEditDlgs.cpp:1981
 #: Src/wptKeyManagerDlg.cpp:963
 msgid "&Help"
 msgstr "&Hilfe"
@@ -318,7 +318,7 @@
 "Diese Operation wird die Schlüssel auf der Karte überschreiben.\n"
 "Trotzdem fortfahren?"
 
-#: Src/wptCardDlg.cpp:600 Src/wptKeyEditDlgs.cpp:505
+#: Src/wptCardDlg.cpp:600 Src/wptKeyEditDlgs.cpp:513
 msgid "&Name"
 msgstr "&Name"
 
@@ -334,7 +334,7 @@
 msgid "Off-card passphrase"
 msgstr "\"Off-card\" Passwort"
 
-#: Src/wptCardDlg.cpp:604 Src/wptKeyEditDlgs.cpp:640 Src/wptKeygenDlg.cpp:382
+#: Src/wptCardDlg.cpp:604 Src/wptKeyEditDlgs.cpp:649 Src/wptKeygenDlg.cpp:382
 msgid "&Never"
 msgstr "&Niemals"
 
@@ -379,7 +379,7 @@
 msgid "Please use plain ASCII charset for the fields."
 msgstr "Bitte nur den 7-bit ASCII Zeichensatz verwenden."
 
-#: Src/wptCardDlg.cpp:683 Src/wptKeyEditDlgs.cpp:1340
+#: Src/wptCardDlg.cpp:683 Src/wptKeyEditDlgs.cpp:1355
 msgid "The date you have chosen lies in the past."
 msgstr "Das gewählte Datum ist in der Vergangenheit."
 
@@ -475,9 +475,9 @@
 msgstr ""
 "Ungültige OpenPGP Nachricht  (vielleicht: \"quoted printable\" im Armorteil)."
 
-#: Src/wptClipDecryptDlg.cpp:164 Src/wptClipEncryptDlg.cpp:207
+#: Src/wptClipDecryptDlg.cpp:164 Src/wptClipEncryptDlg.cpp:206
 #: Src/wptClipSignDlg.cpp:122 Src/wptClipSignDlg.cpp:262
-#: Src/wptClipSignEncDlg.cpp:198 Src/wptKeyManager.cpp:329
+#: Src/wptClipSignEncDlg.cpp:197 Src/wptKeyManager.cpp:329
 #: Src/wptKeyManager.cpp:792 Src/wptKeyManager.cpp:979 Src/wptSymEnc.cpp:90
 msgid "GnuPG Status: Finished"
 msgstr "GnuPG-Status: Abgeschlossen"
@@ -519,7 +519,7 @@
 #: Src/wptClipEditDlg.cpp:58 Src/wptClipEditDlg.cpp:111
 #: Src/wptClipEditDlg.cpp:119 Src/wptClipEditDlg.cpp:158
 #: Src/wptClipEditDlg.cpp:167 Src/wptClipEditDlg.cpp:238
-#: Src/wptClipEditDlg.cpp:243 Src/wptFileManagerDlg.cpp:211
+#: Src/wptClipEditDlg.cpp:243 Src/wptFileManagerDlg.cpp:212
 #: Src/wptMainProc.cpp:159 Src/wptMainProc.cpp:227 Src/wptMainProc.cpp:270
 #: Src/wptMainProc.cpp:431 Src/wptMainProc.cpp:512 Src/wptMainProc.cpp:516
 msgid "Clipboard"
@@ -577,7 +577,7 @@
 msgid "Add quotes"
 msgstr "'>' hinzufügen"
 
-#: Src/wptClipEditDlg.cpp:200 Src/wptKeyEditDlgs.cpp:1952
+#: Src/wptClipEditDlg.cpp:200 Src/wptKeyEditDlgs.cpp:1980
 #: Src/wptKeyserverDlg.cpp:610 Src/wptMDSumDlg.cpp:104
 #: Src/wptOwnertrustDlg.cpp:103
 msgid "&Close"
@@ -588,38 +588,38 @@
 msgid "Recipients unsuable for encryption:\n"
 msgstr "Empfänger nicht geeignet für Verschlüsselung\n"
 
-#: Src/wptClipEncryptDlg.cpp:120 Src/wptClipEncryptDlg.cpp:141
-#: Src/wptClipEncryptDlg.cpp:193 Src/wptClipEncryptDlg.cpp:200
-#: Src/wptClipEncryptDlg.cpp:231 Src/wptMainProc.cpp:141
+#: Src/wptClipEncryptDlg.cpp:120 Src/wptClipEncryptDlg.cpp:140
+#: Src/wptClipEncryptDlg.cpp:192 Src/wptClipEncryptDlg.cpp:199
+#: Src/wptClipEncryptDlg.cpp:230 Src/wptMainProc.cpp:141
 #: Src/wptMainProc.cpp:209
 msgid "Encryption"
 msgstr "Verschlüsseln"
 
-#: Src/wptClipEncryptDlg.cpp:142
+#: Src/wptClipEncryptDlg.cpp:141
 msgid "&Find"
 msgstr "&Suche"
 
-#: Src/wptClipEncryptDlg.cpp:143 Src/wptClipSignEncDlg.cpp:113
+#: Src/wptClipEncryptDlg.cpp:142 Src/wptClipSignEncDlg.cpp:112
 #: Src/wptCommonDlg.cpp:68 Src/wptFileManagerDlg.cpp:84
-#: Src/wptFileManagerDlg.cpp:217 Src/wptFileManagerDlg.cpp:285
+#: Src/wptFileManagerDlg.cpp:218 Src/wptFileManagerDlg.cpp:286
 #: Src/wptFileSaveDlg.cpp:58 Src/wptFirstRunDlg.cpp:47
-#: Src/wptKeyEditDlgs.cpp:333 Src/wptKeyEditDlgs.cpp:433
-#: Src/wptKeyEditDlgs.cpp:508 Src/wptKeyEditDlgs.cpp:641
+#: Src/wptKeyEditDlgs.cpp:337 Src/wptKeyEditDlgs.cpp:439
+#: Src/wptKeyEditDlgs.cpp:516 Src/wptKeyEditDlgs.cpp:650
 #: Src/wptKeyEditOwnertrustDlg.cpp:67 Src/wptKeygenDlg.cpp:383
 #: Src/wptKeygenDlg.cpp:546 Src/wptKeyRevokeDlg.cpp:101
 #: Src/wptKeyserverDlg.cpp:542 Src/wptKeyserverSearchDlg.cpp:68
-#: Src/wptKeysignDlg.cpp:268 Src/wptPassphraseCB.cpp:83
+#: Src/wptKeysignDlg.cpp:269 Src/wptPassphraseCB.cpp:83
 #: Src/wptPassphraseDlg.cpp:68 Src/wptPINDlg.cpp:55
-#: Src/wptPreferencesDlg.cpp:151 Src/wptTextInputDlg.cpp:84
+#: Src/wptPreferencesDlg.cpp:132 Src/wptTextInputDlg.cpp:84
 msgid "&Cancel"
 msgstr "&Abbrechen"
 
-#: Src/wptClipEncryptDlg.cpp:193 Src/wptClipSignEncDlg.cpp:158
+#: Src/wptClipEncryptDlg.cpp:192 Src/wptClipSignEncDlg.cpp:157
 msgid "You must select at least one key."
 msgstr "Sie müssen wenigstens einen Schlüssel auswählen."
 
 # c:\oss\winpt-gpgme\src\wptClipEncryptDlg.cpp:229
-#: Src/wptClipEncryptDlg.cpp:231
+#: Src/wptClipEncryptDlg.cpp:230
 #, c-format
 msgid "No recipient found with '%s'"
 msgstr "Keine Empfaenger mit '%s' gefunden"
@@ -629,7 +629,7 @@
 msgstr "Schlüsselimport-Statistiken"
 
 #: Src/wptClipSignDlg.cpp:104 Src/wptClipSignDlg.cpp:219
-#: Src/wptClipSignEncDlg.cpp:177
+#: Src/wptClipSignEncDlg.cpp:176
 msgid "Could not get default key."
 msgstr "Konnte den Standardschlüssel nicht finden"
 
@@ -637,7 +637,7 @@
 #: Src/wptClipSignDlg.cpp:120 Src/wptClipSignDlg.cpp:175
 #: Src/wptClipSignDlg.cpp:219 Src/wptClipSignDlg.cpp:227
 #: Src/wptClipSignDlg.cpp:246 Src/wptClipSignDlg.cpp:257
-#: Src/wptClipSignEncDlg.cpp:167 Src/wptClipSignEncDlg.cpp:177
+#: Src/wptClipSignEncDlg.cpp:166 Src/wptClipSignEncDlg.cpp:176
 #: Src/wptFileManager.cpp:1086 Src/wptFileManager.cpp:1104
 #: Src/wptFileManager.cpp:1366 Src/wptMainProc.cpp:153 Src/wptMainProc.cpp:215
 msgid "Signing"
@@ -652,22 +652,22 @@
 "Kein Schlüssel ausgewählt.\n"
 "GPG-Standard-Schlüssel '%s' benutzen?"
 
-#: Src/wptClipSignEncDlg.cpp:112 Src/wptClipSignEncDlg.cpp:159
-#: Src/wptClipSignEncDlg.cpp:186 Src/wptClipSignEncDlg.cpp:195
+#: Src/wptClipSignEncDlg.cpp:111 Src/wptClipSignEncDlg.cpp:158
+#: Src/wptClipSignEncDlg.cpp:185 Src/wptClipSignEncDlg.cpp:194
 #: Src/wptMainProc.cpp:147 Src/wptMainProc.cpp:221
 msgid "Sign & Encrypt"
 msgstr "Signieren & Verschlüsseln"
 
 # c:\oss\winpt-gpgme\src\wptClipSignEncDlg.cpp:121
-#: Src/wptClipSignEncDlg.cpp:122
+#: Src/wptClipSignEncDlg.cpp:121
 msgid "Select key for signing"
 msgstr "Schlüssel zum Signieren auswählen"
 
-#: Src/wptClipSignEncDlg.cpp:123
+#: Src/wptClipSignEncDlg.cpp:122
 msgid "Signing key:"
 msgstr "Signierer Schlüssel:"
 
-#: Src/wptClipSignEncDlg.cpp:167 Src/wptKeylist.cpp:1179
+#: Src/wptClipSignEncDlg.cpp:166 Src/wptKeylist.cpp:1179
 msgid "No key was selected."
 msgstr "Kein Schlüssel ausgewählt."
 
@@ -679,7 +679,7 @@
 #: Src/wptClipVerifyDlg.cpp:186 Src/wptClipVerifyDlg.cpp:193
 #: Src/wptClipVerifyDlg.cpp:225 Src/wptClipVerifyDlg.cpp:236
 #: Src/wptFileManager.cpp:1552 Src/wptFileManager.cpp:1607
-#: Src/wptFileManagerDlg.cpp:550 Src/wptFileVerifyDlg.cpp:81
+#: Src/wptFileManagerDlg.cpp:551 Src/wptFileVerifyDlg.cpp:81
 #: Src/wptFileVerifyDlg.cpp:145 Src/wptMainProc.cpp:179
 #: Src/wptMainProc.cpp:245 Src/wptMainProc.cpp:257 Src/wptMainProc.cpp:265
 #: Src/wptMainProc.cpp:419
@@ -730,33 +730,33 @@
 msgid "Please enter a valid URL."
 msgstr "Bitte eine gültige URL eingeben."
 
-#: Src/wptCommonDlg.cpp:124 Src/wptKeyEditDlgs.cpp:756
-#: Src/wptKeyEditDlgs.cpp:814 Src/wptKeyEditDlgs.cpp:852
-#: Src/wptKeyEditDlgs.cpp:865 Src/wptKeyEditDlgs.cpp:915
-#: Src/wptKeyEditDlgs.cpp:955 Src/wptKeyEditDlgs.cpp:962
-#: Src/wptKeyEditDlgs.cpp:980 Src/wptKeyEditDlgs.cpp:1029
-#: Src/wptKeyEditDlgs.cpp:1036 Src/wptKeyEditDlgs.cpp:1127
-#: Src/wptKeyEditDlgs.cpp:1133 Src/wptKeyEditDlgs.cpp:1262
-#: Src/wptKeyEditDlgs.cpp:1266 Src/wptKeyEditDlgs.cpp:1270
-#: Src/wptKeyEditDlgs.cpp:1275 Src/wptKeyEditDlgs.cpp:1312
-#: Src/wptKeyEditDlgs.cpp:1316 Src/wptKeyEditDlgs.cpp:1326
-#: Src/wptKeyEditDlgs.cpp:1341 Src/wptKeyEditDlgs.cpp:1345
-#: Src/wptKeyEditDlgs.cpp:1385 Src/wptKeyEditDlgs.cpp:1390
-#: Src/wptKeyEditDlgs.cpp:1397 Src/wptKeyEditDlgs.cpp:1403
-#: Src/wptKeyEditDlgs.cpp:1408 Src/wptKeyEditDlgs.cpp:1451
-#: Src/wptKeyEditDlgs.cpp:1456 Src/wptKeyEditDlgs.cpp:1463
-#: Src/wptKeyEditDlgs.cpp:1470 Src/wptKeyEditDlgs.cpp:1473
-#: Src/wptKeyEditDlgs.cpp:1511 Src/wptKeyEditDlgs.cpp:1519
-#: Src/wptKeyEditDlgs.cpp:1553 Src/wptKeyEditDlgs.cpp:1561
-#: Src/wptKeyEditDlgs.cpp:1660 Src/wptKeyEditDlgs.cpp:1693
-#: Src/wptKeyEditDlgs.cpp:1720 Src/wptKeyEditDlgs.cpp:1724
-#: Src/wptKeyEditDlgs.cpp:1733 Src/wptKeyEditDlgs.cpp:1852
-#: Src/wptKeyEditDlgs.cpp:1857 Src/wptKeyEditDlgs.cpp:1866
-#: Src/wptKeyEditDlgs.cpp:1878 Src/wptKeyEditDlgs.cpp:1882
-#: Src/wptKeyEditDlgs.cpp:1933 Src/wptKeyEditDlgs.cpp:1943
-#: Src/wptKeyEditDlgs.cpp:1954 Src/wptKeyEditDlgs.cpp:1983
-#: Src/wptKeyEditDlgs.cpp:1988 Src/wptKeyManagerDlg.cpp:991
-#: Src/wptKeyManagerDlg.cpp:1791
+#: Src/wptCommonDlg.cpp:124 Src/wptKeyEditDlgs.cpp:767
+#: Src/wptKeyEditDlgs.cpp:826 Src/wptKeyEditDlgs.cpp:865
+#: Src/wptKeyEditDlgs.cpp:880 Src/wptKeyEditDlgs.cpp:930
+#: Src/wptKeyEditDlgs.cpp:970 Src/wptKeyEditDlgs.cpp:977
+#: Src/wptKeyEditDlgs.cpp:995 Src/wptKeyEditDlgs.cpp:1044
+#: Src/wptKeyEditDlgs.cpp:1051 Src/wptKeyEditDlgs.cpp:1142
+#: Src/wptKeyEditDlgs.cpp:1148 Src/wptKeyEditDlgs.cpp:1277
+#: Src/wptKeyEditDlgs.cpp:1281 Src/wptKeyEditDlgs.cpp:1285
+#: Src/wptKeyEditDlgs.cpp:1290 Src/wptKeyEditDlgs.cpp:1327
+#: Src/wptKeyEditDlgs.cpp:1331 Src/wptKeyEditDlgs.cpp:1341
+#: Src/wptKeyEditDlgs.cpp:1356 Src/wptKeyEditDlgs.cpp:1360
+#: Src/wptKeyEditDlgs.cpp:1402 Src/wptKeyEditDlgs.cpp:1407
+#: Src/wptKeyEditDlgs.cpp:1414 Src/wptKeyEditDlgs.cpp:1420
+#: Src/wptKeyEditDlgs.cpp:1425 Src/wptKeyEditDlgs.cpp:1470
+#: Src/wptKeyEditDlgs.cpp:1475 Src/wptKeyEditDlgs.cpp:1482
+#: Src/wptKeyEditDlgs.cpp:1489 Src/wptKeyEditDlgs.cpp:1492
+#: Src/wptKeyEditDlgs.cpp:1532 Src/wptKeyEditDlgs.cpp:1540
+#: Src/wptKeyEditDlgs.cpp:1557 Src/wptKeyEditDlgs.cpp:1577
+#: Src/wptKeyEditDlgs.cpp:1585 Src/wptKeyEditDlgs.cpp:1686
+#: Src/wptKeyEditDlgs.cpp:1719 Src/wptKeyEditDlgs.cpp:1746
+#: Src/wptKeyEditDlgs.cpp:1750 Src/wptKeyEditDlgs.cpp:1759
+#: Src/wptKeyEditDlgs.cpp:1878 Src/wptKeyEditDlgs.cpp:1883
+#: Src/wptKeyEditDlgs.cpp:1892 Src/wptKeyEditDlgs.cpp:1906
+#: Src/wptKeyEditDlgs.cpp:1910 Src/wptKeyEditDlgs.cpp:1961
+#: Src/wptKeyEditDlgs.cpp:1971 Src/wptKeyEditDlgs.cpp:1982
+#: Src/wptKeyEditDlgs.cpp:2011 Src/wptKeyEditDlgs.cpp:2016
+#: Src/wptKeyManagerDlg.cpp:991 Src/wptKeyManagerDlg.cpp:1791
 msgid "Key Edit"
 msgstr "Schlüssel bearbeiten"
 
@@ -773,8 +773,8 @@
 msgid "No"
 msgstr "&Nein"
 
-#: Src/wptCommonDlg.cpp:215 Src/wptKeyEditDlgs.cpp:233
-#: Src/wptKeyEditDlgs.cpp:1093
+#: Src/wptCommonDlg.cpp:215 Src/wptKeyEditDlgs.cpp:237
+#: Src/wptKeyEditDlgs.cpp:1108
 msgid "OK"
 msgstr "OK"
 
@@ -1059,7 +1059,7 @@
 #: Src/wptFileManager.cpp:814 Src/wptFileManager.cpp:928
 #: Src/wptFileManager.cpp:1457 Src/wptFileManager.cpp:1484
 #: Src/wptFileManager.cpp:1503 Src/wptFileManager.cpp:1761
-#: Src/wptFileManager.cpp:1823 Src/wptFileManagerDlg.cpp:497
+#: Src/wptFileManager.cpp:1823 Src/wptFileManagerDlg.cpp:498
 #: Src/wptFileStatDlg.cpp:137 Src/wptMainProc.cpp:400 Src/wptMDSumDlg.cpp:153
 msgid "File Manager"
 msgstr "Dateimanager"
@@ -1091,12 +1091,12 @@
 "\n"
 "Möchten Sie die Kompression ausschalten?"
 
-#: Src/wptFileManager.cpp:383 Src/wptKeyEditDlgs.cpp:1016
+#: Src/wptFileManager.cpp:383 Src/wptKeyEditDlgs.cpp:1031
 #: Src/wptVerifyList.cpp:98 Src/wptVerifyList.cpp:106
 msgid "Status"
 msgstr "Status"
 
-#: Src/wptFileManager.cpp:384 Src/wptKeyEditDlgs.cpp:1119
+#: Src/wptFileManager.cpp:384 Src/wptKeyEditDlgs.cpp:1134
 #: Src/wptKeyRevokersDlg.cpp:57 Src/wptMDSumDlg.cpp:73
 #: Src/wptVerifyList.cpp:97
 msgid "Name"
@@ -1138,12 +1138,12 @@
 msgstr "Konnte den geheimen Standardschlüssel nicht finden."
 
 #: Src/wptFileManager.cpp:1118 Src/wptFileManager.cpp:1402
-#: Src/wptFileManagerDlg.cpp:548 Src/wptMainProc.cpp:197
+#: Src/wptFileManagerDlg.cpp:549 Src/wptMainProc.cpp:197
 #: Src/wptMainProc.cpp:416 Src/wptMainProc.cpp:423
 msgid "Sign"
 msgstr "Signieren"
 
-#: Src/wptFileManager.cpp:1131 Src/wptFileManagerDlg.cpp:546
+#: Src/wptFileManager.cpp:1131 Src/wptFileManagerDlg.cpp:547
 #: Src/wptMainProc.cpp:415 Src/wptMainProc.cpp:420
 msgid "Encrypt"
 msgstr "Verschlüsseln"
@@ -1186,7 +1186,7 @@
 msgid "Please enter filename for plaintext file"
 msgstr "Wählen Sie einen Namen für die Klartext-Datei"
 
-#: Src/wptFileManager.cpp:1331 Src/wptFileManagerDlg.cpp:547
+#: Src/wptFileManager.cpp:1331 Src/wptFileManagerDlg.cpp:548
 msgid "Decrypt"
 msgstr "Entschlüsseln"
 
@@ -1225,7 +1225,7 @@
 msgstr "Ungültiger Dateiname. Abbruch"
 
 #: Src/wptFileManager.cpp:1654 Src/wptFileManager.cpp:1665
-#: Src/wptFileManagerDlg.cpp:242 Src/wptImportList.cpp:413
+#: Src/wptFileManagerDlg.cpp:243 Src/wptImportList.cpp:413
 #: Src/wptImportList.cpp:419 Src/wptImportList.cpp:429
 #: Src/wptImportList.cpp:437 Src/wptImportList.cpp:446
 #: Src/wptKeyManager.cpp:501 Src/wptKeyManager.cpp:512
@@ -1260,8 +1260,8 @@
 msgid "Choose Name for Key File"
 msgstr "Den Namen der Schlüsseldatei wählen"
 
-#: Src/wptFileManager.cpp:1715 Src/wptKeyEditDlgs.cpp:995
-#: Src/wptKeyEditDlgs.cpp:1292 Src/wptKeyEditDlgs.cpp:1364
+#: Src/wptFileManager.cpp:1715 Src/wptKeyEditDlgs.cpp:1010
+#: Src/wptKeyEditDlgs.cpp:1307 Src/wptKeyEditDlgs.cpp:1381
 #: Src/wptKeyserverDlg.cpp:106
 msgid "GnuPG status"
 msgstr "GnuPG Status"
@@ -1300,11 +1300,11 @@
 msgid "Could not create zip archive."
 msgstr "Konnte ZIP-Datei nicht erstellen."
 
-#: Src/wptFileManagerDlg.cpp:79 Src/wptFileManagerDlg.cpp:145
+#: Src/wptFileManagerDlg.cpp:79 Src/wptFileManagerDlg.cpp:146
 msgid "File Encrypt"
 msgstr "Datei verschlüsseln"
 
-#: Src/wptFileManagerDlg.cpp:80 Src/wptFileManagerDlg.cpp:279
+#: Src/wptFileManagerDlg.cpp:80 Src/wptFileManagerDlg.cpp:280
 msgid "&Text Output"
 msgstr "&Textausgabe"
 
@@ -1320,31 +1320,31 @@
 msgid "&Select Key for signing"
 msgstr "&Schlüssel zum Signieren"
 
-#: Src/wptFileManagerDlg.cpp:144
+#: Src/wptFileManagerDlg.cpp:145
 msgid "Please select at least one recipient."
 msgstr "Bitte wählen Sie wenigstens einen Empfänger"
 
-#: Src/wptFileManagerDlg.cpp:202 Src/wptFileStatDlg.cpp:266
+#: Src/wptFileManagerDlg.cpp:203 Src/wptFileStatDlg.cpp:266
 #: Src/wptKeyManager.cpp:465
 msgid "No valid OpenPGP data found."
 msgstr "Keine gültigen OpenPGP-Daten gefunden."
 
-#: Src/wptFileManagerDlg.cpp:202 Src/wptFileManagerDlg.cpp:216
+#: Src/wptFileManagerDlg.cpp:203 Src/wptFileManagerDlg.cpp:217
 #: Src/wptKeyManager.cpp:490
 msgid "Key Import"
 msgstr "Schlüsselimport"
 
-#: Src/wptFileManagerDlg.cpp:207
+#: Src/wptFileManagerDlg.cpp:208
 #, c-format
 msgid "%s contain(s) %d key(s)."
 msgstr "%s enthält %d Schlüssel."
 
-#: Src/wptFileManagerDlg.cpp:211 Src/wptFileManagerDlg.cpp:466
+#: Src/wptFileManagerDlg.cpp:212 Src/wptFileManagerDlg.cpp:467
 #: Src/wptKeyManagerDlg.cpp:928 Src/wptOwnertrustDlg.cpp:98
 msgid "File"
 msgstr "Datei"
 
-#: Src/wptFileManagerDlg.cpp:239
+#: Src/wptFileManagerDlg.cpp:240
 msgid ""
 "Some of the imported keys are secret keys.\n"
 "\n"
@@ -1356,32 +1356,32 @@
 "Die Vertrauensstellungen dieser Schlüssel müssen Sie\n"
 "manuell in den Schlüsseleigenschaften setzen."
 
-#: Src/wptFileManagerDlg.cpp:278 Src/wptFileManagerDlg.cpp:330
+#: Src/wptFileManagerDlg.cpp:279 Src/wptFileManagerDlg.cpp:331
 msgid "File Sign"
 msgstr "Datei signieren"
 
-#: Src/wptFileManagerDlg.cpp:280
+#: Src/wptFileManagerDlg.cpp:281
 msgid "&Normal Signature"
 msgstr "&Normale Signatur"
 
-#: Src/wptFileManagerDlg.cpp:281
+#: Src/wptFileManagerDlg.cpp:282
 msgid "&Detached Signature"
 msgstr "&Angehängte Signatur"
 
-#: Src/wptFileManagerDlg.cpp:282
+#: Src/wptFileManagerDlg.cpp:283
 msgid "&Cleartext Signature"
 msgstr "&Klartextsignatur"
 
-#: Src/wptFileManagerDlg.cpp:283
+#: Src/wptFileManagerDlg.cpp:284
 msgid "Signature mode"
 msgstr "Signaturmodus"
 
-#: Src/wptFileManagerDlg.cpp:284 Src/wptKeyManagerDlg.cpp:955
+#: Src/wptFileManagerDlg.cpp:285 Src/wptKeyManagerDlg.cpp:955
 msgid "Options"
 msgstr "Optionen"
 
-#: Src/wptFileManagerDlg.cpp:330 Src/wptKeyEditDlgs.cpp:1266
-#: Src/wptKeyEditDlgs.cpp:1316 Src/wptKeyEditDlgs.cpp:1390
+#: Src/wptFileManagerDlg.cpp:331 Src/wptKeyEditDlgs.cpp:1281
+#: Src/wptKeyEditDlgs.cpp:1331 Src/wptKeyEditDlgs.cpp:1407
 #: Src/wptKeyManager.cpp:710 Src/wptKeyManager.cpp:811
 #: Src/wptKeyManager.cpp:847 Src/wptKeyManagerDlg.cpp:1495
 #: Src/wptKeyManagerDlg.cpp:1515 Src/wptKeyManagerDlg.cpp:1549
@@ -1391,149 +1391,149 @@
 msgid "Please select a key."
 msgstr "Bitte Schlüssel wählen."
 
-#: Src/wptFileManagerDlg.cpp:390
+#: Src/wptFileManagerDlg.cpp:391
 msgid "0 Objects marked"
 msgstr "0 Objekte markiert"
 
-#: Src/wptFileManagerDlg.cpp:394
+#: Src/wptFileManagerDlg.cpp:395
 #, c-format
 msgid "%d Object(s) marked"
 msgstr "%d Objekt(e) markiert"
 
-#: Src/wptFileManagerDlg.cpp:464 Src/wptMainProc.cpp:543
+#: Src/wptFileManagerDlg.cpp:465 Src/wptMainProc.cpp:543
 msgid "File Manager (use drag & drop to add files)"
 msgstr "Dateimanager (Drag & Drop möglich)"
 
-#: Src/wptFileManagerDlg.cpp:467 Src/wptKeyManagerDlg.cpp:929
+#: Src/wptFileManagerDlg.cpp:468 Src/wptKeyManagerDlg.cpp:929
 #: Src/wptKeyManagerDlg.cpp:934 Src/wptKeyManagerDlg.cpp:945
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: Src/wptFileManagerDlg.cpp:468 Src/wptKeyManagerDlg.cpp:930
+#: Src/wptFileManagerDlg.cpp:469 Src/wptKeyManagerDlg.cpp:930
 msgid "View"
 msgstr "Ansicht"
 
-#: Src/wptFileManagerDlg.cpp:469
+#: Src/wptFileManagerDlg.cpp:470
 msgid "&Open..."
 msgstr "Ö&ffnen.."
 
-#: Src/wptFileManagerDlg.cpp:470
+#: Src/wptFileManagerDlg.cpp:471
 msgid "&Encrypt"
 msgstr "&Verschlüsseln"
 
-#: Src/wptFileManagerDlg.cpp:471 Src/wptFileManagerDlg.cpp:545
+#: Src/wptFileManagerDlg.cpp:472 Src/wptFileManagerDlg.cpp:546
 msgid "Encrypt into ZIP"
 msgstr "Verschlüsseln in ZIP"
 
-#: Src/wptFileManagerDlg.cpp:472
+#: Src/wptFileManagerDlg.cpp:473
 msgid "&Decrypt"
 msgstr "&Entschlüsseln"
 
-#: Src/wptFileManagerDlg.cpp:473 Src/wptKeyManagerDlg.cpp:946
+#: Src/wptFileManagerDlg.cpp:474 Src/wptKeyManagerDlg.cpp:946
 #: Src/wptKeyManagerDlg.cpp:994
 msgid "&Sign"
 msgstr "&Signieren"
 
-#: Src/wptFileManagerDlg.cpp:474 Src/wptFileManagerDlg.cpp:549
+#: Src/wptFileManagerDlg.cpp:475 Src/wptFileManagerDlg.cpp:550
 #: Src/wptMainProc.cpp:417 Src/wptMainProc.cpp:421
 msgid "Sign && Encrypt"
 msgstr "Signieren && Verschlüsseln"
 
-#: Src/wptFileManagerDlg.cpp:475
+#: Src/wptFileManagerDlg.cpp:476
 msgid "&Verify"
 msgstr "Über&prüfen"
 
-#: Src/wptFileManagerDlg.cpp:476
+#: Src/wptFileManagerDlg.cpp:477
 msgid "S&ymmetric"
 msgstr "S&ymmetrisch"
 
-#: Src/wptFileManagerDlg.cpp:477
+#: Src/wptFileManagerDlg.cpp:478
 msgid "&Import"
 msgstr "&Importieren"
 
-#: Src/wptFileManagerDlg.cpp:478
+#: Src/wptFileManagerDlg.cpp:479
 msgid "E&xport"
 msgstr "E&xportieren"
 
 # msgid "Executable Files (*.exe)"
 # msgstr ""
 # XXX \0\0 problem again
-#: Src/wptFileManagerDlg.cpp:479 Src/wptMainProc.cpp:413
+#: Src/wptFileManagerDlg.cpp:480 Src/wptMainProc.cpp:413
 msgid "Exit"
 msgstr "Beenden"
 
-#: Src/wptFileManagerDlg.cpp:480
+#: Src/wptFileManagerDlg.cpp:481
 msgid "&Reset"
 msgstr "&Reset"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:421
-#: Src/wptFileManagerDlg.cpp:481
+#: Src/wptFileManagerDlg.cpp:482
 msgid "Always on Top"
 msgstr "Immer im Vordergrund"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:422
-#: Src/wptFileManagerDlg.cpp:482
+#: Src/wptFileManagerDlg.cpp:483
 msgid "&Paste"
 msgstr "&Einfügen"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:423
-#: Src/wptFileManagerDlg.cpp:483
+#: Src/wptFileManagerDlg.cpp:484
 msgid "&Select All"
 msgstr "Alles &markieren"
 
-#: Src/wptFileManagerDlg.cpp:484
+#: Src/wptFileManagerDlg.cpp:485
 msgid "&Preferences"
 msgstr "&Einstellungen"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:478
-#: Src/wptFileManagerDlg.cpp:485 Src/wptFileManagerDlg.cpp:552
+#: Src/wptFileManagerDlg.cpp:486 Src/wptFileManagerDlg.cpp:553
 msgid "Send as Mail"
 msgstr "Als Mail versenden"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:425
-#: Src/wptFileManagerDlg.cpp:486
+#: Src/wptFileManagerDlg.cpp:487
 msgid "&List Packets"
 msgstr "Pakete an&zeigen"
 
-#: Src/wptFileManagerDlg.cpp:488
+#: Src/wptFileManagerDlg.cpp:489
 msgid "&Wipe"
 msgstr "&Löschen"
 
-#: Src/wptFileManagerDlg.cpp:551
+#: Src/wptFileManagerDlg.cpp:552
 msgid "Wipe"
 msgstr "Löschen"
 
-#: Src/wptFileManagerDlg.cpp:553
+#: Src/wptFileManagerDlg.cpp:554
 msgid "List Packets"
 msgstr "Pakete anzeigen"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:429
-#: Src/wptFileManagerDlg.cpp:598
+#: Src/wptFileManagerDlg.cpp:599
 msgid "&Calc Digest"
 msgstr "Digest &berechnen"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:671
-#: Src/wptFileManagerDlg.cpp:753
+#: Src/wptFileManagerDlg.cpp:754
 msgid "Are you sure you want to secure delete these files?"
 msgstr "Sollen diese Dateien wirklich sicher gelöscht werden?"
 
-#: Src/wptFileManagerDlg.cpp:754 Src/wptMainProc.cpp:97
+#: Src/wptFileManagerDlg.cpp:755 Src/wptMainProc.cpp:97
 msgid "&Yes"
 msgstr "&Ja"
 
-#: Src/wptFileManagerDlg.cpp:755 Src/wptMainProc.cpp:98
+#: Src/wptFileManagerDlg.cpp:756 Src/wptMainProc.cpp:98
 msgid "&No"
 msgstr "&Nein"
 
-#: Src/wptFileManagerDlg.cpp:798
+#: Src/wptFileManagerDlg.cpp:799
 msgid "Operation Status: Error"
 msgstr "Prozess-Status: Fehler"
 
-#: Src/wptFileManagerDlg.cpp:799
+#: Src/wptFileManagerDlg.cpp:800
 msgid "Operation Status: Done."
 msgstr "Prozess-Status: Fertig"
 
-#: Src/wptFileManagerDlg.cpp:842
+#: Src/wptFileManagerDlg.cpp:843
 #, c-format
 msgid ""
 "Total Capacity: %12sk\n"
@@ -1633,11 +1633,11 @@
 #: Src/wptGPGPrefsDlg.cpp:222 Src/wptGPGPrefsDlg.cpp:228
 #: Src/wptGPGPrefsDlg.cpp:233 Src/wptGPGPrefsDlg.cpp:238
 #: Src/wptGPGPrefsDlg.cpp:244 Src/wptGPGPrefsDlg.cpp:258
-#: Src/wptKeyEditDlgs.cpp:1667 Src/wptKeyManagerDlg.cpp:956
-#: Src/wptMainProc.cpp:433 Src/wptPreferencesDlg.cpp:209
-#: Src/wptPreferencesDlg.cpp:252 Src/wptPreferencesDlg.cpp:263
-#: Src/wptPreferencesDlg.cpp:275 Src/wptPreferencesDlg.cpp:308
-#: Src/wptRegistry.cpp:596
+#: Src/wptKeyEditDlgs.cpp:1693 Src/wptKeyManagerDlg.cpp:956
+#: Src/wptMainProc.cpp:433 Src/wptPreferencesDlg.cpp:210
+#: Src/wptPreferencesDlg.cpp:253 Src/wptPreferencesDlg.cpp:265
+#: Src/wptPreferencesDlg.cpp:277 Src/wptPreferencesDlg.cpp:307
+#: Src/wptRegistry.cpp:592
 msgid "Preferences"
 msgstr "Einstellungen"
 
@@ -1806,8 +1806,8 @@
 msgstr "Allgemeine GPG Optionen"
 
 #: Src/wptGPGPrefsDlg.cpp:152 Src/wptGPGPrefsDlg.cpp:153
-#: Src/wptGPGPrefsDlg.cpp:154 Src/wptPreferencesDlg.cpp:149
-#: Src/wptPreferencesDlg.cpp:150
+#: Src/wptGPGPrefsDlg.cpp:154 Src/wptPreferencesDlg.cpp:130
+#: Src/wptPreferencesDlg.cpp:131
 msgid "Browse..."
 msgstr "Ändern..."
 
@@ -1933,17 +1933,17 @@
 msgid "Key Manager"
 msgstr "Schlüsselverwaltung"
 
-#: Src/wptImportList.cpp:263 Src/wptKeyEditDlgs.cpp:229
-#: Src/wptKeyEditDlgs.cpp:1091 Src/wptKeyEditDlgs.cpp:1152
-#: Src/wptKeyEditDlgs.cpp:1402 Src/wptKeyEditDlgs.cpp:1422
-#: Src/wptKeyEditDlgs.cpp:1461 Src/wptKeyEditDlgs.cpp:1492
+#: Src/wptImportList.cpp:263 Src/wptKeyEditDlgs.cpp:233
+#: Src/wptKeyEditDlgs.cpp:1106 Src/wptKeyEditDlgs.cpp:1167
+#: Src/wptKeyEditDlgs.cpp:1419 Src/wptKeyEditDlgs.cpp:1441
+#: Src/wptKeyEditDlgs.cpp:1480 Src/wptKeyEditDlgs.cpp:1513
 #: Src/wptKeylist.cpp:392 Src/wptKeylist.cpp:426 Src/wptKeyPropsDlg.cpp:163
 #: Src/wptKeysigDlg.cpp:143 Src/wptKeysigDlg.cpp:208
 msgid "Revoked"
 msgstr "Widerrufen"
 
-#: Src/wptImportList.cpp:265 Src/wptKeyEditDlgs.cpp:231
-#: Src/wptKeyEditDlgs.cpp:1089 Src/wptKeyEditDlgs.cpp:1323
+#: Src/wptImportList.cpp:265 Src/wptKeyEditDlgs.cpp:235
+#: Src/wptKeyEditDlgs.cpp:1104 Src/wptKeyEditDlgs.cpp:1338
 #: Src/wptKeylist.cpp:394 Src/wptKeylist.cpp:424 Src/wptKeyPropsDlg.cpp:160
 #: Src/wptKeysigDlg.cpp:142 Src/wptKeysigDlg.cpp:209
 msgid "Expired"
@@ -1957,7 +1957,7 @@
 msgid "public key"
 msgstr "öffentlicher Schlüssel"
 
-#: Src/wptImportList.cpp:302 Src/wptKeyEditDlgs.cpp:1169
+#: Src/wptImportList.cpp:302 Src/wptKeyEditDlgs.cpp:1184
 msgid "Invalid user ID"
 msgstr "Ungültige Benutzerkennung"
 
@@ -1973,7 +1973,7 @@
 msgid "Size"
 msgstr "Größe"
 
-#: Src/wptImportList.cpp:353 Src/wptKeyEditDlgs.cpp:1013
+#: Src/wptImportList.cpp:353 Src/wptKeyEditDlgs.cpp:1028
 #: Src/wptKeylist.cpp:545 Src/wptKeylist.cpp:553 Src/wptKeyManagerDlg.cpp:874
 #: Src/wptKeyManagerDlg.cpp:965 Src/wptKeyRevokersDlg.cpp:58
 #: Src/wptKeyserverSearchDlg.cpp:52 Src/wptSigList.cpp:55
@@ -1981,8 +1981,8 @@
 msgid "Key ID"
 msgstr "Schlüssel-ID"
 
-#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:1014
-#: Src/wptKeyEditDlgs.cpp:1121 Src/wptKeylist.cpp:559
+#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:1029
+#: Src/wptKeyEditDlgs.cpp:1136 Src/wptKeylist.cpp:559
 #: Src/wptKeyManagerDlg.cpp:880 Src/wptKeyManagerDlg.cpp:968
 #: Src/wptKeyserverSearchDlg.cpp:53 Src/wptSigList.cpp:54
 msgid "Creation"
@@ -2019,20 +2019,20 @@
 msgid "Key Cache"
 msgstr "Schlüssel Cache"
 
-#: Src/wptKeyEditDlgs.cpp:202
+#: Src/wptKeyEditDlgs.cpp:206
 msgid "Ultimate"
 msgstr "Absolut"
 
-#: Src/wptKeyEditDlgs.cpp:217 Src/wptKeyEditDlgs.cpp:1086
+#: Src/wptKeyEditDlgs.cpp:221 Src/wptKeyEditDlgs.cpp:1101
 #: Src/wptKeylist.cpp:235 Src/wptKeylist.cpp:354
 msgid "Never"
 msgstr "Niemals"
 
-#: Src/wptKeyEditDlgs.cpp:257
+#: Src/wptKeyEditDlgs.cpp:261
 msgid "user ID"
 msgstr "Benutzerkennung"
 
-#: Src/wptKeyEditDlgs.cpp:258
+#: Src/wptKeyEditDlgs.cpp:262
 #, c-format
 msgid ""
 "Could not get key information for: \"%s\":\n"
@@ -2042,7 +2042,7 @@
 "%s"
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:258
-#: Src/wptKeyEditDlgs.cpp:330
+#: Src/wptKeyEditDlgs.cpp:334
 msgid ""
 "Remember that the image is stored within your public key.  If you use a very "
 "large picture, your key will become very large as well! Keeping the image "
@@ -2053,7 +2053,7 @@
 "240x288 grosses Bild ist eine gute Größe."
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:259
-#: Src/wptKeyEditDlgs.cpp:331
+#: Src/wptKeyEditDlgs.cpp:335
 msgid ""
 "Pick an image to use for your photo ID.\n"
 "The image must be a JPEG file."
@@ -2061,39 +2061,39 @@
 "Bitte ein Bild auswaehlen fuer die photo ID.\n"
 "Das Bild muss eine JPEG Datei sein."
 
-#: Src/wptKeyEditDlgs.cpp:332 Src/wptKeyEditDlgs.cpp:432
-#: Src/wptKeysignDlg.cpp:267
+#: Src/wptKeyEditDlgs.cpp:336 Src/wptKeyEditDlgs.cpp:438
+#: Src/wptKeysignDlg.cpp:268
 msgid "Passphrase"
 msgstr "Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:334
+#: Src/wptKeyEditDlgs.cpp:338
 msgid "Add Photo ID"
 msgstr "Photo ID hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:350
+#: Src/wptKeyEditDlgs.cpp:354
 msgid "Select Image File"
 msgstr "Bilddatei auswählen"
 
-#: Src/wptKeyEditDlgs.cpp:351
+#: Src/wptKeyEditDlgs.cpp:355
 msgid "JPEG Files (*.jpg, *.jpeg)"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:354 Src/wptKeyEditDlgs.cpp:364
-#: Src/wptKeyEditDlgs.cpp:370 Src/wptKeyEditDlgs.cpp:376
-#: Src/wptKeyEditDlgs.cpp:388 Src/wptKeyEditDlgs.cpp:880
+#: Src/wptKeyEditDlgs.cpp:358 Src/wptKeyEditDlgs.cpp:368
+#: Src/wptKeyEditDlgs.cpp:374 Src/wptKeyEditDlgs.cpp:380
+#: Src/wptKeyEditDlgs.cpp:394 Src/wptKeyEditDlgs.cpp:895
 msgid "Add Photo"
 msgstr "Foto hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:355
+#: Src/wptKeyEditDlgs.cpp:359
 #, c-format
 msgid "'%s' is not a valid JPEG file."
 msgstr "'%s' is keine gültige JPEG Datei."
 
-#: Src/wptKeyEditDlgs.cpp:364 Src/wptKeyRevokeDlg.cpp:142
+#: Src/wptKeyEditDlgs.cpp:368 Src/wptKeyRevokeDlg.cpp:142
 msgid "Please enter a file name."
 msgstr "Bitte Dateinamen eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:368
+#: Src/wptKeyEditDlgs.cpp:372
 msgid ""
 "The JPEG is really large.\n"
 "Are you sure you want to use it?"
@@ -2101,18 +2101,18 @@
 "Das JPEG ist sehr groß.\n"
 "Sind Sie sicher, dass Sie es benutzen wollen?"
 
-#: Src/wptKeyEditDlgs.cpp:376
+#: Src/wptKeyEditDlgs.cpp:380
 msgid "Please enter a passphrase."
 msgstr "Bitte ein Passwort eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:393
+#: Src/wptKeyEditDlgs.cpp:399
 msgid "Photo successfully added."
 msgstr "Foto erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:394 Src/wptKeyEditDlgs.cpp:473
-#: Src/wptKeyEditDlgs.cpp:556 Src/wptKeyEditDlgs.cpp:723
-#: Src/wptKeyEditDlgs.cpp:1424 Src/wptKeyEditDlgs.cpp:1494
-#: Src/wptKeyEditDlgs.cpp:1574 Src/wptKeyEditDlgs.cpp:1752
+#: Src/wptKeyEditDlgs.cpp:400 Src/wptKeyEditDlgs.cpp:481
+#: Src/wptKeyEditDlgs.cpp:565 Src/wptKeyEditDlgs.cpp:734
+#: Src/wptKeyEditDlgs.cpp:1443 Src/wptKeyEditDlgs.cpp:1515
+#: Src/wptKeyEditDlgs.cpp:1600 Src/wptKeyEditDlgs.cpp:1778
 #: Src/wptKeygenDlg.cpp:496 Src/wptKeygenDlg.cpp:612
 #: Src/wptKeyPropsDlg.cpp:361 Src/wptOwnertrustDlg.cpp:124
 #: Src/wptOwnertrustDlg.cpp:136
@@ -2120,137 +2120,137 @@
 msgstr "GnuPG-Status"
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:350
-#: Src/wptKeyEditDlgs.cpp:430
+#: Src/wptKeyEditDlgs.cpp:436
 msgid "Appointing a key as designated revoker cannot be undone."
 msgstr ""
 "Hinzufügen eines \"Revokers\" kann nicht mehr\n"
 "rückgängig gemacht werden."
 
-#: Src/wptKeyEditDlgs.cpp:431
+#: Src/wptKeyEditDlgs.cpp:437
 msgid "Public key"
 msgstr "öff. Schlüssel"
 
-#: Src/wptKeyEditDlgs.cpp:434 Src/wptKeyEditDlgs.cpp:450
-#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeyEditDlgs.cpp:467
-#: Src/wptKeyEditDlgs.cpp:893
+#: Src/wptKeyEditDlgs.cpp:440 Src/wptKeyEditDlgs.cpp:456
+#: Src/wptKeyEditDlgs.cpp:462 Src/wptKeyEditDlgs.cpp:475
+#: Src/wptKeyEditDlgs.cpp:908
 msgid "Add Revoker"
 msgstr "\"Revoker\" hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:450 Src/wptKeyEditDlgs.cpp:1456
-#: Src/wptKeyEditDlgs.cpp:1511 Src/wptKeyEditDlgs.cpp:1553
-#: Src/wptKeyEditDlgs.cpp:1693 Src/wptKeyEditDlgs.cpp:1724
-#: Src/wptKeyEditDlgs.cpp:1852
+#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeyEditDlgs.cpp:1475
+#: Src/wptKeyEditDlgs.cpp:1532 Src/wptKeyEditDlgs.cpp:1577
+#: Src/wptKeyEditDlgs.cpp:1719 Src/wptKeyEditDlgs.cpp:1750
+#: Src/wptKeyEditDlgs.cpp:1878
 msgid "Please select a user ID."
 msgstr "Bitte eine Benutzerkennung wählen."
 
-#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeygenDlg.cpp:457
+#: Src/wptKeyEditDlgs.cpp:462 Src/wptKeygenDlg.cpp:457
 #: Src/wptKeyRevokeDlg.cpp:150
 msgid "Please enter the passphrase."
 msgstr "Bitte das Passwort eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:472
+#: Src/wptKeyEditDlgs.cpp:480
 msgid "Revoker successfully addded."
 msgstr "Widerrufer erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:504
+#: Src/wptKeyEditDlgs.cpp:512
 msgid "Add new User ID"
 msgstr "Neue Benutzerkennung hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:506
+#: Src/wptKeyEditDlgs.cpp:514
 msgid "&Email"
 msgstr "&E-Mail"
 
-#: Src/wptKeyEditDlgs.cpp:507
+#: Src/wptKeyEditDlgs.cpp:515
 msgid "&Comment"
 msgstr "&Kommentar"
 
-#: Src/wptKeyEditDlgs.cpp:523
+#: Src/wptKeyEditDlgs.cpp:530
 msgid "Please enter a name (min. 5 chars.)"
 msgstr "Bitte Namen eingeben (mindestens 5 Zeichen)"
 
-#: Src/wptKeyEditDlgs.cpp:523 Src/wptKeyEditDlgs.cpp:527
-#: Src/wptKeyEditDlgs.cpp:532 Src/wptKeyEditDlgs.cpp:536
-#: Src/wptKeyEditDlgs.cpp:554
+#: Src/wptKeyEditDlgs.cpp:530 Src/wptKeyEditDlgs.cpp:534
+#: Src/wptKeyEditDlgs.cpp:539 Src/wptKeyEditDlgs.cpp:543
+#: Src/wptKeyEditDlgs.cpp:563
 msgid "UserID"
 msgstr "Benutzerkennung"
 
-#: Src/wptKeyEditDlgs.cpp:527
+#: Src/wptKeyEditDlgs.cpp:534
 msgid ""
 "Please enter the email address in the email field and not in the name field"
 msgstr ""
 "Bitte E-Mail-Adresse in das E-Mail-Feld und nicht in das Namensfeld eingeben"
 
-#: Src/wptKeyEditDlgs.cpp:532
+#: Src/wptKeyEditDlgs.cpp:539
 msgid "Please enter an email address."
 msgstr "Bitte eine E-Mail-Adresse eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:536
+#: Src/wptKeyEditDlgs.cpp:543
 msgid "Invalid email address."
 msgstr "Ungültige E-Mail-Adresse"
 
-#: Src/wptKeyEditDlgs.cpp:556
+#: Src/wptKeyEditDlgs.cpp:565
 msgid "user ID successfully added."
 msgstr "Benutzerkennung erfolgreich hinzugefügt"
 
-#: Src/wptKeyEditDlgs.cpp:636 Src/wptKeyEditDlgs.cpp:827
+#: Src/wptKeyEditDlgs.cpp:645 Src/wptKeyEditDlgs.cpp:840
 msgid "Add new Subkey"
 msgstr "Neuen Unterschlüssel hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:637
+#: Src/wptKeyEditDlgs.cpp:646
 msgid "Key type"
 msgstr "Schlüssel Typ"
 
-#: Src/wptKeyEditDlgs.cpp:638
+#: Src/wptKeyEditDlgs.cpp:647
 msgid "Size in bits"
 msgstr "Größe in Bits"
 
-#: Src/wptKeyEditDlgs.cpp:639
+#: Src/wptKeyEditDlgs.cpp:648
 msgid "Key expiration"
 msgstr "Key Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:684
+#: Src/wptKeyEditDlgs.cpp:693
 msgid "Please select one entry."
 msgstr "Bitte einen Eintrag wählen."
 
-#: Src/wptKeyEditDlgs.cpp:684 Src/wptKeyEditDlgs.cpp:690
-#: Src/wptKeyEditDlgs.cpp:721 Src/wptKeyEditDlgs.cpp:810
+#: Src/wptKeyEditDlgs.cpp:693 Src/wptKeyEditDlgs.cpp:699
+#: Src/wptKeyEditDlgs.cpp:732 Src/wptKeyEditDlgs.cpp:822
 msgid "Add Subkey"
 msgstr "Unterschlüssel hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:689
+#: Src/wptKeyEditDlgs.cpp:698
 msgid "DSS uses a fixed keysize of 1024. Size changed."
 msgstr "DSS benötigt feste Schlüssellänge von 1024. Größe geändert."
 
-#: Src/wptKeyEditDlgs.cpp:723
+#: Src/wptKeyEditDlgs.cpp:734
 msgid "Subkey successfully added."
 msgstr "Unterschlüssel erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:751 Src/wptKeyEditDlgs.cpp:810
-#: Src/wptKeyEditDlgs.cpp:880 Src/wptKeyEditDlgs.cpp:893
-#: Src/wptKeyEditDlgs.cpp:954 Src/wptKeyEditDlgs.cpp:1312
-#: Src/wptKeyEditDlgs.cpp:1385 Src/wptKeyEditDlgs.cpp:1445
+#: Src/wptKeyEditDlgs.cpp:762 Src/wptKeyEditDlgs.cpp:822
+#: Src/wptKeyEditDlgs.cpp:895 Src/wptKeyEditDlgs.cpp:908
+#: Src/wptKeyEditDlgs.cpp:969 Src/wptKeyEditDlgs.cpp:1327
+#: Src/wptKeyEditDlgs.cpp:1402 Src/wptKeyEditDlgs.cpp:1464
 #: Src/wptKeyManagerDlg.cpp:1522
 msgid "There is no secret key available!"
 msgstr "Kein geheimer Schlüssel vorhanden!"
 
-#: Src/wptKeyEditDlgs.cpp:751 Src/wptKeyEditDlgs.cpp:767
+#: Src/wptKeyEditDlgs.cpp:762 Src/wptKeyEditDlgs.cpp:779
 msgid "Add user ID"
 msgstr "Benutzerkennung hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:865
+#: Src/wptKeyEditDlgs.cpp:880
 msgid "Preferred keyserver successfully set."
 msgstr "Bevorzugter Keyserver wurde erfolgreich gesetzt."
 
-#: Src/wptKeyEditDlgs.cpp:912 Src/wptKeyEditOwnertrustDlg.cpp:55
+#: Src/wptKeyEditDlgs.cpp:927 Src/wptKeyEditOwnertrustDlg.cpp:55
 #: Src/wptKeyPropsDlg.cpp:353
 msgid "Change Ownertrust"
 msgstr "Besitzervertrauen ändern"
 
-#: Src/wptKeyEditDlgs.cpp:915 Src/wptKeyManager.cpp:232
+#: Src/wptKeyEditDlgs.cpp:930 Src/wptKeyManager.cpp:232
 msgid "Key status changed."
 msgstr "Schlüsselstatus geändert"
 
-#: Src/wptKeyEditDlgs.cpp:960
+#: Src/wptKeyEditDlgs.cpp:975
 msgid ""
 "Cannot change passphrase because the key\n"
 "is protected with the IDEA encryption algorithm."
@@ -2258,15 +2258,15 @@
 "Kann das Passwort das Schlüssels nicht ändern, da der \n"
 "Schlüssel mit dem IDEA Verschlüsselungs-Algorithmus gesichert ist."
 
-#: Src/wptKeyEditDlgs.cpp:967
+#: Src/wptKeyEditDlgs.cpp:982
 msgid "Current (old) Passphrase"
 msgstr "Aktuelles (altes) Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:971
+#: Src/wptKeyEditDlgs.cpp:986
 msgid "New Passphrase"
 msgstr "Neues Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:978 Src/wptPassphraseDlg.cpp:175
+#: Src/wptKeyEditDlgs.cpp:993 Src/wptPassphraseDlg.cpp:175
 msgid ""
 "The passphrase contains 8-bit characters.\n"
 "It is not suggested to use charset specific characters."
@@ -2274,44 +2274,44 @@
 "Das Passwort enthält 8-bit Zeichen.\n"
 "Es ist nicht zu empfehlen zeichensatzspezifische Zeichen zu benutzen."
 
-#: Src/wptKeyEditDlgs.cpp:993
+#: Src/wptKeyEditDlgs.cpp:1008
 msgid "Change Passwd"
 msgstr "Passwort ändern"
 
-#: Src/wptKeyEditDlgs.cpp:995
+#: Src/wptKeyEditDlgs.cpp:1010
 msgid "Passphrase successfully changed."
 msgstr "Passwort erfolgreich geändert."
 
-#: Src/wptKeyEditDlgs.cpp:1012 Src/wptKeyManagerDlg.cpp:881
+#: Src/wptKeyEditDlgs.cpp:1027 Src/wptKeyManagerDlg.cpp:881
 msgid "Description"
 msgstr "Beschreibung"
 
-#: Src/wptKeyEditDlgs.cpp:1015
+#: Src/wptKeyEditDlgs.cpp:1030
 msgid "Expires"
 msgstr "Verfällt"
 
-#: Src/wptKeyEditDlgs.cpp:1029 Src/wptKeyEditDlgs.cpp:1127
+#: Src/wptKeyEditDlgs.cpp:1044 Src/wptKeyEditDlgs.cpp:1142
 msgid "Could not find key."
 msgstr "Konnte Schlüssel nicht finden"
 
-#: Src/wptKeyEditDlgs.cpp:1036
+#: Src/wptKeyEditDlgs.cpp:1051
 msgid "No subkey(s) found."
 msgstr "Kein(e) Unterschlüssel gefunden."
 
-#: Src/wptKeyEditDlgs.cpp:1118 Src/wptKeylist.cpp:548 Src/wptKeylist.cpp:557
+#: Src/wptKeyEditDlgs.cpp:1133 Src/wptKeylist.cpp:548 Src/wptKeylist.cpp:557
 #: Src/wptKeyManagerDlg.cpp:878
 msgid "Validity"
 msgstr "Gültigkeit"
 
-#: Src/wptKeyEditDlgs.cpp:1120
+#: Src/wptKeyEditDlgs.cpp:1135
 msgid "Email"
 msgstr "Email"
 
-#: Src/wptKeyEditDlgs.cpp:1133
+#: Src/wptKeyEditDlgs.cpp:1148
 msgid "No user ID(s) found."
 msgstr "Keine Benutzerkennung(en) gefunden."
 
-#: Src/wptKeyEditDlgs.cpp:1227
+#: Src/wptKeyEditDlgs.cpp:1242
 msgid ""
 "ADDUID   \t\tadd a user ID\r\n"
 "ADDPHOTO  \t\tadd a photo ID\r\n"
@@ -2351,19 +2351,19 @@
 "SIGN\t    \t\tBenutzerkennung signieren (exportierbar)\r\n"
 "LSIGN\t    \t\tBenutzerkennung signieren (nicht-exportierbar)\r\n"
 
-#: Src/wptKeyEditDlgs.cpp:1246
+#: Src/wptKeyEditDlgs.cpp:1261
 msgid "Key Edit Help"
 msgstr "Hilfe zum Schlüssel bearbeiten"
 
-#: Src/wptKeyEditDlgs.cpp:1262
+#: Src/wptKeyEditDlgs.cpp:1277
 msgid "Primary key can not be deleted!"
 msgstr "Primärer Schlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1270
+#: Src/wptKeyEditDlgs.cpp:1285
 msgid "Primary subkey can not be deleted!"
 msgstr "Primärer Unterschlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1276
+#: Src/wptKeyEditDlgs.cpp:1291
 #, c-format
 msgid ""
 "\"Subkey %s.\"\n"
@@ -2380,15 +2380,15 @@
 "\n"
 "Möchten Sie diesen Unterschlüssel wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1288
+#: Src/wptKeyEditDlgs.cpp:1303
 msgid "Delete Subkey"
 msgstr "Unterschlüssel löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1292
+#: Src/wptKeyEditDlgs.cpp:1307
 msgid "Subkey successfully deleted."
 msgstr "Unterschlüssel erfolgreich gelöscht."
 
-#: Src/wptKeyEditDlgs.cpp:1324
+#: Src/wptKeyEditDlgs.cpp:1339
 msgid ""
 "Key already expired.\n"
 "\n"
@@ -2398,19 +2398,19 @@
 "\n"
 "Wollen Sie das Ablaufdatum ändern?"
 
-#: Src/wptKeyEditDlgs.cpp:1333 Src/wptKeyEditDlgs.cpp:1336
+#: Src/wptKeyEditDlgs.cpp:1348 Src/wptKeyEditDlgs.cpp:1351
 msgid "Key Expiration Date"
 msgstr "Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:1357
+#: Src/wptKeyEditDlgs.cpp:1374
 msgid "Expire Subkey"
 msgstr "Untschlüssel Ablauf"
 
-#: Src/wptKeyEditDlgs.cpp:1363
+#: Src/wptKeyEditDlgs.cpp:1380
 msgid "Subkey expire date successfully set."
 msgstr "Unterschlüsselablaufdatum erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:1394
+#: Src/wptKeyEditDlgs.cpp:1411
 msgid ""
 "No subkeys were found, if you want to revoke the\n"
 "whole key, please use the Key Manager command directly.\n"
@@ -2422,31 +2422,31 @@
 "\n"
 "Diese Funktion ist nur für das Widerrufen einzelner Unterschlüssel gedacht."
 
-#: Src/wptKeyEditDlgs.cpp:1403
+#: Src/wptKeyEditDlgs.cpp:1420
 msgid "Key already revoked."
 msgstr "Der Schlüssel ist bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1420
+#: Src/wptKeyEditDlgs.cpp:1439
 msgid "Revoke Subkey"
 msgstr "Unterschlüssel widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1424
+#: Src/wptKeyEditDlgs.cpp:1443
 msgid "Subkey successfully revoked."
 msgstr "Unterschlüssel erfolgreich widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1446
+#: Src/wptKeyEditDlgs.cpp:1465
 msgid "Revoke user ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1451
+#: Src/wptKeyEditDlgs.cpp:1470
 msgid "Key has only one user ID."
 msgstr "Schlüssel hat nur eine Benutzerkennung."
 
-#: Src/wptKeyEditDlgs.cpp:1462
+#: Src/wptKeyEditDlgs.cpp:1481
 msgid "This user ID has been already revoked."
 msgstr "Diese Benutzerkennung wurde bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1468
+#: Src/wptKeyEditDlgs.cpp:1487
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2456,39 +2456,43 @@
 "Benutzerkennung %s.\r\n"
 "Diese Benutzerkennung wirklich widerrufen?"
 
-#: Src/wptKeyEditDlgs.cpp:1490
+#: Src/wptKeyEditDlgs.cpp:1511
 msgid "Revoke User ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1494
+#: Src/wptKeyEditDlgs.cpp:1515
 msgid "User ID successfully revoked"
 msgstr "Benutzerkennung erfolgreich widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1571
+#: Src/wptKeyEditDlgs.cpp:1557
+msgid "Could not set user ID preferences"
+msgstr "Konnte die veränderter Benutzerkennung nicht speichern"
+
+#: Src/wptKeyEditDlgs.cpp:1597
 msgid "Primary"
 msgstr "Primär"
 
-#: Src/wptKeyEditDlgs.cpp:1574
+#: Src/wptKeyEditDlgs.cpp:1600
 msgid "User ID successfully flagged"
 msgstr "Benutzerkennung erfolgreich gekennzeichnet"
 
-#: Src/wptKeyEditDlgs.cpp:1660
+#: Src/wptKeyEditDlgs.cpp:1686
 msgid "No preferences available."
 msgstr "Keine Präferenzen verfübar."
 
-#: Src/wptKeyEditDlgs.cpp:1666
+#: Src/wptKeyEditDlgs.cpp:1692
 msgid "MDC feature"
 msgstr "Unterstützt MDC"
 
-#: Src/wptKeyEditDlgs.cpp:1668 Src/wptKeyeditSetPrefDlg.cpp:116
+#: Src/wptKeyEditDlgs.cpp:1694 Src/wptKeyeditSetPrefDlg.cpp:116
 msgid "Key Preferences"
 msgstr "Schlüsseleinstellungen"
 
-#: Src/wptKeyEditDlgs.cpp:1719
+#: Src/wptKeyEditDlgs.cpp:1745
 msgid "Primary user ID can not be deleted!"
 msgstr "Primäre Benutzerkennung kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1730
+#: Src/wptKeyEditDlgs.cpp:1756
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2498,40 +2502,40 @@
 "Benutzerkennung %s.\r\n"
 "Diese Benutzerkennung wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1748
+#: Src/wptKeyEditDlgs.cpp:1774
 msgid "Delete user ID"
 msgstr "Benutzerkennung löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1752
+#: Src/wptKeyEditDlgs.cpp:1778
 msgid "User ID successfully deleted"
 msgstr "Benutzerkennung erfolgreich gelöscht"
 
-#: Src/wptKeyEditDlgs.cpp:1856
+#: Src/wptKeyEditDlgs.cpp:1882
 msgid "Do you really want to make this sig exportable?"
 msgstr "Wollen Sie diese Signatur wirklich exportierbar machen?"
 
-#: Src/wptKeyEditDlgs.cpp:1878 Src/wptKeysignDlg.cpp:358
+#: Src/wptKeyEditDlgs.cpp:1906 Src/wptKeysignDlg.cpp:359
 msgid "Key successfully signed."
 msgstr "Schlüssel erfolgreich signiert."
 
-#: Src/wptKeyEditDlgs.cpp:1933
+#: Src/wptKeyEditDlgs.cpp:1961
 msgid "Could not set subkey window procedure."
 msgstr "Konnte \"subkey window procedure\" nicht setzen."
 
-#: Src/wptKeyEditDlgs.cpp:1943
+#: Src/wptKeyEditDlgs.cpp:1971
 msgid "Could not set user ID window procedure."
 msgstr "Konnte \"userID window procedure\" nicht setzen."
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:1739
-#: Src/wptKeyEditDlgs.cpp:1951
+#: Src/wptKeyEditDlgs.cpp:1979
 msgid "Command>"
 msgstr "Kommando>"
 
-#: Src/wptKeyEditDlgs.cpp:1983
+#: Src/wptKeyEditDlgs.cpp:2011
 msgid "Please select a command."
 msgstr "Bitte einen Befehl auswählen."
 
-#: Src/wptKeyEditDlgs.cpp:1987
+#: Src/wptKeyEditDlgs.cpp:2015
 msgid "This command cannot be used with PGP 2 (v3) keys.\n"
 msgstr "Dieser Befehl kann mit PGP2 (v3) Schlüsseln nicht verwendet werden.\n"
 
@@ -3314,9 +3318,9 @@
 msgstr "Konnte nicht auf öffentlichen Schlüsselbund zugreifen"
 
 #: Src/wptKeyManagerDlg.cpp:1508 Src/wptKeysignDlg.cpp:241
-#: Src/wptKeysignDlg.cpp:259 Src/wptKeysignDlg.cpp:334
-#: Src/wptKeysignDlg.cpp:351 Src/wptKeysignDlg.cpp:356
-#: Src/wptKeysignDlg.cpp:358
+#: Src/wptKeysignDlg.cpp:259 Src/wptKeysignDlg.cpp:335
+#: Src/wptKeysignDlg.cpp:352 Src/wptKeysignDlg.cpp:357
+#: Src/wptKeysignDlg.cpp:359
 msgid "Key Signing"
 msgstr "Schlüsselsignierung"
 
@@ -3893,7 +3897,7 @@
 msgid "&Receive Key"
 msgstr "&Schlüssel empfangen"
 
-#: Src/wptKeysignDlg.cpp:165 Src/wptKeysignDlg.cpp:308
+#: Src/wptKeysignDlg.cpp:165 Src/wptKeysignDlg.cpp:309
 msgid "Choose Signature Class"
 msgstr "Signaturklasse auswählen"
 
@@ -3955,32 +3959,32 @@
 msgid "No valid secret key found."
 msgstr "Keine gültigen geheimen Schlüssel gefunden."
 
-#: Src/wptKeysignDlg.cpp:263
+#: Src/wptKeysignDlg.cpp:264
 msgid "Sign local only (non exportable signature)"
 msgstr "Nur lokal Signieren (nicht exportierbare Signatur)"
 
-#: Src/wptKeysignDlg.cpp:264
+#: Src/wptKeysignDlg.cpp:265
 msgid "Signature expires on"
 msgstr "Signatur läuft ab am"
 
 # c:\oss\winpt-gpgme\src\wptKeysignDlg.cpp:250
-#: Src/wptKeysignDlg.cpp:265
+#: Src/wptKeysignDlg.cpp:266
 msgid "Sign non-revocably"
 msgstr "Nicht-widerrufbar signieren"
 
-#: Src/wptKeysignDlg.cpp:266
+#: Src/wptKeysignDlg.cpp:267
 msgid "&Ask for certification level"
 msgstr "Zertifizierungslevel erfragen"
 
-#: Src/wptKeysignDlg.cpp:269
+#: Src/wptKeysignDlg.cpp:270
 msgid "&Show photo"
 msgstr "&Photo anzeigen"
 
-#: Src/wptKeysignDlg.cpp:334
+#: Src/wptKeysignDlg.cpp:335
 msgid "Could not get Key ID from key."
 msgstr "Schlüssel-ID konnte nicht aus dem Schlüssel gelesen werden."
 
-#: Src/wptKeysignDlg.cpp:355
+#: Src/wptKeysignDlg.cpp:356
 msgid "This key is already signed by your key"
 msgstr "Der Schlüssel ist bereits mit Ihrem Schlüssel signiert"
 
@@ -4057,7 +4061,7 @@
 "Stellen Sie sicher, dass das Fenster Text enthält.\n"
 "%s."
 
-#: Src/wptMainProc.cpp:585 Src/wptPreferencesDlg.cpp:132
+#: Src/wptMainProc.cpp:585 Src/wptPreferencesDlg.cpp:136
 msgid "WinPT Preferences"
 msgstr "WinPT Einstellungen"
 
@@ -4243,71 +4247,71 @@
 msgid "'User PIN' must be at least 6 characters long."
 msgstr "Die 'Benutzer PIN' muss mindestens 6 Zeichen lang sein."
 
-#: Src/wptPreferencesDlg.cpp:133
+#: Src/wptPreferencesDlg.cpp:114
 msgid "Do not use any &temporary files"
 msgstr "Keine &temporären Dateien benutzen"
 
-#: Src/wptPreferencesDlg.cpp:134
+#: Src/wptPreferencesDlg.cpp:115
 msgid "Use clipboard &viewer to display the plaintext"
 msgstr "Benutze den &Clipboard-Betrachter zu Klartext-Anzeige"
 
-#: Src/wptPreferencesDlg.cpp:135
+#: Src/wptPreferencesDlg.cpp:116
 msgid "Word wrap cleartext &signatures at column"
 msgstr "Breche Zeilen in &Klartextsignaturen ab"
 
-#: Src/wptPreferencesDlg.cpp:136
+#: Src/wptPreferencesDlg.cpp:117
 msgid "&Disable hotkeys (Not recommended!)"
 msgstr "&Hotkeys deaktivieren (Nicht empfohlen!)"
 
-#: Src/wptPreferencesDlg.cpp:137
+#: Src/wptPreferencesDlg.cpp:118
 msgid "Skip key validation and assume that keys are always fully trusted"
 msgstr "Benutze Trust-Model 'immer gültig' und prüfe Schlüssel nie"
 
-#: Src/wptPreferencesDlg.cpp:138
+#: Src/wptPreferencesDlg.cpp:119
 msgid "&Automatic keyring backup when WinPT closes"
 msgstr "&Automatisch Backups erstellen wenn WinPT beendet wird"
 
-#: Src/wptPreferencesDlg.cpp:139
+#: Src/wptPreferencesDlg.cpp:120
 msgid "Backup to &keyring folder"
 msgstr "Backup in &Schlüsselbund-Ordner"
 
-#: Src/wptPreferencesDlg.cpp:140
+#: Src/wptPreferencesDlg.cpp:121
 msgid "Backup to:"
 msgstr "Backup nach:"
 
-#: Src/wptPreferencesDlg.cpp:141
+#: Src/wptPreferencesDlg.cpp:122
 msgid "Select &key list mode"
 msgstr "Key List-Modus auswählen"
 
-#: Src/wptPreferencesDlg.cpp:142
+#: Src/wptPreferencesDlg.cpp:123
 msgid "Select &wipe mode"
 msgstr "Lösch-Modus auswählen"
 
-#: Src/wptPreferencesDlg.cpp:143
+#: Src/wptPreferencesDlg.cpp:124
 msgid "Keyserver &config"
 msgstr "Keyserver &Config"
 
-#: Src/wptPreferencesDlg.cpp:144
+#: Src/wptPreferencesDlg.cpp:125
 msgid "Cache &passphrases for 'n' seconds"
 msgstr "&Passphrase für 'n' Sekunden cachen"
 
-#: Src/wptPreferencesDlg.cpp:145
+#: Src/wptPreferencesDlg.cpp:126
 msgid "(CTRL+ALT+F to clear the cache)"
 msgstr "(STRG+ALT+F löscht den Cache)"
 
-#: Src/wptPreferencesDlg.cpp:146
+#: Src/wptPreferencesDlg.cpp:127
 msgid "General options"
 msgstr "Allgemeine Optionen"
 
-#: Src/wptPreferencesDlg.cpp:147
+#: Src/wptPreferencesDlg.cpp:128
 msgid "Clipboard hotkeys"
 msgstr "Zwischenablage Hotkeys"
 
-#: Src/wptPreferencesDlg.cpp:148
+#: Src/wptPreferencesDlg.cpp:129
 msgid "Current window hotkeys"
 msgstr "Aktuelle Fenster Hotkeys"
 
-#: Src/wptPreferencesDlg.cpp:206
+#: Src/wptPreferencesDlg.cpp:207
 msgid ""
 "In most cases it is not a good idea to enable this setting.\n"
 "If you know what you are doing let this flag enabled, otherwise\n"
@@ -4318,11 +4322,11 @@
 "Wenn Sie unsicher sind, dann lassen Sie diese Funktion besser deaktiviert."
 
 # c:\oss\winpt-gpgme\src\wptPreferencesDlg.cpp:214
-#: Src/wptPreferencesDlg.cpp:240
+#: Src/wptPreferencesDlg.cpp:241
 msgid "Select GPG backup path"
 msgstr "GPG Backup-Pfad auswählen"
 
-#: Src/wptPreferencesDlg.cpp:250
+#: Src/wptPreferencesDlg.cpp:251
 msgid ""
 "Please enter a value that is between 1-3600.\n"
 "It is not a good idea to cache the passphrase more than one hour."
@@ -4330,15 +4334,15 @@
 "Bitte geben Sie einen Wert von 1-3600 ein.\n"
 "Es ist nicht zu empfehlen, das Passwort länger als eine Stunde zu speichern."
 
-#: Src/wptPreferencesDlg.cpp:263
+#: Src/wptPreferencesDlg.cpp:264
 msgid "Please enter a value between 1-80."
 msgstr "Bitte geben Sie einen Wert von 1-380 ein"
 
-#: Src/wptPreferencesDlg.cpp:274
+#: Src/wptPreferencesDlg.cpp:276
 msgid "The specified backup folder is invalid."
 msgstr "Der angegebene Sicherungsordner ist ungültig."
 
-#: Src/wptPreferencesDlg.cpp:314
+#: Src/wptPreferencesDlg.cpp:313
 msgid "Hotkeys"
 msgstr "Tastenkürzel"
 
@@ -4424,7 +4428,7 @@
 "Der Dateityp '%s' scheint mit einer anderen Anwendung verknüpft zu sein.\n"
 "Überschreiben?"
 
-#: Src/wptRegistry.cpp:596
+#: Src/wptRegistry.cpp:592
 msgid "Could not write to Registry."
 msgstr "Konnte Werte in Registry nicht speichern"
 

Modified: trunk/Src/ChangeLog
===================================================================
--- trunk/Src/ChangeLog	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/ChangeLog	2006-02-13 09:38:03 UTC (rev 176)
@@ -1,3 +1,41 @@
+2006-02-10  Timo Schulz  <ts at g10code.de>
+
+	* wptKeyPropsDlg.cpp (props_dlg_proc): Removed unused vars.
+	* wptKeyEditDlgs.cpp (do_editkey_check): Use winpt_key_t
+	for the dialog param.
+	* wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use new list
+	signature dialog by default.
+	* wptKeysigDlg.cpp (sigprops_dlg_proc): Use directly
+	gpgme_key_sig_t as param.
+	(keysig_dlg_proc): Change param for property dialog.
+	* wptSigTreeDlg.cpp (sigtree_load): Skip revoked user-ids
+	and use icons.
+	(sigtree_dlg_proc): Allow to execute old list dialog to
+	edit the signatures.
+	
+2006-02-09  Timo Schulz  <ts at g10code.de>
+
+	* wptRegistry.cpp (set_winpt_reg_prefs): Removed keylist mode.
+	* wptNLS.c (gettext_localize_dialog): New.
+	* wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): Add 'Cancel' button
+	to avoid to reload the key cache.
+	* wptClipEncryptDlg.cpp (clipenc_dlg_proc): Drop old 'normal'
+	list mode.
+	* wptClipSignEncDlg.cpp (clip_signenc_dlg_proc): Likewise.
+	* wptPreferencesDlg.cpp (on_init_dialog): New. Move dialog
+	initiation code to this function.
+	(prefs_dlg_proc): Use it here.
+	
+2006-02-07  Timo Schulz  <ts at g10code.de>
+
+	* wptKeyEdit.cpp (setNoPassphrase): New.
+	(getValidDays): New.
+	* wptKeysignDlg.cpp (keysign_dlg_proc): Check on init
+	if the key is protected.
+	* wptKeyEditDlgs.cpp (keyedit_addphoto_dlg_proc): Handle
+	keys without a passphrase.
+	(keyedit_addrevoker_dlg_proc): Likewise.
+	
 2006-02-04  Timo Schulz  <ts at g10code.de>
 
 	* wptKeyManagerDlg.cpp (keymanager_dlg_proc): Check for

Modified: trunk/Src/WinPT-en.rc
===================================================================
--- trunk/Src/WinPT-en.rc	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/WinPT-en.rc	2006-02-13 09:38:03 UTC (rev 176)
@@ -68,6 +68,8 @@
 IDI_KEY_NEW             ICON    DISCARDABLE     "key_new.ico"
 IDI_COMPUTER            ICON    DISCARDABLE     "computer.ico"
 IDI_KEY_DELETE          ICON    DISCARDABLE     "key_delete.ico"
+IDI_KEY_SIG             ICON    DISCARDABLE     "keysig.ico"
+IDI_USERID              ICON    DISCARDABLE     "userid.ico"
 
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -491,6 +493,8 @@
                     IDC_GPGPREFS_LOCALINF,12,85,148,8
     EDITTEXT        IDC_GPGPREFS_LOCALE,12,96,152,12,ES_AUTOHSCROLL
     PUSHBUTTON      "Browse...",IDC_GPGPREFS_LOCDLG,167,95,41,14
+    CONTROL         "&Overwrite default settings",IDC_GPGPREFS_OVRDEFAULT,
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,115,121,10
     GROUPBOX        "General GPG options",IDC_GPGPREFS_ALLOPTINF,5,130,210,
                     74
     CONTROL         "Ask for the signature class during key sign",
@@ -501,9 +505,8 @@
     EDITTEXT        IDC_GPGPREFS_COMMENT,11,168,188,12,ES_AUTOHSCROLL
     LTEXT           "Encrypt to this key",IDC_GPGPREFS_ENCINF,11,187,66,8
     EDITTEXT        IDC_GPGPREFS_ENCTO,78,185,121,13,ES_AUTOHSCROLL
-    PUSHBUTTON      "&OK",IDC_GPGPREFS_SAVE,159,207,55,14
-    CONTROL         "&Overwrite default settings",IDC_GPGPREFS_OVRDEFAULT,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,115,121,10
+    PUSHBUTTON      "&OK",IDC_GPGPREFS_SAVE,101,207,55,14
+    PUSHBUTTON      "&Cancel",IDCANCEL,159,206,55,14
 END
 
 IDD_WINPT_IMPORT DIALOG DISCARDABLE  0, 0, 321, 118
@@ -602,68 +605,65 @@
     PUSHBUTTON      "&Cancel",IDCANCEL,119,107,50,14
 END
 
-IDD_WINPT_PREFS DIALOG DISCARDABLE  0, 0, 292, 271
+IDD_WINPT_PREFS DIALOG DISCARDABLE  0, 0, 292, 255
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "WinPT Preferences"
 FONT 8, "MS Sans Serif"
 BEGIN
-    LTEXT           "Cache &passphrases for 'n' seconds",IDC_PREFS_CACHEINF,
-                    5,9,117,8
-    EDITTEXT        IDC_PREFS_CACHETIME,124,7,25,13
-    LTEXT           "(CTRL+ALT+F to clear the cache)",IDC_PREFS_CACHEHINT,
-                    151,9,108,8
-    GROUPBOX        "General options",IDC_PREFS_ALLOPTINF,8,23,271,97
-    LTEXT           "Word wrap cleartext &signatures at column",
-                    IDC_PREFS_WWINFO,13,34,139,8
-    EDITTEXT        IDC_PREFS_WORDWRAP,156,32,14,13
+    GROUPBOX        "General options",IDC_PREFS_ALLOPTINF,8,2,271,101
     CONTROL         "Do not use any &temporary files",IDC_PREFS_SECMODE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,47,232,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,13,232,10
     CONTROL         "Use clipboard &viewer to display the plaintext",
                     IDC_PREFS_VIEWER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
-                    13,60,229,10
+                    13,26,229,10
     CONTROL         "Skip key validation and assume that keys are always fully trusted",
                     IDC_PREFS_TRUST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,
-                    74,234,8
-    LTEXT           "Select &key list mode",IDC_PREFS_KEYLISTINF,13,88,85,8
-    COMBOBOX        IDC_PREFS_LISTMODE,100,86,64,35,CBS_DROPDOWNLIST | 
+                    40,234,8
+    LTEXT           "Word wrap cleartext &signatures at column",
+                    IDC_PREFS_WWINFO,13,56,139,8
+    EDITTEXT        IDC_PREFS_WORDWRAP,155,55,14,13
+    LTEXT           "Cache &passphrases for 'n' seconds",IDC_PREFS_CACHEINF,
+                    12,73,117,8
+    EDITTEXT        IDC_PREFS_CACHETIME,155,71,25,13
+    LTEXT           "(CTRL+ALT+F to clear cache)",IDC_PREFS_CACHEHINT,182,73,
+                    96,8
+    LTEXT           "Select &wipe mode",IDC_PREFS_WIPEINF,13,88,79,8
+    COMBOBOX        IDC_PREFS_WIPEMODE,155,87,64,40,CBS_DROPDOWNLIST | 
                     WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Select &wipe mode",IDC_PREFS_WIPEINF,13,104,79,8
-    COMBOBOX        IDC_PREFS_WIPEMODE,100,103,64,40,CBS_DROPDOWNLIST | 
-                    WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Clipboard hotkeys",IDC_PREFS_CLIPINF,8,122,112,70
-    LTEXT           "Encrypt CTRL+ALT+",IDC_STATIC,13,137,67,8
-    EDITTEXT        IDC_PREFS_CLIP_ENCRYPT,83,135,10,12
-    LTEXT           "Decrypt/verify CTRL+ALT+",IDC_STATIC,13,149,88,8
-    EDITTEXT        IDC_PREFS_CLIP_DECRYPT_VERIFY,103,147,9,12
-    LTEXT           "Sign CTRL+ALT+",IDC_STATIC,13,162,57,8
-    EDITTEXT        IDC_PREFS_CLIP_SIGNENC,73,160,9,12
-    LTEXT           "Sign && Encrypt CTRL+ALT+",IDC_STATIC,13,176,89,8
-    EDITTEXT        IDC_PREFS_CLIP_SIGN,103,174,9,13
-    GROUPBOX        "Current window hotkeys",IDC_PREFS_CURRINF,127,122,152,
+    GROUPBOX        "Clipboard hotkeys",IDC_PREFS_CLIPINF,8,105,112,70
+    LTEXT           "Encrypt CTRL+ALT+",IDC_STATIC,13,120,67,8
+    EDITTEXT        IDC_PREFS_CLIP_ENCRYPT,83,118,10,12
+    LTEXT           "Decrypt/verify CTRL+ALT+",IDC_STATIC,13,132,88,8
+    EDITTEXT        IDC_PREFS_CLIP_DECRYPT_VERIFY,103,130,9,12
+    LTEXT           "Sign CTRL+ALT+",IDC_STATIC,13,145,57,8
+    EDITTEXT        IDC_PREFS_CLIP_SIGNENC,73,143,9,12
+    LTEXT           "Sign && Encrypt CTRL+ALT+",IDC_STATIC,13,159,89,8
+    EDITTEXT        IDC_PREFS_CLIP_SIGN,103,157,9,13
+    GROUPBOX        "Current window hotkeys",IDC_PREFS_CURRINF,127,105,152,
                     70
-    LTEXT           "Encrypt ALT+SHIFT+",IDC_STATIC,134,137,69,8
-    EDITTEXT        IDC_PREFS_CWS_ENCRYPT,210,135,9,12
-    LTEXT           "Decrypt/verify ALT+SHIFT+",IDC_STATIC,134,150,90,8
-    EDITTEXT        IDC_PREFS_CWS_DECRYPT_VERIFY,227,149,9,12
-    LTEXT           "Sign ALT+SHIFT+",IDC_STATIC,134,163,59,8
-    EDITTEXT        IDC_PREFS_CWS_SIGN,196,162,9,12
-    LTEXT           "Sign && Encrypt ALT+SHIFT+",IDC_STATIC,134,176,91,8
-    EDITTEXT        IDC_PREFS_CWS_SIGNENC,227,174,10,12
+    LTEXT           "Encrypt ALT+SHIFT+",IDC_STATIC,134,120,69,8
+    EDITTEXT        IDC_PREFS_CWS_ENCRYPT,210,118,9,12
+    LTEXT           "Decrypt/verify ALT+SHIFT+",IDC_STATIC,134,133,90,8
+    EDITTEXT        IDC_PREFS_CWS_DECRYPT_VERIFY,227,132,9,12
+    LTEXT           "Sign ALT+SHIFT+",IDC_STATIC,134,146,59,8
+    EDITTEXT        IDC_PREFS_CWS_SIGN,196,145,9,12
+    LTEXT           "Sign && Encrypt ALT+SHIFT+",IDC_STATIC,134,159,91,8
+    EDITTEXT        IDC_PREFS_CWS_SIGNENC,227,157,10,12
     CONTROL         "&Disable hotkeys (Not recommended!)",
                     IDC_PREFS_DISABLE_HOTKEYS,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,8,195,159,10
-    GROUPBOX        "",IDC_STATIC,8,214,271,38
+                    WS_TABSTOP,8,178,159,10
+    GROUPBOX        "",IDC_STATIC,8,197,271,38
     CONTROL         "&Automatic keyring backup when WinPT closes",
                     IDC_PREFS_AUTOBACKUP,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,14,213,195,11
+                    WS_TABSTOP,14,196,195,11
     CONTROL         "Backup to &keyring folder",IDC_PREFS_BAKHOME,"Button",
-                    BS_AUTORADIOBUTTON,24,225,150,10
+                    BS_AUTORADIOBUTTON,24,208,150,10
     CONTROL         "Backup to:",IDC_PREFS_BAKUSER,"Button",
-                    BS_AUTORADIOBUTTON,24,237,55,10
-    EDITTEXT        IDC_PREFS_BAKPATH,80,236,130,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "Browse...",IDC_PREFS_BAKSELECT,212,235,47,14
-    DEFPUSHBUTTON   "&OK",IDOK,176,255,50,14
-    PUSHBUTTON      "&Cancel",IDCANCEL,228,255,50,14
+                    BS_AUTORADIOBUTTON,24,220,55,10
+    EDITTEXT        IDC_PREFS_BAKPATH,80,219,130,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Browse...",IDC_PREFS_BAKSELECT,212,218,47,14
+    DEFPUSHBUTTON   "&OK",IDOK,176,238,50,14
+    PUSHBUTTON      "&Cancel",IDCANCEL,228,238,50,14
 END
 
 IDD_WINPT_HKPSEARCH DIALOG DISCARDABLE  0, 0, 359, 157
@@ -1378,15 +1378,16 @@
     PUSHBUTTON      "&Cancel",IDCANCEL,131,83,50,14
 END
 
-IDD_WINPT_KEYSIG_TREE DIALOG DISCARDABLE  0, 0, 234, 129
+IDD_WINPT_KEYSIG_TREE DIALOG DISCARDABLE  0, 0, 234, 205
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Key Signature Tree"
 FONT 8, "MS Sans Serif"
 BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,177,110,50,14
     CONTROL         "Tree1",IDC_VKEYSIG_TREE,"SysTreeView32",TVS_HASBUTTONS | 
                     TVS_HASLINES | TVS_LINESATROOT | WS_BORDER | WS_TABSTOP,
-                    2,5,225,90
+                    2,5,225,174
+    PUSHBUTTON      "Edit..",IDC_VKEYSIG_EDIT,1,186,54,14
+    DEFPUSHBUTTON   "OK",IDOK,177,186,50,14
 END
 
 
@@ -1571,7 +1572,7 @@
         LEFTMARGIN, 3
         RIGHTMARGIN, 286
         TOPMARGIN, 3
-        BOTTOMMARGIN, 269
+        BOTTOMMARGIN, 253
     END
 
     IDD_WINPT_HKPSEARCH, DIALOG
@@ -1915,7 +1916,7 @@
         LEFTMARGIN, 2
         RIGHTMARGIN, 227
         TOPMARGIN, 3
-        BOTTOMMARGIN, 124
+        BOTTOMMARGIN, 200
     END
 END
 #endif    // APSTUDIO_INVOKED

Modified: trunk/Src/WinPT.cpp
===================================================================
--- trunk/Src/WinPT.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/WinPT.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -368,7 +368,6 @@
     reg_prefs.auto_backup = 0;
     reg_prefs.cache_time = 0;
     reg_prefs.expert = 0;
-    reg_prefs.keylist_mode = 1;
     reg_prefs.kserv_conf = m_strdup ("keyserver.conf");
     reg_prefs.no_zip_mmedia = 1;
     reg_prefs.use_tmpfiles = 1;
@@ -474,9 +473,6 @@
 	    hotkeys_modify ();
 	gnupg_load_config ();
     }
-    else { /* default settings. */
-	reg_prefs.keylist_mode = 1;
-    }
 
     if (is_gpg4win_installed ())
 	load_gpg_env (); /* XXX: check return code. */

Modified: trunk/Src/resource.h
===================================================================
--- trunk/Src/resource.h	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/resource.h	2006-02-13 09:38:03 UTC (rev 176)
@@ -162,6 +162,8 @@
 #define IDD_WINPT_KEYSERVER_ADD         238
 #define IDR_WINPT_KEYSERVER_CTX         239
 #define IDD_WINPT_KEYSIG_TREE           241
+#define IDI_KEY_SIG                     242
+#define IDI_USERID                      243
 #define IDC_CLIPEDIT_SEND               1000
 #define IDC_CLIPEDIT_CLEAR              1001
 #define IDC_CLIPEDIT_CLIPTEXT           1002
@@ -634,6 +636,7 @@
 #define IDC_GPGPREFS_OVRDEFAULT         1510
 #define IDC_MDSUM_TOCLIP                1511
 #define IDC_VKEYSIG_TREE                1512
+#define IDC_VKEYSIG_EDIT                1514
 #define ID_GPG_ENCRYPT                  40003
 #define ID_GPG_DECRYPT                  40004
 #define ID_GPG_SIGN                     40005
@@ -812,9 +815,9 @@
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        242
+#define _APS_NEXT_RESOURCE_VALUE        244
 #define _APS_NEXT_COMMAND_VALUE         40186
-#define _APS_NEXT_CONTROL_VALUE         1513
+#define _APS_NEXT_CONTROL_VALUE         1515
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

Modified: trunk/Src/wptClipEncryptDlg.cpp
===================================================================
--- trunk/Src/wptClipEncryptDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptClipEncryptDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -133,7 +133,6 @@
     gpgme_ctx_t ctx=NULL;
     gpgme_error_t err;
     int force_trust = 0;
-    int kmode = reg_prefs.keylist_mode? KEYLIST_ENCRYPT_MIN : KEYLIST_ENCRYPT;
     int n;
     
     switch( msg ) {
@@ -145,7 +144,7 @@
         if( !kc )
             BUG( NULL );
         lv = keylist_load (GetDlgItem( dlg, IDC_ENCRYPT_KEYLIST ), kc, NULL,
-			   kmode, KEY_SORT_USERID);
+			   KEYLIST_ENCRYPT_MIN, KEY_SORT_USERID);
 	center_window( dlg, NULL );
         SetForegroundWindow( dlg );
         return TRUE;

Modified: trunk/Src/wptClipSignEncDlg.cpp
===================================================================
--- trunk/Src/wptClipSignEncDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptClipSignEncDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -104,7 +104,6 @@
     passphrase_cb_s pwd;
     char *signer = NULL;
     int force_trust = 0;
-    int kmode = reg_prefs.keylist_mode? KEYLIST_ENCRYPT_MIN : KEYLIST_ENCRYPT;
     int n;
     
     switch( msg ) {
@@ -115,7 +114,7 @@
 	if (!kc)
 	    BUG (NULL);
         lv = keylist_load (GetDlgItem (dlg, IDC_SIGNENC_KEYLIST),
-			   kc, NULL, kmode, KEY_SORT_USERID);
+			   kc, NULL, KEYLIST_ENCRYPT_MIN, KEY_SORT_USERID);
 	seclist_init (dlg, IDC_SIGNENC_SECLIST, KEYLIST_FLAG_SHORT, &list);
 	center_window (dlg, NULL);
 	EnableWindow (GetDlgItem (dlg, IDC_SIGNENC_SECLIST), FALSE);

Modified: trunk/Src/wptFileManagerDlg.cpp
===================================================================
--- trunk/Src/wptFileManagerDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptFileManagerDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -91,7 +91,8 @@
 	    seclist_init (dlg, IDC_ENCRYPT_SECLIST, KEYLIST_FLAG_SHORT, &list);
 	}
         lv = keylist_load (GetDlgItem (dlg, IDC_ENCRYPT_LIST), kc, NULL,
-			   KEYLIST_ENCRYPT|KEYLIST_FLAG_FILE, KEY_SORT_USERID);
+			   KEYLIST_ENCRYPT_MIN|KEYLIST_FLAG_FILE, 
+			   KEY_SORT_USERID);
         SetForegroundWindow (dlg);
         return TRUE;
         

Modified: trunk/Src/wptKeyEdit.cpp
===================================================================
--- trunk/Src/wptKeyEdit.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptKeyEdit.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -338,6 +338,7 @@
     cmd_sent = 0;
     resval = 0;
     uid_index = sig_index = key_index = -1;
+    key_has_passwd = true;
 }
 
 
@@ -411,6 +412,14 @@
 }
 
 
+
+/* Inidicate that a key is protected by  a passphrase or not. */
+void
+GpgKeyEdit::setNoPassphrase (bool val)
+{
+    key_has_passwd = !val;
+}
+
 /* Set the passphrase to @pass. */
 void 
 GpgKeyEdit::setPassphrase (const char *_pass)
@@ -458,7 +467,14 @@
 }
 
 
+/* Return the amount of days the key is valid. */
+int
+GpgKeyEdit::getValidDays (void)
+{
+    return valid;
+}
 
+
 int
 GpgKeyEdit::getType (void)
 {
@@ -471,8 +487,10 @@
 gpgme_error_t
 GpgKeyEdit::signKey (int mode, int _sig_class, const char *_exp_date)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = mode;
     this->exp_date = _exp_date;
@@ -488,8 +506,11 @@
 GpgKeyEdit::signUserid (int _uid_idx, int mode, int _sig_class, 
 			const char *_exp_date)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
+
     this->uid_index = _uid_idx;
     type = mode;
     this->exp_date = _exp_date;
@@ -518,8 +539,10 @@
 gpgme_error_t
 GpgKeyEdit::addUserid (const char *_name, const char *_cmt, const char *_email)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = GPG_EDITKEY_ADDUID;
     free_if_alloc (this->name);
@@ -570,8 +593,10 @@
 GpgKeyEdit::addSubkey (gpgme_pubkey_algo_t _pubkey_algo, 
 		       unsigned int _pubkey_size, long _valid)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = GPG_EDITKEY_ADDKEY;
     this->pubkey_algo = _pubkey_algo;
@@ -586,8 +611,10 @@
 gpgme_error_t
 GpgKeyEdit::changePassphrase (const char *_new_pass, int allow_empty)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
     
     type = GPG_EDITKEY_PASSWD;
     this->new_pass = _new_pass;
@@ -601,8 +628,10 @@
 gpgme_error_t
 GpgKeyEdit::setPrimaryUserid (int _uid_index)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = GPG_EDITKEY_PRIMARY;
     this->uid_index = _uid_index;
@@ -617,8 +646,10 @@
 GpgKeyEdit::setKeyExpireDate (int _key_index, long exp_timestamp, 
 			      bool exp_days)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
     if (!exp_days && exp_timestamp > 0 && exp_timestamp < time (NULL))
 	return gpg_error (GPG_ERR_INV_ARG);
     
@@ -638,8 +669,10 @@
 gpgme_error_t
 GpgKeyEdit::revokeUserid (int _uid_index)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = GPG_EDITKEY_REVUID;
     this->uid_index = _uid_index;
@@ -653,8 +686,10 @@
 gpgme_error_t
 GpgKeyEdit::revokeSignature (int _uid_index, int _sig_index)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = GPG_EDITKEY_REVSIG;
     this->uid_index = _uid_index;
@@ -670,8 +705,10 @@
 gpgme_error_t
 GpgKeyEdit::revokeSubkey (int _key_index, int _reason, const char *_cmt)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = GPG_EDITKEY_REVKEY;
     this->key_index = _key_index;
@@ -691,8 +728,10 @@
 gpgme_error_t
 GpgKeyEdit::addDesignatedRevoker (const char *uid)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = GPG_EDITKEY_ADDREV;
     free_if_alloc (this->name);
@@ -706,8 +745,10 @@
 gpgme_error_t
 GpgKeyEdit::addPhotoid (const char *jpg_file)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
 
     type = GPG_EDITKEY_ADDPHOTO;
     this->url = jpg_file;
@@ -752,8 +793,10 @@
 gpgme_error_t
 GpgKeyEdit::setUseridPreferences (int _uid_index, const char *new_prefs)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
     return 0;
 }
 
@@ -777,10 +820,13 @@
 gpgme_error_t
 GpgKeyEdit::setPreferredKeyserver (int _uid_index, const char *_url)
 {
-    if (!this->key || !this->pass)
+    if (!this->key)
 	return gpg_error (GPG_ERR_INV_OBJ);
-    if (!url)
+    if (key_has_passwd && !this->pass)
+	return gpg_error (GPG_ERR_INV_PASSPHRASE);
+    if (!_url)
 	return gpg_error (GPG_ERR_INV_ARG);
+
     type = GPG_EDITKEY_KEYSERV;
     this->url = _url;
     this->uid_index = _uid_index;

Modified: trunk/Src/wptKeyEditCB.cpp
===================================================================
--- trunk/Src/wptKeyEditCB.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptKeyEditCB.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -293,7 +293,7 @@
 	return buf;
     }
     if (!strcmp (key, "keygen.valid")) {
-        _snprintf (buf, sizeof (buf)-1, "%d", ctx->valid);
+        _snprintf (buf, sizeof (buf)-1, "%d", ctx->getValidDays ());
 	return buf;        
     }
     if (!strcmp (key, "keyedit.prompt")) {
@@ -410,7 +410,7 @@
     }
     if( step == 2 && !strcmp ( key, "keygen.valid" ) ) {
 	*r_step = step = 3;
-	sprintf (buf, "%d", ctx->valid);
+	sprintf (buf, "%d", ctx->getValidDays ());
 	return buf;
     }
     if (step == 3 && !strcmp (key, "passphrase.enter")) {

Modified: trunk/Src/wptKeyEditDlgs.cpp
===================================================================
--- trunk/Src/wptKeyEditDlgs.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptKeyEditDlgs.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -113,22 +113,26 @@
     UID_COL_CREATION	= 3
 };
 
-struct keyedit_callback_s {
+/* Key edit callback context. */
+struct keyedit_cb_s {
     const char	   *keyid;
     const char	   *pass;
     listview_ctrl_t lv;
     void	   *opaque;
     unsigned int    finished:1;
+    unsigned int    is_protected:1;
 };
-typedef struct keyedit_callback_s KEYEDIT_CB;
+typedef struct keyedit_cb_s *keyedit_cb_t;
 
-struct keygen_callback_s {
+
+/* Key generation callback context. */
+struct keygen_cb_s {
     int   bits;
     int	  algo;
     u32	  expire;
     char *fpr;
 };
-typedef struct keygen_callback_s KEYGEN_CB;
+typedef struct keygen_cb_s *keygen_cb_t;
 
 
 static subclass_s keyedit_subkey_proc;
@@ -208,7 +212,7 @@
 
 
 static void
-do_add_new_subkey (listview_ctrl_t lv, KEYGEN_CB *keygen, unsigned int flags)
+do_add_new_subkey (listview_ctrl_t lv, keygen_cb_t keygen, unsigned int flags)
 {
     char info[128], keyid[32];
     const char * expdate, * s;
@@ -381,6 +385,8 @@
 		BUG (NULL);
 	    if (k->is_protected)
 		ke->setPassphrase (pwd);
+	    else
+		ke->setNoPassphrase (true);
 	    ec = ke->addPhotoid (file);
 	    delete ke;
 	    wipememory (pwd, sizeof (pwd));
@@ -460,6 +466,8 @@
 	    ke = new GpgKeyEdit (k->keyid);
 	    if (k->is_protected)
 		ke->setPassphrase (pwd);
+	    else
+		ke->setNoPassphrase (true);
 	    err = ke->addDesignatedRevoker (uid);
 	    delete ke;
 	    wipememory (pwd, sizeof (pwd));
@@ -489,16 +497,16 @@
 BOOL CALLBACK
 keyedit_adduid_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
-    static KEYEDIT_CB *ctx;
+    static keyedit_cb_t ctx;
     gpgme_error_t err;
     GpgKeyEdit *ke;
     char *utf8_name = NULL;
     char name[128], email[128], comment[128];
     int rc;
     
-    switch ( msg ) {
+    switch (msg) {
     case WM_INITDIALOG:
-        ctx = (KEYEDIT_CB *)lparam;
+        ctx = (keyedit_cb_t)lparam;
         if( !ctx )
             dlg_fatal_error(dlg, "Could not get dialog param!");
         SetWindowText (dlg, _("Add new User ID"));
@@ -510,9 +518,8 @@
         return FALSE;
         
     case WM_SYSCOMMAND:
-        if (LOWORD (wparam) == SC_CLOSE) {
+        if (LOWORD (wparam) == SC_CLOSE)
             EndDialog(dlg, TRUE);
-        }
         return FALSE;
         
     case WM_COMMAND:
@@ -546,8 +553,10 @@
 	    ke = new GpgKeyEdit (ctx->keyid);
 	    if (!ke)
 		BUG (NULL);
-	    if (ctx->pass)
+	    if (ctx->is_protected)
 		ke->setPassphrase (ctx->pass);
+	    else
+		ke->setNoPassphrase (true);
 	    err = ke->addUserid (utf8_name? utf8_name : name, 
 				 rc > 0? comment : NULL, email);
 	    if (err)
@@ -618,8 +627,8 @@
 BOOL CALLBACK
 keyedit_addsubkey_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
-    static KEYEDIT_CB *ctx;
-    static KEYGEN_CB *keygen;
+    static keyedit_cb_t ctx;
+    static keygen_cb_t keygen;
     GpgKeyEdit *ke;
     gpgme_error_t err;
     SYSTEMTIME st;
@@ -628,10 +637,10 @@
     
     switch (msg) {
     case WM_INITDIALOG:
-        ctx = (KEYEDIT_CB *)lparam;
+        ctx = (keyedit_cb_t)lparam;
         if (!ctx)
             dlg_fatal_error (dlg, "Could not get dialog param!");
-	keygen = (KEYGEN_CB *)ctx->opaque;
+	keygen = (keygen_cb_t)ctx->opaque;
 
         SetWindowText (dlg, _("Add new Subkey"));
         SetDlgItemText (dlg, IDC_ADDSUBKEY_INFALGO, _("Key type"));
@@ -709,8 +718,10 @@
 	    if (!ke)
 		BUG (NULL);
 	    ke->setCallback (keygen_cb, NULL);
-	    if (ctx->pass)
+	    if (ctx->is_protected)
 		ke->setPassphrase (ctx->pass);
+	    else
+		ke->setNoPassphrase (true);
 	    keygen_cb_dlg_create ();
 
 	    err = ke->addSubkey ((gpgme_pubkey_algo_t)index, size, valid);
@@ -743,7 +754,7 @@
 BOOL
 keyedit_add_userid (winpt_key_t k, HWND dlg, listview_ctrl_t lv)
 {
-    KEYEDIT_CB cb;
+    keyedit_cb_s cb;
     char *pass = NULL;
     int cancel = 0;
 
@@ -759,7 +770,8 @@
     }
 	   
     memset (&cb, 0, sizeof cb);
-    cb.pass = k->is_protected? pass : NULL;
+    cb.is_protected = k->is_protected;
+    cb.pass = pass;
     cb.lv = lv;
     cb.keyid = k->keyid;
     dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYEDIT_ADDUID,
@@ -801,8 +813,8 @@
 BOOL
 keyedit_add_subkey (winpt_key_t k, HWND dlg, listview_ctrl_t lv)
 {
-    KEYEDIT_CB cb;
-    KEYGEN_CB keygen;
+    keyedit_cb_s cb;
+    keygen_cb_s keygen;
     char *pass = NULL;
     int cancel = 0;
 
@@ -820,7 +832,8 @@
     memset (&cb, 0, sizeof (cb));
     cb.lv = lv;
     cb.keyid = k->keyid;
-    cb.pass = k->is_protected? pass : NULL;
+    cb.is_protected = k->is_protected;
+    cb.pass = pass;
     cb.opaque = &keygen;
     dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYEDIT_ADDSUBKEY,    
 		      dlg, keyedit_addsubkey_dlg_proc,
@@ -860,6 +873,8 @@
 	BUG (NULL);
     if (k->is_protected)
 	ke->setPassphrase (pass);
+    else
+	ke->setNoPassphrase (true);
     err = ke->setPreferredKeyserver (0 /* XXX */, url->url);
     if (!err)
 	msg_box (dlg, _("Preferred keyserver successfully set."), _("Key Edit"), MB_OK);
@@ -1352,6 +1367,8 @@
 	BUG (NULL);
     if (k->is_protected)
 	ke->setPassphrase (pass);
+    else
+	ke->setNoPassphrase (true);
     err = ke->setKeyExpireDate (j, w32_mktime (&udd.st), false);
     if (err)
 	msg_box (dlg, gpgme_strerror (err), _("Expire Subkey"), MB_ERR);
@@ -1415,6 +1432,8 @@
 	BUG (NULL);
     if (k->is_protected)
 	ke->setPassphrase (pass);
+    else
+	ke->setNoPassphrase (true);
     err = ke->revokeSubkey (j, 0, NULL);
     if (err)
 	msg_box( dlg, gpgme_strerror (err), _("Revoke Subkey"), MB_ERR);
@@ -1485,6 +1504,8 @@
 	BUG (NULL);
     if (k->is_protected)
 	ke->setPassphrase (pass);
+    else
+	ke->setNoPassphrase (true);
     err = ke->revokeUserid (id);
     if (err)
 	msg_box (dlg, gpgme_strerror (err), _("Revoke User ID"), MB_ERR);
@@ -1526,11 +1547,14 @@
 	BUG (NULL);
     if (k->is_protected)
 	ke->setPassphrase (pass);
+    else
+	ke->setNoPassphrase (true);
 
     get_userid_preflist (&prefs, &flags);
 
     rc = ke->setUseridPreferences (id, prefs);
-    /* XXX */
+    if (rc)
+	msg_box (dlg, _("Could not set user ID preferences"), _("Key Edit"), MB_ERR);
 
     sfree_if_alloc (pass);
     free_if_alloc (prefs);
@@ -1566,6 +1590,8 @@
     ke = new GpgKeyEdit (k->keyid);
     if (k->is_protected)
 	ke->setPassphrase (pass);
+    else
+	ke->setNoPassphrase (true);
     err = ke->setPrimaryUserid (id);
     if (err)
 	msg_box (dlg, gpgme_strerror (err), _("Primary"), MB_ERR);
@@ -1632,14 +1658,14 @@
 BOOL CALLBACK
 showpref_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
-    static keyedit_callback_s *cb = NULL;
+    static keyedit_cb_t cb = NULL;
     gpg_uid_info_t inf=NULL;
     char buf[128];
     int pos;
 
     switch (msg) {
     case WM_INITDIALOG:
-	cb = (keyedit_callback_s *)lparam;
+	cb = (keyedit_cb_t)lparam;
 	if (cb == NULL)
 	    BUG (dlg);
 	pos = listview_get_curr_pos (cb->lv);
@@ -1684,7 +1710,7 @@
 static int
 do_editkey_showpref (winpt_key_t k, HWND dlg, listview_ctrl_t lv)
 {
-    struct keyedit_callback_s cb;
+    struct keyedit_cb_s cb;
 
     if (k->is_v3)
 	return TRUE;
@@ -1829,11 +1855,12 @@
 static void
 do_editkey_check (winpt_key_t k, HWND dlg)
 {
-    gpgme_key_t key;
-
-    get_pubkey (k->keyid, &key);
+    if (!k->ctx)
+	get_pubkey (k->keyid, &k->ctx);
+    if (!k->uid && k->ctx)
+	k->uid = k->ctx->uids->uid;
     DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_KEYSIG_TREE, dlg,
-		    sigtree_dlg_proc, (LPARAM)key);
+		    sigtree_dlg_proc, (LPARAM)k);
 }
 
 
@@ -1870,6 +1897,8 @@
     ke = new GpgKeyEdit (k->keyid);
     if (k->is_protected)
 	ke->setPassphrase (pass);
+    else
+	ke->setNoPassphrase (true);
     ke->setLocalUser (get_default_key ());
     err = ke->signUserid (uid_index, 
 			  mode == CMD_SIGN? GPG_EDITKEY_SIGN : GPG_EDITKEY_LSIGN,

Modified: trunk/Src/wptKeyManagerDlg.cpp
===================================================================
--- trunk/Src/wptKeyManagerDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptKeyManagerDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -1576,9 +1576,9 @@
             k.keyid = k.tmp_keyid;
             k.uid = key->uids->uid;
 	    k.ctx = (gpgme_key_t)listview_get_item2 (kmi->lv, kmi->lv_idx);
-            dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYSIG, dlg, 
-                              keysig_dlg_proc, (LPARAM)&k,
-                              _("Key Signature List" ), IDS_WINPT_KEYSIG);
+            dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYSIG_TREE, dlg, 
+                              sigtree_dlg_proc, (LPARAM)&k,
+                              _("Key Signature List"), IDS_WINPT_KEYSIG);
 	    if (k.update)
 		update_key (kmi->lv, kmi->lv_idx, k.tmp_keyid, 0);
             return TRUE;

Modified: trunk/Src/wptKeyPropsDlg.cpp
===================================================================
--- trunk/Src/wptKeyPropsDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptKeyPropsDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -274,9 +274,7 @@
     static winpt_key_t k;
     static gpgme_key_t key;
     gpgme_validity_t valid;
-    refresh_cache_s rcs = {0};
     const char *inf;
-    int cancel = 0;
     int rc;
     
     /* XXX: static variable (k) prevent that the dialog can 

Modified: trunk/Src/wptKeylist.cpp
===================================================================
--- trunk/Src/wptKeylist.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptKeylist.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -570,7 +570,7 @@
 	return rc;
     
     lv->ctrl = ctrl;
-    if ((mode & KEYLIST_ENCRYPT) || (mode & KEYLIST_ENCRYPT_MIN)) {
+    if (mode & KEYLIST_ENCRYPT_MIN) {
 	col = klist_enc;
 	n = (DIM(klist_enc) -1);
 	ext_chk = 1;
@@ -641,7 +641,7 @@
 	return NULL;    	
     keylist_load_keycache (lv, mode, pubkc, seckc);
     keylist_sort (lv, sortby);
-    if ((mode & KEYLIST_ENCRYPT) || (mode & KEYLIST_ENCRYPT_MIN))
+    if (mode & KEYLIST_ENCRYPT_MIN)
 	keylist_add_groups (lv);
     return lv;
 }

Modified: trunk/Src/wptKeysigDlg.cpp
===================================================================
--- trunk/Src/wptKeysigDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptKeysigDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -113,18 +113,18 @@
 
 
 /* Dialog box procedure to display the signature properties. */
-static BOOL CALLBACK
+BOOL CALLBACK
 sigprops_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
-    static listview_ctrl_t lv;
+    static gpgme_key_sig_t ks;
+    gpgme_key_t issuer;
     char tmpbuf[256];
-    int n;
     struct {
 	unsigned int exportable:1;
 	unsigned int expired:1;
 	unsigned int nrev:1;
 	unsigned int rev:1;
-	const char * alg;
+	const char *alg;
 	int _class;
     } ctx;
     const char *fmt_templ = _("%s %s signature");
@@ -145,51 +145,51 @@
 	SetDlgItemText (dlg, IDC_SIGPROPS_EXPSTR, _("Expire date"));
 	SetDlgItemText (dlg, IDC_SIGPROPS_KEYINF, _("Issuer key"));
 	SetDlgItemText (dlg, IDC_SIGPROPS_KEYIDINF, _("Issuer key ID"));
-	lv = (listview_ctrl_t)lparam;
-	if (!lv)
-	    dlg_fatal_error (dlg, "could not get dialog param");
+	ks = (gpgme_key_sig_t)lparam;
+	if (!ks)
+	    BUG (0);
 	memset (&ctx, 0, sizeof ctx);
-	n = listview_get_curr_pos (lv);
-	listview_get_item_text (lv, n, SL_COL_CLASS, tmpbuf, DIM (tmpbuf)-1);
-	if (!strstr (tmpbuf, "L"))
-	    ctx.exportable = 1;
-	ctx._class = atoi (tmpbuf);
+	ctx._class = ks->sig_class;
 	if (ctx._class == 0)
-	    ctx._class = 10;
-	else if (ctx._class < 10)
-	    ctx._class += 10;
-	listview_get_item_text (lv, n, SL_COL_ALGO, tmpbuf, DIM (tmpbuf)-1);
-	if (strstr (tmpbuf, "DSA"))	    
+	    ctx._class = 16;    
+	ctx._class -= 6;
+	if (ks->pubkey_algo == GPGME_PK_DSA)
 	    ctx.alg = "DSA";
-	else if (strstr (tmpbuf, "RSA"))
+	else if (ks->pubkey_algo == GPGME_PK_RSA)
 	    ctx.alg = "RSA";
 	else
 	    ctx.alg = "ELG";
+	ctx.exportable = ks->exportable;
 	_snprintf (tmpbuf, DIM (tmpbuf)-1, fmt_templ,
 		   ctx.exportable? _("Exportable") : _("Non-exportable"), ctx.alg);
 	SetDlgItemText (dlg, IDC_SIGPROPS_INFO, tmpbuf);
-	listview_get_item_text (lv, n, SL_COL_KEYID, tmpbuf, DIM (tmpbuf)-1);
-	SetDlgItemText (dlg, IDC_SIGPROPS_KEYID, tmpbuf);
+	
+	SetDlgItemText (dlg, IDC_SIGPROPS_KEYID, ks->keyid+8);
 	SetDlgItemInt (dlg, IDC_SIGPROPS_CLASS, ctx._class, FALSE);
 	if (ctx.exportable)
 	    CheckDlgButton (dlg, IDC_SIGPROPS_EXP, BST_CHECKED);
-	listview_get_item_text (lv, n, SL_COL_UID, tmpbuf, DIM (tmpbuf)-1);
-	SetDlgItemText (dlg, IDC_SIGPROPS_ISSUER, tmpbuf+1);
-	tmpbuf[0] = 0;
-	listview_get_item_text (lv, n, SL_COL_EXPIRE, tmpbuf, DIM (tmpbuf)-1);
-	if (strlen (tmpbuf) == 0) {
+	if (!get_pubkey (ks->keyid+8, &issuer)) {
+	    char *uid = utf8_to_wincp2 (issuer->uids->uid);
+	    SetDlgItemText (dlg, IDC_SIGPROPS_ISSUER, uid);
+	    safe_free (uid);
+	}
+	else
+	    SetDlgItemText (dlg, IDC_SIGPROPS_ISSUER, _("  user ID not found"));
+	if (ks->expires == 0) {
 	    ShowWindow (GetDlgItem (dlg, IDC_SIGPROPS_EXPSTR), SW_HIDE);
 	    ShowWindow (GetDlgItem (dlg, IDC_SIGPROPS_EXPDATE), SW_HIDE);
 	}
 	else {
 	    SYSTEMTIME st;
-	    struct tm * tm;
+	    struct tm *tm;
 	    time_t t = time (NULL);
+	    time_t tmp = ks->expires;
 
+	    tm = localtime (&tmp);
 	    memset (&st, 0, sizeof st);
-	    st.wYear = atoi (tmpbuf);
-	    st.wMonth = atoi (tmpbuf+5);
-	    st.wDay = atoi (tmpbuf+8);
+	    st.wYear = tm->tm_year+1900;
+	    st.wMonth = tm->tm_mon;
+	    st.wDay = tm->tm_mday;
 	    DateTime_SetSystemtime (GetDlgItem (dlg, IDC_SIGPROPS_EXPDATE),
 				    GDT_VALID, &st);
 
@@ -217,6 +217,10 @@
 	case IDOK:
 	    EndDialog (dlg, TRUE);
 	    break;
+
+	case IDCANCEL:
+	    EndDialog (dlg, FALSE);
+	    break;
 	}
     }
 
@@ -229,6 +233,7 @@
 {
     listview_ctrl_t lv;
     winpt_key_t key;
+    gpgme_key_sig_t ks;
 
     switch (msg) {
     case WM_KEYUP:
@@ -236,9 +241,11 @@
 	key = (winpt_key_t)siglist_proc.opaque;
 	lv = key->callback.ctl;
         if (virt_key == VK_SPACE) {
-	    if (is_sig (lv, -1))
+	    if (is_sig (lv, -1)) {
+		ks = (gpgme_key_sig_t)listview_get_item2 (lv, listview_get_curr_pos (lv));
 		DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_SIGPROPS, dlg,
-				sigprops_dlg_proc, (LPARAM)lv);
+				sigprops_dlg_proc, (LPARAM)ks);
+	    }
 	}
 	else if (virt_key == VK_DELETE)
 	    do_delsig (dlg, lv, key);
@@ -307,12 +314,9 @@
     GetCursorPos (&p);
     hm = LoadMenu (glob_hinst, MAKEINTRESOURCE (IDR_WINPT_KEYSIG_CTX));
     sm = GetSubMenu (hm, 0);
-
     set_menu_text (sm, ID_SIGCTX_PROPS, _("Signature &Properties"));
     set_menu_text (sm, ID_SIGCTX_KEYPROPS, _("Signing &Key Properties"));
-
     TrackPopupMenu (sm, TPM_RIGHTALIGN, p.x, p.y, 0, dlg, NULL);
-
     DestroyMenu (hm);
     DestroyMenu (sm);
 }
@@ -376,9 +380,10 @@
 {
     static listview_ctrl_t lv = NULL;
     static struct winpt_key_s *k;
+    gpgme_key_sig_t ks;
+    HWND sl;
     char inf[384];
-    int idx = 0;
-    HWND sl;
+    int idx = 0;    
     
     switch (msg) {
     case WM_INITDIALOG:
@@ -470,9 +475,11 @@
 	    break;
 
 	case ID_SIGCTX_PROPS:
-	    if (is_sig (lv, -1))
+	    if (is_sig (lv, -1)) {
+		ks = (gpgme_key_sig_t)listview_get_item2 (lv, listview_get_curr_pos (lv));
 		DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_SIGPROPS, dlg,
-				sigprops_dlg_proc, (LPARAM)lv);
+				sigprops_dlg_proc, (LPARAM)ks);
+	    }
 	    break;
 
         case IDC_KEYSIG_RECVKEY:
@@ -484,9 +491,11 @@
             return TRUE;
 
 	case IDC_KEYSIG_SIGPROPS:
-	    if (is_sig (lv, -1))
+	    if (is_sig (lv, -1)) {
+		ks = ks = (gpgme_key_sig_t)listview_get_item2 (lv, listview_get_curr_pos (lv));
 		DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_SIGPROPS, dlg,
-				sigprops_dlg_proc, (LPARAM)lv);
+				sigprops_dlg_proc, (LPARAM)ks);
+	    }
 	    return TRUE;
             
         case IDOK:

Modified: trunk/Src/wptKeysignDlg.cpp
===================================================================
--- trunk/Src/wptKeysignDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptKeysignDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -253,12 +253,13 @@
 		   get_expire_date (key->ctx),
                    get_printable_fpr (key->ctx->subkeys->fpr),
                    uid);
-        free (uid);
+        safe_free (uid);
 	s = key->ctx->subkeys->keyid;
 	if (do_fill_seckeylist (dlg, s)) {
 	    msg_box (dlg, _("No valid secret key found."), _("Key Signing"), MB_ERR);
 	    EndDialog (dlg, FALSE);
 	}
+	do_check_protection (dlg);
         SetDlgItemText (dlg, IDC_KEYSIGN_INFOS, keymsg);
         SetDlgItemText (dlg, IDC_KEYSIGN_LOCAL, _("Sign local only (non exportable signature)"));
 	SetDlgItemText (dlg, IDC_KEYSIGN_EXPSIG, _("Signature expires on"));
@@ -290,7 +291,7 @@
         return FALSE;
         
     case WM_COMMAND:
-	if (HIWORD( wparam ) == CBN_SELCHANGE) {
+	if (HIWORD (wparam) == CBN_SELCHANGE) {
 	    do_check_protection (dlg);
 	    break;
 	}

Modified: trunk/Src/wptNLS.c
===================================================================
--- trunk/Src/wptNLS.c	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptNLS.c	2006-02-13 09:38:03 UTC (rev 176)
@@ -1,5 +1,5 @@
 /* wptNLS.cpp - W32 Native Language Support
- *	Copyright (C) 2001, 2002, 2003 Timo Schulz
+ *	Copyright (C) 2001, 2002, 2003, 2006 Timo Schulz
  *	Copyright (C) 1995-1999 Free Software Foundation, Inc.
  *
  * This code based on the simple-gettext.c code from the GnuPG 
@@ -25,7 +25,6 @@
 #endif
 
 #include <stdio.h>
-#include <stdio.h>
 #include <string.h>
 #include <ctype.h>
 #include <errno.h>
@@ -36,17 +35,17 @@
 #include "wptTypes.h"
 #include "wptNLS.h"
 
+
 /* Missing W32 functions. */
 static char *
 w32_stpcpy (char *a,const char *b)
 {
-    while (*b)
+    while( *b )
 	*a++ = *b++;
     *a = 0;
     return (char*)a;
 }
 
-
 /* The magic number of the GNU message catalog format.	*/
 #define MAGIC	      0x950412de
 #define MAGIC_SWAPPED 0xde120495
@@ -270,7 +269,6 @@
     return (const char*)p;
 } /* get_string */
 
-
 const char *
 gettext( const char *msgid )
 {
@@ -341,6 +339,7 @@
     return msgid;
 } /* gettext */
 
+
 /* Map the user specific language ID to a
    gettext conform language string.
    Example: LANG_GERMAN -> "de" */
@@ -356,9 +355,9 @@
     };
     LANGID lang;
     int i;
-    
+
     lang = GetUserDefaultLangID ();
-    
+
     for (i=0; lang_table[i].id; i++) {
 	if (PRIMARYLANGID (lang) == lang_table[i].langid)
 	    return lang_table[i].id;
@@ -367,6 +366,21 @@
 }
 
 
+/* Take a table with control item IDs and their translation
+   and set each text to the translated value. */
+void
+gettext_localize_dialog (HWND dlg, struct gettext_tab_s *tab,
+			 const char *title)
+{
+    int i;
+
+    for (i=0; tab[i].trans != NULL; i++)
+	SetDlgItemText (dlg, tab[i].ctlid, tab[i].trans);
+    if (title)
+	SetWindowText (dlg, title);
+}
+
+
 /* XXX: this has to be placed in a .c file but not here */
 #include <shlobj.h>
 

Modified: trunk/Src/wptPreferencesDlg.cpp
===================================================================
--- trunk/Src/wptPreferencesDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptPreferencesDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -94,17 +94,6 @@
 }
 
 
-/* Initialize the combox in the dialog @dlg with the valid list modes. */
-static void
-init_keylist_modes (HWND dlg)
-{
-    HWND cb = GetDlgItem (dlg, IDC_PREFS_LISTMODE);
-    combox_add_string (cb, (char *)"NORMAL");
-    combox_add_string (cb, (char *)"MINIMAL");
-    SendMessage (cb, CB_SETCURSEL, (WPARAM)reg_prefs.keylist_mode, 0);
-}
-
-
 /* Initialize the combobox in the dialog @dlg with the valid wipe modes. */
 static void
 init_wipe_modes (HWND dlg)
@@ -117,77 +106,89 @@
 }
 
 
+/* Helper function to prepare dialog. */
+static void
+on_init_dialog (HWND dlg)
+{
+    struct gettext_tab_s prefs[] = {
+	{IDC_PREFS_SECMODE, _("Do not use any &temporary files")},
+	{IDC_PREFS_VIEWER, _("Use clipboard &viewer to display the plaintext")},
+	{IDC_PREFS_WWINFO, _("Word wrap cleartext &signatures at column")},
+	{IDC_PREFS_DISABLE_HOTKEYS, _("&Disable hotkeys (Not recommended!)")},
+	{IDC_PREFS_TRUST, _("Skip key validation and assume that keys are always fully trusted")},
+	{IDC_PREFS_AUTOBACKUP, _("&Automatic keyring backup when WinPT closes")},
+	{IDC_PREFS_BAKHOME, _("Backup to &keyring folder")},
+	{IDC_PREFS_BAKUSER, _("Backup to:")},
+	{IDC_PREFS_KEYLISTINF, _("Select &key list mode")},
+	{IDC_PREFS_WIPEINF, _("Select &wipe mode")},
+	{IDC_PREFS_KSINF, _("Keyserver &config")},
+	{IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' seconds")},
+	{IDC_PREFS_CACHEHINT, _("(CTRL+ALT+F to clear the cache)")},
+	{IDC_PREFS_ALLOPTINF, _("General options")},
+	{IDC_PREFS_CLIPINF, _("Clipboard hotkeys")},
+	{IDC_PREFS_CURRINF, _("Current window hotkeys")},
+	{IDC_PREFS_KSELFILE, _("Browse...")},
+	{IDC_PREFS_BAKSELECT, _("Browse...")},
+	{IDCANCEL, _("&Cancel")},
+    {0, NULL}};
+    int i;
+
+    gettext_localize_dialog (dlg, prefs, _("WinPT Preferences"));
+    SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time, TRUE);
+        
+    SetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE);
+    if (reg_prefs.backup.path)
+	SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);
+
+	
+    for (i=0; hotkeys[i]; i++)
+	SetDlgItemText (dlg, hotkeys[i], reg_hotkeys[i].key);     
+    CheckDlgButton (dlg, IDC_PREFS_DISABLE_HOTKEYS,
+		    reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED);
+    CheckDlgButton (dlg, IDC_PREFS_SECMODE,
+		    reg_prefs.use_tmpfiles ? BST_UNCHECKED : BST_CHECKED);
+    CheckDlgButton (dlg, IDC_PREFS_VIEWER,
+		    reg_prefs.use_viewer ? BST_CHECKED: BST_UNCHECKED);
+    CheckDlgButton (dlg, IDC_PREFS_TRUST,
+		    reg_prefs.always_trust? BST_CHECKED : BST_UNCHECKED);
+    CheckDlgButton (dlg, IDC_PREFS_AUTOBACKUP,
+		    reg_prefs.auto_backup? BST_CHECKED : BST_UNCHECKED);
+    CheckDlgButton (dlg, IDC_PREFS_BAKHOME, 
+		    reg_prefs.backup.mode==1? BST_CHECKED : BST_UNCHECKED);
+    CheckDlgButton (dlg, IDC_PREFS_BAKUSER,
+		    reg_prefs.backup.mode==2? BST_CHECKED : BST_UNCHECKED);
+    if (reg_prefs.no_hotkeys)
+        disable_hotkey_items (dlg, 1);
+    if (!reg_prefs.auto_backup)
+	enable_backup_items (dlg, 0);
+    EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), 
+		      reg_prefs.backup.mode==1?FALSE : TRUE);
+    EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT),
+		      reg_prefs.backup.mode==1? FALSE : TRUE);
+    init_wipe_modes (dlg);
+    center_window (dlg, NULL);    
+    SetForegroundWindow (dlg);
+}
+
+
 /* Dialog box procedure for the WinPT preferences. */
 BOOL CALLBACK
 prefs_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
     int rc;
-    int i, id;
+    int i;
     char t[2];
-    char path[256], * p;
+    char path[256], *p;
     HWND cb;
     
     switch (msg) {
     case WM_INITDIALOG:
-        SetWindowText (dlg, _("WinPT Preferences"));
-        SetDlgItemText (dlg, IDC_PREFS_SECMODE, _("Do not use any &temporary files"));
-        SetDlgItemText (dlg, IDC_PREFS_VIEWER, _("Use clipboard &viewer to display the plaintext"));
-        SetDlgItemText (dlg, IDC_PREFS_WWINFO, _("Word wrap cleartext &signatures at column"));
-        SetDlgItemText (dlg, IDC_PREFS_DISABLE_HOTKEYS, _("&Disable hotkeys (Not recommended!)"));
-	SetDlgItemText (dlg, IDC_PREFS_TRUST, _("Skip key validation and assume that keys are always fully trusted"));
-	SetDlgItemText (dlg, IDC_PREFS_AUTOBACKUP, _("&Automatic keyring backup when WinPT closes"));
-	SetDlgItemText (dlg, IDC_PREFS_BAKHOME, _("Backup to &keyring folder"));
-	SetDlgItemText (dlg, IDC_PREFS_BAKUSER, _("Backup to:"));
-	SetDlgItemText (dlg, IDC_PREFS_KEYLISTINF, _("Select &key list mode"));
-	SetDlgItemText (dlg, IDC_PREFS_WIPEINF, _("Select &wipe mode"));
-	SetDlgItemText (dlg, IDC_PREFS_KSINF, _("Keyserver &config"));
-	SetDlgItemText (dlg, IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' seconds"));
-	SetDlgItemText (dlg, IDC_PREFS_CACHEHINT, _("(CTRL+ALT+F to clear the cache)"));
-	SetDlgItemText (dlg, IDC_PREFS_ALLOPTINF, _("General options"));
-	SetDlgItemText (dlg, IDC_PREFS_CLIPINF, _("Clipboard hotkeys"));
-	SetDlgItemText (dlg, IDC_PREFS_CURRINF, _("Current window hotkeys"));
-	SetDlgItemText (dlg, IDC_PREFS_KSELFILE, _("Browse..."));
-	SetDlgItemText (dlg, IDC_PREFS_BAKSELECT, _("Browse..."));
-	SetDlgItemText (dlg, IDCANCEL, _("&Cancel"));
-
-        SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time, TRUE);
-        SetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE);
-	if (reg_prefs.backup.path)
-	    SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);
-
-	for (i=0; (id=hotkeys[i]); i++)
-	    SetDlgItemText (dlg, id, reg_hotkeys[i].key);
-        CheckDlgButton( dlg, IDC_PREFS_DISABLE_HOTKEYS, 
-                        reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED );
-        CheckDlgButton( dlg, IDC_PREFS_SECMODE, 
-                        reg_prefs.use_tmpfiles ? BST_UNCHECKED : BST_CHECKED );
-        CheckDlgButton( dlg, IDC_PREFS_VIEWER,
-                        reg_prefs.use_viewer ? BST_CHECKED: BST_UNCHECKED );
-	CheckDlgButton( dlg, IDC_PREFS_TRUST,
-			reg_prefs.always_trust? BST_CHECKED : BST_UNCHECKED );
-	CheckDlgButton( dlg, IDC_PREFS_AUTOBACKUP,
-			reg_prefs.auto_backup? BST_CHECKED : BST_UNCHECKED );
-	CheckDlgButton( dlg, IDC_PREFS_BAKHOME, 
-			reg_prefs.backup.mode==1? BST_CHECKED : BST_UNCHECKED );
-	CheckDlgButton( dlg, IDC_PREFS_BAKUSER,
-			reg_prefs.backup.mode==2? BST_CHECKED : BST_UNCHECKED );
-        if (reg_prefs.no_hotkeys)
-            disable_hotkey_items (dlg, 1);
-	if (!reg_prefs.auto_backup)
-	    enable_backup_items (dlg, 0);
-	EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKPATH), 
-		      reg_prefs.backup.mode==1?FALSE : TRUE);
-	EnableWindow (GetDlgItem (dlg, IDC_PREFS_BAKSELECT),
-		      reg_prefs.backup.mode==1? FALSE : TRUE);
-        init_keylist_modes (dlg);
-	init_wipe_modes (dlg);
-	center_window (dlg, NULL);
-        SetForegroundWindow (dlg);
+	on_init_dialog (dlg);
         return TRUE;
         
     case WM_SYSCOMMAND:
         if (LOWORD (wparam) == SC_CLOSE)
-            EndDialog (dlg, TRUE);
+            EndDialog (dlg, FALSE);
         return FALSE;
         
     case WM_COMMAND:
@@ -260,7 +261,8 @@
 	    if (!rc)
                 reg_prefs.word_wrap = 0;
             else if (rc > 80) {
-                msg_box (dlg, _("Please enter a value between 1-80."), _("Preferences"), MB_ERR);
+                msg_box (dlg, _("Please enter a value between 1-80."), 
+			 _("Preferences"), MB_ERR);
                 return TRUE;
             }
             reg_prefs.word_wrap = rc;
@@ -281,9 +283,6 @@
 		    BUG (0);
 	    }
 
-            cb = GetDlgItem( dlg, IDC_PREFS_LISTMODE );
-            reg_prefs.keylist_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );
-
 	    cb = GetDlgItem( dlg, IDC_PREFS_WIPEMODE );
 	    reg_prefs.wipe_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );
             
@@ -293,8 +292,8 @@
             }
             else {
                 reg_prefs.no_hotkeys = 0;
-		for( i = 0; (id = hotkeys[i]); i++ ) {
-		    rc = GetDlgItemText( dlg, id, t, 2 );
+		for( i = 0; hotkeys[i]; i++ ) {
+		    rc = GetDlgItemText (dlg, hotkeys[i], t, 2);
 		    if( rc && check_hotkey( &t[0] ) )
 			hotkey_enable( &reg_hotkeys[i], t );
 		    else

Modified: trunk/Src/wptRegistry.cpp
===================================================================
--- trunk/Src/wptRegistry.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptRegistry.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -472,22 +472,21 @@
 
 
 /* All valid configuration commands. */
-static const char * cfg [] = {
-	NULL,
-	"CacheTime",
-	"WordWrap",
-	"FastMode",
-	"Viewer",
-	"KeylistMode",
-	"WipeMode",
-	"AlwaysTrust",
-	"AutoBackup",
-	"BackupMode",
-	"DisableHotkeys",	
-	"NoCompressMultiMedia",	
-	"Expert",
-	"FMProgressBar",
-    };
+static const char *cfg [] = {
+    NULL,	
+    "CacheTime",
+    "WordWrap",
+    "FastMode",
+    "Viewer",
+    "WipeMode",
+    "AlwaysTrust",
+    "AutoBackup",
+    "BackupMode",
+    "DisableHotkeys",	
+    "NoCompressMultiMedia",	
+    "Expert",
+    "FMProgressBar",
+};
 
 
 int
@@ -546,9 +545,6 @@
 	case CFG_VIEWER:
 	    sprintf (buf, "%d", opt->use_viewer);
 	    break;
-	case CFG_KEYLISTMODE:
-	    sprintf (buf, "%d", opt->keylist_mode);
-	    break;
 	case CFG_ALWAYSTRUST:
 	    sprintf (buf, "%d", opt->always_trust);
 	    break;
@@ -657,9 +653,6 @@
 	case CFG_VIEWER:
 	    opt->use_viewer = atol (val);
 	    break;
-	case CFG_KEYLISTMODE:
-	    opt->keylist_mode = atol (val);
-	    break;
 	case CFG_WIPEMODE:
 	    opt->wipe_mode = atol (val);
 	    break;

Modified: trunk/Src/wptSigTreeDlg.cpp
===================================================================
--- trunk/Src/wptSigTreeDlg.cpp	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/Src/wptSigTreeDlg.cpp	2006-02-13 09:38:03 UTC (rev 176)
@@ -1,4 +1,4 @@
-/* wptSigTreeDlg.cpp
+/* wptSigTreeDlg.cpp - List signatures in a tree view
  *	Copyright (C) 2006 Timo Schulz
  *
  * This file is part of WinPT.
@@ -24,7 +24,16 @@
 #include "resource.h"
 #include "wptGPG.h"
 #include "wptNLS.h"
+#include "wptVersion.h"
+#include "wptTypes.h"
+#include "wptCommonCtl.h"
+#include "wptContext.h"
 
+BOOL CALLBACK sigprops_dlg_proc (HWND dlg, UINT msg, 
+				 WPARAM wparam, LPARAM lparam);
+BOOL CALLBACK
+keysig_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam);
+
 /* Initialize the signature tree based on the given key @key. */
 static void
 sigtree_load (HWND dlg, gpgme_key_t key)
@@ -39,18 +48,24 @@
     memset (&tvi, 0, sizeof (tvi));
     memset (&ctx, 0, sizeof (ctx));
     for (u=key->uids; u; u = u->next) {
+	if (u->revoked)
+	    continue;
 	tvi.pszText = u->uid;
 	tvi.state = TVIS_BOLD;
-	tvi.mask = TVIF_TEXT |TVIF_STATE;
+	tvi.mask = TVIF_TEXT;
+	tvi.iImage = 0;
+	tvi.iSelectedImage = 0;
 	ctx.hParent = TVI_ROOT;
 	ctx.item = tvi;
 	uid = TreeView_InsertItem (dlg, &ctx);
 	for (s = u->signatures; s; s=s->next) {
 	    if (get_pubkey (s->keyid+8, &signer))
 		continue;
-	    tvi.state = 0;
 	    tvi.pszText = signer->uids->uid;
-	    tvi.mask = TVIF_TEXT;
+	    tvi.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM;
+	    tvi.iImage = 1;
+	    tvi.iSelectedImage = 1;
+	    tvi.lParam = (LPARAM)s;
 	    ctx.hParent = uid;
 	    ctx.item = tvi;
 	    TreeView_InsertItem (dlg, &ctx);
@@ -59,27 +74,75 @@
 }
 
 
+/* Associate a signature list based on the icons @ico with
+   the treeview control @tree. */
+HIMAGELIST
+treeview_set_image_list (HWND tree, HICON *ico, DWORD nicons)
+{
+    HIMAGELIST hil;
+    DWORD i;
+
+    hil = ImageList_Create (16, 16, ILC_COLOR8|ILC_MASK, nicons, 1);
+    ImageList_SetBkColor (hil, CLR_NONE);
+    for (i=0; i < nicons; i++)
+	ImageList_AddIcon (hil, ico[i]);    
+    TreeView_SetImageList (tree, hil, TVSIL_NORMAL);
+    return hil;
+}
+
+
 /* Dialog box procedure for the tree based signature listing. */
 BOOL CALLBACK
 sigtree_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
-    static gpgme_key_t key;
+    static winpt_key_t key;
     static HWND tree;
+    static HIMAGELIST hil;
+    
+    HICON ico[2];
+    NMHDR *nft;
+    char inf[256];
 
     switch (msg) {
     case WM_INITDIALOG:
-	key = (gpgme_key_t)lparam;
+	key = (winpt_key_t)lparam;
 	if (!key)
-	    abort ();
+	    BUG (0);
+	ico[0] = LoadIcon (glob_hinst, (LPCTSTR)IDI_USERID);
+	ico[1] = LoadIcon (glob_hinst, (LPCTSTR)IDI_KEY_SIG);
 	tree = GetDlgItem (dlg, IDC_VKEYSIG_TREE);
-	sigtree_load (tree, key);
-	SetWindowText (dlg, _("Key Signature Tree"));
+	hil = treeview_set_image_list (tree, ico, 2);
+	sigtree_load (tree, key->ctx);
+	_snprintf (inf, sizeof (inf)-1, _("Signature Tree for \"%s\""),
+		   key->ctx->uids->uid);
+	SetWindowText (dlg, inf);
 	SetForegroundWindow (dlg);
 	break;
 
+    case WM_DESTROY:
+	ImageList_Destroy (hil);
+	break;
+
+    case WM_NOTIFY:
+	nft = (NMHDR*)lparam;
+	if (nft->code == NM_DBLCLK) {
+	    HTREEITEM hti;
+	    TVITEM tvi;
+
+	    memset (&tvi, 0, sizeof (tvi));
+	    tree = GetDlgItem (dlg, IDC_VKEYSIG_TREE);
+	    hti = TreeView_GetSelection (tree);
+	    tvi.mask = TVIF_PARAM;
+	    tvi.hItem = hti;
+	    TreeView_GetItem (tree, &tvi);
+	    if (tvi.lParam != 0)
+		DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_SIGPROPS, dlg, 
+				sigprops_dlg_proc, tvi.lParam);
+	}
+	break;
+
     case WM_COMMAND:
 	switch (LOWORD (wparam)) {
-
 	case IDOK:
 	    EndDialog (dlg, 1);
 	    break;
@@ -87,6 +150,10 @@
 	case IDCANCEL:
 	    EndDialog (dlg, 0);
 	    break;
+
+	case IDC_VKEYSIG_EDIT:
+	    DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_KEYSIG, dlg,
+			    keysig_dlg_proc, (LPARAM)key);
 	}
 	break;
     }

Added: trunk/icons/ChangeLog
===================================================================
--- trunk/icons/ChangeLog	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/icons/ChangeLog	2006-02-13 09:38:03 UTC (rev 176)
@@ -0,0 +1,5 @@
+2006-02-09  Timo Schulz  <ts at g10code.de>
+
+	* userid.ico: New.
+	* keysig.ico: New.
+	
\ No newline at end of file

Modified: trunk/icons/Makefile.am
===================================================================
--- trunk/icons/Makefile.am	2006-02-07 08:58:04 UTC (rev 175)
+++ trunk/icons/Makefile.am	2006-02-13 09:38:03 UTC (rev 176)
@@ -15,7 +15,7 @@
       key_delete.ico key_export.ico key_import.ico key_props.ico \
       key_sign.ico sort_downarrow.ico sort_uparrow.ico \
       key_file_export.ico key_file_import.ico key_new.ico \
-      key_search.ico computer.ico
+      key_search.ico computer.ico keysig.ico userid.ico
       
 
       
\ No newline at end of file

Added: trunk/icons/keysig.ico
===================================================================
(Binary files differ)


Property changes on: trunk/icons/keysig.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/icons/userid.ico
===================================================================
(Binary files differ)


Property changes on: trunk/icons/userid.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream



More information about the Winpt-commits mailing list