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

scm-commit at wald.intevation.org scm-commit at wald.intevation.org
Mon Dec 19 14:06:02 CET 2005


Author: twoaday
Date: 2005-12-19 14:05:59 +0100 (Mon, 19 Dec 2005)
New Revision: 128

Modified:
   trunk/Include/wptGPG.h
   trunk/Include/wptKeylist.h
   trunk/Include/wptRegistry.h
   trunk/NEWS
   trunk/Po/ChangeLog
   trunk/Po/de.po
   trunk/Po/winpt.pot
   trunk/Src/ChangeLog
   trunk/Src/WinPT-en.rc
   trunk/Src/WinPT.cpp
   trunk/Src/resource.h
   trunk/Src/wptGPG.cpp
   trunk/Src/wptGPGPrefsDlg.cpp
   trunk/Src/wptKeyEditDlgs.cpp
   trunk/Src/wptKeyManager.cpp
   trunk/Src/wptKeyManagerDlg.cpp
   trunk/Src/wptKeyPropsDlg.cpp
   trunk/Src/wptKeylist.cpp
   trunk/Src/wptKeysigDlg.cpp
   trunk/Src/wptRegistry.cpp
   trunk/Src/wptSigList.cpp
   trunk/Src/wptUTF8.cpp
Log:
2005-12-17  Timo Schulz  <ts at g10code.com>
 
        * wptUTF8.cpp: Removed unused charset array.
        * wptSigList.cpp (siglist_build): Increase size for 'class'
        column.
        * wptGPG.cpp (get_gnupg_path): Simplified.
        * WinPT.cpp (load_gpg_env): New.
        (check_crypto_engine): Return type is now bool.
        * wptRegistry.cpp (is_gpg4win_installed): New.
        * wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): More consistent
        dialog design.
        * wptKeyManagerDlg.cpp (translate_menu_strings): New.
        (translate_popupmenu_strings): New.
        * wptKeyEditDlgs.cpp (is_jpg_file): New.



Modified: trunk/Include/wptGPG.h
===================================================================
--- trunk/Include/wptGPG.h	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Include/wptGPG.h	2005-12-19 13:05:59 UTC (rev 128)
@@ -139,6 +139,7 @@
 char* get_gnupg_cfgfile (void);
 int set_gnupg_options( const char *buf, size_t buflen );
 int gnupg_load_config (void);
+char* multi_gnupg_path (int strict);
 
 int check_gnupg_options (const char *buf);
 void init_gnupg_table (void);

Modified: trunk/Include/wptKeylist.h
===================================================================
--- trunk/Include/wptKeylist.h	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Include/wptKeylist.h	2005-12-19 13:05:59 UTC (rev 128)
@@ -75,6 +75,7 @@
 
 /*-- keylist.c --*/
 const char*  get_key_pubalgo (gpgme_pubkey_algo_t alg);
+const char*  get_key_pubalgo2 (gpgme_pubkey_algo_t alg);
 const char * get_key_algo( gpgme_key_t key, int keyidx );
 const char * get_key_created( long timestamp );
 const char * get_key_expire_date( long timestamp );

Modified: trunk/Include/wptRegistry.h
===================================================================
--- trunk/Include/wptRegistry.h	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Include/wptRegistry.h	2005-12-19 13:05:59 UTC (rev 128)
@@ -111,7 +111,9 @@
 			 const char * user, const char * pass );
 int set_reg_entry_keyserver( const char * name, const char * val );
 char * get_reg_entry_keyserver( const char * name );
-int set_reg_winpt_flag( const char * name, int val );
-int get_reg_winpt_flag( const char * name );
+int set_reg_winpt_flag (const char *name, int val);
+int get_reg_winpt_flag (const char *name);
+char* get_reg_entry_gpg4win (const char *path);
+int is_gpg4win_installed (void);
 
 #endif /* WPT_REGISTRY_H */

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/NEWS	2005-12-19 13:05:59 UTC (rev 128)
@@ -689,3 +689,9 @@
   ($APPDATA) and not the folder where gpg.exe is located.
 * Display the correct preferred cipher in the key property dialog.
 * Fix a lot of minor user handling problems in the Key Manager.
+
+(0.11.4)
+* Some fixes for the GPG environment checking code.
+* Remind the size of the Key Manager columns and restore them
+  on each startup.
+  
\ No newline at end of file

Modified: trunk/Po/ChangeLog
===================================================================
--- trunk/Po/ChangeLog	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Po/ChangeLog	2005-12-19 13:05:59 UTC (rev 128)
@@ -1,3 +1,7 @@
+2005-12-18  Timo Schulz  <ts at g10code.com>
+
+	* de.po: Updated.
+	
 2005-12-07  Werner Koch  <wk at g10code.com>
 
 	* de.po: Translated 2 strings.

Modified: trunk/Po/de.po
===================================================================
--- trunk/Po/de.po	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Po/de.po	2005-12-19 13:05:59 UTC (rev 128)
@@ -12,10 +12,10 @@
 # BUG: GetOpenFileName needs \0\0. gettext does not support it.
 msgid ""
 msgstr ""
-"Project-Id-Version: WinPT 0.10.2\n"
+"Project-Id-Version: WinPT 0.11.3\n"
 "Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2005-12-16 13:37+0100\n"
-"PO-Revision-Date: 2005-12-07 17:55+0100\n"
+"POT-Creation-Date: 2005-12-18 20:12+0100\n"
+"PO-Revision-Date: 2005-12-16 16:10+0100\n"
 "Last-Translator: Timo Schulz <ts at g10code.de>\n"
 "Language-Team: DE <twoaday at freakmail.de>\n"
 "MIME-Version: 1.0\n"
@@ -30,25 +30,29 @@
 "Konnte Dateisperrung nicht initialisieren.\n"
 "Native Language Support"
 
-#: Src/WinPT.cpp:109 Src/WinPT.cpp:131 Src/WinPT.cpp:181 Src/WinPT.cpp:185
-#: Src/WinPT.cpp:294 Src/WinPT.cpp:301 Src/WinPT.cpp:340 Src/WinPT.cpp:368
-#: Src/WinPT.cpp:377 Src/WinPT.cpp:381 Src/WinPT.cpp:398 Src/WinPT.cpp:466
-#: Src/WinPT.cpp:479 Src/WinPT.cpp:529 Src/WinPT.cpp:550 Src/WinPT.cpp:567
-#: Src/wptErrors.cpp:140 Src/wptGPG.cpp:952 Src/wptGPG.cpp:963
-#: Src/wptGPG.cpp:972 Src/wptGPG.cpp:982 Src/wptMainProc.cpp:345
-#: Src/wptMainProc.cpp:531
+#: Src/WinPT.cpp:109 Src/WinPT.cpp:143 Src/WinPT.cpp:173 Src/WinPT.cpp:223
+#: Src/WinPT.cpp:227 Src/WinPT.cpp:337 Src/WinPT.cpp:344 Src/WinPT.cpp:386
+#: Src/WinPT.cpp:414 Src/WinPT.cpp:423 Src/WinPT.cpp:427 Src/WinPT.cpp:444
+#: Src/WinPT.cpp:512 Src/WinPT.cpp:525 Src/WinPT.cpp:574 Src/WinPT.cpp:595
+#: Src/WinPT.cpp:612 Src/wptErrors.cpp:140 Src/wptGPG.cpp:889
+#: Src/wptGPG.cpp:900 Src/wptGPG.cpp:909 Src/wptGPG.cpp:919
+#: Src/wptMainProc.cpp:345 Src/wptMainProc.cpp:531
 msgid "WinPT Error"
 msgstr "WinPT Fehler"
 
-#: Src/WinPT.cpp:130
+#: Src/WinPT.cpp:142
+msgid "Could not create GPG home directory"
+msgstr "Konnte GPG Heimatverzeichnis nicht erstellen"
+
+#: Src/WinPT.cpp:172
 msgid "No useable secret key found."
 msgstr "Kein benutzbarer geheimer Schlüssel gefunden"
 
-#: Src/WinPT.cpp:180
+#: Src/WinPT.cpp:222
 msgid "Could not read GnuPG version."
 msgstr "Konnte GnuPG-Version nicht auslesen."
 
-#: Src/WinPT.cpp:186
+#: Src/WinPT.cpp:228
 #, c-format
 msgid ""
 "Sorry, you need a newer GPG version.\n"
@@ -57,7 +61,7 @@
 "Sorry, Sie benötigen eine neuere GPG-Version.\n"
 "Aktuelle GPG-Version %d.%d.%d benötigte benoetigte GPG version "
 
-#: Src/WinPT.cpp:218 Src/wptKeyManagerDlg.cpp:803 Src/wptKeyserverDlg.cpp:55
+#: Src/WinPT.cpp:260 Src/wptKeyManagerDlg.cpp:860 Src/wptKeyserverDlg.cpp:55
 #: Src/wptKeyserverDlg.cpp:184 Src/wptKeyserverDlg.cpp:192
 #: Src/wptKeyserverDlg.cpp:208 Src/wptKeyserverDlg.cpp:354
 #: Src/wptKeyserverDlg.cpp:359 Src/wptKeyserverDlg.cpp:489
@@ -68,17 +72,16 @@
 msgstr "Schlüsselserver"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:245
-#: Src/WinPT.cpp:293
+#: Src/WinPT.cpp:336
 msgid "Cryptographic selftest failed."
 msgstr "Kryptographischer Selbsttest ist fehlgeschlagen."
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:252
-#: Src/WinPT.cpp:300
-#, fuzzy
+#: Src/WinPT.cpp:343
 msgid "A newer GPGME version is needed; at least "
 msgstr "Eine neuere GPGME version wird benötigt"
 
-#: Src/WinPT.cpp:341
+#: Src/WinPT.cpp:387
 #, c-format
 msgid ""
 "GPG home directory is not set correctly.\n"
@@ -89,22 +92,21 @@
 "Bitte überprüfen Sie die GPG Registryseinträge:\n"
 "%s"
 
-#: Src/WinPT.cpp:345
+#: Src/WinPT.cpp:391
 msgid "Select GPG Public Keyring"
 msgstr "Öffentlichen GPG-Schlüsselbund auswählen."
 
 # c:\oss\winpt-gpgme\src\wptKeyCache.cpp:479
-#: Src/WinPT.cpp:346 Src/wptGPG.cpp:950 Src/wptGPG.cpp:970
-#, fuzzy
+#: Src/WinPT.cpp:392 Src/wptGPG.cpp:887 Src/wptGPG.cpp:907
 msgid "GPG Keyrings (*.gpg)"
-msgstr "Lade GPG Keyrings"
+msgstr "GPG Schlüsselbunde (*.gpg)"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:313
-#: Src/WinPT.cpp:367
+#: Src/WinPT.cpp:413
 msgid "GPG home directory could not be determited."
 msgstr "GPG-Home-Dir konnte nicht bestimmt werden."
 
-#: Src/WinPT.cpp:375
+#: Src/WinPT.cpp:421
 msgid ""
 "Could not find the GPG binary (gpg.exe).\n"
 "Do you want to start the GPG preferences to correct  this problem?"
@@ -113,7 +115,7 @@
 "öffnen um das Problem zu beheben?"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:339
-#: Src/WinPT.cpp:390
+#: Src/WinPT.cpp:436
 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"
@@ -128,20 +130,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:421 Src/wptFileManagerDlg.cpp:478
+#: Src/WinPT.cpp:467 Src/wptFileManagerDlg.cpp:478
 #: Src/wptFileManagerDlg.cpp:792
 msgid "Wipe Free Space"
 msgstr "Freispeicher Löschen"
 
-#: Src/WinPT.cpp:465
+#: Src/WinPT.cpp:511
 msgid "Could not register window class"
 msgstr "Konnte keine Fensterklasse registrieren"
 
-#: Src/WinPT.cpp:479
+#: Src/WinPT.cpp:525
 msgid "Could not create window"
 msgstr "Konnte Fenster nicht erstellen"
 
-#: Src/WinPT.cpp:548
+#: Src/WinPT.cpp:593
 msgid ""
 "The keycache was not initialized or is empty.\n"
 "Please check your GPG config (keyrings, pathes...)"
@@ -149,7 +151,7 @@
 "Der Schlüsselspeicher wurde nicht initialisiert oder ist leer.\n"
 "Bitte checken Sie die GPG Konfiguration (Schlüsselbunde, Pfade)"
 
-#: Src/WinPT.cpp:551
+#: Src/WinPT.cpp:596
 msgid ""
 "It seems that GPG is not set properly.\n"
 "Do you want to start the GPG preferences dialog?"
@@ -157,7 +159,7 @@
 "GPG ist nicht richtig konfiguriert.\n"
 "Den GPG-Einstellungsdialog starten?"
 
-#: Src/WinPT.cpp:568
+#: Src/WinPT.cpp:613
 #, c-format
 msgid ""
 "Default key from the GPG options file could not be found.\n"
@@ -179,7 +181,7 @@
 msgid "About GnuPG"
 msgstr "Über GnuPG"
 
-#: Src/wptAboutDlgs.cpp:93 Src/wptKeyManagerDlg.cpp:1434
+#: Src/wptAboutDlgs.cpp:93 Src/wptKeyManagerDlg.cpp:1517
 #: Src/wptMainProc.cpp:575
 msgid "About WinPT"
 msgstr "Über WinPT"
@@ -225,8 +227,8 @@
 msgstr "Über &GPG"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:700
-#: Src/wptAboutDlgs.cpp:111 Src/wptKeyEditDlgs.cpp:1780
-#: Src/wptKeyManagerDlg.cpp:809
+#: Src/wptAboutDlgs.cpp:111 Src/wptKeyEditDlgs.cpp:1802
+#: Src/wptKeyManagerDlg.cpp:866
 msgid "&Help"
 msgstr "&Hilfe"
 
@@ -311,7 +313,7 @@
 "Diese Operation wird die Schlüssel auf der Karte überschreiben.\n"
 "Trotzdem fortfahren?"
 
-#: Src/wptCardDlg.cpp:600 Src/wptKeyEditDlgs.cpp:438
+#: Src/wptCardDlg.cpp:600 Src/wptKeyEditDlgs.cpp:459
 msgid "&Name"
 msgstr "&Name"
 
@@ -327,7 +329,7 @@
 msgid "Off-card passphrase"
 msgstr "\"Off-card\" Passwort"
 
-#: Src/wptCardDlg.cpp:604 Src/wptKeyEditDlgs.cpp:575 Src/wptKeygenDlg.cpp:392
+#: Src/wptCardDlg.cpp:604 Src/wptKeyEditDlgs.cpp:596 Src/wptKeygenDlg.cpp:392
 msgid "&Never"
 msgstr "&Niemals"
 
@@ -335,7 +337,7 @@
 msgid "Email &address"
 msgstr "Mail-&Adresse"
 
-#: Src/wptCardDlg.cpp:606 Src/wptKeyManagerDlg.cpp:1328
+#: Src/wptCardDlg.cpp:606 Src/wptKeyManagerDlg.cpp:1411
 msgid "Card Key Generation"
 msgstr "Karten-Schlüsselerzeugung"
 
@@ -364,7 +366,7 @@
 msgid "Please use plain ASCII charset for the fields."
 msgstr "Bitte nur den 7-bit ASCII Zeichensatz verwenden."
 
-#: Src/wptCardDlg.cpp:681 Src/wptKeyEditDlgs.cpp:1275
+#: Src/wptCardDlg.cpp:681 Src/wptKeyEditDlgs.cpp:1296
 msgid "The date you have chosen lies in the past."
 msgstr "Das gewählte Datum ist in der Vergangenheit."
 
@@ -462,8 +464,8 @@
 
 #: Src/wptClipDecryptDlg.cpp:166 Src/wptClipEncryptDlg.cpp:208
 #: Src/wptClipSignDlg.cpp:119 Src/wptClipSignDlg.cpp:231
-#: Src/wptClipSignEncDlg.cpp:199 Src/wptKeyManager.cpp:292
-#: Src/wptKeyManager.cpp:666 Src/wptKeyManager.cpp:904 Src/wptSymEnc.cpp:90
+#: Src/wptClipSignEncDlg.cpp:199 Src/wptKeyManager.cpp:317
+#: Src/wptKeyManager.cpp:691 Src/wptKeyManager.cpp:921 Src/wptSymEnc.cpp:90
 msgid "GnuPG Status: Finished"
 msgstr "GnuPG-Status: Abgeschlossen"
 
@@ -567,7 +569,7 @@
 msgid "Add quotes"
 msgstr "'>' hinzufügen"
 
-#: Src/wptClipEditDlg.cpp:202 Src/wptKeyEditDlgs.cpp:1779
+#: Src/wptClipEditDlg.cpp:202 Src/wptKeyEditDlgs.cpp:1801
 #: Src/wptKeyserverDlg.cpp:446 Src/wptMDSumDlg.cpp:87
 #: Src/wptOwnertrustDlg.cpp:103
 msgid "&Close"
@@ -593,8 +595,8 @@
 #: Src/wptCommonDlg.cpp:66 Src/wptFileManagerDlg.cpp:84
 #: Src/wptFileManagerDlg.cpp:198 Src/wptFileManagerDlg.cpp:275
 #: Src/wptFileSaveDlg.cpp:58 Src/wptFirstRunDlg.cpp:50
-#: Src/wptKeyEditDlgs.cpp:272 Src/wptKeyEditDlgs.cpp:366
-#: Src/wptKeyEditDlgs.cpp:441 Src/wptKeyEditDlgs.cpp:576
+#: Src/wptKeyEditDlgs.cpp:288 Src/wptKeyEditDlgs.cpp:388
+#: Src/wptKeyEditDlgs.cpp:462 Src/wptKeyEditDlgs.cpp:597
 #: Src/wptKeyEditOwnertrustDlg.cpp:67 Src/wptKeygenDlg.cpp:394
 #: Src/wptKeygenDlg.cpp:597 Src/wptKeyRevokeDlg.cpp:90
 #: Src/wptKeyserverSearchDlg.cpp:63 Src/wptKeysignDlg.cpp:258
@@ -618,7 +620,7 @@
 msgstr "Schlüsselimport-Statistiken"
 
 #: Src/wptClipImportDlg.cpp:88 Src/wptFileManagerDlg.cpp:197
-#: Src/wptFileManagerDlg.cpp:203 Src/wptKeyManager.cpp:443
+#: Src/wptFileManagerDlg.cpp:203 Src/wptKeyManager.cpp:468
 msgid "Key Import"
 msgstr "Schlüsselimport"
 
@@ -643,7 +645,7 @@
 #: Src/wptFileManager.cpp:1662 Src/wptImportList.cpp:414
 #: Src/wptImportList.cpp:421 Src/wptImportList.cpp:430
 #: Src/wptImportList.cpp:438 Src/wptImportList.cpp:447
-#: Src/wptKeyManager.cpp:550 Src/wptKeyserverDlg.cpp:217
+#: Src/wptKeyManager.cpp:575 Src/wptKeyserverDlg.cpp:217
 msgid "Import"
 msgstr "Importieren"
 
@@ -698,7 +700,7 @@
 msgid "Signing key:"
 msgstr "Signierer Schlüssel:"
 
-#: Src/wptClipSignEncDlg.cpp:168 Src/wptKeylist.cpp:1111
+#: Src/wptClipSignEncDlg.cpp:168 Src/wptKeylist.cpp:1121
 msgid "No key was selected."
 msgstr "Kein Schlüssel ausgewählt."
 
@@ -761,30 +763,30 @@
 msgid "Please enter a valid URL."
 msgstr "Bitte eine gültige URL eingeben."
 
-#: Src/wptCommonDlg.cpp:123 Src/wptKeyEditDlgs.cpp:685
-#: Src/wptKeyEditDlgs.cpp:756 Src/wptKeyEditDlgs.cpp:792
-#: Src/wptKeyEditDlgs.cpp:804 Src/wptKeyEditDlgs.cpp:872
-#: Src/wptKeyEditDlgs.cpp:879 Src/wptKeyEditDlgs.cpp:897
-#: Src/wptKeyEditDlgs.cpp:944 Src/wptKeyEditDlgs.cpp:949
-#: Src/wptKeyEditDlgs.cpp:1040 Src/wptKeyEditDlgs.cpp:1046
-#: Src/wptKeyEditDlgs.cpp:1198 Src/wptKeyEditDlgs.cpp:1202
-#: Src/wptKeyEditDlgs.cpp:1206 Src/wptKeyEditDlgs.cpp:1211
-#: Src/wptKeyEditDlgs.cpp:1247 Src/wptKeyEditDlgs.cpp:1251
-#: Src/wptKeyEditDlgs.cpp:1261 Src/wptKeyEditDlgs.cpp:1276
-#: Src/wptKeyEditDlgs.cpp:1280 Src/wptKeyEditDlgs.cpp:1320
-#: Src/wptKeyEditDlgs.cpp:1325 Src/wptKeyEditDlgs.cpp:1332
-#: Src/wptKeyEditDlgs.cpp:1338 Src/wptKeyEditDlgs.cpp:1343
-#: Src/wptKeyEditDlgs.cpp:1384 Src/wptKeyEditDlgs.cpp:1389
-#: Src/wptKeyEditDlgs.cpp:1395 Src/wptKeyEditDlgs.cpp:1402
-#: Src/wptKeyEditDlgs.cpp:1405 Src/wptKeyEditDlgs.cpp:1442
-#: Src/wptKeyEditDlgs.cpp:1450 Src/wptKeyEditDlgs.cpp:1484
-#: Src/wptKeyEditDlgs.cpp:1492 Src/wptKeyEditDlgs.cpp:1589
-#: Src/wptKeyEditDlgs.cpp:1622 Src/wptKeyEditDlgs.cpp:1647
-#: Src/wptKeyEditDlgs.cpp:1651 Src/wptKeyEditDlgs.cpp:1660
-#: Src/wptKeyEditDlgs.cpp:1760 Src/wptKeyEditDlgs.cpp:1770
-#: Src/wptKeyEditDlgs.cpp:1781 Src/wptKeyEditDlgs.cpp:1811
-#: Src/wptKeyEditDlgs.cpp:1817 Src/wptKeyManagerDlg.cpp:996
-#: Src/wptKeyManagerDlg.cpp:1461
+#: Src/wptCommonDlg.cpp:123 Src/wptKeyEditDlgs.cpp:706
+#: Src/wptKeyEditDlgs.cpp:777 Src/wptKeyEditDlgs.cpp:813
+#: Src/wptKeyEditDlgs.cpp:825 Src/wptKeyEditDlgs.cpp:893
+#: Src/wptKeyEditDlgs.cpp:900 Src/wptKeyEditDlgs.cpp:918
+#: Src/wptKeyEditDlgs.cpp:965 Src/wptKeyEditDlgs.cpp:970
+#: Src/wptKeyEditDlgs.cpp:1061 Src/wptKeyEditDlgs.cpp:1067
+#: Src/wptKeyEditDlgs.cpp:1219 Src/wptKeyEditDlgs.cpp:1223
+#: Src/wptKeyEditDlgs.cpp:1227 Src/wptKeyEditDlgs.cpp:1232
+#: Src/wptKeyEditDlgs.cpp:1268 Src/wptKeyEditDlgs.cpp:1272
+#: Src/wptKeyEditDlgs.cpp:1282 Src/wptKeyEditDlgs.cpp:1297
+#: Src/wptKeyEditDlgs.cpp:1301 Src/wptKeyEditDlgs.cpp:1341
+#: Src/wptKeyEditDlgs.cpp:1346 Src/wptKeyEditDlgs.cpp:1353
+#: Src/wptKeyEditDlgs.cpp:1359 Src/wptKeyEditDlgs.cpp:1364
+#: Src/wptKeyEditDlgs.cpp:1405 Src/wptKeyEditDlgs.cpp:1410
+#: Src/wptKeyEditDlgs.cpp:1416 Src/wptKeyEditDlgs.cpp:1423
+#: Src/wptKeyEditDlgs.cpp:1426 Src/wptKeyEditDlgs.cpp:1463
+#: Src/wptKeyEditDlgs.cpp:1471 Src/wptKeyEditDlgs.cpp:1505
+#: Src/wptKeyEditDlgs.cpp:1513 Src/wptKeyEditDlgs.cpp:1611
+#: Src/wptKeyEditDlgs.cpp:1644 Src/wptKeyEditDlgs.cpp:1669
+#: Src/wptKeyEditDlgs.cpp:1673 Src/wptKeyEditDlgs.cpp:1682
+#: Src/wptKeyEditDlgs.cpp:1782 Src/wptKeyEditDlgs.cpp:1792
+#: Src/wptKeyEditDlgs.cpp:1803 Src/wptKeyEditDlgs.cpp:1832
+#: Src/wptKeyEditDlgs.cpp:1838 Src/wptKeyManagerDlg.cpp:889
+#: Src/wptKeyManagerDlg.cpp:1544
 msgid "Key Edit"
 msgstr "Schlüssel bearbeiten"
 
@@ -1081,9 +1083,8 @@
 "Auf Standard setzen?"
 
 #: Src/wptFileManager.cpp:133
-#, fuzzy
 msgid "Could not reset file attribute to normal."
-msgstr "Konnte \"filelist window procedure\" nicht setzen."
+msgstr "Konnte Dateiattribut nicht zurücksetzen."
 
 # c:\oss\winpt-gpgme\src\wptFileManager.cpp:147
 #: Src/wptFileManager.cpp:169
@@ -1099,12 +1100,12 @@
 "\n"
 "Möchten Sie die Kompression ausschalten?"
 
-#: Src/wptFileManager.cpp:381 Src/wptKeyEditDlgs.cpp:931
+#: Src/wptFileManager.cpp:381 Src/wptKeyEditDlgs.cpp:952
 #: Src/wptVerifyList.cpp:88 Src/wptVerifyList.cpp:96
 msgid "Status"
 msgstr "Status"
 
-#: Src/wptFileManager.cpp:382 Src/wptKeyEditDlgs.cpp:1032
+#: Src/wptFileManager.cpp:382 Src/wptKeyEditDlgs.cpp:1053
 #: Src/wptKeyRevokersDlg.cpp:52 Src/wptMDSumDlg.cpp:57
 #: Src/wptVerifyList.cpp:87
 msgid "Name"
@@ -1232,7 +1233,7 @@
 msgid "Invalid file name. Exit"
 msgstr "Ungültiger Dateiname. Abbruch"
 
-#: Src/wptFileManager.cpp:1659 Src/wptKeyManager.cpp:547
+#: Src/wptFileManager.cpp:1659 Src/wptKeyManager.cpp:572
 msgid ""
 "Key without a self signature was dectected!\n"
 "(This key is NOT usable for encryption, etc)\n"
@@ -1244,8 +1245,8 @@
 "\n"
 "Kann diese(n) Schlüssel nicht importieren!"
 
-#: Src/wptFileManager.cpp:1704 Src/wptKeyManager.cpp:275
-#: Src/wptKeyManager.cpp:311 Src/wptKeyManager.cpp:346
+#: Src/wptFileManager.cpp:1704 Src/wptKeyManager.cpp:300
+#: Src/wptKeyManager.cpp:336 Src/wptKeyManager.cpp:371
 msgid "No key was selected for export."
 msgstr "Kein Schlüssel zum Exportieren ausgewählt."
 
@@ -1254,14 +1255,13 @@
 msgid "Export"
 msgstr "Exportieren"
 
-#: Src/wptFileManager.cpp:1712 Src/wptKeyManagerDlg.cpp:1394
-#: Src/wptKeyManagerDlg.cpp:1426
-#, fuzzy
+#: Src/wptFileManager.cpp:1712 Src/wptKeyManagerDlg.cpp:1477
+#: Src/wptKeyManagerDlg.cpp:1509
 msgid "Choose Name for Key File"
-msgstr "Den Namen der Schlüsseldatei wählen"
+msgstr "Namen für Schlüsseldatei auswählen"
 
-#: Src/wptFileManager.cpp:1731 Src/wptKeyEditDlgs.cpp:912
-#: Src/wptKeyEditDlgs.cpp:1228 Src/wptKeyEditDlgs.cpp:1299
+#: Src/wptFileManager.cpp:1731 Src/wptKeyEditDlgs.cpp:933
+#: Src/wptKeyEditDlgs.cpp:1249 Src/wptKeyEditDlgs.cpp:1320
 #: Src/wptKeyserverDlg.cpp:95
 msgid "GnuPG status"
 msgstr "GnuPG Status"
@@ -1281,9 +1281,8 @@
 msgstr ""
 
 #: Src/wptFileManager.cpp:1843
-#, fuzzy
 msgid "Choose File Name for Output"
-msgstr "Wählen Sie einen Namen für die Ausgabedatei"
+msgstr "Namen für die Ausgabedatei auswählen"
 
 #: Src/wptFileManager.cpp:1912
 msgid "Choose a Name for the Archive"
@@ -1326,7 +1325,7 @@
 msgstr "Bitte wählen Sie wenigstens einen Empfänger"
 
 #: Src/wptFileManagerDlg.cpp:203 Src/wptFileStatDlg.cpp:266
-#: Src/wptKeyManager.cpp:421
+#: Src/wptKeyManager.cpp:446
 msgid "No valid OpenPGP data found."
 msgstr "Keine gültigen OpenPGP-Daten gefunden."
 
@@ -1351,13 +1350,13 @@
 msgid "&Cleartext Signature"
 msgstr "&Klartextsignatur"
 
-#: Src/wptFileManagerDlg.cpp:320 Src/wptKeyEditDlgs.cpp:1202
-#: Src/wptKeyEditDlgs.cpp:1251 Src/wptKeyEditDlgs.cpp:1325
-#: Src/wptKeyManager.cpp:585 Src/wptKeyManager.cpp:686
-#: Src/wptKeyManager.cpp:724 Src/wptKeyManagerDlg.cpp:1165
-#: Src/wptKeyManagerDlg.cpp:1185 Src/wptKeyManagerDlg.cpp:1218
-#: Src/wptKeyManagerDlg.cpp:1237 Src/wptKeyManagerDlg.cpp:1253
-#: Src/wptKeyManagerDlg.cpp:1385 Src/wptKeyManagerDlg.cpp:1403
+#: Src/wptFileManagerDlg.cpp:320 Src/wptKeyEditDlgs.cpp:1223
+#: Src/wptKeyEditDlgs.cpp:1272 Src/wptKeyEditDlgs.cpp:1346
+#: Src/wptKeyManager.cpp:612 Src/wptKeyManager.cpp:710
+#: Src/wptKeyManager.cpp:746 Src/wptKeyManagerDlg.cpp:1249
+#: Src/wptKeyManagerDlg.cpp:1268 Src/wptKeyManagerDlg.cpp:1301
+#: Src/wptKeyManagerDlg.cpp:1320 Src/wptKeyManagerDlg.cpp:1336
+#: Src/wptKeyManagerDlg.cpp:1468 Src/wptKeyManagerDlg.cpp:1486
 #: Src/wptKeyserverSearchDlg.cpp:127
 msgid "Please select a key."
 msgstr "Bitte Schlüssel wählen."
@@ -1375,17 +1374,17 @@
 msgid "File Manager (use drag & drop to add files)"
 msgstr "Dateimanager (Drag & Drop möglich)"
 
-#: Src/wptFileManagerDlg.cpp:457 Src/wptKeyManagerDlg.cpp:775
+#: Src/wptFileManagerDlg.cpp:457 Src/wptKeyManagerDlg.cpp:831
 #: Src/wptOwnertrustDlg.cpp:98
 msgid "File"
 msgstr "Datei"
 
-#: Src/wptFileManagerDlg.cpp:458 Src/wptKeyManagerDlg.cpp:776
-#: Src/wptKeyManagerDlg.cpp:780 Src/wptKeyManagerDlg.cpp:791
+#: Src/wptFileManagerDlg.cpp:458 Src/wptKeyManagerDlg.cpp:832
+#: Src/wptKeyManagerDlg.cpp:837 Src/wptKeyManagerDlg.cpp:848
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: Src/wptFileManagerDlg.cpp:459 Src/wptKeyManagerDlg.cpp:777
+#: Src/wptFileManagerDlg.cpp:459 Src/wptKeyManagerDlg.cpp:833
 msgid "View"
 msgstr "Ansicht"
 
@@ -1405,8 +1404,8 @@
 msgid "&Decrypt"
 msgstr "&Entschlüsseln"
 
-#: Src/wptFileManagerDlg.cpp:464 Src/wptKeyManagerDlg.cpp:792
-#: Src/wptKeyManagerDlg.cpp:999
+#: Src/wptFileManagerDlg.cpp:464 Src/wptKeyManagerDlg.cpp:849
+#: Src/wptKeyManagerDlg.cpp:892
 msgid "&Sign"
 msgstr "&Signieren"
 
@@ -1564,7 +1563,7 @@
 msgstr "Bitte neues GnuPG-HOME-Verzeichnis &eingeben."
 
 # c:\oss\winpt-gpgme\src\wptGPG.cpp:728
-#: Src/wptGPG.cpp:814
+#: Src/wptGPG.cpp:808
 msgid ""
 "The selected keyring has the read-only file\n"
 "attribute. In this state you do not have write\n"
@@ -1574,19 +1573,19 @@
 "In diesem Zustand kann nichts gespeichert werden\n"
 "Wollen Sie das Attribut zurücksetzen?"
 
-#: Src/wptGPG.cpp:817
+#: Src/wptGPG.cpp:811
 msgid "GPG Information"
 msgstr "GPG Information"
 
-#: Src/wptGPG.cpp:821
+#: Src/wptGPG.cpp:815
 msgid "Could not reset read-only state."
 msgstr "Konnte den Read-Only Zustand nicht zurücksetzen."
 
-#: Src/wptGPG.cpp:822 Src/wptGPG.cpp:1154 Src/wptGPG.cpp:1163
+#: Src/wptGPG.cpp:816 Src/wptGPG.cpp:1096 Src/wptGPG.cpp:1105
 msgid "GPG Error"
 msgstr "GPG Fehler"
 
-#: Src/wptGPG.cpp:834
+#: Src/wptGPG.cpp:828
 msgid ""
 "You do not have file access to modify the contents of\n"
 "one or both of the selected keyrings.\n"
@@ -1600,25 +1599,23 @@
 "Die Schlüsselbunde sind im Nur-Lesen-Modus, was meistens der Fall ist, \n"
 "wenn ein anderes Programm auf die Schlüsselbunde zugreift.\n"
 
-#: Src/wptGPG.cpp:839
+#: Src/wptGPG.cpp:833
 msgid "GPG Warning"
 msgstr "GPG Warnung"
 
-#: Src/wptGPG.cpp:866 Src/wptGPGPrefsDlg.cpp:118 Src/wptGPGPrefsDlg.cpp:124
-#: Src/wptGPGPrefsDlg.cpp:132 Src/wptGPGPrefsDlg.cpp:142
-#: Src/wptGPGPrefsDlg.cpp:152 Src/wptGPGPrefsDlg.cpp:164
-#: Src/wptGPGPrefsDlg.cpp:168 Src/wptGPGPrefsDlg.cpp:172
-#: Src/wptGPGPrefsDlg.cpp:176 Src/wptGPGPrefsDlg.cpp:181
-#: Src/wptGPGPrefsDlg.cpp:192 Src/wptKeyEditDlgs.cpp:1597
-#: Src/wptKeyManagerDlg.cpp:802 Src/wptMainProc.cpp:432
-#: Src/wptPreferencesDlg.cpp:209 Src/wptPreferencesDlg.cpp:258
-#: Src/wptPreferencesDlg.cpp:269 Src/wptPreferencesDlg.cpp:281
-#: Src/wptPreferencesDlg.cpp:294 Src/wptPreferencesDlg.cpp:340
-#: Src/wptRegistry.cpp:590
+#: Src/wptGPG.cpp:857 Src/wptGPGPrefsDlg.cpp:177 Src/wptGPGPrefsDlg.cpp:183
+#: Src/wptGPGPrefsDlg.cpp:189 Src/wptGPGPrefsDlg.cpp:195
+#: Src/wptGPGPrefsDlg.cpp:200 Src/wptGPGPrefsDlg.cpp:205
+#: Src/wptGPGPrefsDlg.cpp:210 Src/wptGPGPrefsDlg.cpp:224
+#: Src/wptKeyEditDlgs.cpp:1618 Src/wptKeyManagerDlg.cpp:859
+#: Src/wptMainProc.cpp:432 Src/wptPreferencesDlg.cpp:209
+#: Src/wptPreferencesDlg.cpp:258 Src/wptPreferencesDlg.cpp:269
+#: Src/wptPreferencesDlg.cpp:281 Src/wptPreferencesDlg.cpp:294
+#: Src/wptPreferencesDlg.cpp:340 Src/wptRegistry.cpp:608
 msgid "Preferences"
 msgstr "Einstellungen"
 
-#: Src/wptGPG.cpp:867
+#: Src/wptGPG.cpp:858
 #, c-format
 msgid ""
 "%s does not exit.\n"
@@ -1627,41 +1624,41 @@
 "%s existiert nicht.\n"
 "Möchten Sie dieses Verzeichnis erstellen?"
 
-#: Src/wptGPG.cpp:949
+#: Src/wptGPG.cpp:886
 msgid "Please choose your public keyring"
 msgstr "Bitte wählen Sie Ihren öffentlichen Schlüsselbund."
 
-#: Src/wptGPG.cpp:952 Src/wptGPG.cpp:972
+#: Src/wptGPG.cpp:889 Src/wptGPG.cpp:909
 msgid "No keyring was chosen. Exit."
 msgstr "Kein Schlüsselbund ausgewählt. Abbruch."
 
-#: Src/wptGPG.cpp:958
+#: Src/wptGPG.cpp:895
 msgid "Overwrite old public keyring?"
 msgstr "Alten öffentlichen Schlüsselbund überschreiben"
 
-#: Src/wptGPG.cpp:963 Src/wptGPG.cpp:982
+#: Src/wptGPG.cpp:900 Src/wptGPG.cpp:919
 msgid "Could not copy file."
 msgstr "Datei konnte nicht kopiert werden"
 
-#: Src/wptGPG.cpp:969
+#: Src/wptGPG.cpp:906
 msgid "Please choose your secret keyring"
 msgstr "Bitte wählen Sie Ihren geheimen Schlüsselbund."
 
-#: Src/wptGPG.cpp:977
+#: Src/wptGPG.cpp:914
 msgid "Overwrite old secret keyring?"
 msgstr "Alten geheimen Schlüsselbund überschreiben?"
 
-#: Src/wptGPG.cpp:1027 Src/wptGPG.cpp:1113 Src/wptGPG.cpp:1126
+#: Src/wptGPG.cpp:964 Src/wptGPG.cpp:1054 Src/wptGPG.cpp:1067
 msgid "Backup"
 msgstr "Sicherung"
 
-#: Src/wptGPG.cpp:1027
+#: Src/wptGPG.cpp:964
 #, c-format
 msgid "Backup keyring \"%s\" failed"
 msgstr "Schlüsselbundsicherung \"%s\" fehlgeschlagen"
 
 # c:\oss\winpt-gpgme\src\wptGPG.cpp:1021
-#: Src/wptGPG.cpp:1114
+#: Src/wptGPG.cpp:1055
 #, c-format
 msgid ""
 "The backup drive '%s' does not seems to accessable.\n"
@@ -1670,12 +1667,12 @@
 "Kann auf das Backup-Laufwerk '%s' nicht zugreifen.\n"
 "Bitte aktivieren/überprüfen sie das Laufwerk um Fortzufahren."
 
-#: Src/wptGPG.cpp:1126
+#: Src/wptGPG.cpp:1067
 #, c-format
 msgid "Invalid backup mode %d"
 msgstr "Ungültiger Sicherungsmethode %d"
 
-#: Src/wptGPG.cpp:1154
+#: Src/wptGPG.cpp:1095
 msgid "No GPG error description available."
 msgstr "Keine GPG-Fehlerbeschreibung verfügbar"
 
@@ -1749,95 +1746,79 @@
 "Aktuelle Daten gehen verloren\n"
 "Sind Sie sicher?"
 
-#: Src/wptGPGPrefsDlg.cpp:64 Src/wptKeyManagerDlg.cpp:1360
+#: Src/wptGPGPrefsDlg.cpp:127 Src/wptKeyManagerDlg.cpp:1443
 #: Src/wptMainProc.cpp:587
 msgid "GnuPG Preferences"
 msgstr "GnuPG-Einstellungen"
 
-#: Src/wptGPGPrefsDlg.cpp:66
+#: Src/wptGPGPrefsDlg.cpp:129
 msgid "GnuPG home directory  (where both keyrings are located)"
 msgstr "GnuPG Home-Dir (wo sich die Keyrings befinden)"
 
-#: Src/wptGPGPrefsDlg.cpp:68
-msgid "GnuPG config file (default: use gpg.conf)"
-msgstr "GnuPG Konfigurationsdatei (Voreinstellung: gpg.conf)"
-
-#: Src/wptGPGPrefsDlg.cpp:70
+#: Src/wptGPGPrefsDlg.cpp:131
 msgid "GnuPG exe file location (full path with added gpg.exe)"
 msgstr "Vollständige Pfadangabe für GPG.EXE"
 
-#: Src/wptGPGPrefsDlg.cpp:72
+#: Src/wptGPGPrefsDlg.cpp:133
 msgid "Locale directory (to access the translation files)"
 msgstr "Verzeichnis der Sprachdateien"
 
-#: Src/wptGPGPrefsDlg.cpp:73
+#: Src/wptGPGPrefsDlg.cpp:134
 msgid "Ask for the signature class during key sign"
 msgstr "Signaturlevel erfragen während Key-Sign"
 
-#: Src/wptGPGPrefsDlg.cpp:74
+#: Src/wptGPGPrefsDlg.cpp:135
 msgid "Comment in armored files"
 msgstr "Kommentar in Armor-Dateien"
 
-#: Src/wptGPGPrefsDlg.cpp:75
+#: Src/wptGPGPrefsDlg.cpp:136
 msgid "Encrypt to this key"
 msgstr "\"Encrypt to this key\""
 
-#: Src/wptGPGPrefsDlg.cpp:76
+#: Src/wptGPGPrefsDlg.cpp:137
 msgid "General GPG options"
 msgstr "Allgemeine GPG Optionen"
 
-#: Src/wptGPGPrefsDlg.cpp:118
+#: Src/wptGPGPrefsDlg.cpp:176
 msgid "Please enter the GnuPG home directory."
 msgstr "Bitte GnuPG-HOME-Verzeichnis eingeben."
 
-#: Src/wptGPGPrefsDlg.cpp:130
-msgid ""
-"Could not find GPG config file.\n"
-"Do you want to create a config file?"
-msgstr ""
-"Konnte keine Konfigurationsdatei finden.\n"
-"Wollen Sie die Konfigurationsdatei erstellen?"
-
-#: Src/wptGPGPrefsDlg.cpp:152
-msgid "Could not save 'OptFile' in the registry."
-msgstr "Konnte 'OptFile' nicht in Registry schreiben"
-
-#: Src/wptGPGPrefsDlg.cpp:164
+#: Src/wptGPGPrefsDlg.cpp:188
 msgid "Could not save 'HomeDir' in the registry."
 msgstr "Konnte 'HomeDir' nicht in Registry schreiben"
 
-#: Src/wptGPGPrefsDlg.cpp:168
+#: Src/wptGPGPrefsDlg.cpp:194
 msgid "Please enter where GPG.exe is located."
 msgstr "Bitte Pfad zu GPG.EXE eingeben."
 
-#: Src/wptGPGPrefsDlg.cpp:172
+#: Src/wptGPGPrefsDlg.cpp:199
 msgid "Could not find the GPG program in this directory."
 msgstr "Konnte GPG-Programm nicht in diesem Verzeichnis finden."
 
-#: Src/wptGPGPrefsDlg.cpp:176
+#: Src/wptGPGPrefsDlg.cpp:204
 msgid "Could not save 'gpgProgram' in the registry"
 msgstr "Konnte 'gpgProgram' nicht in Registry schreiben"
 
-#: Src/wptGPGPrefsDlg.cpp:192
+#: Src/wptGPGPrefsDlg.cpp:223
 msgid "Could not get GPG config file"
 msgstr "Konnte Konfigurationsdatei nicht öffnen"
 
-#: Src/wptGPGPrefsDlg.cpp:225
+#: Src/wptGPGPrefsDlg.cpp:256
 msgid "Choose GPG home directory"
 msgstr "Wählen Sie das GPG HOME-Verzeichnis"
 
-#: Src/wptGPGPrefsDlg.cpp:242
+#: Src/wptGPGPrefsDlg.cpp:275
+msgid "Choose locale directory"
+msgstr "Verzeichnis für Sprachdateien auswählen"
+
+#: Src/wptGPGPrefsDlg.cpp:281
 msgid "Choose GPG binary"
 msgstr "Wählen Sie GPG.EXE Datei"
 
-#: Src/wptGPGPrefsDlg.cpp:243
+#: Src/wptGPGPrefsDlg.cpp:282
 msgid "Executable Files (*.exe)"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:250
-msgid "Choose GPG config file"
-msgstr "Wählen Sie die GPG.conf Datei"
-
 #: Src/wptGroupsDlg.cpp:53
 msgid "New Group"
 msgstr "Neue Gruppe"
@@ -1886,52 +1867,52 @@
 msgid "Unknown Hotkey"
 msgstr "Unbekanntes Tastenkürzel"
 
-#: Src/wptImagelist.cpp:50 Src/wptKeyManager.cpp:142 Src/wptKeyManager.cpp:147
-#: Src/wptKeyManager.cpp:197 Src/wptKeyManager.cpp:276
-#: Src/wptKeyManager.cpp:283 Src/wptKeyManager.cpp:312
-#: Src/wptKeyManager.cpp:317 Src/wptKeyManager.cpp:324
-#: Src/wptKeyManager.cpp:326 Src/wptKeyManager.cpp:347
-#: Src/wptKeyManager.cpp:364 Src/wptKeyManager.cpp:368
-#: Src/wptKeyManager.cpp:374 Src/wptKeyManager.cpp:392
-#: Src/wptKeyManager.cpp:414 Src/wptKeyManager.cpp:419
-#: Src/wptKeyManager.cpp:422 Src/wptKeyManager.cpp:427
-#: Src/wptKeyManager.cpp:433 Src/wptKeyManager.cpp:438
-#: Src/wptKeyManager.cpp:524 Src/wptKeyManager.cpp:532
-#: Src/wptKeyManager.cpp:585 Src/wptKeyManager.cpp:612
-#: Src/wptKeyManager.cpp:623 Src/wptKeyManager.cpp:635
-#: Src/wptKeyManager.cpp:661 Src/wptKeyManager.cpp:686
-#: Src/wptKeyManager.cpp:691 Src/wptKeyManager.cpp:719
-#: Src/wptKeyManager.cpp:724 Src/wptKeyManager.cpp:750
-#: Src/wptKeyManager.cpp:792 Src/wptKeyManager.cpp:798
-#: Src/wptKeyManager.cpp:902 Src/wptKeyManager.cpp:932
-#: Src/wptKeyManagerDlg.cpp:773 Src/wptKeyManagerDlg.cpp:835
-#: Src/wptKeyManagerDlg.cpp:1138 Src/wptKeyManagerDlg.cpp:1166
-#: Src/wptKeyManagerDlg.cpp:1185 Src/wptKeyManagerDlg.cpp:1192
-#: Src/wptKeyManagerDlg.cpp:1202 Src/wptKeyManagerDlg.cpp:1218
-#: Src/wptKeyManagerDlg.cpp:1224 Src/wptKeyManagerDlg.cpp:1237
-#: Src/wptKeyManagerDlg.cpp:1253 Src/wptKeyManagerDlg.cpp:1285
-#: Src/wptKeyManagerDlg.cpp:1324 Src/wptKeyManagerDlg.cpp:1385
-#: Src/wptKeyManagerDlg.cpp:1403 Src/wptKeyManagerDlg.cpp:1408
-#: Src/wptKeyManagerDlg.cpp:1413 Src/wptKeyManagerDlg.cpp:1487
-#: Src/wptKeyManagerDlg.cpp:1648 Src/wptKeysigDlg.cpp:88
-#: Src/wptKeysigDlg.cpp:99 Src/wptKeysigDlg.cpp:320 Src/wptKeysigDlg.cpp:326
-#: Src/wptKeysigDlg.cpp:370 Src/wptKeysigDlg.cpp:429 Src/wptMainProc.cpp:400
+#: Src/wptImagelist.cpp:50 Src/wptKeyManager.cpp:166 Src/wptKeyManager.cpp:171
+#: Src/wptKeyManager.cpp:222 Src/wptKeyManager.cpp:301
+#: Src/wptKeyManager.cpp:308 Src/wptKeyManager.cpp:337
+#: Src/wptKeyManager.cpp:342 Src/wptKeyManager.cpp:349
+#: Src/wptKeyManager.cpp:351 Src/wptKeyManager.cpp:372
+#: Src/wptKeyManager.cpp:389 Src/wptKeyManager.cpp:393
+#: Src/wptKeyManager.cpp:399 Src/wptKeyManager.cpp:417
+#: Src/wptKeyManager.cpp:439 Src/wptKeyManager.cpp:444
+#: Src/wptKeyManager.cpp:447 Src/wptKeyManager.cpp:452
+#: Src/wptKeyManager.cpp:458 Src/wptKeyManager.cpp:463
+#: Src/wptKeyManager.cpp:549 Src/wptKeyManager.cpp:557
+#: Src/wptKeyManager.cpp:612 Src/wptKeyManager.cpp:639
+#: Src/wptKeyManager.cpp:649 Src/wptKeyManager.cpp:660
+#: Src/wptKeyManager.cpp:686 Src/wptKeyManager.cpp:710
+#: Src/wptKeyManager.cpp:717 Src/wptKeyManager.cpp:741
+#: Src/wptKeyManager.cpp:746 Src/wptKeyManager.cpp:772
+#: Src/wptKeyManager.cpp:809 Src/wptKeyManager.cpp:815
+#: Src/wptKeyManager.cpp:919 Src/wptKeyManager.cpp:949
+#: Src/wptKeyManagerDlg.cpp:947 Src/wptKeyManagerDlg.cpp:968
+#: Src/wptKeyManagerDlg.cpp:1222 Src/wptKeyManagerDlg.cpp:1250
+#: Src/wptKeyManagerDlg.cpp:1268 Src/wptKeyManagerDlg.cpp:1275
+#: Src/wptKeyManagerDlg.cpp:1285 Src/wptKeyManagerDlg.cpp:1301
+#: Src/wptKeyManagerDlg.cpp:1307 Src/wptKeyManagerDlg.cpp:1320
+#: Src/wptKeyManagerDlg.cpp:1336 Src/wptKeyManagerDlg.cpp:1368
+#: Src/wptKeyManagerDlg.cpp:1407 Src/wptKeyManagerDlg.cpp:1468
+#: Src/wptKeyManagerDlg.cpp:1486 Src/wptKeyManagerDlg.cpp:1491
+#: Src/wptKeyManagerDlg.cpp:1496 Src/wptKeyManagerDlg.cpp:1571
+#: Src/wptKeyManagerDlg.cpp:1732 Src/wptKeysigDlg.cpp:88
+#: Src/wptKeysigDlg.cpp:99 Src/wptKeysigDlg.cpp:321 Src/wptKeysigDlg.cpp:327
+#: Src/wptKeysigDlg.cpp:370 Src/wptKeysigDlg.cpp:432 Src/wptMainProc.cpp:400
 #: Src/wptMainProc.cpp:558
 msgid "Key Manager"
 msgstr "Schlüsselverwaltung"
 
-#: Src/wptImportList.cpp:264 Src/wptKeyEditDlgs.cpp:209
-#: Src/wptKeyEditDlgs.cpp:1004 Src/wptKeyEditDlgs.cpp:1065
-#: Src/wptKeyEditDlgs.cpp:1337 Src/wptKeyEditDlgs.cpp:1357
-#: Src/wptKeyEditDlgs.cpp:1394 Src/wptKeyEditDlgs.cpp:1423
-#: Src/wptKeylist.cpp:363 Src/wptKeyPropsDlg.cpp:147 Src/wptKeysigDlg.cpp:136
+#: Src/wptImportList.cpp:264 Src/wptKeyEditDlgs.cpp:205
+#: Src/wptKeyEditDlgs.cpp:1025 Src/wptKeyEditDlgs.cpp:1086
+#: Src/wptKeyEditDlgs.cpp:1358 Src/wptKeyEditDlgs.cpp:1378
+#: Src/wptKeyEditDlgs.cpp:1415 Src/wptKeyEditDlgs.cpp:1444
+#: Src/wptKeylist.cpp:374 Src/wptKeyPropsDlg.cpp:146 Src/wptKeysigDlg.cpp:136
 #: Src/wptKeysigDlg.cpp:201
 msgid "Revoked"
 msgstr "Widerrufen"
 
-#: Src/wptImportList.cpp:266 Src/wptKeyEditDlgs.cpp:210
-#: Src/wptKeyEditDlgs.cpp:1002 Src/wptKeyEditDlgs.cpp:1258
-#: Src/wptKeylist.cpp:365 Src/wptKeyPropsDlg.cpp:144 Src/wptKeysigDlg.cpp:135
+#: Src/wptImportList.cpp:266 Src/wptKeyEditDlgs.cpp:206
+#: Src/wptKeyEditDlgs.cpp:1023 Src/wptKeyEditDlgs.cpp:1279
+#: Src/wptKeylist.cpp:376 Src/wptKeyPropsDlg.cpp:143 Src/wptKeysigDlg.cpp:135
 #: Src/wptKeysigDlg.cpp:202
 msgid "Expired"
 msgstr "Abgelaufen"
@@ -1944,35 +1925,35 @@
 msgid "public key"
 msgstr "öffentlicher Schlüssel"
 
-#: Src/wptImportList.cpp:303 Src/wptKeyEditDlgs.cpp:1082
+#: Src/wptImportList.cpp:303 Src/wptKeyEditDlgs.cpp:1103
 msgid "Invalid user ID"
 msgstr "Ungültige Benutzerkennung"
 
-#: Src/wptImportList.cpp:352 Src/wptKeylist.cpp:526 Src/wptKeylist.cpp:535
-#: Src/wptKeyManagerDlg.cpp:788 Src/wptKeyserverSearchDlg.cpp:48
+#: Src/wptImportList.cpp:352 Src/wptKeylist.cpp:536 Src/wptKeylist.cpp:545
+#: Src/wptKeyManagerDlg.cpp:845 Src/wptKeyserverSearchDlg.cpp:48
 #: Src/wptSigList.cpp:51 Src/wptVerifyList.cpp:91 Src/wptVerifyList.cpp:100
 msgid "User ID"
 msgstr "Benutzerkennung"
 
-#: Src/wptImportList.cpp:353 Src/wptKeylist.cpp:528 Src/wptKeylist.cpp:538
+#: Src/wptImportList.cpp:353 Src/wptKeylist.cpp:538 Src/wptKeylist.cpp:548
 #: Src/wptKeyserverSearchDlg.cpp:45
 msgid "Size"
 msgstr "Größe"
 
-#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:928 Src/wptKeylist.cpp:527
-#: Src/wptKeylist.cpp:536 Src/wptKeyRevokersDlg.cpp:51
+#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:949 Src/wptKeylist.cpp:537
+#: Src/wptKeylist.cpp:546 Src/wptKeyRevokersDlg.cpp:51
 #: Src/wptKeyserverSearchDlg.cpp:46 Src/wptSigList.cpp:55
 #: Src/wptVerifyList.cpp:99
 msgid "Key ID"
 msgstr "Schlüssel-ID"
 
-#: Src/wptImportList.cpp:355 Src/wptKeyEditDlgs.cpp:929
-#: Src/wptKeyEditDlgs.cpp:1034 Src/wptKeylist.cpp:542
+#: Src/wptImportList.cpp:355 Src/wptKeyEditDlgs.cpp:950
+#: Src/wptKeyEditDlgs.cpp:1055 Src/wptKeylist.cpp:552
 #: Src/wptKeyserverSearchDlg.cpp:47 Src/wptSigList.cpp:54
 msgid "Creation"
 msgstr "Erstellung"
 
-#: Src/wptImportList.cpp:356 Src/wptKeylist.cpp:537
+#: Src/wptImportList.cpp:356 Src/wptKeylist.cpp:547
 msgid "Type"
 msgstr "Typ"
 
@@ -2002,24 +1983,24 @@
 msgid "Key Cache"
 msgstr "Schlüssel Cache"
 
-#: Src/wptKeyEditDlgs.cpp:183
+#: Src/wptKeyEditDlgs.cpp:179
 msgid "Ultimate"
 msgstr "Absolut"
 
-#: Src/wptKeyEditDlgs.cpp:198 Src/wptKeyEditDlgs.cpp:999
-#: Src/wptKeylist.cpp:222 Src/wptKeylist.cpp:324 Src/wptKeylist.cpp:884
+#: Src/wptKeyEditDlgs.cpp:194 Src/wptKeyEditDlgs.cpp:1020
+#: Src/wptKeylist.cpp:234 Src/wptKeylist.cpp:336 Src/wptKeylist.cpp:894
 msgid "Never"
 msgstr "Niemals"
 
-#: Src/wptKeyEditDlgs.cpp:211 Src/wptKeyEditDlgs.cpp:1006
+#: Src/wptKeyEditDlgs.cpp:207 Src/wptKeyEditDlgs.cpp:1027
 msgid "OK"
 msgstr "OK"
 
-#: Src/wptKeyEditDlgs.cpp:233
+#: Src/wptKeyEditDlgs.cpp:229
 msgid "user ID"
 msgstr "Benutzerkennung"
 
-#: Src/wptKeyEditDlgs.cpp:234
+#: Src/wptKeyEditDlgs.cpp:230
 #, c-format
 msgid ""
 "Could not get key information for: \"%s\":\n"
@@ -2029,7 +2010,7 @@
 "%s"
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:258
-#: Src/wptKeyEditDlgs.cpp:269
+#: Src/wptKeyEditDlgs.cpp:285
 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 "
@@ -2040,7 +2021,7 @@
 "240x288 grosses Bild ist eine gute Größe."
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:259
-#: Src/wptKeyEditDlgs.cpp:270
+#: Src/wptKeyEditDlgs.cpp:286
 msgid ""
 "Pick an image to use for your photo ID.\n"
 "The image must be a JPEG file."
@@ -2048,34 +2029,39 @@
 "Bitte ein Bild auswaehlen fuer die photo ID.\n"
 "Das Bild muss eine JPEG Datei sein."
 
-#: Src/wptKeyEditDlgs.cpp:271 Src/wptKeyEditDlgs.cpp:365
+#: Src/wptKeyEditDlgs.cpp:287 Src/wptKeyEditDlgs.cpp:387
 #: Src/wptKeysignDlg.cpp:257
 msgid "Passphrase"
 msgstr "Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:273
+#: Src/wptKeyEditDlgs.cpp:289
 msgid "Add Photo ID"
 msgstr "Photo ID hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:289
+#: Src/wptKeyEditDlgs.cpp:305
 msgid "Select Image File"
 msgstr "Bilddatei auswählen"
 
-#: Src/wptKeyEditDlgs.cpp:289
+#: Src/wptKeyEditDlgs.cpp:306
 msgid "JPEG Files (*.jpg, *.jpeg)"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:296 Src/wptKeyRevokeDlg.cpp:135
-msgid "Please enter a file name."
-msgstr "Bitte Dateinamen eingeben."
-
-#: Src/wptKeyEditDlgs.cpp:296 Src/wptKeyEditDlgs.cpp:302
-#: Src/wptKeyEditDlgs.cpp:308 Src/wptKeyEditDlgs.cpp:322
-#: Src/wptKeyEditDlgs.cpp:819
+#: Src/wptKeyEditDlgs.cpp:309 Src/wptKeyEditDlgs.cpp:319
+#: Src/wptKeyEditDlgs.cpp:325 Src/wptKeyEditDlgs.cpp:331
+#: Src/wptKeyEditDlgs.cpp:343 Src/wptKeyEditDlgs.cpp:840
 msgid "Add Photo"
 msgstr "Foto hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:300
+#: Src/wptKeyEditDlgs.cpp:310
+#, c-format
+msgid "'%s' is not a valid JPEG file."
+msgstr "'%s' is keine gültige JPEG Datei."
+
+#: Src/wptKeyEditDlgs.cpp:319 Src/wptKeyRevokeDlg.cpp:135
+msgid "Please enter a file name."
+msgstr "Bitte Dateinamen eingeben."
+
+#: Src/wptKeyEditDlgs.cpp:323
 msgid ""
 "The JPEG is really large.\n"
 "Are you sure you want to use it?"
@@ -2083,146 +2069,146 @@
 "Das JPEG ist sehr groß.\n"
 "Sind Sie sicher, dass Sie es benutzen wollen?"
 
-#: Src/wptKeyEditDlgs.cpp:308
+#: Src/wptKeyEditDlgs.cpp:331
 msgid "Please enter a passphrase."
 msgstr "Bitte ein Passwort eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:327
+#: Src/wptKeyEditDlgs.cpp:348
 msgid "Photo successfully added."
 msgstr "Foto erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:327 Src/wptKeyEditDlgs.cpp:405
-#: Src/wptKeyEditDlgs.cpp:488 Src/wptKeyEditDlgs.cpp:652
-#: Src/wptKeyEditDlgs.cpp:1359 Src/wptKeyEditDlgs.cpp:1425
-#: Src/wptKeyEditDlgs.cpp:1505 Src/wptKeyEditDlgs.cpp:1678
+#: Src/wptKeyEditDlgs.cpp:349 Src/wptKeyEditDlgs.cpp:427
+#: Src/wptKeyEditDlgs.cpp:509 Src/wptKeyEditDlgs.cpp:673
+#: Src/wptKeyEditDlgs.cpp:1380 Src/wptKeyEditDlgs.cpp:1446
+#: Src/wptKeyEditDlgs.cpp:1526 Src/wptKeyEditDlgs.cpp:1700
 #: Src/wptKeygenDlg.cpp:547 Src/wptKeygenDlg.cpp:663
-#: Src/wptKeyPropsDlg.cpp:340 Src/wptKeyRevokeDlg.cpp:164
+#: Src/wptKeyPropsDlg.cpp:338 Src/wptKeyRevokeDlg.cpp:164
 #: Src/wptOwnertrustDlg.cpp:124 Src/wptOwnertrustDlg.cpp:136
 msgid "GnuPG Status"
 msgstr "GnuPG-Status"
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:350
-#: Src/wptKeyEditDlgs.cpp:363
+#: Src/wptKeyEditDlgs.cpp:385
 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:364
+#: Src/wptKeyEditDlgs.cpp:386
 msgid "Public key"
 msgstr "öff. Schlüssel"
 
-#: Src/wptKeyEditDlgs.cpp:367 Src/wptKeyEditDlgs.cpp:383
-#: Src/wptKeyEditDlgs.cpp:389 Src/wptKeyEditDlgs.cpp:400
-#: Src/wptKeyEditDlgs.cpp:832
+#: Src/wptKeyEditDlgs.cpp:389 Src/wptKeyEditDlgs.cpp:405
+#: Src/wptKeyEditDlgs.cpp:411 Src/wptKeyEditDlgs.cpp:422
+#: Src/wptKeyEditDlgs.cpp:853
 msgid "Add Revoker"
 msgstr "\"Revoker\" hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:383 Src/wptKeyEditDlgs.cpp:1389
-#: Src/wptKeyEditDlgs.cpp:1442 Src/wptKeyEditDlgs.cpp:1484
-#: Src/wptKeyEditDlgs.cpp:1622 Src/wptKeyEditDlgs.cpp:1651
+#: Src/wptKeyEditDlgs.cpp:405 Src/wptKeyEditDlgs.cpp:1410
+#: Src/wptKeyEditDlgs.cpp:1463 Src/wptKeyEditDlgs.cpp:1505
+#: Src/wptKeyEditDlgs.cpp:1644 Src/wptKeyEditDlgs.cpp:1673
 msgid "Please select a user ID."
 msgstr "Bitte eine Benutzerkennung wählen."
 
-#: Src/wptKeyEditDlgs.cpp:389 Src/wptKeygenDlg.cpp:475
+#: Src/wptKeyEditDlgs.cpp:411 Src/wptKeygenDlg.cpp:475
 #: Src/wptKeyRevokeDlg.cpp:143
 msgid "Please enter the passphrase."
 msgstr "Bitte das Passwort eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:405
+#: Src/wptKeyEditDlgs.cpp:427
 msgid "Revoker successfully addded."
 msgstr "Widerruf erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:437
+#: Src/wptKeyEditDlgs.cpp:458
 msgid "Add new User ID"
 msgstr "Neue Benutzerkennung hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:439
+#: Src/wptKeyEditDlgs.cpp:460
 msgid "&Email"
 msgstr "&E-Mail"
 
-#: Src/wptKeyEditDlgs.cpp:440
+#: Src/wptKeyEditDlgs.cpp:461
 msgid "&Comment"
 msgstr "&Kommentar"
 
-#: Src/wptKeyEditDlgs.cpp:456
+#: Src/wptKeyEditDlgs.cpp:477
 msgid "Please enter a name (min. 5 chars.)"
 msgstr "Bitte Namen eingeben (mindestens 5 Zeichen)"
 
-#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeyEditDlgs.cpp:460
-#: Src/wptKeyEditDlgs.cpp:465 Src/wptKeyEditDlgs.cpp:469
-#: Src/wptKeyEditDlgs.cpp:486
+#: Src/wptKeyEditDlgs.cpp:477 Src/wptKeyEditDlgs.cpp:481
+#: Src/wptKeyEditDlgs.cpp:486 Src/wptKeyEditDlgs.cpp:490
+#: Src/wptKeyEditDlgs.cpp:507
 msgid "UserID"
 msgstr "Benutzerkennung"
 
-#: Src/wptKeyEditDlgs.cpp:460
+#: Src/wptKeyEditDlgs.cpp:481
 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:465
+#: Src/wptKeyEditDlgs.cpp:486
 msgid "Please enter an email address."
 msgstr "Bitte eine E-Mail-Adresse eingeben."
 
-#: Src/wptKeyEditDlgs.cpp:469
+#: Src/wptKeyEditDlgs.cpp:490
 msgid "Invalid email address."
 msgstr "Ungültige E-Mail-Adresse"
 
-#: Src/wptKeyEditDlgs.cpp:488
+#: Src/wptKeyEditDlgs.cpp:509
 msgid "user ID successfully added."
 msgstr "Benutzerkennung erfolgreich hinzugefügt"
 
-#: Src/wptKeyEditDlgs.cpp:571 Src/wptKeyEditDlgs.cpp:768
+#: Src/wptKeyEditDlgs.cpp:592 Src/wptKeyEditDlgs.cpp:789
 msgid "Add new Subkey"
 msgstr "Neuen Unterschlüssel hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:572
+#: Src/wptKeyEditDlgs.cpp:593
 msgid "Key type"
 msgstr "Schlüssel Typ"
 
-#: Src/wptKeyEditDlgs.cpp:573
+#: Src/wptKeyEditDlgs.cpp:594
 msgid "Size in bits"
 msgstr "Größe in Bits"
 
-#: Src/wptKeyEditDlgs.cpp:574
+#: Src/wptKeyEditDlgs.cpp:595
 msgid "Key expiration"
 msgstr "Key Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:617
+#: Src/wptKeyEditDlgs.cpp:638
 msgid "Please select one entry."
 msgstr "Bitte einen Eintrag wählen."
 
-#: Src/wptKeyEditDlgs.cpp:617 Src/wptKeyEditDlgs.cpp:622
-#: Src/wptKeyEditDlgs.cpp:650 Src/wptKeyEditDlgs.cpp:752
+#: Src/wptKeyEditDlgs.cpp:638 Src/wptKeyEditDlgs.cpp:643
+#: Src/wptKeyEditDlgs.cpp:671 Src/wptKeyEditDlgs.cpp:773
 msgid "Add Subkey"
 msgstr "Unterschlüssel hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:622
+#: Src/wptKeyEditDlgs.cpp:643
 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:652
+#: Src/wptKeyEditDlgs.cpp:673
 msgid "Subkey successfully added."
 msgstr "Unterschlüssel erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:680 Src/wptKeyEditDlgs.cpp:752
-#: Src/wptKeyEditDlgs.cpp:819 Src/wptKeyEditDlgs.cpp:832
-#: Src/wptKeyEditDlgs.cpp:872 Src/wptKeyEditDlgs.cpp:1247
-#: Src/wptKeyEditDlgs.cpp:1320 Src/wptKeyEditDlgs.cpp:1379
-#: Src/wptKeyManagerDlg.cpp:1191
+#: Src/wptKeyEditDlgs.cpp:701 Src/wptKeyEditDlgs.cpp:773
+#: Src/wptKeyEditDlgs.cpp:840 Src/wptKeyEditDlgs.cpp:853
+#: Src/wptKeyEditDlgs.cpp:893 Src/wptKeyEditDlgs.cpp:1268
+#: Src/wptKeyEditDlgs.cpp:1341 Src/wptKeyEditDlgs.cpp:1400
+#: Src/wptKeyManagerDlg.cpp:1274
 msgid "There is no secret key available!"
 msgstr "Kein geheimer Schlüssel vorhanden!"
 
-#: Src/wptKeyEditDlgs.cpp:680 Src/wptKeyEditDlgs.cpp:696
+#: Src/wptKeyEditDlgs.cpp:701 Src/wptKeyEditDlgs.cpp:717
 msgid "Add user ID"
 msgstr "Benutzerkennung hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:804
+#: Src/wptKeyEditDlgs.cpp:825
 msgid "Preferred keyserver successfully set."
 msgstr "Bevorzugter Keyserver wurde erfolgreich gesetzt."
 
-#: Src/wptKeyEditDlgs.cpp:877
+#: Src/wptKeyEditDlgs.cpp:898
 msgid ""
 "Cannot change passphrase because the key\n"
 "is protected with the IDEA encryption algorithm."
@@ -2230,15 +2216,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:884
+#: Src/wptKeyEditDlgs.cpp:905
 msgid "Current (old) Passphrase"
 msgstr "Aktuelles (altes) Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:888
+#: Src/wptKeyEditDlgs.cpp:909
 msgid "New Passphrase"
 msgstr "Neues Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:895 Src/wptKeygenDlg.cpp:503
+#: Src/wptKeyEditDlgs.cpp:916 Src/wptKeygenDlg.cpp:503
 #: Src/wptPassphraseDlg.cpp:175
 msgid ""
 "The passphrase contains 8-bit characters.\n"
@@ -2247,43 +2233,43 @@
 "Das Passwort enthält 8-bit Zeichen.\n"
 "Es ist nicht zu empfehlen zeichensatzspezifische Zeichen zu benutzen."
 
-#: Src/wptKeyEditDlgs.cpp:910
+#: Src/wptKeyEditDlgs.cpp:931
 msgid "Change Passwd"
 msgstr "Passwort ändern"
 
-#: Src/wptKeyEditDlgs.cpp:912
+#: Src/wptKeyEditDlgs.cpp:933
 msgid "Passphrase successfully changed."
 msgstr "Passwort erfolgreich geändert."
 
-#: Src/wptKeyEditDlgs.cpp:927
+#: Src/wptKeyEditDlgs.cpp:948
 msgid "Description"
 msgstr "Beschreibung"
 
-#: Src/wptKeyEditDlgs.cpp:930
+#: Src/wptKeyEditDlgs.cpp:951
 msgid "Expires"
 msgstr "Verfällt"
 
-#: Src/wptKeyEditDlgs.cpp:944 Src/wptKeyEditDlgs.cpp:1040
+#: Src/wptKeyEditDlgs.cpp:965 Src/wptKeyEditDlgs.cpp:1061
 msgid "Could not find key."
 msgstr "Konnte Schlüssel nicht finden"
 
-#: Src/wptKeyEditDlgs.cpp:949
+#: Src/wptKeyEditDlgs.cpp:970
 msgid "No subkey(s) found."
 msgstr "Kein(e) Unterschlüssel gefunden."
 
-#: Src/wptKeyEditDlgs.cpp:1031 Src/wptKeylist.cpp:530 Src/wptKeylist.cpp:540
+#: Src/wptKeyEditDlgs.cpp:1052 Src/wptKeylist.cpp:540 Src/wptKeylist.cpp:550
 msgid "Validity"
 msgstr "Gültigkeit"
 
-#: Src/wptKeyEditDlgs.cpp:1033
+#: Src/wptKeyEditDlgs.cpp:1054
 msgid "Email"
 msgstr "Email"
 
-#: Src/wptKeyEditDlgs.cpp:1046
+#: Src/wptKeyEditDlgs.cpp:1067
 msgid "No user ID(s) found."
 msgstr "Keine Benutzerkennung(en) gefunden."
 
-#: Src/wptKeyEditDlgs.cpp:1161
+#: Src/wptKeyEditDlgs.cpp:1182
 msgid ""
 "ADDUID   \t\tadd a user ID\r\n"
 "ADDPHOTO  \t\tadd a photo ID\r\n"
@@ -2318,19 +2304,19 @@
 "ENABLE    \t\tSchlüssel aktivieren\r\n"
 "SHOWPHOTO \t\tFoto ID anzeigen\r\n"
 
-#: Src/wptKeyEditDlgs.cpp:1182
+#: Src/wptKeyEditDlgs.cpp:1203
 msgid "Key Edit Help"
 msgstr "Hilfe zum Schlüssel bearbeiten"
 
-#: Src/wptKeyEditDlgs.cpp:1198
+#: Src/wptKeyEditDlgs.cpp:1219
 msgid "Primary key can not be deleted!"
 msgstr "Primärer Schlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1206
+#: Src/wptKeyEditDlgs.cpp:1227
 msgid "Primary subkey can not be deleted!"
 msgstr "Primärer Unterschlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1212
+#: Src/wptKeyEditDlgs.cpp:1233
 #, c-format
 msgid ""
 "\"Subkey %s.\"\n"
@@ -2347,34 +2333,34 @@
 "\n"
 "Möchten Sie diesen Unterschlüssel wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1224
+#: Src/wptKeyEditDlgs.cpp:1245
 msgid "Delete Subkey"
 msgstr "Unterschlüssel löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1228
+#: Src/wptKeyEditDlgs.cpp:1249
 msgid "Subkey successfully deleted."
 msgstr "Unterschlüssel erfolgreich gelöscht."
 
-#: Src/wptKeyEditDlgs.cpp:1259
+#: Src/wptKeyEditDlgs.cpp:1280
 msgid ""
 "Key already expired.\n"
 "\n"
 "Do you want to change the expiration date?"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1268 Src/wptKeyEditDlgs.cpp:1271
+#: Src/wptKeyEditDlgs.cpp:1289 Src/wptKeyEditDlgs.cpp:1292
 msgid "Key Expiration Date"
 msgstr "Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:1292
+#: Src/wptKeyEditDlgs.cpp:1313
 msgid "Expire Subkey"
 msgstr "Untschlüssel Ablauf"
 
-#: Src/wptKeyEditDlgs.cpp:1298
+#: Src/wptKeyEditDlgs.cpp:1319
 msgid "Subkey expire date successfully set."
 msgstr "Unterschlüsselablaufdatum erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:1329
+#: Src/wptKeyEditDlgs.cpp:1350
 msgid ""
 "No subkeys were found, if you want to revoke the\n"
 "whole key, please use the Key Manager command directly.\n"
@@ -2386,31 +2372,31 @@
 "\n"
 "Diese Funktion ist nur für das Widerrufen einzelner Unterschlüssel gedacht."
 
-#: Src/wptKeyEditDlgs.cpp:1338
+#: Src/wptKeyEditDlgs.cpp:1359
 msgid "Key already revoked."
 msgstr "Der Schlüssel ist bereits widerrufen worden!"
 
-#: Src/wptKeyEditDlgs.cpp:1355
+#: Src/wptKeyEditDlgs.cpp:1376
 msgid "Revoke Subkey"
 msgstr "Unterschlüssel widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1359
+#: Src/wptKeyEditDlgs.cpp:1380
 msgid "Subkey successfully revoked."
 msgstr "Unterschlüssel erfolgreich widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1379
+#: Src/wptKeyEditDlgs.cpp:1400
 msgid "Revoke user ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1384
+#: Src/wptKeyEditDlgs.cpp:1405
 msgid "Key has only one user ID."
 msgstr "Schlüssel hat nur eine Benutzerkennung."
 
-#: Src/wptKeyEditDlgs.cpp:1395
+#: Src/wptKeyEditDlgs.cpp:1416
 msgid "This user ID has been already revoked."
 msgstr "Diese Benutzerkennung wurde bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1400
+#: Src/wptKeyEditDlgs.cpp:1421
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2420,39 +2406,39 @@
 "Benutzerkennung %s.\r\n"
 "Diese Benutzerkennung wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1421
+#: Src/wptKeyEditDlgs.cpp:1442
 msgid "Revoke Signature"
 msgstr "Signatur widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1425
+#: Src/wptKeyEditDlgs.cpp:1446
 msgid "User ID successfully revoked"
 msgstr "Benutzerkennung erfolgreich widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1502
+#: Src/wptKeyEditDlgs.cpp:1523
 msgid "Primary"
 msgstr "Primär"
 
-#: Src/wptKeyEditDlgs.cpp:1505
+#: Src/wptKeyEditDlgs.cpp:1526
 msgid "User ID successfully flagged"
 msgstr "Benutzerkennung erfolgreich gekennzeichnet"
 
-#: Src/wptKeyEditDlgs.cpp:1589
+#: Src/wptKeyEditDlgs.cpp:1611
 msgid "No preferences available."
 msgstr "Keine Präferenzen verfübar."
 
-#: Src/wptKeyEditDlgs.cpp:1595 Src/wptKeyeditSetPrefDlg.cpp:116
-msgid "Key Preferences"
-msgstr "Schlüsseleinstellungen"
-
-#: Src/wptKeyEditDlgs.cpp:1596
+#: Src/wptKeyEditDlgs.cpp:1617
 msgid "MDC feature"
 msgstr "Unterstützt MDC"
 
-#: Src/wptKeyEditDlgs.cpp:1647
+#: Src/wptKeyEditDlgs.cpp:1619 Src/wptKeyeditSetPrefDlg.cpp:116
+msgid "Key Preferences"
+msgstr "Schlüsseleinstellungen"
+
+#: Src/wptKeyEditDlgs.cpp:1669
 msgid "Primary user ID can not be deleted!"
 msgstr "Primäre Benutzerkennung kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1657
+#: Src/wptKeyEditDlgs.cpp:1679
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2462,56 +2448,56 @@
 "Benutzerkennung %s.\r\n"
 "Diese Benutzerkennung wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1674
+#: Src/wptKeyEditDlgs.cpp:1696
 msgid "Delete user ID"
 msgstr "Benutzerkennung löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1678
+#: Src/wptKeyEditDlgs.cpp:1700
 msgid "User ID successfully deleted"
 msgstr "Benutzerkennung erfolgreich gelöscht"
 
-#: Src/wptKeyEditDlgs.cpp:1760
+#: Src/wptKeyEditDlgs.cpp:1782
 msgid "Could not set subkey window procedure."
 msgstr "Konnte \"subkey window procedure\" nicht setzen."
 
-#: Src/wptKeyEditDlgs.cpp:1770
+#: Src/wptKeyEditDlgs.cpp:1792
 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:1778
+#: Src/wptKeyEditDlgs.cpp:1800
 msgid "Command>"
 msgstr "Kommando>"
 
-#: Src/wptKeyEditDlgs.cpp:1811
+#: Src/wptKeyEditDlgs.cpp:1832
 msgid "Please select a command."
 msgstr "Bitte einen Befehl auswählen."
 
-#: Src/wptKeyEditDlgs.cpp:1816
+#: Src/wptKeyEditDlgs.cpp:1837
 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"
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:55 Src/wptKeyPropsDlg.cpp:330
+#: Src/wptKeyEditOwnertrustDlg.cpp:55 Src/wptKeyPropsDlg.cpp:328
 msgid "Change Ownertrust"
 msgstr "Besitzervertrauen ändern"
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:57 Src/wptKeyPropsDlg.cpp:61
+#: Src/wptKeyEditOwnertrustDlg.cpp:57 Src/wptKeyPropsDlg.cpp:60
 msgid "Don't know"
 msgstr "Ich weiss nicht"
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:58 Src/wptKeyPropsDlg.cpp:62
+#: Src/wptKeyEditOwnertrustDlg.cpp:58 Src/wptKeyPropsDlg.cpp:61
 msgid "I do NOT trust"
 msgstr "Kein Vertrauen"
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:59 Src/wptKeyPropsDlg.cpp:63
+#: Src/wptKeyEditOwnertrustDlg.cpp:59 Src/wptKeyPropsDlg.cpp:62
 msgid "I trust marginally"
 msgstr "Geringes Vertrauen"
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:60 Src/wptKeyPropsDlg.cpp:64
+#: Src/wptKeyEditOwnertrustDlg.cpp:60 Src/wptKeyPropsDlg.cpp:63
 msgid "I trust fully"
 msgstr "Volles Vertrauen"
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:61 Src/wptKeyPropsDlg.cpp:66
+#: Src/wptKeyEditOwnertrustDlg.cpp:61 Src/wptKeyPropsDlg.cpp:65
 msgid "I trust ultimately"
 msgstr "Absolutes Vertrauen"
 
@@ -2530,8 +2516,8 @@
 msgstr "Bitte wählen Sie einen Eintrag."
 
 #: Src/wptKeyEditOwnertrustDlg.cpp:88 Src/wptKeyEditOwnertrustDlg.cpp:95
-#: Src/wptKeyEditOwnertrustDlg.cpp:104 Src/wptKeyManagerDlg.cpp:782
-#: Src/wptKeyManagerDlg.cpp:1445 Src/wptKeyPropsDlg.cpp:276
+#: Src/wptKeyEditOwnertrustDlg.cpp:104 Src/wptKeyManagerDlg.cpp:839
+#: Src/wptKeyManagerDlg.cpp:1528 Src/wptKeyPropsDlg.cpp:275
 #: Src/wptOwnertrustDlg.cpp:97 Src/wptOwnertrustDlg.cpp:121
 #: Src/wptOwnertrustDlg.cpp:133
 msgid "Ownertrust"
@@ -2555,7 +2541,7 @@
 #: Src/wptKeygenDlg.cpp:462 Src/wptKeygenDlg.cpp:476 Src/wptKeygenDlg.cpp:483
 #: Src/wptKeygenDlg.cpp:492 Src/wptKeygenDlg.cpp:497 Src/wptKeygenDlg.cpp:505
 #: Src/wptKeygenDlg.cpp:544 Src/wptKeygenDlg.cpp:637
-#: Src/wptKeyManagerDlg.cpp:1313 Src/wptPassphraseDlg.cpp:95
+#: Src/wptKeyManagerDlg.cpp:1396 Src/wptPassphraseDlg.cpp:95
 msgid "Key Generation"
 msgstr "Schlüsselerzeugung"
 
@@ -2743,7 +2729,7 @@
 
 #: Src/wptKeygenDlg.cpp:596 Src/wptKeygenDlg.cpp:618 Src/wptKeygenDlg.cpp:623
 #: Src/wptKeygenDlg.cpp:629 Src/wptKeygenDlg.cpp:634 Src/wptKeygenDlg.cpp:658
-#: Src/wptKeyManagerDlg.cpp:1339
+#: Src/wptKeyManagerDlg.cpp:1422
 msgid "Key Generation Wizard"
 msgstr "Schlüsselerzeugungs-Assistent"
 
@@ -2803,59 +2789,58 @@
 msgid "No keys updated."
 msgstr "Kein(e) Schlüssel aktualisiert."
 
-#: Src/wptKeylist.cpp:236
+#: Src/wptKeylist.cpp:248
 msgid "Key Pair"
 msgstr "Schlüsselpaar"
 
-#: Src/wptKeylist.cpp:238
+#: Src/wptKeylist.cpp:250
 msgid "Key Pair (Card)"
 msgstr "Schlüsselpaar (Karte)"
 
-#: Src/wptKeylist.cpp:239
+#: Src/wptKeylist.cpp:251
 msgid "Public Key"
 msgstr "Öffentlicher Schlüssel"
 
-#: Src/wptKeylist.cpp:322 Src/wptKeylist.cpp:885
+#: Src/wptKeylist.cpp:334 Src/wptKeylist.cpp:895
 msgid "None"
 msgstr "Keine"
 
-#: Src/wptKeylist.cpp:326
-#, fuzzy
+#: Src/wptKeylist.cpp:338
 msgid "Marginal"
-msgstr "E-Mail"
+msgstr "Marginal"
 
 # c:\oss\winpt-gpgme\src\wptKeylist.cpp:492
-#: Src/wptKeylist.cpp:329 Src/wptKeylist.cpp:490
+#: Src/wptKeylist.cpp:341 Src/wptKeylist.cpp:500
 msgid "Full"
 msgstr "Voll"
 
-#: Src/wptKeylist.cpp:367 Src/wptKeyPropsDlg.cpp:150
+#: Src/wptKeylist.cpp:378 Src/wptKeyPropsDlg.cpp:149
 msgid "Disabled"
 msgstr "Inaktiv"
 
-#: Src/wptKeylist.cpp:529 Src/wptKeylist.cpp:539
+#: Src/wptKeylist.cpp:539 Src/wptKeylist.cpp:549
 msgid "Cipher"
 msgstr "Cipher"
 
-#: Src/wptKeylist.cpp:541 Src/wptVerifyList.cpp:90 Src/wptVerifyList.cpp:98
+#: Src/wptKeylist.cpp:551 Src/wptVerifyList.cpp:90 Src/wptVerifyList.cpp:98
 msgid "Trust"
 msgstr "Vertrauen"
 
-#: Src/wptKeylist.cpp:707 Src/wptPassphraseCB.cpp:110
+#: Src/wptKeylist.cpp:717 Src/wptPassphraseCB.cpp:110
 #: Src/wptVerifyList.cpp:181
 msgid "Invalid User ID"
 msgstr "Ungültige Benutzerkennung"
 
-#: Src/wptKeylist.cpp:882 Src/wptKeyPropsDlg.cpp:67 Src/wptVerifyList.cpp:159
+#: Src/wptKeylist.cpp:892 Src/wptKeyPropsDlg.cpp:66 Src/wptVerifyList.cpp:159
 #: Src/wptVerifyList.cpp:235
 msgid "Unknown"
 msgstr "Unbekannt"
 
-#: Src/wptKeylist.cpp:883
+#: Src/wptKeylist.cpp:893
 msgid "Undefined"
 msgstr ""
 
-#: Src/wptKeylist.cpp:926
+#: Src/wptKeylist.cpp:936
 #, c-format
 msgid ""
 "It is NOT certain that the key belongs to the person\n"
@@ -2870,11 +2855,11 @@
 "\n"
 "\"%s\" benutzen?"
 
-#: Src/wptKeylist.cpp:934 Src/wptKeylist.cpp:1010
+#: Src/wptKeylist.cpp:944 Src/wptKeylist.cpp:1020
 msgid "Recipients"
 msgstr "Empfänger"
 
-#: Src/wptKeylist.cpp:1009
+#: Src/wptKeylist.cpp:1019
 #, c-format
 msgid ""
 "KeyID %s.\n"
@@ -2883,11 +2868,11 @@
 "Schlüssel ID %s.\n"
 "Wollen Sie wirklich einen widerrufenen Schlüssel exportieren?"
 
-#: Src/wptKeylist.cpp:1111
+#: Src/wptKeylist.cpp:1121
 msgid "Secret Key List"
 msgstr "Liste der geheimen Schlüssel"
 
-#: Src/wptKeyManager.cpp:141
+#: Src/wptKeyManager.cpp:165
 msgid ""
 "This key has expired!\n"
 "Key check failed."
@@ -2895,7 +2880,7 @@
 "Dieser Schlüssel ist abgelaufen!\n"
 "Schlüsselüberprüfung fehlgeschlagen."
 
-#: Src/wptKeyManager.cpp:146
+#: Src/wptKeyManager.cpp:170
 msgid ""
 "This key has been revoked by its owner!\n"
 "Key check failed."
@@ -2903,34 +2888,34 @@
 "Dieser Schlüssel wurde vom Besitzer widerrufen!Schlüsselüberprüfung "
 "fehlgeschlagen."
 
-#: Src/wptKeyManager.cpp:195
+#: Src/wptKeyManager.cpp:220
 msgid "Key status changed."
 msgstr "Schlüsselstatus geändert"
 
-#: Src/wptKeyManager.cpp:316
+#: Src/wptKeyManager.cpp:341
 msgid "Only one secret key can be exported."
 msgstr "Nur der geheime Schlüssel kann exportiert werden."
 
-#: Src/wptKeyManager.cpp:327
+#: Src/wptKeyManager.cpp:352
 #, c-format
 msgid "Secret key successfully saved in '%s'."
 msgstr "Geheimer Schlüssel gespeichert in '%s'."
 
-#: Src/wptKeyManager.cpp:369
+#: Src/wptKeyManager.cpp:394
 #, c-format
 msgid "Key(s) successfully saved in '%s'."
 msgstr "Schlüssel erfolgreich in '%s' gespeichert."
 
-#: Src/wptKeyManager.cpp:375
+#: Src/wptKeyManager.cpp:400
 #, c-format
 msgid "Could not save data to '%s'."
 msgstr "Konnte Daten nicht in '%s' speichern."
 
-#: Src/wptKeyManager.cpp:426
+#: Src/wptKeyManager.cpp:451
 msgid "No valid OpenPGP keys found."
 msgstr "Keine gültigen OpenPGP-Schlüssel gefunden."
 
-#: Src/wptKeyManager.cpp:431
+#: Src/wptKeyManager.cpp:456
 msgid ""
 "The key you want to import is dash escacped.\n"
 "Do you want to extract the key?"
@@ -2938,52 +2923,50 @@
 "Der Import-Schlüssel ist beschädigt.\n"
 "Möchten Sie den Schlüssel extrahieren?"
 
-#: Src/wptKeyManager.cpp:437
+#: Src/wptKeyManager.cpp:462
 msgid "Cannot import dash escaped OpenPGP keys."
 msgstr "Kann keine beschädigten OpenPGP-Schlüssel importieren."
 
-#: Src/wptKeyManager.cpp:461 Src/wptKeyManager.cpp:472
-#: Src/wptKeyManager.cpp:486
+#: Src/wptKeyManager.cpp:486 Src/wptKeyManager.cpp:497
+#: Src/wptKeyManager.cpp:511
 msgid "Key Import HTTP"
 msgstr "Schlüssel Import HTTP"
 
 # c:\oss\winpt-gpgme\src\wptKeyManager.cpp:448
-#: Src/wptKeyManager.cpp:461
+#: Src/wptKeyManager.cpp:486
 #, c-format
 msgid "Invalid HTTP URL: %s"
 msgstr "Ungültige HTTP URL: %s"
 
-#: Src/wptKeyManager.cpp:512
+#: Src/wptKeyManager.cpp:537
 msgid "File Import"
 msgstr "Dateiimport"
 
-#: Src/wptKeyManager.cpp:523
+#: Src/wptKeyManager.cpp:548
 msgid "Could not read key-data from file."
 msgstr "Konnte Schlüsseldaten nicht aus Datei lesen."
 
-#: Src/wptKeyManager.cpp:590
+#: Src/wptKeyManager.cpp:617
 msgid "Do you really want to confirm each key?"
 msgstr "Wollen Sie wirklich jeden Schlüssel bestätigen?"
 
-#: Src/wptKeyManager.cpp:591
+#: Src/wptKeyManager.cpp:618
 msgid "Delete Confirmation"
 msgstr "Löschen Bestätigen"
 
-#: Src/wptKeyManager.cpp:613
+#: Src/wptKeyManager.cpp:640
 #, c-format
 msgid ""
 "Do you really want to delete this key?\n"
 "\n"
-"pub %s %s %s\n"
-"  \"%s\""
+"%s"
 msgstr ""
 "Diesen Schlüssel wirklich löschen?\n"
 "\n"
-"pub %s %s %s\n"
-"  \"%s\""
+"%s"
 
 # c:\oss\winpt-gpgme\src\wptKeyManager.cpp:605
-#: Src/wptKeyManager.cpp:624
+#: Src/wptKeyManager.cpp:650
 #, c-format
 msgid ""
 "Do you really want to delete this KEY PAIR?\n"
@@ -2991,18 +2974,16 @@
 "Please remember that you are not able to decrypt\n"
 "messages you stored with this key any longer.\n"
 "\n"
-"pub/sec %s %s %s\n"
-"  \"%s\""
+"%s"
 msgstr ""
 "Wollen sie wirklich dieses Schlüsselpaar löschen?\n"
 "\n"
 "Dateien die mit diesem Schlüssel verschlüsselt wurden\n"
 "können dann nicht mehr entschlüsselt werden.\n"
 "\n"
-"pub/sec %s %s %s\n"
-"  \"%s\""
+"%s"
 
-#: Src/wptKeyManager.cpp:632
+#: Src/wptKeyManager.cpp:657
 msgid ""
 "The actual secret key is stored on a smartcard.\n"
 "Only the public key and the secret key \n"
@@ -3012,330 +2993,318 @@
 "Nur der öffentliche Schlüssel und der Zeiger auf den geheimen\n"
 "Schlüssel werden gelöscht.\n"
 
-#: Src/wptKeyManager.cpp:692
+#: Src/wptKeyManager.cpp:718
 #, c-format
 msgid "Do you really want to send '%s' to keyserver %s?"
 msgstr "Wollen Sie '%s' wirklich zum Schlüsselserver %s senden?"
 
-#: Src/wptKeyManager.cpp:718
+#: Src/wptKeyManager.cpp:740
 msgid "Please only select one key."
 msgstr "Bitte nur einen Schlüssel auswählen."
 
-#: Src/wptKeyManager.cpp:791
+#: Src/wptKeyManager.cpp:808
 msgid "Could not connect to keyserver, abort procedure."
 msgstr ""
 "Verbindung zum Keyserver fehlgeschlagen; Die Prozedur wird abgebrochen."
 
-#: Src/wptKeyManager.cpp:797
+#: Src/wptKeyManager.cpp:814
 msgid "Do you really want to refresh all keys in the keyring?"
 msgstr "Wirklich alle Schlüssel im Schlüsselbund neu laden?"
 
-#: Src/wptKeyManager.cpp:857
+#: Src/wptKeyManager.cpp:873
 #, c-format
 msgid "Default Key: %s"
 msgstr "Standardschlüssel: %s"
 
-#: Src/wptKeyManager.cpp:859
+#: Src/wptKeyManager.cpp:875
 #, c-format
 msgid "Default Key: 0x%s"
 msgstr "Standardschlüssel: 0x%s"
 
-#: Src/wptKeyManager.cpp:879
+#: Src/wptKeyManager.cpp:895
 #, c-format
 msgid "%d secret keys"
 msgstr "%d geheime Schlüssel"
 
 # c:\oss\winpt-gpgme\src\wptKeyManager.cpp:849
-#: Src/wptKeyManager.cpp:880
+#: Src/wptKeyManager.cpp:896
 #, c-format
 msgid "%d keys"
 msgstr "%d Schlüssel"
 
-#: Src/wptKeyManager.cpp:916
+#: Src/wptKeyManager.cpp:933
 msgid "Search"
 msgstr "Suchen"
 
-#: Src/wptKeyManager.cpp:916
+#: Src/wptKeyManager.cpp:933
 msgid "Search for:"
 msgstr "Suche nach:"
 
 # c:\oss\winpt-gpgme\src\wptKeyManager.cpp:896
-#: Src/wptKeyManager.cpp:927
+#: Src/wptKeyManager.cpp:944
 #, c-format
 msgid "String pattern \"%s\" not found."
 msgstr "Zeichenkette \"%s\" nicht gefunden."
 
-#: Src/wptKeyManagerDlg.cpp:344 Src/wptKeyManagerDlg.cpp:991
+#: Src/wptKeyManagerDlg.cpp:428 Src/wptKeyManagerDlg.cpp:884
 msgid "Paste Key from Clipboard"
 msgstr "Schlüssel aus Ablage einfügen"
 
-#: Src/wptKeyManagerDlg.cpp:778
+#: Src/wptKeyManagerDlg.cpp:834
 msgid "Key"
 msgstr "Schlüssel"
 
-#: Src/wptKeyManagerDlg.cpp:779 Src/wptKeyManagerDlg.cpp:851
+#: Src/wptKeyManagerDlg.cpp:835 Src/wptKeyManagerDlg.cpp:981
 msgid "Groups"
 msgstr "Gruppen"
 
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:478
-#: Src/wptKeyManagerDlg.cpp:781
-#, fuzzy
+#: Src/wptKeyManagerDlg.cpp:838
 msgid "Send Mail..."
-msgstr "Als Mail versenden"
+msgstr "Sende eMail..."
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:685
-#: Src/wptKeyManagerDlg.cpp:783
+#: Src/wptKeyManagerDlg.cpp:840
 msgid "&Copy\tCtrl+C"
 msgstr "&Kopieren\tCtrl+C"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:686
-#: Src/wptKeyManagerDlg.cpp:784
+#: Src/wptKeyManagerDlg.cpp:841
 msgid "&Paste\tCtrl+V"
 msgstr "&Einfügen\tCtrl+V"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:687
-#: Src/wptKeyManagerDlg.cpp:785
+#: Src/wptKeyManagerDlg.cpp:842
 msgid "Search...\tCtrl+F"
 msgstr "Suchen...\tCtrl+F"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:688
-#: Src/wptKeyManagerDlg.cpp:786
+#: Src/wptKeyManagerDlg.cpp:843
 msgid "Select All\tCtrl+A"
 msgstr "Alles markieren\tCtrl+A"
 
-#: Src/wptKeyManagerDlg.cpp:787
+#: Src/wptKeyManagerDlg.cpp:844
 msgid "&Quit"
 msgstr "&Beenden"
 
-#: Src/wptKeyManagerDlg.cpp:789
+#: Src/wptKeyManagerDlg.cpp:846
 msgid "&Expert"
 msgstr "&Experte"
 
-#: Src/wptKeyManagerDlg.cpp:790
+#: Src/wptKeyManagerDlg.cpp:847
 msgid "&Normal"
 msgstr "&Normal"
 
-#: Src/wptKeyManagerDlg.cpp:793 Src/wptKeyManagerDlg.cpp:794
-#: Src/wptKeyManagerDlg.cpp:997
+#: Src/wptKeyManagerDlg.cpp:850 Src/wptKeyManagerDlg.cpp:851
+#: Src/wptKeyManagerDlg.cpp:890
 msgid "&Delete"
 msgstr "&Löschen"
 
-#: Src/wptKeyManagerDlg.cpp:795 Src/wptKeyManagerDlg.cpp:998
+#: Src/wptKeyManagerDlg.cpp:852 Src/wptKeyManagerDlg.cpp:891
 msgid "&Revoke"
 msgstr "Wider&rufen"
 
-#: Src/wptKeyManagerDlg.cpp:796 Src/wptKeyManagerDlg.cpp:994
+#: Src/wptKeyManagerDlg.cpp:853 Src/wptKeyManagerDlg.cpp:887
 msgid "&List Signatures"
 msgstr "Signaturen anzeigen"
 
-#: Src/wptKeyManagerDlg.cpp:797 Src/wptKeyManagerDlg.cpp:1232
+#: Src/wptKeyManagerDlg.cpp:854 Src/wptKeyManagerDlg.cpp:1315
 #: Src/wptKeyTrustPathDlg.cpp:130
 msgid "List Trust Path"
 msgstr "Zeige Vertrauenspfad"
 
-#: Src/wptKeyManagerDlg.cpp:798
+#: Src/wptKeyManagerDlg.cpp:855
 msgid "&Export..."
 msgstr "&Exportieren..."
 
-#: Src/wptKeyManagerDlg.cpp:799
+#: Src/wptKeyManagerDlg.cpp:856
 msgid "&Import..."
 msgstr "&Importieren..."
 
-#: Src/wptKeyManagerDlg.cpp:800 Src/wptKeysigDlg.cpp:356
+#: Src/wptKeyManagerDlg.cpp:857 Src/wptKeyManagerDlg.cpp:888
+#: Src/wptKeysigDlg.cpp:356
 msgid "&Properties"
 msgstr "&Eigenschaften"
 
-#: Src/wptKeyManagerDlg.cpp:801
+#: Src/wptKeyManagerDlg.cpp:858
 msgid "Options"
 msgstr "Optionen"
 
-#: Src/wptKeyManagerDlg.cpp:804
+#: Src/wptKeyManagerDlg.cpp:861
 msgid "E&xport Secret Key"
 msgstr "E&xportiere geheimen Schlüssel"
 
-#: Src/wptKeyManagerDlg.cpp:805
+#: Src/wptKeyManagerDlg.cpp:862
 msgid "Re&load Key Cache"
 msgstr "Erneuere Sch&lüsselcache"
 
-#: Src/wptKeyManagerDlg.cpp:806
+#: Src/wptKeyManagerDlg.cpp:863
 msgid "R&everify Signatures"
 msgstr "Signaturen erneut prüfen"
 
-#: Src/wptKeyManagerDlg.cpp:807
+#: Src/wptKeyManagerDlg.cpp:864
 msgid "Refresh &Keys (Keyserver)"
 msgstr "Vom Schlüsselserver aktualisieren"
 
-#: Src/wptKeyManagerDlg.cpp:808 Src/wptTextInputDlg.cpp:49
+#: Src/wptKeyManagerDlg.cpp:865 Src/wptTextInputDlg.cpp:49
 msgid "Info"
 msgstr "Über"
 
-#: Src/wptKeyManagerDlg.cpp:834 Src/wptKeysigDlg.cpp:369
-msgid "Could not set keylist window procedure."
-msgstr "Konnte \"keylist window procedure\" nicht setzen."
-
-# c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:842
-#: Src/wptKeyManagerDlg.cpp:947
-msgid "Delete key from keyring"
-msgstr "Schlüssel aus Keyring löschen"
-
-#: Src/wptKeyManagerDlg.cpp:951
-msgid "Show key properties"
-msgstr "Schlüsseleigenschaften anzeigen"
-
-#: Src/wptKeyManagerDlg.cpp:955
-msgid "Sign key"
-msgstr "Signiere Schlüssel"
-
-# c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:854
-#: Src/wptKeyManagerDlg.cpp:959
-msgid "Import key to keyring"
-msgstr "In Schlüsselbund importieren"
-
-# c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:858
-#: Src/wptKeyManagerDlg.cpp:963
-msgid "Export key to a file"
-msgstr "Schlüssel in Datei exportieren"
-
-#: Src/wptKeyManagerDlg.cpp:986
+#: Src/wptKeyManagerDlg.cpp:879
 msgid "Copy User ID to Clipboard"
 msgstr "Kopiere Benutzerkennung in Ablage"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:886
-#: Src/wptKeyManagerDlg.cpp:987
+#: Src/wptKeyManagerDlg.cpp:880
 msgid "Copy Key ID to Clipboard"
 msgstr "Kopiere Schlüssel ID in Ablage"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:887
-#: Src/wptKeyManagerDlg.cpp:988
+#: Src/wptKeyManagerDlg.cpp:881
 msgid "Copy Fingerprint to Clipboard"
 msgstr "Kopiere Fingerprint in Ablage"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:888
-#: Src/wptKeyManagerDlg.cpp:989
+#: Src/wptKeyManagerDlg.cpp:882
 msgid "Copy Key Info to Clipboard"
 msgstr "Kopiere Schlüssel Info in Ablage"
 
-#: Src/wptKeyManagerDlg.cpp:990
+#: Src/wptKeyManagerDlg.cpp:883
 msgid "Copy Key to Clipboard"
 msgstr "Kopiere Schlüssel in Ablage"
 
-#: Src/wptKeyManagerDlg.cpp:992
+#: Src/wptKeyManagerDlg.cpp:885
 msgid "Refresh from Keyserver"
 msgstr "Vom Schlüsselserver aktualisieren"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:884
-#: Src/wptKeyManagerDlg.cpp:993
+#: Src/wptKeyManagerDlg.cpp:886
 msgid "Set Implicit &Trust"
 msgstr "Setze impliziertes Vertrauen"
 
-#: Src/wptKeyManagerDlg.cpp:995
-msgid "&Key Properties"
-msgstr "Schlüsseleigenschaften"
-
-#: Src/wptKeyManagerDlg.cpp:1000
+#: Src/wptKeyManagerDlg.cpp:893
 msgid "&Enable"
 msgstr "&Aktivieren"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:892
-#: Src/wptKeyManagerDlg.cpp:1001
+#: Src/wptKeyManagerDlg.cpp:894
 msgid "&Disable"
 msgstr "&Deaktivieren"
 
-#: Src/wptKeyManagerDlg.cpp:1002
+#: Src/wptKeyManagerDlg.cpp:895
 msgid "Re&fresh from Keyserver"
 msgstr "Vom Schlüsselserver aktualisieren"
 
-#: Src/wptKeyManagerDlg.cpp:1003
+#: Src/wptKeyManagerDlg.cpp:896
 msgid "Set preferred Keyserver URL"
 msgstr "Setze bevorzugte Keyserver URL"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:900
-#: Src/wptKeyManagerDlg.cpp:1004
+#: Src/wptKeyManagerDlg.cpp:897
 msgid "Send Key to Mail Recipient"
 msgstr "Sende Schlüssel an Mailempfänger"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:904
-#: Src/wptKeyManagerDlg.cpp:1005
+#: Src/wptKeyManagerDlg.cpp:898
 msgid "Set as Default Key"
 msgstr "Setze als Default Key"
 
-#: Src/wptKeyManagerDlg.cpp:1007
+#: Src/wptKeyManagerDlg.cpp:900
 msgid "Key..."
 msgstr "Schlüssel..."
 
-#: Src/wptKeyManagerDlg.cpp:1008
+#: Src/wptKeyManagerDlg.cpp:901
 msgid "User ID..."
 msgstr "Benutzerkennung..."
 
-#: Src/wptKeyManagerDlg.cpp:1009
+#: Src/wptKeyManagerDlg.cpp:902
 msgid "Photo ID..."
 msgstr "Photo ID..."
 
-#: Src/wptKeyManagerDlg.cpp:1010
+#: Src/wptKeyManagerDlg.cpp:903
 msgid "Revoker..."
 msgstr "Revoker..."
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:706
-#: Src/wptKeyManagerDlg.cpp:1013
+#: Src/wptKeyManagerDlg.cpp:906
 msgid "Key Attributes"
 msgstr "Schlüsselattribute"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:707
-#: Src/wptKeyManagerDlg.cpp:1014
+#: Src/wptKeyManagerDlg.cpp:907
 msgid "Add"
 msgstr "Hinzufügen"
 
-#: Src/wptKeyManagerDlg.cpp:1015
+#: Src/wptKeyManagerDlg.cpp:908
 msgid "Send to Keyserver"
 msgstr "Sende an Keyserver"
 
-#: Src/wptKeyManagerDlg.cpp:1068
-msgid "Paste into this group"
-msgstr "In diese Gruppe einfügen"
+#: Src/wptKeyManagerDlg.cpp:967 Src/wptKeysigDlg.cpp:369
+msgid "Could not set keylist window procedure."
+msgstr "Konnte \"keylist window procedure\" nicht setzen."
 
-#: Src/wptKeyManagerDlg.cpp:1069
-msgid "Delete"
-msgstr "Löschen"
+# c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:842
+#: Src/wptKeyManagerDlg.cpp:1079
+msgid "Delete key from keyring"
+msgstr "Schlüssel aus Keyring löschen"
 
+#: Src/wptKeyManagerDlg.cpp:1083
+msgid "Show key properties"
+msgstr "Schlüsseleigenschaften anzeigen"
+
+#: Src/wptKeyManagerDlg.cpp:1087
+msgid "Sign key"
+msgstr "Signiere Schlüssel"
+
+# c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:854
+#: Src/wptKeyManagerDlg.cpp:1091
+msgid "Import key to keyring"
+msgstr "In Schlüsselbund importieren"
+
+# c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:858
+#: Src/wptKeyManagerDlg.cpp:1095
+msgid "Export key to a file"
+msgstr "Schlüssel in Datei exportieren"
+
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:499
-#: Src/wptKeyManagerDlg.cpp:1130
+#: Src/wptKeyManagerDlg.cpp:1214
 msgid "New"
 msgstr "Neu"
 
-#: Src/wptKeyManagerDlg.cpp:1137
+#: Src/wptKeyManagerDlg.cpp:1221
 msgid "Could not access public keyring"
 msgstr "Konnte nicht auf öffentlichen Schlüsselbund zugreifen"
 
-#: Src/wptKeyManagerDlg.cpp:1178 Src/wptKeysignDlg.cpp:230
+#: Src/wptKeyManagerDlg.cpp:1261 Src/wptKeysignDlg.cpp:230
 #: Src/wptKeysignDlg.cpp:249 Src/wptKeysignDlg.cpp:326
 #: Src/wptKeysignDlg.cpp:343 Src/wptKeysignDlg.cpp:347
 msgid "Key Signing"
 msgstr "Schlüsselsignierung"
 
-#: Src/wptKeyManagerDlg.cpp:1201
+#: Src/wptKeyManagerDlg.cpp:1284
 msgid "Key already revoked!"
 msgstr "Schlüssel ist bereits widerrufen!"
 
-#: Src/wptKeyManagerDlg.cpp:1213 Src/wptKeyRevokeDlg.cpp:67
+#: Src/wptKeyManagerDlg.cpp:1296 Src/wptKeyRevokeDlg.cpp:67
 #: Src/wptKeyRevokeDlg.cpp:89 Src/wptKeyRevokeDlg.cpp:131
 #: Src/wptKeyRevokeDlg.cpp:136 Src/wptKeyRevokeDlg.cpp:143
 #: Src/wptKeyRevokeDlg.cpp:159
 msgid "Key Revocation"
 msgstr "Schlüsselwiderruf"
 
-#: Src/wptKeyManagerDlg.cpp:1224
+#: Src/wptKeyManagerDlg.cpp:1307
 msgid "It does not make any sense with a key pair!"
 msgstr "Diese Aktion macht keinen Sinn mit einem Schlüsselpaar!"
 
-#: Src/wptKeyManagerDlg.cpp:1248
+#: Src/wptKeyManagerDlg.cpp:1331
 msgid "Key Signature List"
 msgstr "Schlüssel-Signatur-Liste"
 
-#: Src/wptKeyManagerDlg.cpp:1268 Src/wptKeyPropsDlg.cpp:272
+#: Src/wptKeyManagerDlg.cpp:1351 Src/wptKeyPropsDlg.cpp:271
 msgid "Key Properties"
 msgstr "Schlüsseleigenschaften"
 
-#: Src/wptKeyManagerDlg.cpp:1282
+#: Src/wptKeyManagerDlg.cpp:1365
 msgid ""
 "This is only useful when the keyring has been modified (sign a key...).\n"
 "Do you really want to reload the keycache?"
@@ -3344,31 +3313,31 @@
 "Signierung etc.)\n"
 "Möchten Sie den Zwischenspeicher reinitialisieren?"
 
-#: Src/wptKeyManagerDlg.cpp:1323
+#: Src/wptKeyManagerDlg.cpp:1406
 msgid "Smart Card support is not available."
 msgstr "SmartCard-Unterstützung ist nicht verfügbar."
 
-#: Src/wptKeyManagerDlg.cpp:1350 Src/wptKeyserverDlg.cpp:437
+#: Src/wptKeyManagerDlg.cpp:1433 Src/wptKeyserverDlg.cpp:437
 msgid "Keyserver Access"
 msgstr "Schlüsselserver-Zugriff"
 
-#: Src/wptKeyManagerDlg.cpp:1366
+#: Src/wptKeyManagerDlg.cpp:1449
 msgid "GnuPG Options"
 msgstr "GnuPG Optionen"
 
-#: Src/wptKeyManagerDlg.cpp:1371
+#: Src/wptKeyManagerDlg.cpp:1454
 msgid "Choose Name of the Key File"
 msgstr "Den Namen der Schlüsseldatei wählen"
 
-#: Src/wptKeyManagerDlg.cpp:1407
+#: Src/wptKeyManagerDlg.cpp:1490
 msgid "There is no corresponding secret key for this key."
 msgstr "Für diesen Schlüssel ist kein geheimer Schlüssel vorhanden."
 
-#: Src/wptKeyManagerDlg.cpp:1412
+#: Src/wptKeyManagerDlg.cpp:1495
 msgid "You can only export one secret key."
 msgstr "Sie können nur einen geheimen Schlüssel exportieren."
 
-#: Src/wptKeyManagerDlg.cpp:1417
+#: Src/wptKeyManagerDlg.cpp:1500
 msgid ""
 "This operation will export your *SECRET* key!\n"
 "\n"
@@ -3386,27 +3355,27 @@
 "\n"
 "Wirklich den Schlüssel exportieren?"
 
-#: Src/wptKeyManagerDlg.cpp:1422
+#: Src/wptKeyManagerDlg.cpp:1505
 msgid "WARNING"
 msgstr "WARNUNG"
 
-#: Src/wptKeyManagerDlg.cpp:1487
+#: Src/wptKeyManagerDlg.cpp:1570
 msgid "No key was selected, select all by default."
 msgstr "Kein Schlüssel ausgewählt, es wurden alle ausgewählt."
 
-#: Src/wptKeyPropsDlg.cpp:197
+#: Src/wptKeyPropsDlg.cpp:196
 #, c-format
 msgid "Card-Type: %s\r\n"
 msgstr ""
 
 # c:\oss\winpt-gpgme\src\wptKeyPropsDlg.cpp:214
-#: Src/wptKeyPropsDlg.cpp:226
+#: Src/wptKeyPropsDlg.cpp:225
 #, c-format
 msgid ""
 "Type: %s\r\n"
 "Key ID: %s\r\n"
 "Algorithm: %s\r\n"
-"Size: %s\r\n"
+"Size: %s bits\r\n"
 "Created: %s\r\n"
 "Expires: %s\r\n"
 "Validity: %s\r\n"
@@ -3416,32 +3385,32 @@
 "Type: %s\r\n"
 "Key ID: %s\r\n"
 "Algorithmus: %s\r\n"
-"Größe: %s\r\n"
+"Größe: %s Bits\r\n"
 "Erstellt: %s\r\n"
 "Ablauf: %s\r\n"
 "Gültigkeit: %s\r\n"
 "Cipher: %s\r\n"
 "%s\r\n"
 
-#: Src/wptKeyPropsDlg.cpp:273
+#: Src/wptKeyPropsDlg.cpp:272
 msgid "&Change"
 msgstr "&Ändern"
 
-#: Src/wptKeyPropsDlg.cpp:274
+#: Src/wptKeyPropsDlg.cpp:273
 msgid "&Revokers"
 msgstr "\"&Revokers\""
 
-#: Src/wptKeyPropsDlg.cpp:275
+#: Src/wptKeyPropsDlg.cpp:274
 msgid "Change &Passwd"
 msgstr "&Passwort ändern"
 
-#: Src/wptKeyPropsDlg.cpp:282
+#: Src/wptKeyPropsDlg.cpp:281
 msgid "Photo-ID not validated."
 msgstr "Foto-ID nicht geprüft."
 
 # msgid "Unknown"
 # msgstr "Unbekannt"
-#: Src/wptKeyPropsDlg.cpp:314
+#: Src/wptKeyPropsDlg.cpp:313
 msgid ""
 "The status of this key is 'revoked' or 'expired'.\n"
 "You cannot change the ownertrust of such keys."
@@ -3449,11 +3418,11 @@
 "Der Status dieses Schlüssels ist 'widerrufen' oder 'abgelaufen'.\n"
 "Sie können das Vertrauen in solche Schlüssel nicht ändern."
 
-#: Src/wptKeyPropsDlg.cpp:316 Src/wptKeyPropsDlg.cpp:323
+#: Src/wptKeyPropsDlg.cpp:315 Src/wptKeyPropsDlg.cpp:322
 msgid "WinPT Warning"
 msgstr "WinPT Warnung"
 
-#: Src/wptKeyPropsDlg.cpp:320
+#: Src/wptKeyPropsDlg.cpp:319
 msgid ""
 "This is a non-valid key.\n"
 "Modifying the ownertrust has no effect on such keys.\n"
@@ -3461,14 +3430,14 @@
 "Do you really want to continue?"
 msgstr ""
 "Dies ist kein gültiger Schlüssel.\n"
-"Das Vertrauen solcher Schlüssel zu ändern macht keinen Sinn.\n"
-"Trotzdem fortfahren"
+"Das Vertrauen solcher Schlüssel zu ändern hat keinerlei Effekt.\n"
+"Trotzdem fortfahren?"
 
-#: Src/wptKeyPropsDlg.cpp:339
+#: Src/wptKeyPropsDlg.cpp:337
 msgid "Ownertrust successfully changed."
 msgstr "Besitzervertrauen erfolgreich geändert."
 
-#: Src/wptKeyPropsDlg.cpp:357 Src/wptKeyRevokersDlg.cpp:134
+#: Src/wptKeyPropsDlg.cpp:355 Src/wptKeyRevokersDlg.cpp:134
 msgid "Key Revokers"
 msgstr "Schlüsselwiderrufer"
 
@@ -3749,7 +3718,7 @@
 "Are you really sure you want to delete this signature from\n"
 "  \"%s\""
 msgstr ""
-"Diese Signature wirklich von dieser user-ID löschen?\n"
+"Diese Signature wirklich von dieser Benutzerkennung löschen?\n"
 "\n"
 "  \"%s\""
 
@@ -3792,25 +3761,25 @@
 msgid "Non-exportable"
 msgstr "Nicht-exportierbar"
 
-#: Src/wptKeysigDlg.cpp:295
+#: Src/wptKeysigDlg.cpp:296
 msgid "Signature &Properties"
 msgstr "Signatur-&Eigenschaften"
 
-#: Src/wptKeysigDlg.cpp:296
+#: Src/wptKeysigDlg.cpp:297
 msgid "Signing &Key Properties"
 msgstr "Signing Key-Eigenschaften"
 
 # c:\oss\winpt-gpgme\src\wptKeysigDlg.cpp:294
-#: Src/wptKeysigDlg.cpp:319
+#: Src/wptKeysigDlg.cpp:320
 msgid "Key not found in keyring, please get it from the keyserver first."
 msgstr "Schlüssel im Schlüsselbund nicht gefunden, bitte vom Keyserver laden."
 
 # c:\oss\winpt-gpgme\src\wptKeysigDlg.cpp:301
-#: Src/wptKeysigDlg.cpp:326
+#: Src/wptKeysigDlg.cpp:327
 msgid "Key not found in keyring."
 msgstr "Schlüssel im Keyring nicht gefunden."
 
-#: Src/wptKeysigDlg.cpp:352
+#: Src/wptKeysigDlg.cpp:353
 #, c-format
 msgid "Signature List for \"%s\""
 msgstr "Signaturliste für \"%s\""
@@ -3819,7 +3788,7 @@
 msgid "&Receive Key"
 msgstr "&Schlüssel empfangen"
 
-#: Src/wptKeysigDlg.cpp:428
+#: Src/wptKeysigDlg.cpp:431
 msgid "Really receive all missing keys?"
 msgstr "Alle fehlenden Schlüssel empfangen?"
 
@@ -3972,7 +3941,7 @@
 msgid "Remove all passphrases from cache?"
 msgstr "Alle Passwörter aus Zwischenspeicher entfernen?"
 
-#: Src/wptMainProc.cpp:488 Src/wptProgressDlg.cpp:122 Src/wptRegistry.cpp:162
+#: Src/wptMainProc.cpp:488 Src/wptProgressDlg.cpp:122 Src/wptRegistry.cpp:181
 msgid "WinPT"
 msgstr "WinPT"
 
@@ -4350,7 +4319,7 @@
 msgid "Please fill out all required fields for authentication."
 msgstr "Bitte alle benötigen Felder für die Authentifizierung eingeben."
 
-#: Src/wptRegistry.cpp:160
+#: Src/wptRegistry.cpp:179
 msgid ""
 "WinPT can register some GPG file types for you so they can be processed with "
 "a double click in the explorer.\n"
@@ -4360,11 +4329,11 @@
 "Doppelklick im Explorer öffnen können.\n"
 "Möchten Sie fortfahren?"
 
-#: Src/wptRegistry.cpp:171
+#: Src/wptRegistry.cpp:190
 msgid "WinPT WARNING"
 msgstr "WinPT WARNUNG"
 
-#: Src/wptRegistry.cpp:172
+#: Src/wptRegistry.cpp:191
 #, c-format
 msgid ""
 "It seems there was already a '%s' file type registered by another "
@@ -4374,7 +4343,7 @@
 "Der Dateityp '%s' scheint mit einer anderen Anwendung verknüpft zu sein.\n"
 "Überschreiben?"
 
-#: Src/wptRegistry.cpp:590
+#: Src/wptRegistry.cpp:608
 msgid "Could not write to Registry."
 msgstr "Konnte Werte in Registry nicht speichern"
 
@@ -4410,7 +4379,23 @@
 msgid "Signed"
 msgstr "Signiert"
 
+#~ msgid "Choose GPG config file"
+#~ msgstr "Wählen Sie die GPG.conf Datei"
+
 #~ msgid ""
+#~ "Could not find GPG config file.\n"
+#~ "Do you want to create a config file?"
+#~ msgstr ""
+#~ "Konnte keine Konfigurationsdatei finden.\n"
+#~ "Wollen Sie die Konfigurationsdatei erstellen?"
+
+#~ msgid "Could not save 'OptFile' in the registry."
+#~ msgstr "Konnte 'OptFile' nicht in Registry schreiben"
+
+#~ msgid "Delete"
+#~ msgstr "Löschen"
+
+#~ msgid ""
 #~ "Do you really want to delete this entry?\n"
 #~ "\n"
 #~ "%s"
@@ -4428,6 +4413,9 @@
 #~ "\n"
 #~ "%s"
 
+#~ msgid "GnuPG config file (default: use gpg.conf)"
+#~ msgstr "GnuPG Konfigurationsdatei (Voreinstellung: gpg.conf)"
+
 # msgid "JPEG Files (*.jpg, *.jpeg)"
 # msgstr "JPEG Dateien (*.jpg, *.jpeg)"
 #~ msgid "Key &expiration"
@@ -4436,6 +4424,9 @@
 #~ msgid "Key already expired!"
 #~ msgstr "Der Schlüssel ist bereits abgelaufen!"
 
+#~ msgid "Paste into this group"
+#~ msgstr "In diese Gruppe einfügen"
+
 #~ msgid "&Exit"
 #~ msgstr "&Beenden"
 

Modified: trunk/Po/winpt.pot
===================================================================
--- trunk/Po/winpt.pot	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Po/winpt.pot	2005-12-19 13:05:59 UTC (rev 128)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2005-12-16 13:37+0100\n"
+"POT-Creation-Date: 2005-12-18 20:12+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -21,32 +21,36 @@
 "Native Language Support"
 msgstr ""
 
-#: Src/WinPT.cpp:109 Src/WinPT.cpp:131 Src/WinPT.cpp:181 Src/WinPT.cpp:185
-#: Src/WinPT.cpp:294 Src/WinPT.cpp:301 Src/WinPT.cpp:340 Src/WinPT.cpp:368
-#: Src/WinPT.cpp:377 Src/WinPT.cpp:381 Src/WinPT.cpp:398 Src/WinPT.cpp:466
-#: Src/WinPT.cpp:479 Src/WinPT.cpp:529 Src/WinPT.cpp:550 Src/WinPT.cpp:567
-#: Src/wptErrors.cpp:140 Src/wptGPG.cpp:952 Src/wptGPG.cpp:963
-#: Src/wptGPG.cpp:972 Src/wptGPG.cpp:982 Src/wptMainProc.cpp:345
-#: Src/wptMainProc.cpp:531
+#: Src/WinPT.cpp:109 Src/WinPT.cpp:143 Src/WinPT.cpp:173 Src/WinPT.cpp:223
+#: Src/WinPT.cpp:227 Src/WinPT.cpp:337 Src/WinPT.cpp:344 Src/WinPT.cpp:386
+#: Src/WinPT.cpp:414 Src/WinPT.cpp:423 Src/WinPT.cpp:427 Src/WinPT.cpp:444
+#: Src/WinPT.cpp:512 Src/WinPT.cpp:525 Src/WinPT.cpp:574 Src/WinPT.cpp:595
+#: Src/WinPT.cpp:612 Src/wptErrors.cpp:140 Src/wptGPG.cpp:889
+#: Src/wptGPG.cpp:900 Src/wptGPG.cpp:909 Src/wptGPG.cpp:919
+#: Src/wptMainProc.cpp:345 Src/wptMainProc.cpp:531
 msgid "WinPT Error"
 msgstr ""
 
-#: Src/WinPT.cpp:130
+#: Src/WinPT.cpp:142
+msgid "Could not create GPG home directory"
+msgstr ""
+
+#: Src/WinPT.cpp:172
 msgid "No useable secret key found."
 msgstr ""
 
-#: Src/WinPT.cpp:180
+#: Src/WinPT.cpp:222
 msgid "Could not read GnuPG version."
 msgstr ""
 
-#: Src/WinPT.cpp:186
+#: Src/WinPT.cpp:228
 #, c-format
 msgid ""
 "Sorry, you need a newer GPG version.\n"
 "GPG version %d.%d.%d required GPG version "
 msgstr ""
 
-#: Src/WinPT.cpp:218 Src/wptKeyManagerDlg.cpp:803 Src/wptKeyserverDlg.cpp:55
+#: Src/WinPT.cpp:260 Src/wptKeyManagerDlg.cpp:860 Src/wptKeyserverDlg.cpp:55
 #: Src/wptKeyserverDlg.cpp:184 Src/wptKeyserverDlg.cpp:192
 #: Src/wptKeyserverDlg.cpp:208 Src/wptKeyserverDlg.cpp:354
 #: Src/wptKeyserverDlg.cpp:359 Src/wptKeyserverDlg.cpp:489
@@ -56,15 +60,15 @@
 msgid "Keyserver"
 msgstr ""
 
-#: Src/WinPT.cpp:293
+#: Src/WinPT.cpp:336
 msgid "Cryptographic selftest failed."
 msgstr ""
 
-#: Src/WinPT.cpp:300
+#: Src/WinPT.cpp:343
 msgid "A newer GPGME version is needed; at least "
 msgstr ""
 
-#: Src/WinPT.cpp:341
+#: Src/WinPT.cpp:387
 #, c-format
 msgid ""
 "GPG home directory is not set correctly.\n"
@@ -72,25 +76,25 @@
 "%s."
 msgstr ""
 
-#: Src/WinPT.cpp:345
+#: Src/WinPT.cpp:391
 msgid "Select GPG Public Keyring"
 msgstr ""
 
-#: Src/WinPT.cpp:346 Src/wptGPG.cpp:950 Src/wptGPG.cpp:970
+#: Src/WinPT.cpp:392 Src/wptGPG.cpp:887 Src/wptGPG.cpp:907
 msgid "GPG Keyrings (*.gpg)"
 msgstr ""
 
-#: Src/WinPT.cpp:367
+#: Src/WinPT.cpp:413
 msgid "GPG home directory could not be determited."
 msgstr ""
 
-#: Src/WinPT.cpp:375
+#: Src/WinPT.cpp:421
 msgid ""
 "Could not find the GPG binary (gpg.exe).\n"
 "Do you want to start the GPG preferences to correct  this problem?"
 msgstr ""
 
-#: Src/WinPT.cpp:390
+#: Src/WinPT.cpp:436
 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"
@@ -98,32 +102,32 @@
 "Continue if you want that WinPT offers you more choices.\n"
 msgstr ""
 
-#: Src/WinPT.cpp:421 Src/wptFileManagerDlg.cpp:478
+#: Src/WinPT.cpp:467 Src/wptFileManagerDlg.cpp:478
 #: Src/wptFileManagerDlg.cpp:792
 msgid "Wipe Free Space"
 msgstr ""
 
-#: Src/WinPT.cpp:465
+#: Src/WinPT.cpp:511
 msgid "Could not register window class"
 msgstr ""
 
-#: Src/WinPT.cpp:479
+#: Src/WinPT.cpp:525
 msgid "Could not create window"
 msgstr ""
 
-#: Src/WinPT.cpp:548
+#: Src/WinPT.cpp:593
 msgid ""
 "The keycache was not initialized or is empty.\n"
 "Please check your GPG config (keyrings, pathes...)"
 msgstr ""
 
-#: Src/WinPT.cpp:551
+#: Src/WinPT.cpp:596
 msgid ""
 "It seems that GPG is not set properly.\n"
 "Do you want to start the GPG preferences dialog?"
 msgstr ""
 
-#: Src/WinPT.cpp:568
+#: Src/WinPT.cpp:613
 #, c-format
 msgid ""
 "Default key from the GPG options file could not be found.\n"
@@ -140,7 +144,7 @@
 msgid "About GnuPG"
 msgstr ""
 
-#: Src/wptAboutDlgs.cpp:93 Src/wptKeyManagerDlg.cpp:1434
+#: Src/wptAboutDlgs.cpp:93 Src/wptKeyManagerDlg.cpp:1517
 #: Src/wptMainProc.cpp:575
 msgid "About WinPT"
 msgstr ""
@@ -176,8 +180,8 @@
 msgid "&About GPG..."
 msgstr ""
 
-#: Src/wptAboutDlgs.cpp:111 Src/wptKeyEditDlgs.cpp:1780
-#: Src/wptKeyManagerDlg.cpp:809
+#: Src/wptAboutDlgs.cpp:111 Src/wptKeyEditDlgs.cpp:1802
+#: Src/wptKeyManagerDlg.cpp:866
 msgid "&Help"
 msgstr ""
 
@@ -256,7 +260,7 @@
 "Still proceed?"
 msgstr ""
 
-#: Src/wptCardDlg.cpp:600 Src/wptKeyEditDlgs.cpp:438
+#: Src/wptCardDlg.cpp:600 Src/wptKeyEditDlgs.cpp:459
 msgid "&Name"
 msgstr ""
 
@@ -272,7 +276,7 @@
 msgid "Off-card passphrase"
 msgstr ""
 
-#: Src/wptCardDlg.cpp:604 Src/wptKeyEditDlgs.cpp:575 Src/wptKeygenDlg.cpp:392
+#: Src/wptCardDlg.cpp:604 Src/wptKeyEditDlgs.cpp:596 Src/wptKeygenDlg.cpp:392
 msgid "&Never"
 msgstr ""
 
@@ -280,7 +284,7 @@
 msgid "Email &address"
 msgstr ""
 
-#: Src/wptCardDlg.cpp:606 Src/wptKeyManagerDlg.cpp:1328
+#: Src/wptCardDlg.cpp:606 Src/wptKeyManagerDlg.cpp:1411
 msgid "Card Key Generation"
 msgstr ""
 
@@ -308,7 +312,7 @@
 msgid "Please use plain ASCII charset for the fields."
 msgstr ""
 
-#: Src/wptCardDlg.cpp:681 Src/wptKeyEditDlgs.cpp:1275
+#: Src/wptCardDlg.cpp:681 Src/wptKeyEditDlgs.cpp:1296
 msgid "The date you have chosen lies in the past."
 msgstr ""
 
@@ -395,8 +399,8 @@
 
 #: Src/wptClipDecryptDlg.cpp:166 Src/wptClipEncryptDlg.cpp:208
 #: Src/wptClipSignDlg.cpp:119 Src/wptClipSignDlg.cpp:231
-#: Src/wptClipSignEncDlg.cpp:199 Src/wptKeyManager.cpp:292
-#: Src/wptKeyManager.cpp:666 Src/wptKeyManager.cpp:904 Src/wptSymEnc.cpp:90
+#: Src/wptClipSignEncDlg.cpp:199 Src/wptKeyManager.cpp:317
+#: Src/wptKeyManager.cpp:691 Src/wptKeyManager.cpp:921 Src/wptSymEnc.cpp:90
 msgid "GnuPG Status: Finished"
 msgstr ""
 
@@ -491,7 +495,7 @@
 msgid "Add quotes"
 msgstr ""
 
-#: Src/wptClipEditDlg.cpp:202 Src/wptKeyEditDlgs.cpp:1779
+#: Src/wptClipEditDlg.cpp:202 Src/wptKeyEditDlgs.cpp:1801
 #: Src/wptKeyserverDlg.cpp:446 Src/wptMDSumDlg.cpp:87
 #: Src/wptOwnertrustDlg.cpp:103
 msgid "&Close"
@@ -516,8 +520,8 @@
 #: Src/wptCommonDlg.cpp:66 Src/wptFileManagerDlg.cpp:84
 #: Src/wptFileManagerDlg.cpp:198 Src/wptFileManagerDlg.cpp:275
 #: Src/wptFileSaveDlg.cpp:58 Src/wptFirstRunDlg.cpp:50
-#: Src/wptKeyEditDlgs.cpp:272 Src/wptKeyEditDlgs.cpp:366
-#: Src/wptKeyEditDlgs.cpp:441 Src/wptKeyEditDlgs.cpp:576
+#: Src/wptKeyEditDlgs.cpp:288 Src/wptKeyEditDlgs.cpp:388
+#: Src/wptKeyEditDlgs.cpp:462 Src/wptKeyEditDlgs.cpp:597
 #: Src/wptKeyEditOwnertrustDlg.cpp:67 Src/wptKeygenDlg.cpp:394
 #: Src/wptKeygenDlg.cpp:597 Src/wptKeyRevokeDlg.cpp:90
 #: Src/wptKeyserverSearchDlg.cpp:63 Src/wptKeysignDlg.cpp:258
@@ -540,7 +544,7 @@
 msgstr ""
 
 #: Src/wptClipImportDlg.cpp:88 Src/wptFileManagerDlg.cpp:197
-#: Src/wptFileManagerDlg.cpp:203 Src/wptKeyManager.cpp:443
+#: Src/wptFileManagerDlg.cpp:203 Src/wptKeyManager.cpp:468
 msgid "Key Import"
 msgstr ""
 
@@ -561,7 +565,7 @@
 #: Src/wptFileManager.cpp:1662 Src/wptImportList.cpp:414
 #: Src/wptImportList.cpp:421 Src/wptImportList.cpp:430
 #: Src/wptImportList.cpp:438 Src/wptImportList.cpp:447
-#: Src/wptKeyManager.cpp:550 Src/wptKeyserverDlg.cpp:217
+#: Src/wptKeyManager.cpp:575 Src/wptKeyserverDlg.cpp:217
 msgid "Import"
 msgstr ""
 
@@ -609,7 +613,7 @@
 msgid "Signing key:"
 msgstr ""
 
-#: Src/wptClipSignEncDlg.cpp:168 Src/wptKeylist.cpp:1111
+#: Src/wptClipSignEncDlg.cpp:168 Src/wptKeylist.cpp:1121
 msgid "No key was selected."
 msgstr ""
 
@@ -668,30 +672,30 @@
 msgid "Please enter a valid URL."
 msgstr ""
 
-#: Src/wptCommonDlg.cpp:123 Src/wptKeyEditDlgs.cpp:685
-#: Src/wptKeyEditDlgs.cpp:756 Src/wptKeyEditDlgs.cpp:792
-#: Src/wptKeyEditDlgs.cpp:804 Src/wptKeyEditDlgs.cpp:872
-#: Src/wptKeyEditDlgs.cpp:879 Src/wptKeyEditDlgs.cpp:897
-#: Src/wptKeyEditDlgs.cpp:944 Src/wptKeyEditDlgs.cpp:949
-#: Src/wptKeyEditDlgs.cpp:1040 Src/wptKeyEditDlgs.cpp:1046
-#: Src/wptKeyEditDlgs.cpp:1198 Src/wptKeyEditDlgs.cpp:1202
-#: Src/wptKeyEditDlgs.cpp:1206 Src/wptKeyEditDlgs.cpp:1211
-#: Src/wptKeyEditDlgs.cpp:1247 Src/wptKeyEditDlgs.cpp:1251
-#: Src/wptKeyEditDlgs.cpp:1261 Src/wptKeyEditDlgs.cpp:1276
-#: Src/wptKeyEditDlgs.cpp:1280 Src/wptKeyEditDlgs.cpp:1320
-#: Src/wptKeyEditDlgs.cpp:1325 Src/wptKeyEditDlgs.cpp:1332
-#: Src/wptKeyEditDlgs.cpp:1338 Src/wptKeyEditDlgs.cpp:1343
-#: Src/wptKeyEditDlgs.cpp:1384 Src/wptKeyEditDlgs.cpp:1389
-#: Src/wptKeyEditDlgs.cpp:1395 Src/wptKeyEditDlgs.cpp:1402
-#: Src/wptKeyEditDlgs.cpp:1405 Src/wptKeyEditDlgs.cpp:1442
-#: Src/wptKeyEditDlgs.cpp:1450 Src/wptKeyEditDlgs.cpp:1484
-#: Src/wptKeyEditDlgs.cpp:1492 Src/wptKeyEditDlgs.cpp:1589
-#: Src/wptKeyEditDlgs.cpp:1622 Src/wptKeyEditDlgs.cpp:1647
-#: Src/wptKeyEditDlgs.cpp:1651 Src/wptKeyEditDlgs.cpp:1660
-#: Src/wptKeyEditDlgs.cpp:1760 Src/wptKeyEditDlgs.cpp:1770
-#: Src/wptKeyEditDlgs.cpp:1781 Src/wptKeyEditDlgs.cpp:1811
-#: Src/wptKeyEditDlgs.cpp:1817 Src/wptKeyManagerDlg.cpp:996
-#: Src/wptKeyManagerDlg.cpp:1461
+#: Src/wptCommonDlg.cpp:123 Src/wptKeyEditDlgs.cpp:706
+#: Src/wptKeyEditDlgs.cpp:777 Src/wptKeyEditDlgs.cpp:813
+#: Src/wptKeyEditDlgs.cpp:825 Src/wptKeyEditDlgs.cpp:893
+#: Src/wptKeyEditDlgs.cpp:900 Src/wptKeyEditDlgs.cpp:918
+#: Src/wptKeyEditDlgs.cpp:965 Src/wptKeyEditDlgs.cpp:970
+#: Src/wptKeyEditDlgs.cpp:1061 Src/wptKeyEditDlgs.cpp:1067
+#: Src/wptKeyEditDlgs.cpp:1219 Src/wptKeyEditDlgs.cpp:1223
+#: Src/wptKeyEditDlgs.cpp:1227 Src/wptKeyEditDlgs.cpp:1232
+#: Src/wptKeyEditDlgs.cpp:1268 Src/wptKeyEditDlgs.cpp:1272
+#: Src/wptKeyEditDlgs.cpp:1282 Src/wptKeyEditDlgs.cpp:1297
+#: Src/wptKeyEditDlgs.cpp:1301 Src/wptKeyEditDlgs.cpp:1341
+#: Src/wptKeyEditDlgs.cpp:1346 Src/wptKeyEditDlgs.cpp:1353
+#: Src/wptKeyEditDlgs.cpp:1359 Src/wptKeyEditDlgs.cpp:1364
+#: Src/wptKeyEditDlgs.cpp:1405 Src/wptKeyEditDlgs.cpp:1410
+#: Src/wptKeyEditDlgs.cpp:1416 Src/wptKeyEditDlgs.cpp:1423
+#: Src/wptKeyEditDlgs.cpp:1426 Src/wptKeyEditDlgs.cpp:1463
+#: Src/wptKeyEditDlgs.cpp:1471 Src/wptKeyEditDlgs.cpp:1505
+#: Src/wptKeyEditDlgs.cpp:1513 Src/wptKeyEditDlgs.cpp:1611
+#: Src/wptKeyEditDlgs.cpp:1644 Src/wptKeyEditDlgs.cpp:1669
+#: Src/wptKeyEditDlgs.cpp:1673 Src/wptKeyEditDlgs.cpp:1682
+#: Src/wptKeyEditDlgs.cpp:1782 Src/wptKeyEditDlgs.cpp:1792
+#: Src/wptKeyEditDlgs.cpp:1803 Src/wptKeyEditDlgs.cpp:1832
+#: Src/wptKeyEditDlgs.cpp:1838 Src/wptKeyManagerDlg.cpp:889
+#: Src/wptKeyManagerDlg.cpp:1544
 msgid "Key Edit"
 msgstr ""
 
@@ -978,12 +982,12 @@
 "Do you want to disable it?"
 msgstr ""
 
-#: Src/wptFileManager.cpp:381 Src/wptKeyEditDlgs.cpp:931
+#: Src/wptFileManager.cpp:381 Src/wptKeyEditDlgs.cpp:952
 #: Src/wptVerifyList.cpp:88 Src/wptVerifyList.cpp:96
 msgid "Status"
 msgstr ""
 
-#: Src/wptFileManager.cpp:382 Src/wptKeyEditDlgs.cpp:1032
+#: Src/wptFileManager.cpp:382 Src/wptKeyEditDlgs.cpp:1053
 #: Src/wptKeyRevokersDlg.cpp:52 Src/wptMDSumDlg.cpp:57
 #: Src/wptVerifyList.cpp:87
 msgid "Name"
@@ -1104,7 +1108,7 @@
 msgid "Invalid file name. Exit"
 msgstr ""
 
-#: Src/wptFileManager.cpp:1659 Src/wptKeyManager.cpp:547
+#: Src/wptFileManager.cpp:1659 Src/wptKeyManager.cpp:572
 msgid ""
 "Key without a self signature was dectected!\n"
 "(This key is NOT usable for encryption, etc)\n"
@@ -1112,8 +1116,8 @@
 "Cannot import these key(s)!"
 msgstr ""
 
-#: Src/wptFileManager.cpp:1704 Src/wptKeyManager.cpp:275
-#: Src/wptKeyManager.cpp:311 Src/wptKeyManager.cpp:346
+#: Src/wptFileManager.cpp:1704 Src/wptKeyManager.cpp:300
+#: Src/wptKeyManager.cpp:336 Src/wptKeyManager.cpp:371
 msgid "No key was selected for export."
 msgstr ""
 
@@ -1122,13 +1126,13 @@
 msgid "Export"
 msgstr ""
 
-#: Src/wptFileManager.cpp:1712 Src/wptKeyManagerDlg.cpp:1394
-#: Src/wptKeyManagerDlg.cpp:1426
+#: Src/wptFileManager.cpp:1712 Src/wptKeyManagerDlg.cpp:1477
+#: Src/wptKeyManagerDlg.cpp:1509
 msgid "Choose Name for Key File"
 msgstr ""
 
-#: Src/wptFileManager.cpp:1731 Src/wptKeyEditDlgs.cpp:912
-#: Src/wptKeyEditDlgs.cpp:1228 Src/wptKeyEditDlgs.cpp:1299
+#: Src/wptFileManager.cpp:1731 Src/wptKeyEditDlgs.cpp:933
+#: Src/wptKeyEditDlgs.cpp:1249 Src/wptKeyEditDlgs.cpp:1320
 #: Src/wptKeyserverDlg.cpp:95
 msgid "GnuPG status"
 msgstr ""
@@ -1192,7 +1196,7 @@
 msgstr ""
 
 #: Src/wptFileManagerDlg.cpp:203 Src/wptFileStatDlg.cpp:266
-#: Src/wptKeyManager.cpp:421
+#: Src/wptKeyManager.cpp:446
 msgid "No valid OpenPGP data found."
 msgstr ""
 
@@ -1217,13 +1221,13 @@
 msgid "&Cleartext Signature"
 msgstr ""
 
-#: Src/wptFileManagerDlg.cpp:320 Src/wptKeyEditDlgs.cpp:1202
-#: Src/wptKeyEditDlgs.cpp:1251 Src/wptKeyEditDlgs.cpp:1325
-#: Src/wptKeyManager.cpp:585 Src/wptKeyManager.cpp:686
-#: Src/wptKeyManager.cpp:724 Src/wptKeyManagerDlg.cpp:1165
-#: Src/wptKeyManagerDlg.cpp:1185 Src/wptKeyManagerDlg.cpp:1218
-#: Src/wptKeyManagerDlg.cpp:1237 Src/wptKeyManagerDlg.cpp:1253
-#: Src/wptKeyManagerDlg.cpp:1385 Src/wptKeyManagerDlg.cpp:1403
+#: Src/wptFileManagerDlg.cpp:320 Src/wptKeyEditDlgs.cpp:1223
+#: Src/wptKeyEditDlgs.cpp:1272 Src/wptKeyEditDlgs.cpp:1346
+#: Src/wptKeyManager.cpp:612 Src/wptKeyManager.cpp:710
+#: Src/wptKeyManager.cpp:746 Src/wptKeyManagerDlg.cpp:1249
+#: Src/wptKeyManagerDlg.cpp:1268 Src/wptKeyManagerDlg.cpp:1301
+#: Src/wptKeyManagerDlg.cpp:1320 Src/wptKeyManagerDlg.cpp:1336
+#: Src/wptKeyManagerDlg.cpp:1468 Src/wptKeyManagerDlg.cpp:1486
 #: Src/wptKeyserverSearchDlg.cpp:127
 msgid "Please select a key."
 msgstr ""
@@ -1241,17 +1245,17 @@
 msgid "File Manager (use drag & drop to add files)"
 msgstr ""
 
-#: Src/wptFileManagerDlg.cpp:457 Src/wptKeyManagerDlg.cpp:775
+#: Src/wptFileManagerDlg.cpp:457 Src/wptKeyManagerDlg.cpp:831
 #: Src/wptOwnertrustDlg.cpp:98
 msgid "File"
 msgstr ""
 
-#: Src/wptFileManagerDlg.cpp:458 Src/wptKeyManagerDlg.cpp:776
-#: Src/wptKeyManagerDlg.cpp:780 Src/wptKeyManagerDlg.cpp:791
+#: Src/wptFileManagerDlg.cpp:458 Src/wptKeyManagerDlg.cpp:832
+#: Src/wptKeyManagerDlg.cpp:837 Src/wptKeyManagerDlg.cpp:848
 msgid "Edit"
 msgstr ""
 
-#: Src/wptFileManagerDlg.cpp:459 Src/wptKeyManagerDlg.cpp:777
+#: Src/wptFileManagerDlg.cpp:459 Src/wptKeyManagerDlg.cpp:833
 msgid "View"
 msgstr ""
 
@@ -1271,8 +1275,8 @@
 msgid "&Decrypt"
 msgstr ""
 
-#: Src/wptFileManagerDlg.cpp:464 Src/wptKeyManagerDlg.cpp:792
-#: Src/wptKeyManagerDlg.cpp:999
+#: Src/wptFileManagerDlg.cpp:464 Src/wptKeyManagerDlg.cpp:849
+#: Src/wptKeyManagerDlg.cpp:892
 msgid "&Sign"
 msgstr ""
 
@@ -1416,26 +1420,26 @@
 msgid "&Specify a new GnuPG home directory"
 msgstr ""
 
-#: Src/wptGPG.cpp:814
+#: Src/wptGPG.cpp:808
 msgid ""
 "The selected keyring has the read-only file\n"
 "attribute. In this state you do not have write\n"
 "access. Do you want to remove the attribute?"
 msgstr ""
 
-#: Src/wptGPG.cpp:817
+#: Src/wptGPG.cpp:811
 msgid "GPG Information"
 msgstr ""
 
-#: Src/wptGPG.cpp:821
+#: Src/wptGPG.cpp:815
 msgid "Could not reset read-only state."
 msgstr ""
 
-#: Src/wptGPG.cpp:822 Src/wptGPG.cpp:1154 Src/wptGPG.cpp:1163
+#: Src/wptGPG.cpp:816 Src/wptGPG.cpp:1096 Src/wptGPG.cpp:1105
 msgid "GPG Error"
 msgstr ""
 
-#: Src/wptGPG.cpp:834
+#: Src/wptGPG.cpp:828
 msgid ""
 "You do not have file access to modify the contents of\n"
 "one or both of the selected keyrings.\n"
@@ -1444,77 +1448,75 @@
 "caused by another program which already opened the files.\n"
 msgstr ""
 
-#: Src/wptGPG.cpp:839
+#: Src/wptGPG.cpp:833
 msgid "GPG Warning"
 msgstr ""
 
-#: Src/wptGPG.cpp:866 Src/wptGPGPrefsDlg.cpp:118 Src/wptGPGPrefsDlg.cpp:124
-#: Src/wptGPGPrefsDlg.cpp:132 Src/wptGPGPrefsDlg.cpp:142
-#: Src/wptGPGPrefsDlg.cpp:152 Src/wptGPGPrefsDlg.cpp:164
-#: Src/wptGPGPrefsDlg.cpp:168 Src/wptGPGPrefsDlg.cpp:172
-#: Src/wptGPGPrefsDlg.cpp:176 Src/wptGPGPrefsDlg.cpp:181
-#: Src/wptGPGPrefsDlg.cpp:192 Src/wptKeyEditDlgs.cpp:1597
-#: Src/wptKeyManagerDlg.cpp:802 Src/wptMainProc.cpp:432
-#: Src/wptPreferencesDlg.cpp:209 Src/wptPreferencesDlg.cpp:258
-#: Src/wptPreferencesDlg.cpp:269 Src/wptPreferencesDlg.cpp:281
-#: Src/wptPreferencesDlg.cpp:294 Src/wptPreferencesDlg.cpp:340
-#: Src/wptRegistry.cpp:590
+#: Src/wptGPG.cpp:857 Src/wptGPGPrefsDlg.cpp:177 Src/wptGPGPrefsDlg.cpp:183
+#: Src/wptGPGPrefsDlg.cpp:189 Src/wptGPGPrefsDlg.cpp:195
+#: Src/wptGPGPrefsDlg.cpp:200 Src/wptGPGPrefsDlg.cpp:205
+#: Src/wptGPGPrefsDlg.cpp:210 Src/wptGPGPrefsDlg.cpp:224
+#: Src/wptKeyEditDlgs.cpp:1618 Src/wptKeyManagerDlg.cpp:859
+#: Src/wptMainProc.cpp:432 Src/wptPreferencesDlg.cpp:209
+#: Src/wptPreferencesDlg.cpp:258 Src/wptPreferencesDlg.cpp:269
+#: Src/wptPreferencesDlg.cpp:281 Src/wptPreferencesDlg.cpp:294
+#: Src/wptPreferencesDlg.cpp:340 Src/wptRegistry.cpp:608
 msgid "Preferences"
 msgstr ""
 
-#: Src/wptGPG.cpp:867
+#: Src/wptGPG.cpp:858
 #, c-format
 msgid ""
 "%s does not exit.\n"
 "Do you want to create this directory?"
 msgstr ""
 
-#: Src/wptGPG.cpp:949
+#: Src/wptGPG.cpp:886
 msgid "Please choose your public keyring"
 msgstr ""
 
-#: Src/wptGPG.cpp:952 Src/wptGPG.cpp:972
+#: Src/wptGPG.cpp:889 Src/wptGPG.cpp:909
 msgid "No keyring was chosen. Exit."
 msgstr ""
 
-#: Src/wptGPG.cpp:958
+#: Src/wptGPG.cpp:895
 msgid "Overwrite old public keyring?"
 msgstr ""
 
-#: Src/wptGPG.cpp:963 Src/wptGPG.cpp:982
+#: Src/wptGPG.cpp:900 Src/wptGPG.cpp:919
 msgid "Could not copy file."
 msgstr ""
 
-#: Src/wptGPG.cpp:969
+#: Src/wptGPG.cpp:906
 msgid "Please choose your secret keyring"
 msgstr ""
 
-#: Src/wptGPG.cpp:977
+#: Src/wptGPG.cpp:914
 msgid "Overwrite old secret keyring?"
 msgstr ""
 
-#: Src/wptGPG.cpp:1027 Src/wptGPG.cpp:1113 Src/wptGPG.cpp:1126
+#: Src/wptGPG.cpp:964 Src/wptGPG.cpp:1054 Src/wptGPG.cpp:1067
 msgid "Backup"
 msgstr ""
 
-#: Src/wptGPG.cpp:1027
+#: Src/wptGPG.cpp:964
 #, c-format
 msgid "Backup keyring \"%s\" failed"
 msgstr ""
 
-#: Src/wptGPG.cpp:1114
+#: Src/wptGPG.cpp:1055
 #, c-format
 msgid ""
 "The backup drive '%s' does not seems to accessable.\n"
 "Please insert/check the drive to continue."
 msgstr ""
 
-#: Src/wptGPG.cpp:1126
+#: Src/wptGPG.cpp:1067
 #, c-format
 msgid "Invalid backup mode %d"
 msgstr ""
 
-#: Src/wptGPG.cpp:1154
+#: Src/wptGPG.cpp:1095
 msgid "No GPG error description available."
 msgstr ""
 
@@ -1585,93 +1587,79 @@
 "Are you sure?"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:64 Src/wptKeyManagerDlg.cpp:1360
+#: Src/wptGPGPrefsDlg.cpp:127 Src/wptKeyManagerDlg.cpp:1443
 #: Src/wptMainProc.cpp:587
 msgid "GnuPG Preferences"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:66
+#: Src/wptGPGPrefsDlg.cpp:129
 msgid "GnuPG home directory  (where both keyrings are located)"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:68
-msgid "GnuPG config file (default: use gpg.conf)"
-msgstr ""
-
-#: Src/wptGPGPrefsDlg.cpp:70
+#: Src/wptGPGPrefsDlg.cpp:131
 msgid "GnuPG exe file location (full path with added gpg.exe)"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:72
+#: Src/wptGPGPrefsDlg.cpp:133
 msgid "Locale directory (to access the translation files)"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:73
+#: Src/wptGPGPrefsDlg.cpp:134
 msgid "Ask for the signature class during key sign"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:74
+#: Src/wptGPGPrefsDlg.cpp:135
 msgid "Comment in armored files"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:75
+#: Src/wptGPGPrefsDlg.cpp:136
 msgid "Encrypt to this key"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:76
+#: Src/wptGPGPrefsDlg.cpp:137
 msgid "General GPG options"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:118
+#: Src/wptGPGPrefsDlg.cpp:176
 msgid "Please enter the GnuPG home directory."
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:130
-msgid ""
-"Could not find GPG config file.\n"
-"Do you want to create a config file?"
-msgstr ""
-
-#: Src/wptGPGPrefsDlg.cpp:152
-msgid "Could not save 'OptFile' in the registry."
-msgstr ""
-
-#: Src/wptGPGPrefsDlg.cpp:164
+#: Src/wptGPGPrefsDlg.cpp:188
 msgid "Could not save 'HomeDir' in the registry."
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:168
+#: Src/wptGPGPrefsDlg.cpp:194
 msgid "Please enter where GPG.exe is located."
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:172
+#: Src/wptGPGPrefsDlg.cpp:199
 msgid "Could not find the GPG program in this directory."
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:176
+#: Src/wptGPGPrefsDlg.cpp:204
 msgid "Could not save 'gpgProgram' in the registry"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:192
+#: Src/wptGPGPrefsDlg.cpp:223
 msgid "Could not get GPG config file"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:225
+#: Src/wptGPGPrefsDlg.cpp:256
 msgid "Choose GPG home directory"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:242
+#: Src/wptGPGPrefsDlg.cpp:275
+msgid "Choose locale directory"
+msgstr ""
+
+#: Src/wptGPGPrefsDlg.cpp:281
 msgid "Choose GPG binary"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:243
+#: Src/wptGPGPrefsDlg.cpp:282
 msgid "Executable Files (*.exe)"
 msgstr ""
 
-#: Src/wptGPGPrefsDlg.cpp:250
-msgid "Choose GPG config file"
-msgstr ""
-
 #: Src/wptGroupsDlg.cpp:53
 msgid "New Group"
 msgstr ""
@@ -1720,52 +1708,52 @@
 msgid "Unknown Hotkey"
 msgstr ""
 
-#: Src/wptImagelist.cpp:50 Src/wptKeyManager.cpp:142 Src/wptKeyManager.cpp:147
-#: Src/wptKeyManager.cpp:197 Src/wptKeyManager.cpp:276
-#: Src/wptKeyManager.cpp:283 Src/wptKeyManager.cpp:312
-#: Src/wptKeyManager.cpp:317 Src/wptKeyManager.cpp:324
-#: Src/wptKeyManager.cpp:326 Src/wptKeyManager.cpp:347
-#: Src/wptKeyManager.cpp:364 Src/wptKeyManager.cpp:368
-#: Src/wptKeyManager.cpp:374 Src/wptKeyManager.cpp:392
-#: Src/wptKeyManager.cpp:414 Src/wptKeyManager.cpp:419
-#: Src/wptKeyManager.cpp:422 Src/wptKeyManager.cpp:427
-#: Src/wptKeyManager.cpp:433 Src/wptKeyManager.cpp:438
-#: Src/wptKeyManager.cpp:524 Src/wptKeyManager.cpp:532
-#: Src/wptKeyManager.cpp:585 Src/wptKeyManager.cpp:612
-#: Src/wptKeyManager.cpp:623 Src/wptKeyManager.cpp:635
-#: Src/wptKeyManager.cpp:661 Src/wptKeyManager.cpp:686
-#: Src/wptKeyManager.cpp:691 Src/wptKeyManager.cpp:719
-#: Src/wptKeyManager.cpp:724 Src/wptKeyManager.cpp:750
-#: Src/wptKeyManager.cpp:792 Src/wptKeyManager.cpp:798
-#: Src/wptKeyManager.cpp:902 Src/wptKeyManager.cpp:932
-#: Src/wptKeyManagerDlg.cpp:773 Src/wptKeyManagerDlg.cpp:835
-#: Src/wptKeyManagerDlg.cpp:1138 Src/wptKeyManagerDlg.cpp:1166
-#: Src/wptKeyManagerDlg.cpp:1185 Src/wptKeyManagerDlg.cpp:1192
-#: Src/wptKeyManagerDlg.cpp:1202 Src/wptKeyManagerDlg.cpp:1218
-#: Src/wptKeyManagerDlg.cpp:1224 Src/wptKeyManagerDlg.cpp:1237
-#: Src/wptKeyManagerDlg.cpp:1253 Src/wptKeyManagerDlg.cpp:1285
-#: Src/wptKeyManagerDlg.cpp:1324 Src/wptKeyManagerDlg.cpp:1385
-#: Src/wptKeyManagerDlg.cpp:1403 Src/wptKeyManagerDlg.cpp:1408
-#: Src/wptKeyManagerDlg.cpp:1413 Src/wptKeyManagerDlg.cpp:1487
-#: Src/wptKeyManagerDlg.cpp:1648 Src/wptKeysigDlg.cpp:88
-#: Src/wptKeysigDlg.cpp:99 Src/wptKeysigDlg.cpp:320 Src/wptKeysigDlg.cpp:326
-#: Src/wptKeysigDlg.cpp:370 Src/wptKeysigDlg.cpp:429 Src/wptMainProc.cpp:400
+#: Src/wptImagelist.cpp:50 Src/wptKeyManager.cpp:166 Src/wptKeyManager.cpp:171
+#: Src/wptKeyManager.cpp:222 Src/wptKeyManager.cpp:301
+#: Src/wptKeyManager.cpp:308 Src/wptKeyManager.cpp:337
+#: Src/wptKeyManager.cpp:342 Src/wptKeyManager.cpp:349
+#: Src/wptKeyManager.cpp:351 Src/wptKeyManager.cpp:372
+#: Src/wptKeyManager.cpp:389 Src/wptKeyManager.cpp:393
+#: Src/wptKeyManager.cpp:399 Src/wptKeyManager.cpp:417
+#: Src/wptKeyManager.cpp:439 Src/wptKeyManager.cpp:444
+#: Src/wptKeyManager.cpp:447 Src/wptKeyManager.cpp:452
+#: Src/wptKeyManager.cpp:458 Src/wptKeyManager.cpp:463
+#: Src/wptKeyManager.cpp:549 Src/wptKeyManager.cpp:557
+#: Src/wptKeyManager.cpp:612 Src/wptKeyManager.cpp:639
+#: Src/wptKeyManager.cpp:649 Src/wptKeyManager.cpp:660
+#: Src/wptKeyManager.cpp:686 Src/wptKeyManager.cpp:710
+#: Src/wptKeyManager.cpp:717 Src/wptKeyManager.cpp:741
+#: Src/wptKeyManager.cpp:746 Src/wptKeyManager.cpp:772
+#: Src/wptKeyManager.cpp:809 Src/wptKeyManager.cpp:815
+#: Src/wptKeyManager.cpp:919 Src/wptKeyManager.cpp:949
+#: Src/wptKeyManagerDlg.cpp:947 Src/wptKeyManagerDlg.cpp:968
+#: Src/wptKeyManagerDlg.cpp:1222 Src/wptKeyManagerDlg.cpp:1250
+#: Src/wptKeyManagerDlg.cpp:1268 Src/wptKeyManagerDlg.cpp:1275
+#: Src/wptKeyManagerDlg.cpp:1285 Src/wptKeyManagerDlg.cpp:1301
+#: Src/wptKeyManagerDlg.cpp:1307 Src/wptKeyManagerDlg.cpp:1320
+#: Src/wptKeyManagerDlg.cpp:1336 Src/wptKeyManagerDlg.cpp:1368
+#: Src/wptKeyManagerDlg.cpp:1407 Src/wptKeyManagerDlg.cpp:1468
+#: Src/wptKeyManagerDlg.cpp:1486 Src/wptKeyManagerDlg.cpp:1491
+#: Src/wptKeyManagerDlg.cpp:1496 Src/wptKeyManagerDlg.cpp:1571
+#: Src/wptKeyManagerDlg.cpp:1732 Src/wptKeysigDlg.cpp:88
+#: Src/wptKeysigDlg.cpp:99 Src/wptKeysigDlg.cpp:321 Src/wptKeysigDlg.cpp:327
+#: Src/wptKeysigDlg.cpp:370 Src/wptKeysigDlg.cpp:432 Src/wptMainProc.cpp:400
 #: Src/wptMainProc.cpp:558
 msgid "Key Manager"
 msgstr ""
 
-#: Src/wptImportList.cpp:264 Src/wptKeyEditDlgs.cpp:209
-#: Src/wptKeyEditDlgs.cpp:1004 Src/wptKeyEditDlgs.cpp:1065
-#: Src/wptKeyEditDlgs.cpp:1337 Src/wptKeyEditDlgs.cpp:1357
-#: Src/wptKeyEditDlgs.cpp:1394 Src/wptKeyEditDlgs.cpp:1423
-#: Src/wptKeylist.cpp:363 Src/wptKeyPropsDlg.cpp:147 Src/wptKeysigDlg.cpp:136
+#: Src/wptImportList.cpp:264 Src/wptKeyEditDlgs.cpp:205
+#: Src/wptKeyEditDlgs.cpp:1025 Src/wptKeyEditDlgs.cpp:1086
+#: Src/wptKeyEditDlgs.cpp:1358 Src/wptKeyEditDlgs.cpp:1378
+#: Src/wptKeyEditDlgs.cpp:1415 Src/wptKeyEditDlgs.cpp:1444
+#: Src/wptKeylist.cpp:374 Src/wptKeyPropsDlg.cpp:146 Src/wptKeysigDlg.cpp:136
 #: Src/wptKeysigDlg.cpp:201
 msgid "Revoked"
 msgstr ""
 
-#: Src/wptImportList.cpp:266 Src/wptKeyEditDlgs.cpp:210
-#: Src/wptKeyEditDlgs.cpp:1002 Src/wptKeyEditDlgs.cpp:1258
-#: Src/wptKeylist.cpp:365 Src/wptKeyPropsDlg.cpp:144 Src/wptKeysigDlg.cpp:135
+#: Src/wptImportList.cpp:266 Src/wptKeyEditDlgs.cpp:206
+#: Src/wptKeyEditDlgs.cpp:1023 Src/wptKeyEditDlgs.cpp:1279
+#: Src/wptKeylist.cpp:376 Src/wptKeyPropsDlg.cpp:143 Src/wptKeysigDlg.cpp:135
 #: Src/wptKeysigDlg.cpp:202
 msgid "Expired"
 msgstr ""
@@ -1778,35 +1766,35 @@
 msgid "public key"
 msgstr ""
 
-#: Src/wptImportList.cpp:303 Src/wptKeyEditDlgs.cpp:1082
+#: Src/wptImportList.cpp:303 Src/wptKeyEditDlgs.cpp:1103
 msgid "Invalid user ID"
 msgstr ""
 
-#: Src/wptImportList.cpp:352 Src/wptKeylist.cpp:526 Src/wptKeylist.cpp:535
-#: Src/wptKeyManagerDlg.cpp:788 Src/wptKeyserverSearchDlg.cpp:48
+#: Src/wptImportList.cpp:352 Src/wptKeylist.cpp:536 Src/wptKeylist.cpp:545
+#: Src/wptKeyManagerDlg.cpp:845 Src/wptKeyserverSearchDlg.cpp:48
 #: Src/wptSigList.cpp:51 Src/wptVerifyList.cpp:91 Src/wptVerifyList.cpp:100
 msgid "User ID"
 msgstr ""
 
-#: Src/wptImportList.cpp:353 Src/wptKeylist.cpp:528 Src/wptKeylist.cpp:538
+#: Src/wptImportList.cpp:353 Src/wptKeylist.cpp:538 Src/wptKeylist.cpp:548
 #: Src/wptKeyserverSearchDlg.cpp:45
 msgid "Size"
 msgstr ""
 
-#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:928 Src/wptKeylist.cpp:527
-#: Src/wptKeylist.cpp:536 Src/wptKeyRevokersDlg.cpp:51
+#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:949 Src/wptKeylist.cpp:537
+#: Src/wptKeylist.cpp:546 Src/wptKeyRevokersDlg.cpp:51
 #: Src/wptKeyserverSearchDlg.cpp:46 Src/wptSigList.cpp:55
 #: Src/wptVerifyList.cpp:99
 msgid "Key ID"
 msgstr ""
 
-#: Src/wptImportList.cpp:355 Src/wptKeyEditDlgs.cpp:929
-#: Src/wptKeyEditDlgs.cpp:1034 Src/wptKeylist.cpp:542
+#: Src/wptImportList.cpp:355 Src/wptKeyEditDlgs.cpp:950
+#: Src/wptKeyEditDlgs.cpp:1055 Src/wptKeylist.cpp:552
 #: Src/wptKeyserverSearchDlg.cpp:47 Src/wptSigList.cpp:54
 msgid "Creation"
 msgstr ""
 
-#: Src/wptImportList.cpp:356 Src/wptKeylist.cpp:537
+#: Src/wptImportList.cpp:356 Src/wptKeylist.cpp:547
 msgid "Type"
 msgstr ""
 
@@ -1832,269 +1820,274 @@
 msgid "Key Cache"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:183
+#: Src/wptKeyEditDlgs.cpp:179
 msgid "Ultimate"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:198 Src/wptKeyEditDlgs.cpp:999
-#: Src/wptKeylist.cpp:222 Src/wptKeylist.cpp:324 Src/wptKeylist.cpp:884
+#: Src/wptKeyEditDlgs.cpp:194 Src/wptKeyEditDlgs.cpp:1020
+#: Src/wptKeylist.cpp:234 Src/wptKeylist.cpp:336 Src/wptKeylist.cpp:894
 msgid "Never"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:211 Src/wptKeyEditDlgs.cpp:1006
+#: Src/wptKeyEditDlgs.cpp:207 Src/wptKeyEditDlgs.cpp:1027
 msgid "OK"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:233
+#: Src/wptKeyEditDlgs.cpp:229
 msgid "user ID"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:234
+#: Src/wptKeyEditDlgs.cpp:230
 #, c-format
 msgid ""
 "Could not get key information for: \"%s\":\n"
 "%s"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:269
+#: Src/wptKeyEditDlgs.cpp:285
 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 "
 "close to 240x288 is a good size to use."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:270
+#: Src/wptKeyEditDlgs.cpp:286
 msgid ""
 "Pick an image to use for your photo ID.\n"
 "The image must be a JPEG file."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:271 Src/wptKeyEditDlgs.cpp:365
+#: Src/wptKeyEditDlgs.cpp:287 Src/wptKeyEditDlgs.cpp:387
 #: Src/wptKeysignDlg.cpp:257
 msgid "Passphrase"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:273
+#: Src/wptKeyEditDlgs.cpp:289
 msgid "Add Photo ID"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:289
+#: Src/wptKeyEditDlgs.cpp:305
 msgid "Select Image File"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:289
+#: Src/wptKeyEditDlgs.cpp:306
 msgid "JPEG Files (*.jpg, *.jpeg)"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:296 Src/wptKeyRevokeDlg.cpp:135
-msgid "Please enter a file name."
+#: Src/wptKeyEditDlgs.cpp:309 Src/wptKeyEditDlgs.cpp:319
+#: Src/wptKeyEditDlgs.cpp:325 Src/wptKeyEditDlgs.cpp:331
+#: Src/wptKeyEditDlgs.cpp:343 Src/wptKeyEditDlgs.cpp:840
+msgid "Add Photo"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:296 Src/wptKeyEditDlgs.cpp:302
-#: Src/wptKeyEditDlgs.cpp:308 Src/wptKeyEditDlgs.cpp:322
-#: Src/wptKeyEditDlgs.cpp:819
-msgid "Add Photo"
+#: Src/wptKeyEditDlgs.cpp:310
+#, c-format
+msgid "'%s' is not a valid JPEG file."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:300
+#: Src/wptKeyEditDlgs.cpp:319 Src/wptKeyRevokeDlg.cpp:135
+msgid "Please enter a file name."
+msgstr ""
+
+#: Src/wptKeyEditDlgs.cpp:323
 msgid ""
 "The JPEG is really large.\n"
 "Are you sure you want to use it?"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:308
+#: Src/wptKeyEditDlgs.cpp:331
 msgid "Please enter a passphrase."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:327
+#: Src/wptKeyEditDlgs.cpp:348
 msgid "Photo successfully added."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:327 Src/wptKeyEditDlgs.cpp:405
-#: Src/wptKeyEditDlgs.cpp:488 Src/wptKeyEditDlgs.cpp:652
-#: Src/wptKeyEditDlgs.cpp:1359 Src/wptKeyEditDlgs.cpp:1425
-#: Src/wptKeyEditDlgs.cpp:1505 Src/wptKeyEditDlgs.cpp:1678
+#: Src/wptKeyEditDlgs.cpp:349 Src/wptKeyEditDlgs.cpp:427
+#: Src/wptKeyEditDlgs.cpp:509 Src/wptKeyEditDlgs.cpp:673
+#: Src/wptKeyEditDlgs.cpp:1380 Src/wptKeyEditDlgs.cpp:1446
+#: Src/wptKeyEditDlgs.cpp:1526 Src/wptKeyEditDlgs.cpp:1700
 #: Src/wptKeygenDlg.cpp:547 Src/wptKeygenDlg.cpp:663
-#: Src/wptKeyPropsDlg.cpp:340 Src/wptKeyRevokeDlg.cpp:164
+#: Src/wptKeyPropsDlg.cpp:338 Src/wptKeyRevokeDlg.cpp:164
 #: Src/wptOwnertrustDlg.cpp:124 Src/wptOwnertrustDlg.cpp:136
 msgid "GnuPG Status"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:363
+#: Src/wptKeyEditDlgs.cpp:385
 msgid "Appointing a key as designated revoker cannot be undone."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:364
+#: Src/wptKeyEditDlgs.cpp:386
 msgid "Public key"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:367 Src/wptKeyEditDlgs.cpp:383
-#: Src/wptKeyEditDlgs.cpp:389 Src/wptKeyEditDlgs.cpp:400
-#: Src/wptKeyEditDlgs.cpp:832
+#: Src/wptKeyEditDlgs.cpp:389 Src/wptKeyEditDlgs.cpp:405
+#: Src/wptKeyEditDlgs.cpp:411 Src/wptKeyEditDlgs.cpp:422
+#: Src/wptKeyEditDlgs.cpp:853
 msgid "Add Revoker"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:383 Src/wptKeyEditDlgs.cpp:1389
-#: Src/wptKeyEditDlgs.cpp:1442 Src/wptKeyEditDlgs.cpp:1484
-#: Src/wptKeyEditDlgs.cpp:1622 Src/wptKeyEditDlgs.cpp:1651
+#: Src/wptKeyEditDlgs.cpp:405 Src/wptKeyEditDlgs.cpp:1410
+#: Src/wptKeyEditDlgs.cpp:1463 Src/wptKeyEditDlgs.cpp:1505
+#: Src/wptKeyEditDlgs.cpp:1644 Src/wptKeyEditDlgs.cpp:1673
 msgid "Please select a user ID."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:389 Src/wptKeygenDlg.cpp:475
+#: Src/wptKeyEditDlgs.cpp:411 Src/wptKeygenDlg.cpp:475
 #: Src/wptKeyRevokeDlg.cpp:143
 msgid "Please enter the passphrase."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:405
+#: Src/wptKeyEditDlgs.cpp:427
 msgid "Revoker successfully addded."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:437
+#: Src/wptKeyEditDlgs.cpp:458
 msgid "Add new User ID"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:439
+#: Src/wptKeyEditDlgs.cpp:460
 msgid "&Email"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:440
+#: Src/wptKeyEditDlgs.cpp:461
 msgid "&Comment"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:456
+#: Src/wptKeyEditDlgs.cpp:477
 msgid "Please enter a name (min. 5 chars.)"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeyEditDlgs.cpp:460
-#: Src/wptKeyEditDlgs.cpp:465 Src/wptKeyEditDlgs.cpp:469
-#: Src/wptKeyEditDlgs.cpp:486
+#: Src/wptKeyEditDlgs.cpp:477 Src/wptKeyEditDlgs.cpp:481
+#: Src/wptKeyEditDlgs.cpp:486 Src/wptKeyEditDlgs.cpp:490
+#: Src/wptKeyEditDlgs.cpp:507
 msgid "UserID"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:460
+#: Src/wptKeyEditDlgs.cpp:481
 msgid ""
 "Please enter the email address in the email field and not in the name field"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:465
+#: Src/wptKeyEditDlgs.cpp:486
 msgid "Please enter an email address."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:469
+#: Src/wptKeyEditDlgs.cpp:490
 msgid "Invalid email address."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:488
+#: Src/wptKeyEditDlgs.cpp:509
 msgid "user ID successfully added."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:571 Src/wptKeyEditDlgs.cpp:768
+#: Src/wptKeyEditDlgs.cpp:592 Src/wptKeyEditDlgs.cpp:789
 msgid "Add new Subkey"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:572
+#: Src/wptKeyEditDlgs.cpp:593
 msgid "Key type"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:573
+#: Src/wptKeyEditDlgs.cpp:594
 msgid "Size in bits"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:574
+#: Src/wptKeyEditDlgs.cpp:595
 msgid "Key expiration"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:617
+#: Src/wptKeyEditDlgs.cpp:638
 msgid "Please select one entry."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:617 Src/wptKeyEditDlgs.cpp:622
-#: Src/wptKeyEditDlgs.cpp:650 Src/wptKeyEditDlgs.cpp:752
+#: Src/wptKeyEditDlgs.cpp:638 Src/wptKeyEditDlgs.cpp:643
+#: Src/wptKeyEditDlgs.cpp:671 Src/wptKeyEditDlgs.cpp:773
 msgid "Add Subkey"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:622
+#: Src/wptKeyEditDlgs.cpp:643
 msgid "DSS uses a fixed keysize of 1024. Size changed."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:652
+#: Src/wptKeyEditDlgs.cpp:673
 msgid "Subkey successfully added."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:680 Src/wptKeyEditDlgs.cpp:752
-#: Src/wptKeyEditDlgs.cpp:819 Src/wptKeyEditDlgs.cpp:832
-#: Src/wptKeyEditDlgs.cpp:872 Src/wptKeyEditDlgs.cpp:1247
-#: Src/wptKeyEditDlgs.cpp:1320 Src/wptKeyEditDlgs.cpp:1379
-#: Src/wptKeyManagerDlg.cpp:1191
+#: Src/wptKeyEditDlgs.cpp:701 Src/wptKeyEditDlgs.cpp:773
+#: Src/wptKeyEditDlgs.cpp:840 Src/wptKeyEditDlgs.cpp:853
+#: Src/wptKeyEditDlgs.cpp:893 Src/wptKeyEditDlgs.cpp:1268
+#: Src/wptKeyEditDlgs.cpp:1341 Src/wptKeyEditDlgs.cpp:1400
+#: Src/wptKeyManagerDlg.cpp:1274
 msgid "There is no secret key available!"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:680 Src/wptKeyEditDlgs.cpp:696
+#: Src/wptKeyEditDlgs.cpp:701 Src/wptKeyEditDlgs.cpp:717
 msgid "Add user ID"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:804
+#: Src/wptKeyEditDlgs.cpp:825
 msgid "Preferred keyserver successfully set."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:877
+#: Src/wptKeyEditDlgs.cpp:898
 msgid ""
 "Cannot change passphrase because the key\n"
 "is protected with the IDEA encryption algorithm."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:884
+#: Src/wptKeyEditDlgs.cpp:905
 msgid "Current (old) Passphrase"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:888
+#: Src/wptKeyEditDlgs.cpp:909
 msgid "New Passphrase"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:895 Src/wptKeygenDlg.cpp:503
+#: Src/wptKeyEditDlgs.cpp:916 Src/wptKeygenDlg.cpp:503
 #: Src/wptPassphraseDlg.cpp:175
 msgid ""
 "The passphrase contains 8-bit characters.\n"
 "It is not suggested to use charset specific characters."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:910
+#: Src/wptKeyEditDlgs.cpp:931
 msgid "Change Passwd"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:912
+#: Src/wptKeyEditDlgs.cpp:933
 msgid "Passphrase successfully changed."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:927
+#: Src/wptKeyEditDlgs.cpp:948
 msgid "Description"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:930
+#: Src/wptKeyEditDlgs.cpp:951
 msgid "Expires"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:944 Src/wptKeyEditDlgs.cpp:1040
+#: Src/wptKeyEditDlgs.cpp:965 Src/wptKeyEditDlgs.cpp:1061
 msgid "Could not find key."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:949
+#: Src/wptKeyEditDlgs.cpp:970
 msgid "No subkey(s) found."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1031 Src/wptKeylist.cpp:530 Src/wptKeylist.cpp:540
+#: Src/wptKeyEditDlgs.cpp:1052 Src/wptKeylist.cpp:540 Src/wptKeylist.cpp:550
 msgid "Validity"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1033
+#: Src/wptKeyEditDlgs.cpp:1054
 msgid "Email"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1046
+#: Src/wptKeyEditDlgs.cpp:1067
 msgid "No user ID(s) found."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1161
+#: Src/wptKeyEditDlgs.cpp:1182
 msgid ""
 "ADDUID   \t\tadd a user ID\r\n"
 "ADDPHOTO  \t\tadd a photo ID\r\n"
@@ -2113,19 +2106,19 @@
 "ENABLE    \t\tenable a key\r\n"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1182
+#: Src/wptKeyEditDlgs.cpp:1203
 msgid "Key Edit Help"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1198
+#: Src/wptKeyEditDlgs.cpp:1219
 msgid "Primary key can not be deleted!"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1206
+#: Src/wptKeyEditDlgs.cpp:1227
 msgid "Primary subkey can not be deleted!"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1212
+#: Src/wptKeyEditDlgs.cpp:1233
 #, c-format
 msgid ""
 "\"Subkey %s.\"\n"
@@ -2136,34 +2129,34 @@
 "Do you really want to delete this subkey?"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1224
+#: Src/wptKeyEditDlgs.cpp:1245
 msgid "Delete Subkey"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1228
+#: Src/wptKeyEditDlgs.cpp:1249
 msgid "Subkey successfully deleted."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1259
+#: Src/wptKeyEditDlgs.cpp:1280
 msgid ""
 "Key already expired.\n"
 "\n"
 "Do you want to change the expiration date?"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1268 Src/wptKeyEditDlgs.cpp:1271
+#: Src/wptKeyEditDlgs.cpp:1289 Src/wptKeyEditDlgs.cpp:1292
 msgid "Key Expiration Date"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1292
+#: Src/wptKeyEditDlgs.cpp:1313
 msgid "Expire Subkey"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1298
+#: Src/wptKeyEditDlgs.cpp:1319
 msgid "Subkey expire date successfully set."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1329
+#: Src/wptKeyEditDlgs.cpp:1350
 msgid ""
 "No subkeys were found, if you want to revoke the\n"
 "whole key, please use the Key Manager command directly.\n"
@@ -2171,31 +2164,31 @@
 "This command is only available to revoke single subkeys"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1338
+#: Src/wptKeyEditDlgs.cpp:1359
 msgid "Key already revoked."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1355
+#: Src/wptKeyEditDlgs.cpp:1376
 msgid "Revoke Subkey"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1359
+#: Src/wptKeyEditDlgs.cpp:1380
 msgid "Subkey successfully revoked."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1379
+#: Src/wptKeyEditDlgs.cpp:1400
 msgid "Revoke user ID"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1384
+#: Src/wptKeyEditDlgs.cpp:1405
 msgid "Key has only one user ID."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1395
+#: Src/wptKeyEditDlgs.cpp:1416
 msgid "This user ID has been already revoked."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1400
+#: Src/wptKeyEditDlgs.cpp:1421
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2203,39 +2196,39 @@
 "Do you really want to revoke this user ID?"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1421
+#: Src/wptKeyEditDlgs.cpp:1442
 msgid "Revoke Signature"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1425
+#: Src/wptKeyEditDlgs.cpp:1446
 msgid "User ID successfully revoked"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1502
+#: Src/wptKeyEditDlgs.cpp:1523
 msgid "Primary"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1505
+#: Src/wptKeyEditDlgs.cpp:1526
 msgid "User ID successfully flagged"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1589
+#: Src/wptKeyEditDlgs.cpp:1611
 msgid "No preferences available."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1595 Src/wptKeyeditSetPrefDlg.cpp:116
-msgid "Key Preferences"
+#: Src/wptKeyEditDlgs.cpp:1617
+msgid "MDC feature"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1596
-msgid "MDC feature"
+#: Src/wptKeyEditDlgs.cpp:1619 Src/wptKeyeditSetPrefDlg.cpp:116
+msgid "Key Preferences"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1647
+#: Src/wptKeyEditDlgs.cpp:1669
 msgid "Primary user ID can not be deleted!"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1657
+#: Src/wptKeyEditDlgs.cpp:1679
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2243,55 +2236,55 @@
 "Do you really want to delete this user ID?"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1674
+#: Src/wptKeyEditDlgs.cpp:1696
 msgid "Delete user ID"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1678
+#: Src/wptKeyEditDlgs.cpp:1700
 msgid "User ID successfully deleted"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1760
+#: Src/wptKeyEditDlgs.cpp:1782
 msgid "Could not set subkey window procedure."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1770
+#: Src/wptKeyEditDlgs.cpp:1792
 msgid "Could not set user ID window procedure."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1778
+#: Src/wptKeyEditDlgs.cpp:1800
 msgid "Command>"
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1811
+#: Src/wptKeyEditDlgs.cpp:1832
 msgid "Please select a command."
 msgstr ""
 
-#: Src/wptKeyEditDlgs.cpp:1816
+#: Src/wptKeyEditDlgs.cpp:1837
 msgid "This command cannot be used with PGP 2 (v3) keys.\n"
 msgstr ""
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:55 Src/wptKeyPropsDlg.cpp:330
+#: Src/wptKeyEditOwnertrustDlg.cpp:55 Src/wptKeyPropsDlg.cpp:328
 msgid "Change Ownertrust"
 msgstr ""
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:57 Src/wptKeyPropsDlg.cpp:61
+#: Src/wptKeyEditOwnertrustDlg.cpp:57 Src/wptKeyPropsDlg.cpp:60
 msgid "Don't know"
 msgstr ""
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:58 Src/wptKeyPropsDlg.cpp:62
+#: Src/wptKeyEditOwnertrustDlg.cpp:58 Src/wptKeyPropsDlg.cpp:61
 msgid "I do NOT trust"
 msgstr ""
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:59 Src/wptKeyPropsDlg.cpp:63
+#: Src/wptKeyEditOwnertrustDlg.cpp:59 Src/wptKeyPropsDlg.cpp:62
 msgid "I trust marginally"
 msgstr ""
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:60 Src/wptKeyPropsDlg.cpp:64
+#: Src/wptKeyEditOwnertrustDlg.cpp:60 Src/wptKeyPropsDlg.cpp:63
 msgid "I trust fully"
 msgstr ""
 
-#: Src/wptKeyEditOwnertrustDlg.cpp:61 Src/wptKeyPropsDlg.cpp:66
+#: Src/wptKeyEditOwnertrustDlg.cpp:61 Src/wptKeyPropsDlg.cpp:65
 msgid "I trust ultimately"
 msgstr ""
 
@@ -2307,8 +2300,8 @@
 msgstr ""
 
 #: Src/wptKeyEditOwnertrustDlg.cpp:88 Src/wptKeyEditOwnertrustDlg.cpp:95
-#: Src/wptKeyEditOwnertrustDlg.cpp:104 Src/wptKeyManagerDlg.cpp:782
-#: Src/wptKeyManagerDlg.cpp:1445 Src/wptKeyPropsDlg.cpp:276
+#: Src/wptKeyEditOwnertrustDlg.cpp:104 Src/wptKeyManagerDlg.cpp:839
+#: Src/wptKeyManagerDlg.cpp:1528 Src/wptKeyPropsDlg.cpp:275
 #: Src/wptOwnertrustDlg.cpp:97 Src/wptOwnertrustDlg.cpp:121
 #: Src/wptOwnertrustDlg.cpp:133
 msgid "Ownertrust"
@@ -2332,7 +2325,7 @@
 #: Src/wptKeygenDlg.cpp:462 Src/wptKeygenDlg.cpp:476 Src/wptKeygenDlg.cpp:483
 #: Src/wptKeygenDlg.cpp:492 Src/wptKeygenDlg.cpp:497 Src/wptKeygenDlg.cpp:505
 #: Src/wptKeygenDlg.cpp:544 Src/wptKeygenDlg.cpp:637
-#: Src/wptKeyManagerDlg.cpp:1313 Src/wptPassphraseDlg.cpp:95
+#: Src/wptKeyManagerDlg.cpp:1396 Src/wptPassphraseDlg.cpp:95
 msgid "Key Generation"
 msgstr ""
 
@@ -2495,7 +2488,7 @@
 
 #: Src/wptKeygenDlg.cpp:596 Src/wptKeygenDlg.cpp:618 Src/wptKeygenDlg.cpp:623
 #: Src/wptKeygenDlg.cpp:629 Src/wptKeygenDlg.cpp:634 Src/wptKeygenDlg.cpp:658
-#: Src/wptKeyManagerDlg.cpp:1339
+#: Src/wptKeyManagerDlg.cpp:1422
 msgid "Key Generation Wizard"
 msgstr ""
 
@@ -2555,57 +2548,57 @@
 msgid "No keys updated."
 msgstr ""
 
-#: Src/wptKeylist.cpp:236
+#: Src/wptKeylist.cpp:248
 msgid "Key Pair"
 msgstr ""
 
-#: Src/wptKeylist.cpp:238
+#: Src/wptKeylist.cpp:250
 msgid "Key Pair (Card)"
 msgstr ""
 
-#: Src/wptKeylist.cpp:239
+#: Src/wptKeylist.cpp:251
 msgid "Public Key"
 msgstr ""
 
-#: Src/wptKeylist.cpp:322 Src/wptKeylist.cpp:885
+#: Src/wptKeylist.cpp:334 Src/wptKeylist.cpp:895
 msgid "None"
 msgstr ""
 
-#: Src/wptKeylist.cpp:326
+#: Src/wptKeylist.cpp:338
 msgid "Marginal"
 msgstr ""
 
-#: Src/wptKeylist.cpp:329 Src/wptKeylist.cpp:490
+#: Src/wptKeylist.cpp:341 Src/wptKeylist.cpp:500
 msgid "Full"
 msgstr ""
 
-#: Src/wptKeylist.cpp:367 Src/wptKeyPropsDlg.cpp:150
+#: Src/wptKeylist.cpp:378 Src/wptKeyPropsDlg.cpp:149
 msgid "Disabled"
 msgstr ""
 
-#: Src/wptKeylist.cpp:529 Src/wptKeylist.cpp:539
+#: Src/wptKeylist.cpp:539 Src/wptKeylist.cpp:549
 msgid "Cipher"
 msgstr ""
 
-#: Src/wptKeylist.cpp:541 Src/wptVerifyList.cpp:90 Src/wptVerifyList.cpp:98
+#: Src/wptKeylist.cpp:551 Src/wptVerifyList.cpp:90 Src/wptVerifyList.cpp:98
 msgid "Trust"
 msgstr ""
 
-#: Src/wptKeylist.cpp:707 Src/wptPassphraseCB.cpp:110
+#: Src/wptKeylist.cpp:717 Src/wptPassphraseCB.cpp:110
 #: Src/wptVerifyList.cpp:181
 msgid "Invalid User ID"
 msgstr ""
 
-#: Src/wptKeylist.cpp:882 Src/wptKeyPropsDlg.cpp:67 Src/wptVerifyList.cpp:159
+#: Src/wptKeylist.cpp:892 Src/wptKeyPropsDlg.cpp:66 Src/wptVerifyList.cpp:159
 #: Src/wptVerifyList.cpp:235
 msgid "Unknown"
 msgstr ""
 
-#: Src/wptKeylist.cpp:883
+#: Src/wptKeylist.cpp:893
 msgid "Undefined"
 msgstr ""
 
-#: Src/wptKeylist.cpp:926
+#: Src/wptKeylist.cpp:936
 #, c-format
 msgid ""
 "It is NOT certain that the key belongs to the person\n"
@@ -2615,106 +2608,105 @@
 "Use \"%s\" anyway?"
 msgstr ""
 
-#: Src/wptKeylist.cpp:934 Src/wptKeylist.cpp:1010
+#: Src/wptKeylist.cpp:944 Src/wptKeylist.cpp:1020
 msgid "Recipients"
 msgstr ""
 
-#: Src/wptKeylist.cpp:1009
+#: Src/wptKeylist.cpp:1019
 #, c-format
 msgid ""
 "KeyID %s.\n"
 "Do you really want to export a revoked key?"
 msgstr ""
 
-#: Src/wptKeylist.cpp:1111
+#: Src/wptKeylist.cpp:1121
 msgid "Secret Key List"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:141
+#: Src/wptKeyManager.cpp:165
 msgid ""
 "This key has expired!\n"
 "Key check failed."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:146
+#: Src/wptKeyManager.cpp:170
 msgid ""
 "This key has been revoked by its owner!\n"
 "Key check failed."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:195
+#: Src/wptKeyManager.cpp:220
 msgid "Key status changed."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:316
+#: Src/wptKeyManager.cpp:341
 msgid "Only one secret key can be exported."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:327
+#: Src/wptKeyManager.cpp:352
 #, c-format
 msgid "Secret key successfully saved in '%s'."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:369
+#: Src/wptKeyManager.cpp:394
 #, c-format
 msgid "Key(s) successfully saved in '%s'."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:375
+#: Src/wptKeyManager.cpp:400
 #, c-format
 msgid "Could not save data to '%s'."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:426
+#: Src/wptKeyManager.cpp:451
 msgid "No valid OpenPGP keys found."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:431
+#: Src/wptKeyManager.cpp:456
 msgid ""
 "The key you want to import is dash escacped.\n"
 "Do you want to extract the key?"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:437
+#: Src/wptKeyManager.cpp:462
 msgid "Cannot import dash escaped OpenPGP keys."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:461 Src/wptKeyManager.cpp:472
-#: Src/wptKeyManager.cpp:486
+#: Src/wptKeyManager.cpp:486 Src/wptKeyManager.cpp:497
+#: Src/wptKeyManager.cpp:511
 msgid "Key Import HTTP"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:461
+#: Src/wptKeyManager.cpp:486
 #, c-format
 msgid "Invalid HTTP URL: %s"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:512
+#: Src/wptKeyManager.cpp:537
 msgid "File Import"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:523
+#: Src/wptKeyManager.cpp:548
 msgid "Could not read key-data from file."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:590
+#: Src/wptKeyManager.cpp:617
 msgid "Do you really want to confirm each key?"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:591
+#: Src/wptKeyManager.cpp:618
 msgid "Delete Confirmation"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:613
+#: Src/wptKeyManager.cpp:640
 #, c-format
 msgid ""
 "Do you really want to delete this key?\n"
 "\n"
-"pub %s %s %s\n"
-"  \"%s\""
+"%s"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:624
+#: Src/wptKeyManager.cpp:650
 #, c-format
 msgid ""
 "Do you really want to delete this KEY PAIR?\n"
@@ -2722,349 +2714,337 @@
 "Please remember that you are not able to decrypt\n"
 "messages you stored with this key any longer.\n"
 "\n"
-"pub/sec %s %s %s\n"
-"  \"%s\""
+"%s"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:632
+#: Src/wptKeyManager.cpp:657
 msgid ""
 "The actual secret key is stored on a smartcard.\n"
 "Only the public key and the secret key \n"
 "placeholder will be deleted.\n"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:692
+#: Src/wptKeyManager.cpp:718
 #, c-format
 msgid "Do you really want to send '%s' to keyserver %s?"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:718
+#: Src/wptKeyManager.cpp:740
 msgid "Please only select one key."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:791
+#: Src/wptKeyManager.cpp:808
 msgid "Could not connect to keyserver, abort procedure."
 msgstr ""
 
-#: Src/wptKeyManager.cpp:797
+#: Src/wptKeyManager.cpp:814
 msgid "Do you really want to refresh all keys in the keyring?"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:857
+#: Src/wptKeyManager.cpp:873
 #, c-format
 msgid "Default Key: %s"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:859
+#: Src/wptKeyManager.cpp:875
 #, c-format
 msgid "Default Key: 0x%s"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:879
+#: Src/wptKeyManager.cpp:895
 #, c-format
 msgid "%d secret keys"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:880
+#: Src/wptKeyManager.cpp:896
 #, c-format
 msgid "%d keys"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:916
+#: Src/wptKeyManager.cpp:933
 msgid "Search"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:916
+#: Src/wptKeyManager.cpp:933
 msgid "Search for:"
 msgstr ""
 
-#: Src/wptKeyManager.cpp:927
+#: Src/wptKeyManager.cpp:944
 #, c-format
 msgid "String pattern \"%s\" not found."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:344 Src/wptKeyManagerDlg.cpp:991
+#: Src/wptKeyManagerDlg.cpp:428 Src/wptKeyManagerDlg.cpp:884
 msgid "Paste Key from Clipboard"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:778
+#: Src/wptKeyManagerDlg.cpp:834
 msgid "Key"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:779 Src/wptKeyManagerDlg.cpp:851
+#: Src/wptKeyManagerDlg.cpp:835 Src/wptKeyManagerDlg.cpp:981
 msgid "Groups"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:781
+#: Src/wptKeyManagerDlg.cpp:838
 msgid "Send Mail..."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:783
+#: Src/wptKeyManagerDlg.cpp:840
 msgid "&Copy\tCtrl+C"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:784
+#: Src/wptKeyManagerDlg.cpp:841
 msgid "&Paste\tCtrl+V"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:785
+#: Src/wptKeyManagerDlg.cpp:842
 msgid "Search...\tCtrl+F"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:786
+#: Src/wptKeyManagerDlg.cpp:843
 msgid "Select All\tCtrl+A"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:787
+#: Src/wptKeyManagerDlg.cpp:844
 msgid "&Quit"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:789
+#: Src/wptKeyManagerDlg.cpp:846
 msgid "&Expert"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:790
+#: Src/wptKeyManagerDlg.cpp:847
 msgid "&Normal"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:793 Src/wptKeyManagerDlg.cpp:794
-#: Src/wptKeyManagerDlg.cpp:997
+#: Src/wptKeyManagerDlg.cpp:850 Src/wptKeyManagerDlg.cpp:851
+#: Src/wptKeyManagerDlg.cpp:890
 msgid "&Delete"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:795 Src/wptKeyManagerDlg.cpp:998
+#: Src/wptKeyManagerDlg.cpp:852 Src/wptKeyManagerDlg.cpp:891
 msgid "&Revoke"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:796 Src/wptKeyManagerDlg.cpp:994
+#: Src/wptKeyManagerDlg.cpp:853 Src/wptKeyManagerDlg.cpp:887
 msgid "&List Signatures"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:797 Src/wptKeyManagerDlg.cpp:1232
+#: Src/wptKeyManagerDlg.cpp:854 Src/wptKeyManagerDlg.cpp:1315
 #: Src/wptKeyTrustPathDlg.cpp:130
 msgid "List Trust Path"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:798
+#: Src/wptKeyManagerDlg.cpp:855
 msgid "&Export..."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:799
+#: Src/wptKeyManagerDlg.cpp:856
 msgid "&Import..."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:800 Src/wptKeysigDlg.cpp:356
+#: Src/wptKeyManagerDlg.cpp:857 Src/wptKeyManagerDlg.cpp:888
+#: Src/wptKeysigDlg.cpp:356
 msgid "&Properties"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:801
+#: Src/wptKeyManagerDlg.cpp:858
 msgid "Options"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:804
+#: Src/wptKeyManagerDlg.cpp:861
 msgid "E&xport Secret Key"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:805
+#: Src/wptKeyManagerDlg.cpp:862
 msgid "Re&load Key Cache"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:806
+#: Src/wptKeyManagerDlg.cpp:863
 msgid "R&everify Signatures"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:807
+#: Src/wptKeyManagerDlg.cpp:864
 msgid "Refresh &Keys (Keyserver)"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:808 Src/wptTextInputDlg.cpp:49
+#: Src/wptKeyManagerDlg.cpp:865 Src/wptTextInputDlg.cpp:49
 msgid "Info"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:834 Src/wptKeysigDlg.cpp:369
-msgid "Could not set keylist window procedure."
-msgstr ""
-
-#: Src/wptKeyManagerDlg.cpp:947
-msgid "Delete key from keyring"
-msgstr ""
-
-#: Src/wptKeyManagerDlg.cpp:951
-msgid "Show key properties"
-msgstr ""
-
-#: Src/wptKeyManagerDlg.cpp:955
-msgid "Sign key"
-msgstr ""
-
-#: Src/wptKeyManagerDlg.cpp:959
-msgid "Import key to keyring"
-msgstr ""
-
-#: Src/wptKeyManagerDlg.cpp:963
-msgid "Export key to a file"
-msgstr ""
-
-#: Src/wptKeyManagerDlg.cpp:986
+#: Src/wptKeyManagerDlg.cpp:879
 msgid "Copy User ID to Clipboard"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:987
+#: Src/wptKeyManagerDlg.cpp:880
 msgid "Copy Key ID to Clipboard"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:988
+#: Src/wptKeyManagerDlg.cpp:881
 msgid "Copy Fingerprint to Clipboard"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:989
+#: Src/wptKeyManagerDlg.cpp:882
 msgid "Copy Key Info to Clipboard"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:990
+#: Src/wptKeyManagerDlg.cpp:883
 msgid "Copy Key to Clipboard"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:992
+#: Src/wptKeyManagerDlg.cpp:885
 msgid "Refresh from Keyserver"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:993
+#: Src/wptKeyManagerDlg.cpp:886
 msgid "Set Implicit &Trust"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:995
-msgid "&Key Properties"
-msgstr ""
-
-#: Src/wptKeyManagerDlg.cpp:1000
+#: Src/wptKeyManagerDlg.cpp:893
 msgid "&Enable"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1001
+#: Src/wptKeyManagerDlg.cpp:894
 msgid "&Disable"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1002
+#: Src/wptKeyManagerDlg.cpp:895
 msgid "Re&fresh from Keyserver"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1003
+#: Src/wptKeyManagerDlg.cpp:896
 msgid "Set preferred Keyserver URL"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1004
+#: Src/wptKeyManagerDlg.cpp:897
 msgid "Send Key to Mail Recipient"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1005
+#: Src/wptKeyManagerDlg.cpp:898
 msgid "Set as Default Key"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1007
+#: Src/wptKeyManagerDlg.cpp:900
 msgid "Key..."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1008
+#: Src/wptKeyManagerDlg.cpp:901
 msgid "User ID..."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1009
+#: Src/wptKeyManagerDlg.cpp:902
 msgid "Photo ID..."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1010
+#: Src/wptKeyManagerDlg.cpp:903
 msgid "Revoker..."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1013
+#: Src/wptKeyManagerDlg.cpp:906
 msgid "Key Attributes"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1014
+#: Src/wptKeyManagerDlg.cpp:907
 msgid "Add"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1015
+#: Src/wptKeyManagerDlg.cpp:908
 msgid "Send to Keyserver"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1068
-msgid "Paste into this group"
+#: Src/wptKeyManagerDlg.cpp:967 Src/wptKeysigDlg.cpp:369
+msgid "Could not set keylist window procedure."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1069
-msgid "Delete"
+#: Src/wptKeyManagerDlg.cpp:1079
+msgid "Delete key from keyring"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1130
+#: Src/wptKeyManagerDlg.cpp:1083
+msgid "Show key properties"
+msgstr ""
+
+#: Src/wptKeyManagerDlg.cpp:1087
+msgid "Sign key"
+msgstr ""
+
+#: Src/wptKeyManagerDlg.cpp:1091
+msgid "Import key to keyring"
+msgstr ""
+
+#: Src/wptKeyManagerDlg.cpp:1095
+msgid "Export key to a file"
+msgstr ""
+
+#: Src/wptKeyManagerDlg.cpp:1214
 msgid "New"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1137
+#: Src/wptKeyManagerDlg.cpp:1221
 msgid "Could not access public keyring"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1178 Src/wptKeysignDlg.cpp:230
+#: Src/wptKeyManagerDlg.cpp:1261 Src/wptKeysignDlg.cpp:230
 #: Src/wptKeysignDlg.cpp:249 Src/wptKeysignDlg.cpp:326
 #: Src/wptKeysignDlg.cpp:343 Src/wptKeysignDlg.cpp:347
 msgid "Key Signing"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1201
+#: Src/wptKeyManagerDlg.cpp:1284
 msgid "Key already revoked!"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1213 Src/wptKeyRevokeDlg.cpp:67
+#: Src/wptKeyManagerDlg.cpp:1296 Src/wptKeyRevokeDlg.cpp:67
 #: Src/wptKeyRevokeDlg.cpp:89 Src/wptKeyRevokeDlg.cpp:131
 #: Src/wptKeyRevokeDlg.cpp:136 Src/wptKeyRevokeDlg.cpp:143
 #: Src/wptKeyRevokeDlg.cpp:159
 msgid "Key Revocation"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1224
+#: Src/wptKeyManagerDlg.cpp:1307
 msgid "It does not make any sense with a key pair!"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1248
+#: Src/wptKeyManagerDlg.cpp:1331
 msgid "Key Signature List"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1268 Src/wptKeyPropsDlg.cpp:272
+#: Src/wptKeyManagerDlg.cpp:1351 Src/wptKeyPropsDlg.cpp:271
 msgid "Key Properties"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1282
+#: Src/wptKeyManagerDlg.cpp:1365
 msgid ""
 "This is only useful when the keyring has been modified (sign a key...).\n"
 "Do you really want to reload the keycache?"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1323
+#: Src/wptKeyManagerDlg.cpp:1406
 msgid "Smart Card support is not available."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1350 Src/wptKeyserverDlg.cpp:437
+#: Src/wptKeyManagerDlg.cpp:1433 Src/wptKeyserverDlg.cpp:437
 msgid "Keyserver Access"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1366
+#: Src/wptKeyManagerDlg.cpp:1449
 msgid "GnuPG Options"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1371
+#: Src/wptKeyManagerDlg.cpp:1454
 msgid "Choose Name of the Key File"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1407
+#: Src/wptKeyManagerDlg.cpp:1490
 msgid "There is no corresponding secret key for this key."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1412
+#: Src/wptKeyManagerDlg.cpp:1495
 msgid "You can only export one secret key."
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1417
+#: Src/wptKeyManagerDlg.cpp:1500
 msgid ""
 "This operation will export your *SECRET* key!\n"
 "\n"
@@ -3075,26 +3055,26 @@
 "Do you really want to export the key?"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1422
+#: Src/wptKeyManagerDlg.cpp:1505
 msgid "WARNING"
 msgstr ""
 
-#: Src/wptKeyManagerDlg.cpp:1487
+#: Src/wptKeyManagerDlg.cpp:1570
 msgid "No key was selected, select all by default."
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:197
+#: Src/wptKeyPropsDlg.cpp:196
 #, c-format
 msgid "Card-Type: %s\r\n"
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:226
+#: Src/wptKeyPropsDlg.cpp:225
 #, c-format
 msgid ""
 "Type: %s\r\n"
 "Key ID: %s\r\n"
 "Algorithm: %s\r\n"
-"Size: %s\r\n"
+"Size: %s bits\r\n"
 "Created: %s\r\n"
 "Expires: %s\r\n"
 "Validity: %s\r\n"
@@ -3102,33 +3082,33 @@
 "%s\r\n"
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:273
+#: Src/wptKeyPropsDlg.cpp:272
 msgid "&Change"
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:274
+#: Src/wptKeyPropsDlg.cpp:273
 msgid "&Revokers"
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:275
+#: Src/wptKeyPropsDlg.cpp:274
 msgid "Change &Passwd"
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:282
+#: Src/wptKeyPropsDlg.cpp:281
 msgid "Photo-ID not validated."
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:314
+#: Src/wptKeyPropsDlg.cpp:313
 msgid ""
 "The status of this key is 'revoked' or 'expired'.\n"
 "You cannot change the ownertrust of such keys."
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:316 Src/wptKeyPropsDlg.cpp:323
+#: Src/wptKeyPropsDlg.cpp:315 Src/wptKeyPropsDlg.cpp:322
 msgid "WinPT Warning"
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:320
+#: Src/wptKeyPropsDlg.cpp:319
 msgid ""
 "This is a non-valid key.\n"
 "Modifying the ownertrust has no effect on such keys.\n"
@@ -3136,11 +3116,11 @@
 "Do you really want to continue?"
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:339
+#: Src/wptKeyPropsDlg.cpp:337
 msgid "Ownertrust successfully changed."
 msgstr ""
 
-#: Src/wptKeyPropsDlg.cpp:357 Src/wptKeyRevokersDlg.cpp:134
+#: Src/wptKeyPropsDlg.cpp:355 Src/wptKeyRevokersDlg.cpp:134
 msgid "Key Revokers"
 msgstr ""
 
@@ -3444,23 +3424,23 @@
 msgid "Non-exportable"
 msgstr ""
 
-#: Src/wptKeysigDlg.cpp:295
+#: Src/wptKeysigDlg.cpp:296
 msgid "Signature &Properties"
 msgstr ""
 
-#: Src/wptKeysigDlg.cpp:296
+#: Src/wptKeysigDlg.cpp:297
 msgid "Signing &Key Properties"
 msgstr ""
 
-#: Src/wptKeysigDlg.cpp:319
+#: Src/wptKeysigDlg.cpp:320
 msgid "Key not found in keyring, please get it from the keyserver first."
 msgstr ""
 
-#: Src/wptKeysigDlg.cpp:326
+#: Src/wptKeysigDlg.cpp:327
 msgid "Key not found in keyring."
 msgstr ""
 
-#: Src/wptKeysigDlg.cpp:352
+#: Src/wptKeysigDlg.cpp:353
 #, c-format
 msgid "Signature List for \"%s\""
 msgstr ""
@@ -3469,7 +3449,7 @@
 msgid "&Receive Key"
 msgstr ""
 
-#: Src/wptKeysigDlg.cpp:428
+#: Src/wptKeysigDlg.cpp:431
 msgid "Really receive all missing keys?"
 msgstr ""
 
@@ -3604,7 +3584,7 @@
 msgid "Remove all passphrases from cache?"
 msgstr ""
 
-#: Src/wptMainProc.cpp:488 Src/wptProgressDlg.cpp:122 Src/wptRegistry.cpp:162
+#: Src/wptMainProc.cpp:488 Src/wptProgressDlg.cpp:122 Src/wptRegistry.cpp:181
 msgid "WinPT"
 msgstr ""
 
@@ -3941,18 +3921,18 @@
 msgid "Please fill out all required fields for authentication."
 msgstr ""
 
-#: Src/wptRegistry.cpp:160
+#: Src/wptRegistry.cpp:179
 msgid ""
 "WinPT can register some GPG file types for you so they can be processed with "
 "a double click in the explorer.\n"
 "Do you want to continue?"
 msgstr ""
 
-#: Src/wptRegistry.cpp:171
+#: Src/wptRegistry.cpp:190
 msgid "WinPT WARNING"
 msgstr ""
 
-#: Src/wptRegistry.cpp:172
+#: Src/wptRegistry.cpp:191
 #, c-format
 msgid ""
 "It seems there was already a '%s' file type registered by another "
@@ -3960,7 +3940,7 @@
 "Do you want to overwrite it?"
 msgstr ""
 
-#: Src/wptRegistry.cpp:590
+#: Src/wptRegistry.cpp:608
 msgid "Could not write to Registry."
 msgstr ""
 

Modified: trunk/Src/ChangeLog
===================================================================
--- trunk/Src/ChangeLog	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/ChangeLog	2005-12-19 13:05:59 UTC (rev 128)
@@ -1,3 +1,32 @@
+2005-12-18  Timo Schulz  <ts at g10code.com>
+
+	* wptKeyManagerDlg.cpp (save_column_size): New.
+	(restore_column_size): New.
+	(keymanager_dlg_proc): Save and restore column sizes for
+	the listview control.
+	* wptKeyManager.cpp (key_get_info): New.
+	(km_delete_keys): Use it here to have a consistent message.
+	Use stored key context and not the column data.
+	(km_enable_disable_key): Likewise.
+	(km_send_to_keyserver): Likewise.
+	(km_set_implicit_trust): Likewise.
+	* wptKeylist.cpp (get_key_pubalgo2): New.
+	
+2005-12-17  Timo Schulz  <ts at g10code.com>
+
+	* wptUTF8.cpp: Removed unused charset array.
+	* wptSigList.cpp (siglist_build): Increase size for 'class'
+	column.
+	* wptGPG.cpp (get_gnupg_path): Simplified.
+	* WinPT.cpp (load_gpg_env): New.
+	(check_crypto_engine): Return type is now bool.
+	* wptRegistry.cpp (is_gpg4win_installed): New.
+	* wptGPGPrefsDlg.cpp (gpgprefs_dlg_proc): More consistent
+	dialog design.
+	* wptKeyManagerDlg.cpp (translate_menu_strings): New.
+	(translate_popupmenu_strings): New.
+	* wptKeyEditDlgs.cpp (is_jpg_file): New.
+	
 2005-12-13  Timo Schulz  <ts at g10code.com>
 
 	* wptCommonDlg.cpp (http_dlg_proc): Localized missing elements.

Modified: trunk/Src/WinPT-en.rc
===================================================================
--- trunk/Src/WinPT-en.rc	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/WinPT-en.rc	2005-12-19 13:05:59 UTC (rev 128)
@@ -519,40 +519,37 @@
     PUSHBUTTON      "&Cancel",IDCANCEL,227,174,54,15
 END
 
-IDD_WINPT_GPGPREFS DIALOG DISCARDABLE  0, 0, 227, 241
+IDD_WINPT_GPGPREFS DIALOG DISCARDABLE  0, 0, 227, 213
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "GnuPG Preferences"
 FONT 8, "MS Sans Serif"
 BEGIN
-    GROUPBOX        "",IDC_STATIC,5,4,208,65
+    GROUPBOX        "",IDC_STATIC,5,4,208,39
     LTEXT           "GnuPG home directory  (where both keyrings are located)",
                     IDC_GPGPREFS_HOMEINF,12,12,181,8
     EDITTEXT        IDC_GPGPREFS_HOMEDIR,12,22,171,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "..",IDC_GPGPREFS_HOMEDLG,186,23,23,12
-    LTEXT           "GnuPG options file (default: use gpg.conf)",
-                    IDC_GPGPREFS_OPTINF,12,42,132,8
-    EDITTEXT        IDC_GPGPREFS_OPTFILE,12,53,171,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "..",IDC_GPGPREFS_OPTDLG,186,53,24,11
+    PUSHBUTTON      "..",IDC_GPGPREFS_HOMEDLG,188,23,20,13
     LTEXT           "GnuPG exe file location (full path with added gpg.exe)",
-                    IDC_GPGPREFS_EXEINF,12,77,170,8
-    EDITTEXT        IDC_GPGPREFS_EXEDIR,12,88,173,12,ES_AUTOHSCROLL
-    PUSHBUTTON      "..",IDC_GPGREFS_EXEDLG,186,88,23,11
+                    IDC_GPGPREFS_EXEINF,12,51,170,8
+    EDITTEXT        IDC_GPGPREFS_EXEDIR,12,62,173,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "..",IDC_GPGREFS_EXEDLG,188,62,20,13
+    GROUPBOX        "",IDC_STATIC,6,44,209,34
     LTEXT           "Locale directory (to access the translation files)",
-                    IDC_GPGPREFS_LOCALINF,12,111,148,8
-    EDITTEXT        IDC_GPGPREFS_LOCALE,12,122,195,12,ES_AUTOHSCROLL
-    GROUPBOX        "General GPG options",IDC_GPGPREFS_ALLOPTINF,5,142,210,
+                    IDC_GPGPREFS_LOCALINF,12,85,148,8
+    EDITTEXT        IDC_GPGPREFS_LOCALE,12,96,172,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "..",IDC_GPGPREFS_LOCDLG,188,96,20,13
+    GROUPBOX        "General GPG options",IDC_GPGPREFS_ALLOPTINF,5,116,210,
                     74
     CONTROL         "Ask for the signature class during key sign",
                     IDC_GPGPREFS_ASKLEVEL,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,11,156,166,10
-    LTEXT           "Comment in armored files",IDC_GPGPREFS_CMTINF,11,169,
+                    WS_TABSTOP,11,130,166,10
+    LTEXT           "Comment in armored files",IDC_GPGPREFS_CMTINF,11,143,
                     124,8
-    EDITTEXT        IDC_GPGPREFS_COMMENT,11,180,188,12,ES_AUTOHSCROLL
-    LTEXT           "Encrypt to this key",IDC_GPGPREFS_ENCINF,11,199,66,8
-    EDITTEXT        IDC_GPGPREFS_ENCTO,78,197,121,13,ES_AUTOHSCROLL
-    PUSHBUTTON      "&OK",IDC_GPGPREFS_SAVE,159,219,55,14
-    GROUPBOX        "",IDC_STATIC,6,70,209,34
-    GROUPBOX        "",IDC_STATIC,6,103,209,36
+    EDITTEXT        IDC_GPGPREFS_COMMENT,11,154,188,12,ES_AUTOHSCROLL
+    LTEXT           "Encrypt to this key",IDC_GPGPREFS_ENCINF,11,173,66,8
+    EDITTEXT        IDC_GPGPREFS_ENCTO,78,171,121,13,ES_AUTOHSCROLL
+    PUSHBUTTON      "&OK",IDC_GPGPREFS_SAVE,159,193,55,14
+    GROUPBOX        "",IDC_STATIC,6,77,209,36
 END
 
 IDD_WINPT_IMPORT DIALOG DISCARDABLE  0, 0, 321, 118
@@ -581,7 +578,7 @@
 
 IDD_WINPT_KEYSIG DIALOG DISCARDABLE  0, 0, 351, 170
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Signature list for key ..."
+CAPTION "Signature List for key ..."
 FONT 8, "MS Sans Serif"
 BEGIN
     CONTROL         "List1",IDC_KEYSIG_LIST,"SysListView32",LVS_REPORT | 
@@ -856,7 +853,7 @@
 
 IDD_WINPT_DATE DIALOG DISCARDABLE  0, 0, 93, 58
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Universal date dialog"
+CAPTION "Universal Date Dialog"
 FONT 8, "MS Sans Serif"
 BEGIN
     CONTROL         "DateTimePicker2",IDC_DATE_DTP,"SysDateTimePick32",
@@ -1399,7 +1396,7 @@
 FONT 8, "MS Sans Serif"
 BEGIN
     LTEXT           "Enter URL to retrieve the public key",IDC_HTTP_TITLE,6,
-                    6,114,8
+                    6,166,8
     EDITTEXT        IDC_HTTP_URL,6,18,170,12,ES_AUTOHSCROLL
     DEFPUSHBUTTON   "OK",IDOK,77,73,50,14
     PUSHBUTTON      "Cancel",IDCANCEL,129,73,50,14
@@ -1536,7 +1533,7 @@
         LEFTMARGIN, 3
         RIGHTMARGIN, 220
         TOPMARGIN, 4
-        BOTTOMMARGIN, 236
+        BOTTOMMARGIN, 208
     END
 
     IDD_WINPT_IMPORT, DIALOG
@@ -2090,6 +2087,7 @@
     BEGIN
         MENUITEM "&Copy\tCtrl+C",               ID_KEYMISC_COPY
         MENUITEM "&Paste\tCtrl+P",              ID_KEYMISC_PASTE
+        MENUITEM "&Delete",                     ID_KEYMISC_DELETE2
         MENUITEM SEPARATOR
         MENUITEM "Search...\tCtrl+F",           ID_KEYMISC_FIND
         MENUITEM SEPARATOR
@@ -2193,7 +2191,7 @@
         MENUITEM SEPARATOR
         MENUITEM "Set as Default Key",          ID_KEYCTX_SETDEFKEY, GRAYED
         MENUITEM SEPARATOR
-        MENUITEM "&Key Properties",             ID_KEYCTX_PROPS
+        MENUITEM "&Properties",                 ID_KEYCTX_PROPS
     END
 END
 
@@ -2221,7 +2219,7 @@
 BEGIN
     POPUP "Context menu"
     BEGIN
-        MENUITEM "Paste into this group",       ID_GROUP_PASTE
+        MENUITEM "Paste into this Group",       ID_GROUP_PASTE
         MENUITEM "Delete",                      ID_GROUP_DELETE
     END
 END

Modified: trunk/Src/WinPT.cpp
===================================================================
--- trunk/Src/WinPT.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/WinPT.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -114,6 +114,48 @@
 }
 
 
+/* Load the GPG environment. On the first start, some
+   checks are performed to find out in what state GPG is.
+   Return value: 0  everything OK.
+                 >0  fatal error.
+		 -1 public keyring is empty or does not exist. */
+static int
+load_gpg_env (void)
+{
+    SECURITY_ATTRIBUTES sec_attr;
+    char *p;
+    char *pkr;
+
+    p = get_reg_entry_gpg4win ("gpg.exe");
+    if (!p)
+	return (1);
+    if (file_exist_check (p)) {
+	free_if_alloc (p);
+	return (1);
+    }
+    free_if_alloc (p);
+    p = multi_gnupg_path (0);
+    if (p && dir_exist_check (p)) {
+	memset (&sec_attr, 0, sizeof (sec_attr));
+	sec_attr.nLength = sizeof (sec_attr);
+	if (!CreateDirectory (p, &sec_attr)) {
+	    msg_box (NULL, _("Could not create GPG home directory"), 
+		     _("WinPT Error"), MB_ERR);
+	    free_if_alloc (p);
+	    return (2);
+	}
+    }
+    pkr = make_filename (p, "pubring", "gpg");
+    free_if_alloc (p);
+    if (!pkr)
+	return -1;
+    if (get_file_size (pkr) == 0) {
+	free_if_alloc (pkr);
+	return -1;
+    }
+    return 0;
+}
+
 /* check if the default key from the gpg.conf file is available in the
    keyring. if not, bail out because encryption won't work properly then. */
 static int
@@ -121,7 +163,7 @@
 {
     gpgme_key_t key;
     gpgme_error_t err = GPG_ERR_NO_ERROR;
-    char * defkey;
+    char *defkey;
 
     defkey = get_gnupg_default_key ();
     if (defkey)
@@ -169,7 +211,7 @@
 
 /* Check that the underlying crypto engine fullfills the minimal
    requirements so all commands work properly. */
-static int
+static bool
 check_crypto_engine (void)
 {
     int ma=1, mi=4, pa=2; /* GPG 1.4.2 */
@@ -179,14 +221,14 @@
     if (rc == -1) {
 	msg_box (NULL, _("Could not read GnuPG version."), 
 		 _("WinPT Error"), MB_ERR);
-	return rc;
+	return false;
     }
     else if (rc) {
 	log_box (_("WinPT Error"), MB_ERR,
 		 _("Sorry, you need a newer GPG version.\n"
 		   "GPG version %d.%d.%d required GPG version "MIN_GPG_VER),
 		   ma, mi, pa);
-	return rc;
+	return false;
     }
     /* We enable smartcard support for GPG: >= 2 or >= 1.4.3 */
     if (ma > 1 || pa >= 3)    
@@ -195,7 +237,7 @@
     gpgver[0] = ma;
     gpgver[1] = mi;
     gpgver[2] = pa;
-    return rc;
+    return true;
 }
 
 
@@ -289,6 +331,7 @@
 	return 0;
     }
     */
+
     if (gpg_md_selftest ()) {
 	msg_box (NULL, _("Cryptographic selftest failed."),
 		 _("WinPT Error"), MB_ERR);
@@ -335,6 +378,9 @@
 	gnupg_load_config ();
     }
 
+    if (is_gpg4win_installed ())
+	load_gpg_env (); /* XXX: check return code. */
+
     rc = gnupg_check_homedir ();
     if (rc) {
 	log_box (_("WinPT Error"), MB_ERR, 
@@ -485,8 +531,7 @@
 
     if (!first_start && !start_gpgprefs) {
 	gnupg_backup_options ();	
-	rc = check_crypto_engine ();
-	if (rc) {
+	if (!check_crypto_engine ()) {
 	    DestroyWindow (hwnd);
 	    free_gnupg_table ();
 	    return 0;

Modified: trunk/Src/resource.h
===================================================================
--- trunk/Src/resource.h	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/resource.h	2005-12-19 13:05:59 UTC (rev 128)
@@ -608,6 +608,7 @@
 #define IDC_IMPSTAT_NSUBKINF            1494
 #define IDC_IMPSTAT_NSIGINF             1495
 #define IDC_SHOWPREF_PREFINF            1496
+#define IDC_GPGPREFS_LOCDLG             1497
 #define ID_GPG_ENCRYPT                  40003
 #define ID_GPG_DECRYPT                  40004
 #define ID_GPG_SIGN                     40005
@@ -779,7 +780,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        230
 #define _APS_NEXT_COMMAND_VALUE         40177
-#define _APS_NEXT_CONTROL_VALUE         1497
+#define _APS_NEXT_CONTROL_VALUE         1498
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

Modified: trunk/Src/wptGPG.cpp
===================================================================
--- trunk/Src/wptGPG.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptGPG.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -62,7 +62,7 @@
 
 
 /* Return the application data folder of the current user. */
-static char*
+char*
 multi_gnupg_path (int strict)
 {
     static char buf[256+64];
@@ -84,24 +84,21 @@
 }
 
 
-/* Return the full path of the GnuPG application. First the registry is scanned
-   for the entry 'HomeDir'. If it wasn't set, the default dir C:\GNUPG is used. 
-*/
+/* Return the full path to the GPG home directory. First the 'HomeDir' entry
+   from the registry is used. Then the default $APPDATA\gnupg path. */
 char*
 get_gnupg_path (void)
 {
-    char *p = NULL;
-    char *path = NULL;
-    
-    p = get_reg_entry_gpg (GPG_REG_HOME);
-    if (p) {
-	path = m_strdup (p);
-	free_if_alloc (p);
-	return path;
+    char *path;
+
+    path = get_reg_entry_gpg (GPG_REG_HOME);
+    if (path) {
+	if (dir_exist_check (path) == 0)
+	    return path;
+	free_if_alloc (path);
     }
-    else
-	return multi_gnupg_path (1);
-    return m_strdup ("c:\\gnupg");
+    path = multi_gnupg_path (1);
+    return path;
 }
 
 
@@ -293,8 +290,6 @@
 } /* get_gnupg_default_key */
 
 
-char* get_reg_entry_gpg4win (const char *path);
-
 /* Check if GPG4WIN is available and if so, use the
    install path to figure out where the gpg.exe is. */
 char*
@@ -782,7 +777,7 @@
 
 /* XXX: does not work with write-protected floppies */
 static int
-my_access (const char * fname)
+my_access (const char *fname)
 {
     HANDLE hd;
     hd = CreateFile (fname, GENERIC_WRITE, FILE_SHARE_WRITE, 
@@ -801,14 +796,13 @@
 int
 gpg_check_permissions (int showmsg)
 {
-    char * p, * name = NULL;
+    char *p = NULL;
+    char *name = NULL;
     int failed = 0, ans=0, attrs=0;
 
     p = get_gnupg_path ();
-    check_keyring (&p);
-    if (p) {
+    if (check_keyring (&p) && p) {
 	name = make_filename (p, "pubring", "gpg");
-	free_if_alloc (p);
 	if ((attrs=GetFileAttributes (name)) & FILE_ATTRIBUTE_READONLY) {
 	    ans = msg_box (NULL, 
 			   _("The selected keyring has the read-only file\n"
@@ -840,41 +834,36 @@
 	    failed = 2;
 	}
     }
+    free_if_alloc (p);
     free_if_alloc (name);
     return failed;
 }
 
 
-/* Check the GPG home dir. If all methods failed, try to
-   create the default folder. */
-static int
-check_homedir (void)
+/* Check the GPG home dir. First try to read the 'HomeDir' registry entry, 
+   then check for $APPDATA\gnupg. Create the dir if it does not exists. */
+int
+gnupg_check_homedir (void)
 {	
     char *homedir = NULL;
-    int yes = 0, set_reg=0;
+    int val = 0;
     int rc = 0;
 
     homedir = get_reg_entry_gpg (GPG_REG_HOME);
-    if (!homedir) {
-	set_reg = 1;
-	homedir = multi_gnupg_path (0);
-    }
     if (!homedir)
-	homedir = m_strdup ("c:\\gnupg");
+	homedir = multi_gnupg_path (0);
     if (homedir) {
 	if (GetFileAttributes (homedir) == 0xFFFFFFFF) {
-	    yes = log_box (_("Preferences"), MB_YESNO,
+	    val = log_box (_("Preferences"), MB_YESNO,
 			   _("%s does not exit.\n"
 			     "Do you want to create this directory?"), homedir);
-	    if (yes == IDYES) {
+	    if (val == IDYES) {
 		if (!CreateDirectory (homedir, NULL))
 		    rc = WPTERR_DIR_CREAT;
 	    }
 	    else
 		rc = WPTERR_DIR_OPEN;
 	}
-	if (set_reg)
-	    set_reg_entry_gpg (GPG_REG_HOME, homedir);
 	free_if_alloc (homedir);
     }
     return rc;
@@ -882,58 +871,6 @@
 
 
 int
-gnupg_check_homedir (void)
-{	
-    char *homedir = NULL;
-    char *prog = NULL;
-    int rc = 0;
-    
-    rc = check_homedir ();
-    if (rc)
-	return rc;
-    if ((homedir = get_reg_entry_gpg (GPG_REG_HOME)) &&
-	!(prog = get_reg_entry_gpg (GPG_REG_EXE ))) {
-	prog = make_filename (homedir, "gpg", "exe");
-	if (file_exist_check (prog) == 0) {
-	    rc = set_reg_entry_gpg (GPG_REG_EXE, prog);
-	    if (rc)
-		goto fail;
-	}
-	free_if_alloc (homedir);
-	free_if_alloc (prog);
-	return rc;
-    }
-    if ((prog = get_reg_entry_gpg (GPG_REG_EXE))
-	&& file_exist_check (prog)) {
-	free_if_alloc (prog);
-	homedir = get_reg_entry_gpg (GPG_REG_HOME);
-	if (!homedir) {
-	    rc = WPTERR_GENERAL;
-	    goto fail;
-	}
-	prog = make_filename (homedir, "gpg", "exe");
-	if (file_exist_check (prog) == 0) {
-	    rc = set_reg_entry_gpg (GPG_REG_EXE, prog);
-	    if (rc)
-		goto fail;
-	    free_if_alloc (prog);
-	    return rc;
-	}
-    }
-    
-    /* Change the return code if homedir doesn't exist or if the program 
-       doesn't exist. Note that exist_checks return 0 to suggest existance. */
-    if ((!homedir || dir_exist_check (homedir)))
-	rc = WPTERR_GENERAL;
-    
-fail:
-    free_if_alloc (homedir);
-    free_if_alloc (prog);
-    return rc;
-} /* gnupg_check_homedir */
-
-
-int
 gnupg_copy_keyrings (void)
 {
     const char * pring, * sring;
@@ -990,6 +927,7 @@
 } /* gnupg_import_keyrings */
 
 
+/* Backup the gpg.conf file. */
 void
 gnupg_backup_options (void)
 {
@@ -997,15 +935,14 @@
     char bak[512];
 
     cfgfile = get_gnupg_cfgfile ();
-    if (cfgfile == NULL)
+    if (!cfgfile)
 	return;
     _snprintf (bak, DIM (bak)-1, "%s.bak", cfgfile);
     CopyFile (cfgfile, bak, FALSE);
     free_if_alloc (cfgfile);
-} /* gnupg_backup_options */
+}
 
 
-
 static int
 backup_one_file (const char *srcpath, const char *srcn,
 		 const char *dstpath, const char *dstn)
@@ -1031,16 +968,19 @@
 } /* backup_one_file */
 
 
+/* Figure out first public keyring which is not empty.
+   Return value: 1 on success. */
 static int
-check_keyring (char ** r_path)
+check_keyring (char **r_path)
 {
-    char * p;
-    char * opt, * name;
+    char *p;
+    char *opt;
+    char *name;
 
     if (!*r_path)
 	return 0;
     p = make_filename (*r_path, "pubring", "gpg");
-    if (!p || get_file_size (p) > 0)
+    if (!p || get_file_size (p) <= 0)
 	return 0;
 
     opt = get_gnupg_cfgfile ();
@@ -1052,8 +992,7 @@
     if (!name)
 	return 0;
     p = strrchr (name, '\\');
-    if (!p) 
-    {
+    if (!p) {
 	free_if_alloc (name);
 	return 0;	
     }
@@ -1066,13 +1005,15 @@
 }
 
 
+/* Return a temp name based on the day of the week. */
 static char*
 get_backup_name (const char *templ)
 {
     struct tm *tm;
     char *p;
+    time_t t;
 
-    time_t t = time (NULL);
+    t = time (NULL);
     tm = localtime (&t);
     p = new char [strlen (templ) + 8 + 1];
     if (!p)
@@ -1151,7 +1092,8 @@
 	return;
     fp = fopen( tmpath, "rb" );
     if (!fp) {
-	msg_box( NULL, _("No GPG error description available."), _("GPG Error"), MB_INFO );
+	msg_box (NULL, _("No GPG error description available."),
+		 _("GPG Error"), MB_INFO);
 	return;
     }
     errstr = new char[size+1];

Modified: trunk/Src/wptGPGPrefsDlg.cpp
===================================================================
--- trunk/Src/wptGPGPrefsDlg.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptGPGPrefsDlg.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -1,4 +1,4 @@
-/* wptGPGPrefsDlg.cpp - WinPT GnuPG Preferences
+/* wptGPGPrefsDlg.cpp - GnuPG Preferences
  *	Copyright (C) 2001-2005 Timo Schulz
  *
  * This file is part of WinPT.
@@ -17,6 +17,7 @@
  * along with WinPT; if not, write to the Free Software Foundation, 
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
+
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -30,31 +31,93 @@
 #include "wptGPG.h"
 #include "wptRegistry.h"
 #include "wptCommonCtl.h"
-#include "wptContext.h" /* for passphrase_s */
-#include "wptDlgs.h"
 #include "wptW32API.h"
-#include "wptVersion.h"
 
-static struct {
-    const char *name;
-    int id;
-} opts[] = {
-    {"HomeDir",    IDC_GPGPREFS_HOMEDIR},
-    {"gpgProgram", IDC_GPGPREFS_EXEDIR},
-    {"OptFile",    IDC_GPGPREFS_OPTFILE},
-    {NULL, 0}
-};
 
+/* Load the GPG4WIN default values and disabled the
+   dialog items to indicate these are fixed values.
+   Return value: true if GPG4win was found. */
+static bool
+load_gpg4win_values (HWND dlg)
+{
+    char *path;
+    char *p;
+
+    path = get_reg_entry_gpg4win (NULL);
+    if (!path)
+	return false;
+    p = make_filename (path, "gpg", "exe");
+    if (p) {
+	if (file_exist_check (p) == 0) {
+	    SetDlgItemText (dlg, IDC_GPGPREFS_EXEDIR, p);
+	    EnableWindow (GetDlgItem (dlg, IDC_GPGPREFS_EXEDIR), FALSE);
+	    EnableWindow (GetDlgItem (dlg, IDC_GPGREFS_EXEDLG), FALSE);
+	}
+	free_if_alloc (p);
+    }
+
+    p = get_reg_entry_mo ();
+    if (p) {
+	if (dir_exist_check (p) == 0) {
+	    SetDlgItemText (dlg, IDC_GPGPREFS_LOCALE, p);
+	    EnableWindow (GetDlgItem (dlg, IDC_GPGPREFS_LOCALE), FALSE);
+	}
+	free_if_alloc (p);
+    }
+
+    p = multi_gnupg_path (1);
+    if (p) {
+	SetDlgItemText (dlg, IDC_GPGPREFS_HOMEDIR, p);
+	EnableWindow (GetDlgItem (dlg, IDC_GPGPREFS_HOMEDIR), FALSE);
+	EnableWindow (GetDlgItem (dlg, IDC_GPGPREFS_HOMEDLG), FALSE);
+	free_if_alloc (p);
+    }
+
+    return true;
+}
+
+
+/* Load the GPG values direct from the registry. */
+static void
+load_registry_values (HWND dlg)
+{
+    char *p;
+
+    p = get_reg_entry_gpg ("HomeDir");
+    if (p) {
+	SetDlgItemText (dlg, IDC_GPGPREFS_HOMEDIR, p);
+	free_if_alloc (p);	
+    }
+    p = get_reg_entry_gpg ("gpgProgram");
+    if (p) {
+	SetDlgItemText (dlg, IDC_GPGPREFS_EXEDIR, p);
+	free_if_alloc (p);	
+    }
+    p = get_reg_entry_mo ();
+    if (p) {
+        SetDlgItemText (dlg, IDC_GPGPREFS_LOCALE, p);
+	free_if_alloc (p);        
+    }
+    if (!item_get_text_length (dlg, IDC_GPGPREFS_HOMEDIR)) {
+	p = multi_gnupg_path (0);
+	if (p && dir_exist_check (p) == 0)
+	    SetDlgItemText (dlg, IDC_GPGPREFS_HOMEDIR, p);
+	free_if_alloc (p);
+    }
+}
+
+
 /* Dialog box procedure for the GPG preferences. */
 BOOL CALLBACK
 gpgprefs_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
-    char exedir[512], homedir[512], optfile[512];
+    static int gpg4win = false;
+    char exedir[512];
+    char homedir[512];
     char locale_dir[512];
     char *p = NULL, t[256];
     const char *s;
-    const char *file;
-    int have_optfile = 0;
+    const char *folder;
     gpg_optfile_t opt = NULL;
     gpg_option_t e;
     UINT n;
@@ -64,8 +127,6 @@
         SetWindowText (dlg, _("GnuPG Preferences"));
         SetDlgItemText (dlg, IDC_GPGPREFS_HOMEINF,
                        _("GnuPG home directory  (where both keyrings are located)"));
-        SetDlgItemText ( dlg, IDC_GPGPREFS_OPTINF,
-                        _("GnuPG config file (default: use gpg.conf)"));
         SetDlgItemText ( dlg, IDC_GPGPREFS_EXEINF,
                         _("GnuPG exe file location (full path with added gpg.exe)"));
         SetDlgItemText ( dlg, IDC_GPGPREFS_LOCALINF,
@@ -75,47 +136,45 @@
 	SetDlgItemText (dlg, IDC_GPGPREFS_ENCINF, _("Encrypt to this key"));
 	SetDlgItemText (dlg, IDC_GPGPREFS_ALLOPTINF, _("General GPG options"));
 
-	for (n=0; (s = opts[n].name); n++) {
-	    p = get_reg_entry_gpg (s);
-	    if (p) {
-		SetDlgItemText (dlg, opts[n].id, p);
-		free_if_alloc (p);
-	    }
-	}
-        
-	p = get_reg_entry_mo ();
-        if (p) {
-            SetDlgItemText (dlg, IDC_GPGPREFS_LOCALE, p);
-            free_if_alloc (p);
-        }
+	gpg4win = load_gpg4win_values (dlg);
+	if (!gpg4win)
+	    load_registry_values (dlg);
+
 	p = get_gnupg_cfgfile ();
 	if (p) {
 	    parse_gpg_options (p, &opt);
 	    free_if_alloc (p);
-	    if (opt && find_option( opt, "ask-cert-level" ) )
-		CheckDlgButton( dlg, IDC_GPGPREFS_ASKLEVEL, BST_CHECKED );
-	    if (opt && (e=find_option( opt, "comment" )) )
+	    if (opt) {
+		if (find_option (opt, "ask-cert-level"))
+		    CheckDlgButton (dlg, IDC_GPGPREFS_ASKLEVEL, BST_CHECKED);
+		if ((e=find_option (opt, "comment")))
 		SetDlgItemText (dlg, IDC_GPGPREFS_COMMENT, e->val);
-	    if (opt && (e=find_option( opt, "encrypt-to")))
-		SetDlgItemText (dlg, IDC_GPGPREFS_ENCTO, e->val);
-	    if (opt)
+		if ((e=find_option (opt, "encrypt-to")))
+		    SetDlgItemText (dlg, IDC_GPGPREFS_ENCTO, e->val);
 		release_gpg_options (opt);
+	    }
 	}
 
 	center_window (dlg, NULL);
         SetForegroundWindow (dlg);
         return TRUE;
-        
+
+    case WM_DESTROY:
+	gpg4win = false;
+	break;
+
     case WM_SYSCOMMAND:
-        if( LOWORD( wparam ) == SC_CLOSE )
-            EndDialog( dlg, TRUE );
+        if (LOWORD (wparam) == SC_CLOSE)
+            EndDialog (dlg, TRUE);
         return FALSE;
         
     case WM_COMMAND:
-        switch ( LOWORD( wparam ) ) {
+        switch (LOWORD (wparam)) {
         case IDC_GPGPREFS_SAVE:
-            if( !GetDlgItemText( dlg, IDC_GPGPREFS_HOMEDIR, homedir, sizeof homedir -1 ) ) {
-                msg_box( dlg, _("Please enter the GnuPG home directory."), _("Preferences"), MB_ERR );
+            if (!GetDlgItemText (dlg, IDC_GPGPREFS_HOMEDIR, 
+				 homedir, sizeof (homedir) -1)) {
+                msg_box (dlg, _("Please enter the GnuPG home directory."), 
+			 _("Preferences"), MB_ERR);
                 return FALSE;
             }
             if (dir_exist_check (homedir)) {
@@ -125,81 +184,54 @@
                 return FALSE;
             }
             
-            if( GetDlgItemText( dlg, IDC_GPGPREFS_OPTFILE, optfile, sizeof optfile - 1 ) ) {
-                if ( file_exist_check( optfile ) ) {
-                    n = msg_box(dlg, _("Could not find GPG config file.\n"
-                                       "Do you want to create a config file?"),
-                                _("Preferences"), MB_INFO|MB_YESNO );
-                    if( n == IDNO ) {
-                        SetDlgItemText( dlg, IDC_GPGPREFS_OPTFILE, "" );
-                        return FALSE;
-                    }
-                    else if( n == IDYES ) {
-                        FILE * fp = fopen( optfile, "wb" );
-                        if( fp )
-                            fclose( fp );
-                        if( file_exist_check( optfile ) ) {
-			    log_box( _("Preferences"), MB_ERR, "%s: %s", optfile, winpt_strerror( WPTERR_FILE_CREAT ) );
-                            return FALSE;
-                        }
-                        have_optfile = 1;
-                    }
-                }
-                else
-                    have_optfile = 1;
-                if( have_optfile ) {
-                    if( set_reg_entry_gpg( "OptFile", optfile ) ) {
-                        msg_box( dlg, _("Could not save 'OptFile' in the registry."), _("Preferences"), MB_ERR );
-                        return FALSE;
-                    }
-                }
-            }
-            else {
-                char *cfg = get_gnupg_cfgfile ();
-                if (cfg && !file_exist_check (cfg))
-                    set_reg_entry_gpg( "OptFile", cfg);
-		free_if_alloc (cfg);
-            }
-            if ( set_reg_entry_gpg( "HomeDir", homedir ) ) {			
-                msg_box( dlg, _("Could not save 'HomeDir' in the registry."), _("Preferences"), MB_ERR );
+            if (!gpg4win && set_reg_entry_gpg ("HomeDir", homedir)) {
+                msg_box (dlg, _("Could not save 'HomeDir' in the registry."), 
+			 _("Preferences"), MB_ERR);
                 return FALSE;
             }
-            if( !GetDlgItemText( dlg, IDC_GPGPREFS_EXEDIR, exedir, sizeof exedir -1 ) ) {
-                msg_box( dlg, _("Please enter where GPG.exe is located."), _("Preferences"), MB_ERR );
+            if( !GetDlgItemText (dlg, IDC_GPGPREFS_EXEDIR, 
+				 exedir, sizeof (exedir) -1)) {
+                msg_box (dlg, _("Please enter where GPG.exe is located."), 
+			 _("Preferences"), MB_ERR);
                 return FALSE;
             }
-            if( file_exist_check( exedir ) ) {
-                msg_box( dlg, _("Could not find the GPG program in this directory."), _("Preferences"), MB_ERR );
+            if (file_exist_check (exedir)) {
+                msg_box (dlg, _("Could not find the GPG program in this directory."), 
+			 _("Preferences"), MB_ERR);
                 return FALSE;
             }
-            if( set_reg_entry_gpg("gpgProgram", exedir ) ) {
-                msg_box( dlg, _("Could not save 'gpgProgram' in the registry"), _("Preferences"), MB_ERR );
+            if (!gpg4win && set_reg_entry_gpg ("gpgProgram", exedir)) {
+                msg_box (dlg, _("Could not save 'gpgProgram' in the registry"), 
+			 _("Preferences"), MB_ERR);
                 return FALSE;
             }
-            if( GetDlgItemText( dlg, IDC_GPGPREFS_LOCALE, locale_dir, sizeof (locale_dir) -1 ) ) {
+            if (GetDlgItemText (dlg, IDC_GPGPREFS_LOCALE, locale_dir, sizeof (locale_dir) -1)) {
                 if (dir_exist_check (locale_dir)) {
-		    log_box( _("Preferences"), MB_ERR, "%s: %s", locale_dir, winpt_strerror (WPTERR_DIR_OPEN));
+		    log_box ( _("Preferences"), MB_ERR, "%s: %s", locale_dir, 
+			     winpt_strerror (WPTERR_DIR_OPEN));
                     return FALSE;
                 }
-                set_reg_entry_mo (locale_dir);
+		if (!gpg4win)
+		    set_reg_entry_mo (locale_dir);
                 set_gettext_file ("winpt", locale_dir);
             }
-	    else
+	    else if (!gpg4win)
 		set_reg_entry_mo ("");
 
 	    p = get_gnupg_cfgfile ();
-	    if( !p ) {
-		msg_box( dlg, _("Could not get GPG config file"), _("Preferences"), MB_ERR );
-		EndDialog( dlg, FALSE );
+	    if (!p) {
+		msg_box (dlg, _("Could not get GPG config file"), 
+			 _("Preferences"), MB_ERR);
+		EndDialog (dlg, FALSE);
 	    }
-	    parse_gpg_options( p, &opt );
+	    parse_gpg_options (p, &opt);
 
 	    if( IsDlgButtonChecked( dlg, IDC_GPGPREFS_ASKLEVEL ) ) {
 		modify_entry( opt, ENTRY_SINGLE, "ask-cert-level", NULL );
 		reg_prefs.gpg.ask_cert_level = 1;
 	    }
 	    else {
-		delete_option( opt, "ask-cert-level" );
+		delete_option (opt, "ask-cert-level");
 		reg_prefs.gpg.ask_cert_level = 0;
 	    }
 
@@ -215,43 +247,43 @@
             else
 		delete_option( opt, "encrypt-to" );
 
-	    commit_gpg_options( p, opt );
+	    commit_gpg_options (p, opt);
 	    release_gpg_options (opt);
-            EndDialog( dlg, TRUE );
+            EndDialog (dlg, TRUE);
             return TRUE;
             
 	case IDC_GPGPREFS_HOMEDLG:
-	    const char *home;
-	    home = get_folder_dlg (dlg, _("Choose GPG home directory"), NULL);
-	    if (home) {
-		SetDlgItemText (dlg, IDC_GPGPREFS_HOMEDIR, home);
+	    folder = get_folder_dlg (dlg, _("Choose GPG home directory"), NULL);
+	    if (folder) {
+		char *name;
+
+		SetDlgItemText (dlg, IDC_GPGPREFS_HOMEDIR, folder);
 		if (GetDlgItemText (dlg, IDC_GPGPREFS_EXEDIR, exedir, DIM (exedir)-1) > 0)
 		    break;
-		char *name = make_filename (home, "gpg", "exe");
+		name = make_filename (folder, "gpg", "exe");
 		if (file_exist_check (name) == 0)
 		    SetDlgItemText (dlg, IDC_GPGPREFS_EXEDIR, name);
 		free_if_alloc (name);
-		name = make_filename (home, "gpg", "conf");
+		name = make_filename (folder, "gpg", "conf");
 		if (file_exist_check (name) == 0)
 		    SetDlgItemText (dlg, IDC_GPGPREFS_OPTFILE, name);
 		free_if_alloc (name);
 	    }
-	    break;
+	    return TRUE;
 
+	case IDC_GPGPREFS_LOCDLG:
+	    folder = get_folder_dlg (dlg, _("Choose locale directory"), NULL);
+	    if (folder)
+		SetDlgItemText (dlg, IDC_GPGPREFS_LOCALE, folder);
+	    return TRUE;
+	    
         case IDC_GPGREFS_EXEDLG:
-	    file = get_fileopen_dlg (dlg, _("Choose GPG binary"), 
-				     _("Executable Files (*.exe)\0*.exe\0\0"),
-				     NULL);
-            if (file)
-                SetDlgItemText (dlg, IDC_GPGPREFS_EXEDIR, file);
+	    s = get_fileopen_dlg (dlg, _("Choose GPG binary"), 
+				  _("Executable Files (*.exe)\0*.exe\0\0"),
+				  NULL);
+            if (s)
+                SetDlgItemText (dlg, IDC_GPGPREFS_EXEDIR, s);
             return TRUE;
-            
-        case IDC_GPGPREFS_OPTDLG:
-            file = get_fileopen_dlg (dlg, _("Choose GPG config file"), 
-				     NULL, NULL);
-            if (file)
-                SetDlgItemText (dlg, IDC_GPGPREFS_OPTFILE, file);
-            return TRUE;
         }
         break;
     }

Modified: trunk/Src/wptKeyEditDlgs.cpp
===================================================================
--- trunk/Src/wptKeyEditDlgs.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptKeyEditDlgs.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -17,16 +17,13 @@
  * along with WinPT; if not, write to the Free Software Foundation, 
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
-
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 
 #include <windows.h>
-#include <oleauto.h>
 #include <commctrl.h>
 #include <time.h>
-
 #include "resource.h"
 
 #include "wptTypes.h"
@@ -126,8 +123,8 @@
 {
     gpg_keycache_t pub;
     gpgme_key_t key;
-    const char * s, * kid;
-    char * u;
+    const char *s, *kid;
+    char *u;
     int i, n;
 
     pub = keycache_get_ctx (1);
@@ -135,11 +132,10 @@
 	BUG (0);
 
     gpg_keycache_rewind (pub);
-    while( !gpg_keycache_next_key( pub, 0, &key ) ) {
-	if (key->expired || key->revoked ||
+    while( !gpg_keycache_next_key (pub, 0, &key)) {
+	if (key->expired || key->revoked || 
 	    key->disabled || key->invalid)
 	    continue;
-	
 	s = key->uids->uid;
 	kid = key->subkeys->keyid;
 	if (!s || !strcmp (kid+8, k->keyid+2))
@@ -250,6 +246,26 @@
 }
 
 
+/* Return true if @fname is a JPEG file. */
+bool
+is_jpg_file (const char *fname)
+{
+    FILE *fp;
+    BYTE buf[10];
+    int n;
+
+    fp = fopen (fname, "rb");
+    if (!fp)
+	return false;
+    n = fread (buf, 1, 10, fp);
+    fclose (fp);
+    if (n < 10)
+	return false;
+    return buf[6] == 'J' && buf[7] == 'F' &&
+	   buf[8] == 'I' && buf[9] == 'F';
+}
+
+
 /* Dialog box procedure to add a photo. */
 BOOL CALLBACK
 keyedit_addphoto_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
@@ -270,7 +286,7 @@
 	SetDlgItemText (dlg, IDC_ADDPHOTO_FILEINF, _("Pick an image to use for your photo ID.\nThe image must be a JPEG file."));
 	SetDlgItemText (dlg, IDC_ADDPHOTO_PWDINF, _("Passphrase"));
 	SetDlgItemText (dlg, IDCANCEL, _("&Cancel"));
-	SetWindowText (dlg, _("Add Photo ID"));	
+	SetWindowText (dlg, _("Add Photo ID"));
 	SetForegroundWindow (dlg);
 	break;
 
@@ -278,53 +294,59 @@
 	break;
 
     case WM_SYSCOMMAND:
-        if( LOWORD (wparam) == SC_CLOSE )
-            EndDialog( dlg, TRUE );
+        if (LOWORD (wparam) == SC_CLOSE)
+            EndDialog (dlg, TRUE);
 	break;
 
     case WM_COMMAND:
 	switch( LOWORD( wparam ) ) {
 
 	case IDC_ADDPHOTO_SELFILE:
-	    s = get_fileopen_dlg( dlg, _("Select Image File"), _("JPEG Files (*.jpg, *.jpeg)\0*.jpg;*.jpeg\0\0"), NULL );
-	    if( s && *s )
-		SetDlgItemText( dlg, IDC_ADDPHOTO_FILE, s );
+	    s = get_fileopen_dlg (dlg, _("Select Image File"), 
+				  _("JPEG Files (*.jpg, *.jpeg)\0*.jpg;*.jpeg\0\0"),
+				  NULL);
+	    if (s && !is_jpg_file (s)) {
+		log_box (_("Add Photo"), MB_ERR, 
+			 _("'%s' is not a valid JPEG file."), s);
+		return FALSE;
+	    }
+	    if (s && *s)
+		SetDlgItemText (dlg, IDC_ADDPHOTO_FILE, s);
 	    break;
 
 	case IDOK:
-	    if( !GetDlgItemText( dlg, IDC_ADDPHOTO_FILE, file, sizeof file-1 ) ){
-		msg_box( dlg, _("Please enter a file name."), _("Add Photo"), MB_ERR );
+	    if (!GetDlgItemText (dlg, IDC_ADDPHOTO_FILE, file, sizeof (file)-1)){
+		msg_box( dlg, _("Please enter a file name."), _("Add Photo"), MB_ERR);
 		return FALSE;
 	    }
-	    if( get_file_size( file ) == 0 || get_file_size( file ) > 6144 ) {
-		id = msg_box( dlg, _("The JPEG is really large.\n"
+	    if (get_file_size (file) == 0 || get_file_size (file) > 6144 ) {
+		id = msg_box (dlg, _("The JPEG is really large.\n"
 				     "Are you sure you want to use it?"), 
-				     _("Add Photo"), MB_YESNO|MB_INFO );
-		if( id == IDNO )
+				     _("Add Photo"), MB_YESNO|MB_INFO);
+		if (id == IDNO)
 		    return TRUE;
 	    }
-	    if( k->is_protected ) {
-		if( !GetDlgItemText( dlg, IDC_ADDPHOTO_PASS, pwd, sizeof pwd-1 ) ) {
-		    msg_box( dlg, _("Please enter a passphrase."), _("Add Photo"), MB_ERR );
-		    return FALSE;
-		}
+	    if (k->is_protected &&
+		!GetDlgItemText (dlg, IDC_ADDPHOTO_PASS, pwd, sizeof (pwd)-1)) {
+		msg_box (dlg, _("Please enter a passphrase."), _("Add Photo"), MB_ERR);
+		return FALSE;
 	    }
 	    ke = new GpgKeyEdit (k->keyid);
 	    if (!ke)
 		BUG (NULL);
-
 	    if (k->is_protected)
 		ke->setPassphrase (pwd);
 	    ec = ke->addPhotoid (file);
 	    delete ke;
-	    memset (pwd, 0, sizeof pwd);
+	    wipememory (pwd, sizeof (pwd));
 	    if (ec) {
 		msg_box (dlg, gpgme_strerror (ec), _("Add Photo"), MB_ERR );
 		return FALSE;
 	    }
 	    else {
 		k->update = 1;
-		msg_box (dlg, _("Photo successfully added."), _("GnuPG Status"), MB_OK);
+		msg_box (dlg, _("Photo successfully added."), 
+			 _("GnuPG Status"), MB_OK);
 	    }
 	    EndDialog (dlg, TRUE);
 	    break;
@@ -364,7 +386,7 @@
 	SetDlgItemText (dlg, IDC_ADDREV_KEYINF, _("Public key"));
 	SetDlgItemText (dlg, IDC_ADDREV_PWDINF, _("Passphrase"));
 	SetDlgItemText (dlg, IDCANCEL, _("&Cancel"));
-	SetWindowText (dlg, _("Add Revoker"));	
+	SetWindowText (dlg, _("Add Revoker"));
 	SetForegroundWindow (dlg);
 	break;
 
@@ -433,7 +455,6 @@
         ctx = (KEYEDIT_CB *)lparam;
         if( !ctx )
             dlg_fatal_error(dlg, "Could not get dialog param!");
-
         SetWindowText (dlg, _("Add new User ID"));
         SetDlgItemText (dlg, IDC_ADDUID_INFNAME, _("&Name"));
         SetDlgItemText (dlg, IDC_ADDUID_INFEMAIL, _("&Email"));
@@ -882,7 +903,7 @@
 
     if( k->is_protected ) {
 	old_pass = request_passphrase( _("Current (old) Passphrase"), 1, &cancel );
-	if( cancel )
+	if (cancel)
 	    return FALSE;
     }
     new_pass = request_passphrase( _("New Passphrase" ), 1, &cancel );
@@ -1490,7 +1511,7 @@
 	BUG (dlg);
     if (k->is_protected) {
 	pass = request_passphrase (_("Key Edit"), 1, &cancel);
-	if( cancel )
+	if (cancel)
 	    return FALSE;
     }
 
@@ -1511,20 +1532,21 @@
 }
 
 
-#define CIPHER 11
-#define HASH   11
-#define COMPR   4
 
+#define CIPHER	11
+#define HASH	11
+#define COMPR    4
+
 static int
 parse_preflist (HWND dlg, const char *list)
 {
     char buf[128] = {0};
     char *p, *pbuf = buf;
     const char *ciphers[CIPHER] = {"", "IDEA", "3DES", 
-	                           "CAST5", "BLOWFISH", "", "", 
-	                           "AES", "AES192", "AES256", "TWOFISH"};
-    const char *hash[HASH] = {"", "MD5", "SHA1", "RMD160", "", 
-	                      "", "", "", "SHA256", "SHA384", "SHA512"};
+				   "CAST5", "BLOWFISH", "", "", 
+				   "AES", "AES192", "AES256", "TWOFISH"};
+    const char *hash[HASH] = {"", "MD5", "SHA1", "RMD160", "",
+			      "", "", "", "SHA256", "SHA384", "SHA512"};
     const char *compress[COMPR] = {"", "ZIP", "ZLIB", "BZIP2"};
     int n=0;
 
@@ -1592,9 +1614,9 @@
 	    if (inf->flags.mdc)
 		CheckDlgButton (dlg, IDC_SHOWPREF_MDC, BST_CHECKED);
 	}
+	SetDlgItemText (dlg, IDC_SHOWPREF_MDC, _("MDC feature"));
+	SetDlgItemText (dlg, IDC_SHOWPREF_PREFINF, _("Preferences"));
 	SetWindowText (dlg, _("Key Preferences"));
-	SetDlgItemText (dlg, IDC_SHOWPREF_MDC, _("MDC feature"));
-	SetDlgItemText (dlg, IDC_SHOWPREF_PREFINF, _("Preferences"));	
 	SetForegroundWindow (dlg);
 	break;
 
@@ -1779,7 +1801,6 @@
 	SetDlgItemText (dlg, IDCANCEL, _("&Close"));
 	SetDlgItemText (dlg, IDC_KEYEDIT_HELP, _("&Help"));
 	SetWindowText (dlg, _("Key Edit"));
-	
 	SetForegroundWindow( dlg );
 	center_window( dlg, NULL );
 	return TRUE;

Modified: trunk/Src/wptKeyManager.cpp
===================================================================
--- trunk/Src/wptKeyManager.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptKeyManager.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -62,7 +62,7 @@
 	       "pub %04d%s/%s %s %s\r\n"
 	       "    Primary key fingerprint: %s\r\n",
 	       pk->subkeys->length,
-	       get_key_pubalgo (pk->subkeys->pubkey_algo),
+	       get_key_pubalgo2 (pk->subkeys->pubkey_algo),
 	       pk->subkeys->keyid+8,
 	       get_key_created (pk->subkeys->timestamp),
 	       pk->uids->uid,
@@ -70,6 +70,27 @@
 }
 
 
+/* Return a general description of the key @key. */
+static char*
+key_get_info (gpgme_key_t pk, int is_sec)
+{
+    const char *fmt = "%s %04d%s/0x%s %s\n  \"%s\"";
+    char *p;
+    int n;
+
+    n = strlen (fmt) + 8 + 2 + 16 + 12 + strlen (pk->uids->uid) + 32;
+    p = new char[n+1];
+    if (!p)
+	BUG (NULL);
+    _snprintf (p, n, fmt, is_sec? "sec" : "pub",
+	       pk->subkeys->length,
+	       get_key_pubalgo2 (pk->subkeys->pubkey_algo),
+	       pk->subkeys->keyid+8, get_key_created (pk->subkeys->timestamp),
+	       pk->uids->uid);
+    return p;
+}
+
+
 #if 0
 /* Quoted the user-id given by @uid. If @uid is already
    quoted @uid is returned without any modifications.
@@ -96,20 +117,23 @@
 int
 km_check_for_seckey (listview_ctrl_t lv, int pos, int *utrust)
 {
-    char t[32], t2[64];
+    gpgme_key_t key;
+    winpt_key_s sk;
     int type = 0;
     
+    key = (gpgme_key_t)listview_get_item2 (lv, pos);
+    if (!key)
+	BUG (NULL);
     if (utrust)
 	*utrust = 0;
-    listview_get_item_text (lv, pos, 5, t, DIM (t)-1);
-    listview_get_item_text (lv, pos, 2, t2, DIM (t2)-1);
-    if (!strcmp (t2, "pub/sec"))
+    memset (&sk, 0, sizeof (sk));
+    if (!winpt_get_seckey (key->subkeys->keyid+8, &sk))
 	type = 1;
-    else if (!strcmp (t2, "pub/crd"))
+    if (sk.ext && sk.ext->gloflags.divert_to_card)
 	type = 2;
-    if ((strstr (t, "Expired") || strstr (t, "Revoked")) && utrust)
+    if (utrust && (key->expired || key->revoked))
 	*utrust = -1;
-    else if (stristr (t, "Ultimate") && utrust)
+    else if (utrust && key->owner_trust == GPGME_VALIDITY_ULTIMATE)
 	*utrust = 1;
     return type;
 }
@@ -180,13 +204,14 @@
 int
 km_enable_disable_key (listview_ctrl_t lv, HWND dlg, int pos, int enable)
 {
+    gpgme_error_t err;
+    gpgme_key_t key;
     GpgKeyEdit *ke;
-    gpgme_error_t err;
-    char keyid[32];
 
-    listview_get_item_text (lv, pos, 1, keyid, DIM (keyid)-1);
-
-    ke = new GpgKeyEdit (keyid);
+    key = (gpgme_key_t)listview_get_item2 (lv, pos);
+    if (!key)
+	BUG (NULL);
+    ke = new GpgKeyEdit (key->subkeys->keyid);
     if (!ke)
 	BUG (NULL);
 
@@ -576,8 +601,10 @@
 {
     gpgme_error_t err;
     gpgme_ctx_t ctx;
-    gpgme_key_t *rset, k;
-    char keyid[32], uid[256], date[64], keylen[64];    
+    gpgme_key_t *rset;
+    gpgme_key_t key;
+    char keyid[32];
+    char *p;
     int with_seckey=0, seckey_type=0, confirm=0;
     int i, rc, n, k_pos=0;
     
@@ -602,46 +629,44 @@
     if (!rset)
 	BUG (NULL);
     for (i = 0; i < n; i++) {
-        if( listview_get_item_state(lv, i)) {
-            listview_get_item_text (lv, i, 0, uid, sizeof uid - 1);
-            listview_get_item_text (lv, i, 1, keyid, sizeof keyid - 1);
-	    listview_get_item_text (lv, i, 3, keylen, sizeof keylen - 1);
-	    listview_get_item_text (lv, i, 7, date, sizeof date - 1);
+        if (listview_get_item_state(lv, i)) {
+	    key = (gpgme_key_t)listview_get_item2 (lv, i);
+	    if (!key)
+		BUG (NULL);
 	    seckey_type = km_check_for_seckey (lv, i, NULL);
             if (confirm && !seckey_type) {
+		p = key_get_info (key, 0);
 		rc = log_box( _("Key Manager"), MB_YESNO|MB_ICONWARNING,
                               _("Do you really want to delete this key?\n\n"
-			        "pub %s %s %s\n"
-			        "  \"%s\""), keylen, keyid, date, uid );
-                if (rc == IDYES) {
-		    get_pubkey (keyid, &k);
-		    rset[k_pos++] = k;
-		}
+			        "%s"), p);
+                if (rc == IDYES)
+		    rset[k_pos++] = key;
                 with_seckey = 0;
+		free_if_alloc (p);
             }
             else if (confirm) {
+		p = key_get_info (key, 1);
 		rc = log_box (_("Key Manager"), MB_YESNO|MB_ICONWARNING,                
                               _("Do you really want to delete this KEY PAIR?\n\n"
 				"Please remember that you are not able to decrypt\n"
 				"messages you stored with this key any longer.\n"
 				"\n"
-			        "pub/sec %s %s %s\n"
-			        "  \"%s\""), keylen, keyid, date, uid);
+				"%s"), p);
                 if( rc == IDYES ) {
 		    if (seckey_type == 2)
 			msg_box (dlg, _("The actual secret key is stored on a smartcard.\n"
 					"Only the public key and the secret key \n"
 					"placeholder will be deleted.\n"), 
 					_("Key Manager"), MB_OK);
-		    get_pubkey (keyid, &k);
-		    rset[k_pos++] = k;
+		    rset[k_pos++] = key;
 		}
                 with_seckey = 1;
+		free_if_alloc (p);
             }
 	    else {
 		with_seckey = 1;
-		get_pubkey (keyid, &k);
-		rset[k_pos++] = k;
+		get_pubkey (keyid, &key);
+		rset[k_pos++] = key;
 	    }
         }
     }
@@ -654,7 +679,7 @@
     err = gpgme_new (&ctx);
     if (err)
 	BUG (NULL);
-    n=k_pos;
+    n = k_pos;
     for (i=0; i < k_pos; i++) {
 	err = gpgme_op_delete (ctx, rset[i], with_seckey);
 	if (err)
@@ -677,8 +702,7 @@
 int
 km_send_to_keyserver (listview_ctrl_t lv, HWND dlg, const char *host, u16 port)
 {
-    char keyid[32];
-    const char *t;
+    gpgme_key_t key;
     int id;
     
     id = listview_get_curr_pos (lv);
@@ -687,16 +711,14 @@
 	return WPTERR_GENERAL;
     }
 
-    listview_get_item_text (lv, id, 1, keyid, sizeof keyid - 1);
+    key = (gpgme_key_t)listview_get_item2 (lv, id);
+    if (!key)
+	BUG (NULL);
     id = log_box (_("Key Manager"), MB_YESNO,
 		  _("Do you really want to send '%s' to keyserver %s?"),
-		    keyid, host);
-    if (id == IDYES) {
-        t = keyid;
-        if (!strncmp (keyid, "0x", 2)) 
-	    t += 2;
-        hkp_send_key (dlg, host, port, t);
-    }
+		    key->subkeys->keyid+8, host);
+    if (id == IDYES)
+        hkp_send_key (dlg, host, port, key->subkeys->keyid+8);
 
     return 0;
 }
@@ -710,7 +732,7 @@
     gpgme_ctx_t ctx=NULL;
     gpgme_data_t out;
     gpgme_error_t rc;
-    char keyid[32], tmp[128];
+    char tmp[128];
     char *fname;
     int pos;
 
@@ -724,8 +746,8 @@
 	msg_box (dlg, _("Please select a key."), _("Key Manager"), MB_ERR);
 	return WPTERR_GENERAL;
     }
-    listview_get_item_text(lv, pos, 1, keyid, sizeof (keyid)-1);
-    if (get_pubkey (keyid, &key))
+    key = (gpgme_key_t)listview_get_item2 (lv, pos);
+    if (!key)
 	BUG (NULL);
 
     GetTempPath (sizeof (tmp)-1, tmp);
@@ -749,7 +771,7 @@
     if (rc)
 	msg_box (dlg, gpgme_strerror (rc), _("Key Manager"), MB_ERR);
     else
-	mapi_send_pubkey (keyid, fname);
+	mapi_send_pubkey (key->subkeys->keyid+8, fname);
 
     gpg_data_release_and_set_file (out, fname);
     gpgme_release (ctx);
@@ -761,21 +783,17 @@
 static void
 km_refresh_one_key (listview_ctrl_t lv, HWND dlg, int pos)
 {
+    gpgme_key_t key;
     int idx;
-    char keyid[32];
-    const char *t;
 
     if (pos != 0)
 	idx = pos;
     else
 	idx = listview_get_curr_pos (lv);
     if (idx != -1) {
-	listview_get_item_text (lv, idx, 1, keyid, sizeof (keyid) - 1);
-	t = keyid;
-	if (!strncmp (keyid, "0x", 2))
-	    t += 2;
+	key = (gpgme_key_t)listview_get_item2 (lv, idx);
 	hkp_recv_key (dlg, default_keyserver, default_keyserver_port, 
-		      t, 0, KM_KS_REFRESH);
+		      key->subkeys->keyid+8, 0, KM_KS_REFRESH);
     }
 }
 
@@ -786,8 +804,7 @@
 {
     int idx, id, i;
     
-    if (kserver_check_inet_connection ())
-    {
+    if (kserver_check_inet_connection ()) {
 	msg_box (dlg, _("Could not connect to keyserver, abort procedure."),
 		 _("Key Manager"), MB_ERR);
 	return;
@@ -829,10 +846,9 @@
 km_key_is_v3 (listview_ctrl_t lv, int pos)
 {
     gpgme_key_t pk;
-    char keyid[32];
 
-    listview_get_item_text (lv, pos, 1, keyid, sizeof keyid-1);
-    if (get_pubkey (keyid, &pk))
+    pk = (gpgme_key_t)listview_get_item2 (lv, pos);
+    if (!pk)
 	BUG (NULL);
     if (strlen (pk->subkeys->fpr) == 32 && 
 	pk->subkeys->pubkey_algo == GPGME_PK_RSA)
@@ -887,13 +903,14 @@
 int
 km_set_implicit_trust (HWND dlg, listview_ctrl_t lv, int pos)
 {
+    gpgme_error_t err;
+    gpgme_key_t key;
     GpgKeyEdit *ke;
-    gpgme_error_t err;    
-    char keyid[32];
 
-    listview_get_item_text (lv, pos, 1, keyid, 31);
-
-    ke = new GpgKeyEdit (keyid);
+    key = (gpgme_key_t)listview_get_item2 (lv, pos);
+    if (!key)
+	BUG (NULL);
+    ke = new GpgKeyEdit (key->subkeys->keyid);
     if (!ke)
 	BUG (0);
 

Modified: trunk/Src/wptKeyManagerDlg.cpp
===================================================================
--- trunk/Src/wptKeyManagerDlg.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptKeyManagerDlg.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -190,13 +190,97 @@
 }
 
 
+/* Restore the width of the columns from the registry.
+   If no bitstring was found, the default size is used. */
+int
+restore_column_size (listview_ctrl_t hd)
+{
+    WORD *buf;
+    HKEY root;
+    DWORD type;
+    DWORD size = hd->cols*sizeof (WORD), i;
+    LONG ec;
+
+    ec = RegOpenKeyEx (HKEY_CURRENT_USER, "Software\\WinPT", 0,
+		       KEY_ALL_ACCESS, &root);
+    if (ec != ERROR_SUCCESS)
+	return -1;
+
+    buf = new WORD[size/2];
+    if (!buf)
+	BUG (NULL);
+    ec = RegQueryValueEx (root, "KMColumnSize", NULL, &type, 
+			  (BYTE*)buf, &size);
+    RegCloseKey (root);
+    if (ec != ERROR_SUCCESS) {
+	free_if_alloc (buf);
+	return -1;
+    }
+
+    /* check for garbled values. */
+    for (i=0; i < size/2; i++) {
+	if (buf[i] > 512) {
+	    free_if_alloc (buf);
+	    return -1;
+	}
+    }
+    for (i=0; i < size/2; i++) {
+	LVCOLUMN lvc;
+
+	memset (&lvc, 0, sizeof (lvc));
+	lvc.mask = LVCF_WIDTH;
+	lvc.cx = buf[i];
+	ListView_SetColumn (hd->ctrl, i, &lvc);
+    }
+    free_if_alloc (buf);
+    return 0;
+}
+
+
+/* Save the current column width to the registry. */
+int
+save_column_size (listview_ctrl_t hd)
+{
+    WORD *buf;
+    HKEY root;
+    LONG ec;
+    int i;
+
+    buf = new WORD[hd->cols];
+    if (!buf)
+	BUG (NULL);
+    for (i=0; i < hd->cols; i++) {
+	LVCOLUMN lvc;
+
+	memset (&lvc, 0, sizeof (lvc));
+	lvc.mask = LVCF_WIDTH;
+	ListView_GetColumn (hd->ctrl, i, &lvc);
+	buf[i] = lvc.cx;
+    }
+
+    ec = RegOpenKeyEx (HKEY_CURRENT_USER, "Software\\WinPT", 0, 
+		       KEY_ALL_ACCESS, &root);
+    if (ec != ERROR_SUCCESS) {
+	free_if_alloc (buf);
+	return -1;
+    }
+
+    ec = RegSetValueEx (root, "KMColumnSize", 0, REG_BINARY,
+			(const BYTE*)buf, 2*hd->cols);
+    RegCloseKey (root);
+    free_if_alloc (buf);
+    return ec == ERROR_SUCCESS? 0 : -1;
+}
+
+
 /* Center window @dlg. */
 static void
 do_center_window (HWND dlg, struct km_info *kmi)
 {
     RECT rect;
     char *p;
-    int pos_x = 0, pos_y = 0;
+    int pos_x = 0;
+    int pos_y = 0;
         
     /* Find bottom of keylist */
     GetWindowRect (GetDlgItem(dlg, IDC_KEYMISC_KEYLIST), &rect);
@@ -513,7 +597,7 @@
     int key_inv = 0;
     int mult_resids[] = {ID_KEYMISC_PROPS, ID_KEYMISC_SIGN, ID_KEYMISC_EDITKEY,
 			 ID_KEYMISC_CHECKSIGS, ID_KEYMISC_REVCERT, 0};
-    int i;
+    int i, state=0;
     
     /* Get some states */
     key_selected = SendMessage (GetDlgItem (hwnd, IDC_KEYMISC_KEYLIST), 
@@ -535,15 +619,16 @@
     enable_button (hwnd_child, ID_KEYMISC_EXPORT);
 
     /* Enable / disable menu items */
+    state = key_selected? MF_ENABLED : MF_DISABLED|MF_GRAYED;
     hmenu = GetMenu (hwnd);
-    set_menu_state (hmenu, ID_KEYMISC_EXPORT, key_selected ? MF_ENABLED : MF_GRAYED);
-    set_menu_state (hmenu, ID_KEYMISC_EXPORT_PRIVKEY, key_has_sec ? MF_ENABLED : MF_GRAYED);
-    set_menu_state (hmenu, ID_KEYMISC_REVCERT, key_has_sec ? MF_ENABLED : MF_GRAYED);
-    set_menu_state (hmenu, ID_KEYMISC_DELETE, key_selected ? MF_ENABLED : MF_GRAYED);
-    set_menu_state (hmenu, ID_KEYMISC_PROPS, key_selected ? MF_ENABLED : MF_GRAYED);
+    set_menu_state (hmenu, ID_KEYMISC_EXPORT, state);
+    set_menu_state (hmenu, ID_KEYMISC_EXPORT_PRIVKEY, state);
+    set_menu_state (hmenu, ID_KEYMISC_REVCERT, state);
+    set_menu_state (hmenu, ID_KEYMISC_DELETE, state);
+    set_menu_state (hmenu, ID_KEYMISC_PROPS, state);
+    set_menu_state (hmenu, ID_KEYMISC_EDITKEY, state);
+    set_menu_state (hmenu, ID_KEYMISC_CHECKSIGS, state);
     set_menu_state (hmenu, ID_KEYMISC_SIGN, key_selected && !key_inv ? MF_ENABLED : MF_GRAYED);
-    set_menu_state (hmenu, ID_KEYMISC_EDITKEY, key_selected? MF_ENABLED : MF_GRAYED);
-    set_menu_state (hmenu, ID_KEYMISC_CHECKSIGS, key_selected? MF_ENABLED : MF_GRAYED);
 
     /* Disable some menu items when multiple keys are selected. */
     if (listview_count_items (lv, 1) > 1) {
@@ -610,9 +695,10 @@
 static void
 change_edit_menu (listview_ctrl_t lv, HMENU hm, int id)
 {
+    enum item { EDIT_MENU = 1 };
     int no_sel;
 
-    if (id != 1 /*EDIT_MENU*/)
+    if (id != EDIT_MENU)
 	return;
 
     if (!clip_contains_pgpkey ())
@@ -735,12 +821,99 @@
 }
 
 
+/* Translate all menu strings. */
+static void
+translate_menu_strings (HWND dlg)
+{
+    HMENU menu;
+
+    menu = LoadMenu (glob_hinst, (LPCSTR)IDR_WINPT_KEYMISC);
+    set_menu_text_bypos (menu, 0, _("File"));
+    set_menu_text_bypos (menu, 1, _("Edit"));
+    set_menu_text_bypos (menu, 2, _("View"));
+    set_menu_text_bypos (menu, 3, _("Key"));
+    set_menu_text_bypos (menu, 4, _("Groups"));
+
+    set_menu_text (menu, ID_KEYMISC_EDITKEY, _("Edit"));
+    set_menu_text (menu, ID_KEYMISC_MAIL, _("Send Mail..."));
+    set_menu_text (menu, ID_KEYMISC_OT, _("Ownertrust")); /* XXX */
+    set_menu_text (menu, ID_KEYMISC_COPY, _("&Copy\tCtrl+C"));
+    set_menu_text (menu, ID_KEYMISC_PASTE, _("&Paste\tCtrl+V"));
+    set_menu_text (menu, ID_KEYMISC_FIND, _("Search...\tCtrl+F"));
+    set_menu_text (menu, ID_KEYMISC_SELALL, _("Select All\tCtrl+A"));
+    set_menu_text (menu, ID_KEYMISC_QUIT, _("&Quit"));
+    set_menu_text (menu, ID_KEYMISC_UID, _("User ID"));
+    set_menu_text (menu, ID_KEYMISC_NEWKEY, _("&Expert"));
+    set_menu_text (menu, ID_KEYMISC_KEYWIZARD, _("&Normal"));
+    set_menu_text (menu, ID_KEYMISC_EDIT, _("Edit"));
+    set_menu_text (menu, ID_KEYMISC_SIGN, _("&Sign"));
+    set_menu_text (menu, ID_KEYMISC_DELETE, _("&Delete"));
+    set_menu_text (menu, ID_KEYMISC_DELETE2, _("&Delete"));
+    set_menu_text (menu, ID_KEYMISC_REVCERT, _("&Revoke"));
+    set_menu_text (menu, ID_KEYMISC_CHECKSIGS, _("&List Signatures"));
+    set_menu_text (menu, ID_KEYMISC_TRUSTPATH, _("List Trust Path"));
+    set_menu_text (menu, ID_KEYMISC_EXPORT, _("&Export..."));
+    set_menu_text (menu, ID_KEYMISC_IMPORT, _("&Import..."));
+    set_menu_text (menu, ID_KEYMISC_PROPS, _("&Properties"));
+    set_menu_text (menu, ID_KEYMISC_GPGOPT, _("Options"));
+    set_menu_text (menu, ID_KEYMISC_GPGPREFS, _("Preferences"));
+    set_menu_text (menu, ID_KEYMISC_SENDRECV, _("Keyserver") );
+    set_menu_text (menu, ID_KEYMISC_EXPORT_PRIVKEY, _("E&xport Secret Key"));
+    set_menu_text (menu, ID_KEYMISC_RECACHE, _("Re&load Key Cache"));
+    set_menu_text (menu, ID_KEYMISC_REBUILD, _("R&everify Signatures"));
+    set_menu_text (menu, ID_KEYMISC_REFRESH_KEYS, _("Refresh &Keys (Keyserver)"));
+    set_menu_text (menu, ID_KEYMISC_INFO, _("Info") );
+    set_menu_text (menu, ID_KEYMISC_HELP, _("&Help"));
+
+    /* XXX: implement help code. */
+    set_menu_state (menu, ID_KEYMISC_HELP, MF_GRAYED);
+
+    SetMenu (dlg, menu);
+}
+
+
+/* Translate popup menu strings. */
+static void
+translate_popupmenu_strings (HMENU popup)
+{
+    set_menu_text (popup, ID_KEYCTX_UID_COPY, _("Copy User ID to Clipboard"));
+    set_menu_text (popup, ID_KEYCTX_KEYID_COPY, _("Copy Key ID to Clipboard"));
+    set_menu_text (popup, ID_KEYCTX_FPR_COPY, _("Copy Fingerprint to Clipboard"));
+    set_menu_text (popup, ID_KEYCTX_KINFO_COPY, _("Copy Key Info to Clipboard"));
+    set_menu_text (popup, ID_KEYCTX_COPY, _("Copy Key to Clipboard"));
+    set_menu_text (popup, ID_KEYCTX_PASTE, _("Paste Key from Clipboard"));
+    set_menu_text (popup, ID_KEYCTX_RECVFROM, _("Refresh from Keyserver"));
+    set_menu_text (popup, ID_KEYCTX_MAXTRUST, _("Set Implicit &Trust"));
+    set_menu_text (popup, ID_KEYCTX_LISTSIGS, _("&List Signatures"));
+    set_menu_text (popup, ID_KEYCTX_PROPS, _("&Properties"));
+    set_menu_text (popup, ID_KEYCTX_EDIT, _("Key Edit"));
+    set_menu_text (popup, ID_KEYCTX_DEL, _("&Delete"));
+    set_menu_text (popup, ID_KEYCTX_REV, _("&Revoke"));
+    set_menu_text (popup, ID_KEYCTX_SIGN, _("&Sign"));
+    set_menu_text (popup, ID_KEYCTX_ENABLE, _("&Enable"));
+    set_menu_text (popup, ID_KEYCTX_DISABLE, _("&Disable"));
+    set_menu_text (popup, ID_KEYCTX_RECVFROM, _("Re&fresh from Keyserver"));
+    set_menu_text (popup, ID_KEYCTX_SETPREFKS, _("Set preferred Keyserver URL"));
+    set_menu_text (popup, ID_KEYCTX_SENDMAIL, _("Send Key to Mail Recipient"));
+    set_menu_text (popup, ID_KEYCTX_SETDEFKEY, _("Set as Default Key"));
+
+    set_menu_text (popup, ID_KEYCTX_ADDKEY, _("Key..."));
+    set_menu_text (popup, ID_KEYCTX_ADDUID, _("User ID..."));
+    set_menu_text (popup, ID_KEYCTX_ADDPHOTO, _("Photo ID..."));
+    set_menu_text (popup, ID_KEYCTX_ADDREV, _("Revoker..."));
+
+    /* change popup texts */
+    set_menu_text_bypos (popup, 0, _("Key Attributes"));
+    set_menu_text_bypos (popup, 6, _("Add"));
+    set_menu_text_bypos (popup, 19, _("Send to Keyserver"));
+}
+
+
 /* Dialog box procedure for the Key Manager. */
 BOOL CALLBACK
 keymanager_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
 {
     struct km_info *kmi;
-    static HMENU menu = NULL;
     static int refresh_keys = 0;    
     INITCOMMONCONTROLSEX icex;
     HWND kl;
@@ -770,48 +943,9 @@
         InitCommonControlsEx (&icex);
 	kmi->hwnd_sep = regist_sep_wnd (dlg, kmi);
         imagelist_load (dlg);
+	translate_menu_strings (dlg);
 	SetWindowText (dlg, _("Key Manager"));
-        menu = LoadMenu (glob_hinst, (LPCSTR)IDR_WINPT_KEYMISC);
-	set_menu_text_bypos (menu, 0, _("File"));
-	set_menu_text_bypos (menu, 1, _("Edit"));
-	set_menu_text_bypos (menu, 2, _("View"));
-	set_menu_text_bypos (menu, 3, _("Key"));
-	set_menu_text_bypos (menu, 4, _("Groups"));
-	set_menu_text (menu, ID_KEYMISC_EDITKEY, _("Edit"));
-	set_menu_text (menu, ID_KEYMISC_MAIL, _("Send Mail..."));
-	set_menu_text (menu, ID_KEYMISC_OT, _("Ownertrust")); /* XXX */
-	set_menu_text (menu, ID_KEYMISC_COPY, _("&Copy\tCtrl+C"));
-	set_menu_text (menu, ID_KEYMISC_PASTE, _("&Paste\tCtrl+V"));
-	set_menu_text (menu, ID_KEYMISC_FIND, _("Search...\tCtrl+F"));
-	set_menu_text (menu, ID_KEYMISC_SELALL, _("Select All\tCtrl+A"));
-        set_menu_text (menu, ID_KEYMISC_QUIT, _("&Quit"));
-        set_menu_text (menu, ID_KEYMISC_UID, _("User ID"));
-        set_menu_text (menu, ID_KEYMISC_NEWKEY, _("&Expert"));
-	set_menu_text (menu, ID_KEYMISC_KEYWIZARD, _("&Normal"));
-        set_menu_text (menu, ID_KEYMISC_EDIT, _("Edit"));
-        set_menu_text (menu, ID_KEYMISC_SIGN, _("&Sign"));
-        set_menu_text (menu, ID_KEYMISC_DELETE, _("&Delete"));
-	set_menu_text (menu, ID_KEYMISC_DELETE2, _("&Delete"));
-        set_menu_text (menu, ID_KEYMISC_REVCERT, _("&Revoke"));
-        set_menu_text (menu, ID_KEYMISC_CHECKSIGS, _("&List Signatures"));
-        set_menu_text (menu, ID_KEYMISC_TRUSTPATH, _("List Trust Path"));
-	set_menu_text (menu, ID_KEYMISC_EXPORT, _("&Export..."));
-	set_menu_text (menu, ID_KEYMISC_IMPORT, _("&Import..."));
-        set_menu_text (menu, ID_KEYMISC_PROPS, _("&Properties"));
-        set_menu_text (menu, ID_KEYMISC_GPGOPT, _("Options"));
-        set_menu_text (menu, ID_KEYMISC_GPGPREFS, _("Preferences"));
-        set_menu_text (menu, ID_KEYMISC_SENDRECV, _("Keyserver") );
-	set_menu_text (menu, ID_KEYMISC_EXPORT_PRIVKEY, _("E&xport Secret Key"));
-        set_menu_text (menu, ID_KEYMISC_RECACHE, _("Re&load Key Cache"));
-        set_menu_text (menu, ID_KEYMISC_REBUILD, _("R&everify Signatures"));
-	set_menu_text (menu, ID_KEYMISC_REFRESH_KEYS, _("Refresh &Keys (Keyserver)"));
-	set_menu_text (menu, ID_KEYMISC_INFO, _("Info") );
-	set_menu_text (menu, ID_KEYMISC_HELP, _("&Help"));
-	
-	/* XXX: implement help code. */
-	set_menu_state (menu, ID_KEYMISC_HELP, MF_GRAYED);
-	
-        SetMenu (dlg, menu);
+
         if (keyring_check_last_access ())
             keycache_set_reload (1);
         if (keycache_get_reload ())
@@ -819,13 +953,12 @@
         c = keycache_get_ctx (KEYCACHE_PUB);
         if (!c)
             BUG (NULL);
+	kl = GetDlgItem (dlg, IDC_KEYMISC_KEYLIST);
         kmi->keylist_sortby = KEY_SORT_USERID;
-        Header_SetImageList(ListView_GetHeader (GetDlgItem (dlg, IDC_KEYMISC_KEYLIST)),
-			    glob_imagelist);
+        Header_SetImageList(ListView_GetHeader (kl), glob_imagelist);
         kmi->lv = keylist_load (GetDlgItem (dlg, IDC_KEYMISC_KEYLIST), c, 
 				NULL, KEYLIST_LIST, kmi->keylist_sortby);
         /* init subclassing for the listview */
-        kl = GetDlgItem (dlg, IDC_KEYMISC_KEYLIST);
         keylist_proc.dlg = dlg;
         keylist_proc.current = (WNDPROC)keylist_subclass_proc;
         keylist_proc.old = (WNDPROC)GetWindowLong( kl, GWL_WNDPROC );
@@ -836,10 +969,6 @@
 		BUG (NULL);
 	    }
         }
-	#if 0
-        km_groups_new (&gc, GetDlgItem (dlg, IDC_KEYMISC_GROUP));
-        km_groups_load (gc);
-	#endif
 	kmi->statbar = setup_status_bar (dlg, kmi->lv);
         SetWindowLong (dlg, GWL_USERDATA, (LONG)kmi);
         kmi->toolbar = load_toolbar (dlg, kmi);
@@ -847,6 +976,7 @@
 	do_center_window (dlg, kmi);
         do_resize_window (dlg, kmi);
         update_ui_items (dlg, kmi->lv);
+	restore_column_size (kmi->lv);
 
 	SetDlgItemText (dlg, IDC_KEYMISC_GTEXT, _("Groups"));
 	SetClassLong (dlg, GCL_HICON, (LONG)LoadIcon (glob_hinst, 
@@ -855,6 +985,7 @@
         return TRUE;
         
     case WM_DESTROY:
+	save_column_size (kmi->lv);
 	if (kmi->lv) {
             keylist_delete (kmi->lv);
             kmi->lv = NULL;       
@@ -865,6 +996,7 @@
 	set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_X", type);
 	ltoa (kmi->pos_y, type, 10);
 	set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_Y", type);
+	
 	/* Remove runtime information. This should be the last action taken here. */
 	delete kmi; kmi = NULL;
 	SetWindowLong (dlg, GWL_USERDATA, 0);
@@ -982,38 +1114,8 @@
 		GetCursorPos (&p);
 		hm = LoadMenu (glob_hinst, MAKEINTRESOURCE (IDR_WINPT_KEYMISC_CTX));
 		popup = GetSubMenu (hm, 0);
+		translate_popupmenu_strings (popup);
 
-		set_menu_text (popup, ID_KEYCTX_UID_COPY, _("Copy User ID to Clipboard"));
-		set_menu_text (popup, ID_KEYCTX_KEYID_COPY, _("Copy Key ID to Clipboard"));
-		set_menu_text (popup, ID_KEYCTX_FPR_COPY, _("Copy Fingerprint to Clipboard"));
-		set_menu_text (popup, ID_KEYCTX_KINFO_COPY, _("Copy Key Info to Clipboard"));
-		set_menu_text (popup, ID_KEYCTX_COPY, _("Copy Key to Clipboard"));
-		set_menu_text (popup, ID_KEYCTX_PASTE, _("Paste Key from Clipboard"));
-		set_menu_text (popup, ID_KEYCTX_RECVFROM, _("Refresh from Keyserver"));
-		set_menu_text (popup, ID_KEYCTX_MAXTRUST, _("Set Implicit &Trust"));
-		set_menu_text (popup, ID_KEYCTX_LISTSIGS, _("&List Signatures"));
-		set_menu_text (popup, ID_KEYCTX_PROPS, _("&Key Properties"));
-		set_menu_text (popup, ID_KEYCTX_EDIT, _("Key Edit"));
-		set_menu_text (popup, ID_KEYCTX_DEL, _("&Delete"));
-		set_menu_text (popup, ID_KEYCTX_REV, _("&Revoke"));
-		set_menu_text (popup, ID_KEYCTX_SIGN, _("&Sign"));
-		set_menu_text (popup, ID_KEYCTX_ENABLE, _("&Enable"));
-		set_menu_text (popup, ID_KEYCTX_DISABLE, _("&Disable"));
-		set_menu_text (popup, ID_KEYCTX_RECVFROM, _("Re&fresh from Keyserver"));
-		set_menu_text (popup, ID_KEYCTX_SETPREFKS, _("Set preferred Keyserver URL"));
-		set_menu_text (popup, ID_KEYCTX_SENDMAIL, _("Send Key to Mail Recipient"));
-		set_menu_text (popup, ID_KEYCTX_SETDEFKEY, _("Set as Default Key"));
-
-		set_menu_text (popup, ID_KEYCTX_ADDKEY, _("Key..."));
-		set_menu_text (popup, ID_KEYCTX_ADDUID, _("User ID..."));
-		set_menu_text (popup, ID_KEYCTX_ADDPHOTO, _("Photo ID..."));
-		set_menu_text (popup, ID_KEYCTX_ADDREV, _("Revoker..."));
-
-		/* change popup texts */
-		set_menu_text_bypos (popup, 0, _("Key Attributes"));
-		set_menu_text_bypos (popup, 6, _("Add"));
-		set_menu_text_bypos (popup, 19, _("Send to Keyserver"));
-
 		if (km_check_for_seckey (kmi->lv, l_idx, &i))
 		    set_menu_state (popup, ID_KEYCTX_SETDEFKEY, MF_ENABLED);
 		if (i == 0)
@@ -1056,24 +1158,6 @@
 		DestroyMenu (hm);
 		return TRUE;
 	    }
-	    #if 0 /* XXX */
-	    if( notify->idFrom == IDC_KEYMISC_GROUP ) {
-		HWND tree = GetDlgItem( dlg, IDC_KEYMISC_GROUP );
-		if( TreeView_GetSelection( tree ) ) {
-		    GetCursorPos( &p );
-		    hm = LoadMenu( glob_hinst, MAKEINTRESOURCE(IDR_WINPT_GROUP_CTX) );
-		    popup = GetSubMenu (hm, 0);
-		    if (km_index == -1) /* XXX */
-			set_menu_state( popup, ID_GROUP_PASTE, MF_DISABLED|MF_GRAYED );
-		    set_menu_text( popup, ID_GROUP_PASTE, _("Paste into this group") );
-		    set_menu_text( popup, ID_GROUP_DELETE, _("Delete") );
-		    TrackPopupMenu( popup, TPM_RIGHTALIGN, p.x, p.y, 0, dlg, NULL );
-		    DestroyMenu( popup );
-		    DestroyMenu( hm );
-		    return TRUE;
-		}
-	    }
-	    #endif
 	    break;
 
         case LVN_COLUMNCLICK:
@@ -1164,15 +1248,14 @@
 	    if (kmi->lv_idx == -1) {
                 msg_box (dlg, _("Please select a key."),  
 		         _("Key Manager"), MB_ERR);
-                return TRUE;;
+                return TRUE;
             }
             if (km_check_key_status (kmi->lv, kmi->lv_idx))
                 return TRUE;
 	    key = (gpgme_key_t)listview_get_item2 (kmi->lv, kmi->lv_idx);
-	    listview_get_item_text (kmi->lv, kmi->lv_idx, 1, keyid, DIM (keyid)-1);
 	    memset (&k, 0, sizeof (k));
 	    k.ctx = key;
-	    k.keyid = keyid;
+	    k.keyid = key->subkeys->keyid;
 	    dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYSIGN, dlg,
                               keysign_dlg_proc, (LPARAM)&k, 
                               _("Key Signing"), IDS_WINPT_KEYSIGN);
@@ -1484,7 +1567,8 @@
 
         case ID_KEYMISC_REFRESH_KEYS:
 	    if (listview_count_items (kmi->lv, 1) == 0) {
-		msg_box (dlg, _("No key was selected, select all by default."), _("Key Manager"), MB_INFO);
+		msg_box (dlg, _("No key was selected, select all by default."), 
+			 _("Key Manager"), MB_INFO);
 		listview_select_all (kmi->lv);
 	    }
             km_refresh_from_keyserver (kmi->lv, dlg);
@@ -1662,6 +1746,3 @@
     
     return FALSE;
 }
-
-
-

Modified: trunk/Src/wptKeyPropsDlg.cpp
===================================================================
--- trunk/Src/wptKeyPropsDlg.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptKeyPropsDlg.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -17,7 +17,6 @@
  * along with WinPT; if not, write to the Free Software Foundation,
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  */
-
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -208,14 +207,14 @@
     gpgme_key_t sk, key;
     char info[512];
     const char *inf;
-    u32 created, expires;    
+    u32 created, expires;
 
     memset (&k2, 0, sizeof (k2));	
     if (k->key_pair)
 	winpt_get_seckey (k->keyid, &k2);
     else    
 	winpt_get_pubkey (k->keyid, &k2);
-    sk = k2.ctx;	
+    sk = k2.ctx;
     if (sk)
 	k->is_protected = k2.is_protected;
     if (get_pubkey (k->keyid, &key))
@@ -226,7 +225,7 @@
                _("Type: %s\r\n"
                "Key ID: %s\r\n"
                "Algorithm: %s\r\n"
-               "Size: %s\r\n"
+               "Size: %s bits\r\n"
                "Created: %s\r\n"
 	       "Expires: %s\r\n"
                "Validity: %s\r\n"
@@ -324,7 +323,6 @@
 		if (rc == IDNO)
 		    return TRUE;
 	    }
-
             dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYEDIT_OWNERTRUST,
                               dlg, (DLGPROC)keyedit_ownertrust_dlg_proc,
                               (LPARAM)k, _("Change Ownertrust"),

Modified: trunk/Src/wptKeylist.cpp
===================================================================
--- trunk/Src/wptKeylist.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptKeylist.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -18,6 +18,7 @@
  * along with WinPT; if not, write to the Free Software Foundation, 
  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
  */
+
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -168,6 +169,17 @@
 }
 
 
+const char*
+get_key_pubalgo2 (gpgme_pubkey_algo_t alg)
+{
+    switch (alg) {
+    case GPGME_PK_DSA: return "D";
+    case GPGME_PK_RSA: return "R";
+    case GPGME_PK_ELG: return "G";
+    default: return "?";
+    }
+    return "?";
+}
 
 const char*
 get_key_algo (gpgme_key_t key, int keyidx)
@@ -358,7 +370,6 @@
 	uididx = 0;
     if (listmode) {
 	const char *s;
-	
 	if (key->revoked)
 	    s = _("Revoked");
 	else if (key->expired)
@@ -367,7 +378,6 @@
 	    s = _("Disabled");
 	else
 	    s = "";
-	
 	/* if the key has a special status, we don't continue to figure out
 	   what any user-id validities. */
 	if (*s)
@@ -472,7 +482,7 @@
 static const char*
 calc_validity (gpg_group_t grp)
 {
-    int valid=0;
+    int valid = 0;
     gpg_member_t mbr;
     gpgme_key_t key;
 
@@ -675,21 +685,21 @@
     /* we check the pubkey algorithm here to make sure that no ElGamal
        sign+encrypt key is used in _any_ mode */
     if (list != 1 && key->subkeys->pubkey_algo == GPGME_PK_ELG) {
-	log_debug ("ElGamal (E+S) key found: %s (%s)\n", 
+	log_debug ("ElGamal (E+S) key found: %s (%s)\n",
 		   key->uids->name, key->subkeys->keyid);
 	return 0;
     }
 
         
-    if (listview_add_item2 (lv, " ", (void *)key))	
+    if (listview_add_item2 (lv, " ", (void *)key))
 	return WPTERR_GENERAL;
-	
+
     attr = key->uids->uid;
     memset (&lvi, 0, sizeof lvi);
     lvi.mask = LVIF_TEXT | LVIF_PARAM;
     lvi.pszText = (char *)attr;
     lvi.lParam = (LPARAM )key;
-    if (ListView_SetItem( lv->ctrl, &lvi ) == FALSE)
+    if (ListView_SetItem (lv->ctrl, &lvi) == FALSE)
 	return WPTERR_GENERAL;
         
     if (uididx == -1) { /* request the primary user-id of the key. */
@@ -825,7 +835,7 @@
 	if (mode & KEYLIST_ALL) {
 	    uids = count_userids (key);
 	    rc = do_addkey (lv, key, uids, i, 0);
-	    if( rc )
+	    if (rc)
 		return rc;
 	}
 	else if (mode & KEYLIST_LIST)
@@ -838,9 +848,9 @@
 			return rc;
 		}
 		else {
-		    for( uids = 0;  uids < count_userids (key); uids++ ) {
-			rc = do_addkey( lv, key, uids, i, -1 );
-			if( rc )
+		    for (uids = 0;  uids < count_userids (key); uids++) {
+			rc = do_addkey (lv, key, uids, i, -1);
+			if (rc)
 			    return rc;
 		    }
 		}

Modified: trunk/Src/wptKeysigDlg.cpp
===================================================================
--- trunk/Src/wptKeysigDlg.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptKeysigDlg.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -46,13 +46,13 @@
 static int
 is_sig (listview_ctrl_t lv, int pos)
 {
-    char tmpbuf[256];
+    char tmpbuf[200];
 
     if (pos == -1)
 	pos = listview_get_curr_pos (lv);
     if (pos == -1)
 	return 0;
-    listview_get_item_text (lv, pos, 0, tmpbuf, 200);
+    listview_get_item_text (lv, pos, 0, tmpbuf, sizeof (tmpbuf)-1);
     if (*tmpbuf == ' ')
 	return -1;
     return 0;
@@ -268,10 +268,11 @@
     
     n = listview_count_items (lv, 0);
     for( i = 0; i < n; i++ ) {
-        listview_get_item_text( lv, i, 1, id, sizeof id - 1 );
+        listview_get_item_text (lv, i, 1, id, sizeof (id) - 1);
         if( !strncmp( id, "NOKEY", 5 ) ) {
-            listview_get_item_text( lv, i, 4, keyid, sizeof keyid -1 );
-            rc = hkp_recv_key( dlg, default_keyserver, default_keyserver_port, keyid, 0, 0 );
+            listview_get_item_text( lv, i, 4, keyid, sizeof (keyid) -1);
+            rc = hkp_recv_key (dlg, default_keyserver, 
+			       default_keyserver_port, keyid, 0, 0);
             if( rc )               
 		break;
         }
@@ -351,10 +352,9 @@
         if (k->uid)
             _snprintf (inf, DIM (inf)-1, _("Signature List for \"%s\""), k->uid);
         SetWindowText (dlg, inf);
-	#ifndef LANG_DE
         SetDlgItemText (dlg, IDC_KEYSIG_RECVKEY, _("&Receive Key"));
 	SetDlgItemText (dlg, IDC_KEYSIG_SIGPROPS, _("&Properties"));
-	#endif
+
 	lv = siglist_load (GetDlgItem (dlg, IDC_KEYSIG_LIST), k->keyid);
 	if (!check_for_missing_keys (lv))
 	    EnableWindow (GetDlgItem (dlg, IDC_KEYSIG_RECVKEY), FALSE);
@@ -398,7 +398,8 @@
 	    && notify->idFrom == IDC_KEYSIG_LIST)
 	    do_load_keyprops (dlg, lv);
 	if (notify && notify->code == NM_RCLICK &&
-	    notify->idFrom == IDC_KEYSIG_LIST)
+	    notify->idFrom == IDC_KEYSIG_LIST &&
+	    is_sig (lv, -1))
 	    do_create_popup (dlg);
 	if (notify && notify->code == LVN_ITEMCHANGED &&
 	    ((LPNMLISTVIEW)lparam)->uNewState) {
@@ -406,6 +407,8 @@
 	    listview_get_item_text (lv, idx, 1, inf, DIM (inf)-1);
 	    EnableWindow (GetDlgItem (dlg, IDC_KEYSIG_RECVKEY),
 			  strcmp (inf, "NOKEY") == 0? TRUE: FALSE);
+	    EnableWindow (GetDlgItem (dlg, IDC_KEYSIG_SIGPROPS),
+			  is_sig (lv, -1)? TRUE : FALSE);
 	}
 	break;
         

Modified: trunk/Src/wptRegistry.cpp
===================================================================
--- trunk/Src/wptRegistry.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptRegistry.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -61,6 +61,24 @@
 #define WINPT_REG "Software\\WinPT"
 
 
+/* Return != 0 if GPG4win is installed. */
+int
+is_gpg4win_installed (void)
+{
+    char *p;
+
+    p = get_reg_entry_gpg4win (NULL);
+    if (!p)
+	return 0;
+    if (dir_exist_check (p)) {
+	free_if_alloc (p);
+	return 0;
+    }
+    free_if_alloc (p);
+    return -1;
+}
+
+
 /* Return != 0 if GPGee is installed. */
 int
 is_gpgee_installed (void)
@@ -93,7 +111,8 @@
 static int
 regist_single_filetype (gpg_filetype *gfile)
 {
-    char icon[256], prog[256];
+    char icon[256];
+    char prog[256];
     
     memset (&icon, 0, sizeof (icon));
     GetModuleFileName (glob_hinst, prog, sizeof (prog)-1);
@@ -132,7 +151,7 @@
     }
 
     return 0;
-} /* regist_inst_gpg */
+}
 
 
 /* Install WinPT into the W32 registry, if the entry already 
@@ -197,7 +216,7 @@
 	}
 	free_if_alloc (p);
 	if (n)
-	    set_reg_entry (HKEY_CURRENT_USER, WINPT_REG, "Extensions", "1");
+	    set_reg_entry( HKEY_CURRENT_USER, WINPT_REG, "Extensions", "1" );
 	return 0;
     }
     rc = RegCreateKey (HKEY_CURRENT_USER, WINPT_REG, &reg);
@@ -224,7 +243,8 @@
 /* Create a new filetype in the W32 registry.
    We should really care of errors! Otherwise we can damage the registry! */
 int
-create_file_type( const char *exefile, const char *ext, const char *extname, char *iconfile )
+create_file_type (const char *exefile, const char *ext, 
+		  const char *extname, char *iconfile)
 {
     int rc;
     HKEY reg = NULL;
@@ -290,7 +310,7 @@
 	return NULL;
     len += 1;
     p = new char[len+1];
-    if( !p )
+    if (!p)
 	return NULL;
     len = ExpandEnvironmentStrings (path, p, len);
     if (!len) {
@@ -298,7 +318,7 @@
 	return NULL;
     }
     return p; 
-} /* expand_path */
+}
 
 
 /* Retrieve a registry entry with the directory given in @dir
@@ -311,7 +331,7 @@
     char text[384] = {0};
     DWORD nbytes, type;
     HKEY reg_key = NULL;
-    char *p = NULL;
+    char * p = NULL;
     
     rc = RegOpenKeyEx (root_key, dir, 0, KEY_QUERY_VALUE, &reg_key);
     if( !rc_ok( rc ) )
@@ -397,8 +417,6 @@
 }
 
 
-
-
 int
 set_reg_entry_mo (const char * value)
 {	
@@ -493,7 +511,7 @@
 int
 get_reg_winpt_single (int id)
 {
-    char *buf = NULL;
+    char * buf = NULL;
     int val = 0;
 
     buf = get_reg_entry (HKEY_CURRENT_USER, WINPT_REG, cfg[id]);

Modified: trunk/Src/wptSigList.cpp
===================================================================
--- trunk/Src/wptSigList.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptSigList.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -50,7 +50,7 @@
     struct listview_column_s implist[] = {
 	{0, 240, (char *)_("User ID")},
 	{1,  50, (char *)_("Valid")},
-	{2,  40, (char *)_("Class")},
+	{2,  44, (char *)_("Class")},
 	{3,  68, (char *)_("Creation")},
 	{4,  80, (char *)_("Key ID")},
 	{5,  68, (char *)_("Expiration")},
@@ -75,8 +75,8 @@
 void 
 siglist_delete( listview_ctrl_t lv )
 {
-    if( lv ) {
-	listview_release( lv );	
+    if (lv) {
+	listview_release (lv);
     }
 }
 
@@ -115,7 +115,7 @@
 	return 0;
 
     rc = listview_add_item (lv, " ");
-    if( rc )	
+    if (rc)
 	return rc;
 
     attr = NULL;

Modified: trunk/Src/wptUTF8.cpp
===================================================================
--- trunk/Src/wptUTF8.cpp	2005-12-16 13:12:40 UTC (rev 127)
+++ trunk/Src/wptUTF8.cpp	2005-12-19 13:05:59 UTC (rev 128)
@@ -1,6 +1,6 @@
 /* wptUTF8.cpp - UTF8 conversation 
  *	Copyright (C) 1994, 1998-2001 Free Software Foundation, Inc.
- *	Copyright (C) 2002, 2004 Timo Schulz
+ *	Copyright (C) 2002, 2004, 2005 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -32,24 +32,6 @@
 #include "wptTypes.h"
 #include "wptErrors.h"
 
-static u16 koi8_unicode[128] = {
-    0x2500,0x2502,0x250c,0x2510,0x2514,0x2518,0x251c,0x2524,
-    0x252c,0x2534,0x253c,0x2580,0x2584,0x2588,0x258c,0x2590,
-    0x2591,0x2592,0x2593,0x2320,0x25a0,0x2219,0x221a,0x2248,
-    0x2264,0x2265,0x00a0,0x2321,0x00b0,0x00b2,0x00b7,0x00f7,
-    0x2550,0x2551,0x2552,0x0451,0x2553,0x2554,0x2555,0x2556,
-    0x2557,0x2558,0x2559,0x255a,0x255b,0x255c,0x255d,0x255e,
-    0x255f,0x2560,0x2561,0x0401,0x2562,0x2563,0x2564,0x2565,
-    0x2566,0x2567,0x2568,0x2569,0x256a,0x256b,0x256c,0x00a9,
-    0x044e,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433,
-    0x0445,0x0438,0x0439,0x043a,0x043b,0x043c,0x043d,0x043e,
-    0x043f,0x044f,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432,
-    0x044c,0x044b,0x0437,0x0448,0x044d,0x0449,0x0447,0x044a,
-    0x042e,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413,
-    0x0425,0x0418,0x0419,0x041a,0x041b,0x041c,0x041d,0x041e,
-    0x041f,0x042f,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412,
-    0x042c,0x042b,0x0417,0x0428,0x042d,0x0429,0x0427,0x042a
-};
 
 static u16 latin2_unicode[128] = {
     0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
@@ -75,6 +57,7 @@
 static u16 *active_charset = NULL;
 static int no_translation = 0;
 
+
 static int
 ascii_strcasecmp( const char *a, const char *b )
 {
@@ -87,7 +70,7 @@
     }
     
     return *a == *b? 0 : (toupper (*a) - toupper (*b));
-} /* ascii_strcasecmp */
+}
 
 int
 set_native_charset( const char *newset )
@@ -101,11 +84,6 @@
       active_charset_name = "iso-8859-2";
       no_translation = 0;
       active_charset = latin2_unicode;
-    }
-  else if( !ascii_strcasecmp( newset, "koi8-r" ) ) {
-      active_charset_name = "koi8-r";
-      no_translation = 0;
-      active_charset = koi8_unicode;
   }
   else if( !ascii_strcasecmp (newset, "utf8" )
            || !ascii_strcasecmp(newset, "utf-8") ) {
@@ -117,14 +95,15 @@
       return WPTERR_GENERAL;
 
   return 0;
-} /* set_native_charset */
+}
 
 const char*
 get_native_charset( void )
 {	
     return active_charset_name;
-} /* get_native_charset */
+}
 
+
 /****************
  * Convert string, which is in native encoding to UTF8 and return the
  * new allocated UTF8 string.
@@ -579,17 +558,20 @@
 } /* conv_charset */
 
 
-char *
+/* XXX: the conv_charset() call fails when the user-id was created
+        with iso-8859-1 but it is assumed that CP850 (gpg console) is used. */
+
+char*
 utf8_to_wincp (const char * s, size_t len)
 {
-    char * decs;
+    char *decs;
     decs = utf8_to_native (s, len, 0);
     conv_charset ((byte *)decs, strlen (decs), 1);
     return decs;
 }
 
 
-char *
+char*
 wincp_to_utf8 (const char * s, size_t len)
 {
     char * encs;
@@ -609,4 +591,4 @@
 	    return -1;
     }
     return 0;
-} /* is_8bit_string */
+}



More information about the Winpt-commits mailing list