[Libreoffice-commits] core.git: Branch 'private/thb/gpg4libre2' - 8 commits - comphelper/Library_comphelper.mk comphelper/source cui/uiconfig fpicker/source include/fpicker offapi/com officecfg/registry package/inc package/source sfx2/source vcl/inc xmlsecurity/source

Thorsten Behrens thorsten.behrens at cib.de
Tue Nov 28 01:29:55 UTC 2017


Rebased ref, commits from common ancestor:
commit 53cdd91d97024026e21eefff0ae5957c7ae2f725
Author: Thorsten Behrens <thorsten.behrens at cib.de>
Date:   Fri Nov 24 03:27:05 2017 +0100

    gpg4libre: encryption on save demo
    
    Change-Id: Ib2fd32cf2550f30bc0d84213ad05a4b95da093d1

diff --git a/comphelper/source/misc/storagehelper.cxx b/comphelper/source/misc/storagehelper.cxx
index 09753dd30484..ed731c7a2f80 100644
--- a/comphelper/source/misc/storagehelper.cxx
+++ b/comphelper/source/misc/storagehelper.cxx
@@ -461,13 +461,53 @@ uno::Sequence< beans::NamedValue > OStorageHelper::CreateGpgPackageEncryptionDat
         aKeyID = xSignCertificate->getSHA1Thumbprint();
     }
 
+    std::unique_ptr<GpgME::Context> ctx;
+    GpgME::Error err = GpgME::checkEngine(GpgME::OpenPGP);
+    if (err)
+        throw uno::RuntimeException("The GpgME library failed to initialize for the OpenPGP protocol.");
+
+    ctx.reset( GpgME::Context::createForProtocol(GpgME::OpenPGP) );
+    if (ctx == nullptr)
+        throw uno::RuntimeException("The GpgME library failed to initialize for the OpenPGP protocol.");
+    ctx->setArmor(false);
+    ctx->setKeyListMode(GPGME_KEYLIST_MODE_LOCAL);
+    std::vector<GpgME::Key> keys;
+    keys.push_back(
+        ctx->key(
+            reinterpret_cast<const char*>(aKeyID.getConstArray()),
+            err, true));
+
+#if 0
+    // good, ctx is setup now, let's sign the lot
+    GpgME::Data data_in(
+        reinterpret_cast<char*>(xmlSecBufferGetData(pDsigCtx->transformCtx.result)),
+        xmlSecBufferGetSize(pDsigCtx->transformCtx.result), false);
+    GpgME::Data data_out;
+
+    ctx->encrypt(keys, plain, cipher, GpgME::Context::NoCompress);
+
+    SAL_INFO("xmlsecurity.xmlsec.gpg", "Generating signature for: " << xmlSecBufferGetData(pDsigCtx->transformCtx.result));
+#endif
+
+    // TODO perhaps rename that one - bit misleading name ...
     aGpgEncryptionData[0].Name = "KeyId";
     aGpgEncryptionData[0].Value <<= aKeyID;
+    aGpgEncryptionData[1].Name = "KeyPacket";
+    OUString packet("LS0tLS1CRUdJTiBQR1AgUFJJVkFURSBLRVkgQkxPQ0stLS0tLQpWZXJzaW9uOiBHbnVQRyB2MQoKbFFJR0JGY3J4V3NCQkFDM1VBdko4Sk9PZWZZcVVYQVNzVHkrUHBjNHp3cU9YZlRZT2VTSk45V3RZWDVBdU9RNgpjdzZUTmhhbExwT1hLNlhLcUpoMklqSVh6cE1jUzEvQzg1QlNSK0V6dm51VXlhUCtZTXI4VzkyalZwNGo2OWJFCkR1Mnd2Nm5wTnFvRDhqY3NBMHJLeUFoVEg0c3lNL2RMcm1FOThEVXJibGRscE11R0VDUFg0L2tVSHdBUkFRQUIKL2djREFqbjhxQXJpdllBVVlLVGtxd1U5dTRseUdhUEFzOFZNc0ltWTRYUksxd1hOWHNmVC9vaG44QWh4OHJWWQp3eCtQUnFVemxrS2xiNFhkcjBzL0VKSWp0bmx4c3ZPYWlsY1VFaFpEL0VkaHM5WEI2MUl0UFdSWm1OMW1lbGt0Ck1lZDBLL1hCdzVxejJUemZGcFBaaGIxdjZMY0IwRmZnSjY2K1JBWW9EZXVmRGdGNllNcmhrc3kvVnNwM1MrYTYKNE4rclBuNWlkcTVPOU5lb09MVCt5RGRBVTlFeFAxVnd1SFY5V01UT3JvcUtKZUYyT1lvSW05V2dzTGd6ZEU1OQpuSXFVNC9FcWQxYUpCbTgrRTBtbnhFd0VuS2JJNEtOa0tzdDAwRXFmTmIzVXA4RlFJV3hVRnlaclplL2JmeTNCCnVrM2IzZ0xRUlRqUHJvR0JNS3B2UWQvd2xVVTVESS92OUdHMWtpT2duV1dnZGFWWjBFazdzTWhaY1R3aWpHNFYKaUVaOEE1bVZRWXBMTlFwY29jRGdoM0lyRzBkSFVkNVorRUVaQkRSbElaRklKVnVyak9XempzM2lsd3ZhYWpmUwppSFdiZUw4Nmh2bFVWV2hCTCtqMUhsTDRZ
 Wjg2SmJNc0kzQ0ZmaEJXT1pqbEFMMTRvc1NHNUVLMEhGUmxjM1FnClZYTmxjaUE4ZEdWemRFQmxlR0Z0Y0d4bExtTnZiVDZJdmdRVEFRSUFLQVVDVnl2RmF3SWJBd1VKQUFGUmdBWUwKQ1FnSEF3SUdGUWdDQ1FvTEJCWUNBd0VDSGdFQ0Y0QUFDZ2tRanlwQVVkSDBFOWVwTGdQOUcxLytPU0pkVWVzKwp3ZDMvQmdwbUxqdWRsWEVXQVZjZnh2UlpHbmVjY2VwOXl5ay90WHRSc3lnNjMyTnV5REFlUk5EWmRDVEFHNGNUCmQxY1crWnJsQzM5T1MrOFUrQUFVUi82QlVic3JXT0RrMTVzN2VOOUs3NmE2SU9Lb2RKRHd1QkVkZDJQcUdCd3YKQ1Qwam5pT0pXUFVZdjJzOHBPMGFndzdVV0dNUzdmU2RBZ1lFVnl2RmF3RUVBTU04aVZnMERNbEpPSlQwbmhFQgp2dFR3ZUpIeFB2akpnTHNmUlFsdkNlQWs1U2taV1pNTllxRnRxbTl6NmJqMkJobnlYU0tFMENBem4xTXhsc1o2CjlJWkJPQ3ZURlRRY1pZQ3V2N1UwY3prU0xzMlBvN1VMeXJKMFNpSS9OS2NSdVhIR3ZDSzdWUHdpK2RROTNITUEKWUxOZ2FyblJ1cVUzbHd1NU1yaHROZVpOQUJFQkFBSCtCd01DT2Z5b0N1SzlnQlJnZm1XUmlRc1VzU1BkRTlDRwptaGpRcDdKOWRNQTIrWDhsK0NnaU8yU2J3SG5idmwrWEtLaElzaGNRSWp2UitMdHZnRFFoZkN6TlJwNTBnRlRUCkZNZER6RlVJakVhYVRleDh2cUFkV1lQcjl5SitVSGdUVWhTdVB5eG41UHYrVmR1MmhTai9pVzJpeEVUQ2J5ZkUKOWt6R2FsMGJaQWRiWFZEcHFoam1rbHAzVXlkQm1xRzVoMmJ4cS9ZeFRKYmZ4S01RQm03Ukw4MDBHb
 jYwUWhsUwpDTkNmWVFRa290cmlnMzNzWHl4Q1RSZDQ3Ymk1Zmlta2JoOVllcnU5Q29sUDVqQUQwSm43NjBxYk5MZjcveFNCCnJRRENzL0k4R1lYMmtkQllrOUxpYm03Y1FhNjRrRDVaMzZtdGdNNERGQjEwbUMxaDVRZVpuRUJtczdKei9PUTMKdWtUWU1JYTBUT1VnY25jTG40K0pKckZQTkxYak9rNVdid0FzN0hYKzEyVitXb05oSmhVdlhMYXFHTTcrUWtUUwplMERJazVCZFZxUlp4VURJRDM0OEhQR0Ntc21VUlRGRDcxbEZKMy91Zkg3a2FHTmVzUnBnZFplSmFGUlFybS93CkpLQ1c2SXJJbEt1cWNpNDRMdkpBYTRpbEJCZ0JBZ0FQQlFKWEs4VnJBaHNNQlFrQUFWR0FBQW9KRUk4cVFGSFIKOUJQWHdVVUQvaTh5eStTOVpjdWhWcUxuTmNXNkxzSHhUaHE2MXVMRysxcTg3aFBYVGxLMmt3M0M5QTI2OUlqOApBUkhRaGpBSUFSSkM3MHNCaWVKK0xMMlZWa1ZYakVnYnpqdlNHTUE3dkRXRlBJOHovdHVxSnBKeW1zR0tEbFJ4CkptSVBkRFFOVlJtZGV6cnd1WlNlaVJabE43SjNNNnQvenJCNzFHVU9CakhLS2Jua2pKdUQKPXpyZG4KLS0tLS1FTkQgUEdQIFBSSVZBVEUgS0VZIEJMT0NLLS0tLS0K");
+    ::sax::Converter::decodeBase64(aKeyID, packet);
+    aGpgEncryptionData[1].Value <<= aKeyID;
+    aGpgEncryptionData[2].Name = "CipherValue";
+    OUString cipher("FAm4BDOfQRJ66/ecfIByCck3JxaKYYEWwms7z+Vsb+iqPWyPGdbgJNkRBAWH4V92JvMoc/QcD/1+z+iRvR6PMGdDHAyprIh5uGHs7mo+dqabJU0qOhHb16InW2XO1GqhmjzMDUw+q4ot28jpfIVSMKPlf6b8vnNUICMJjXn+aB8=");
+    ::sax::Converter::decodeBase64(aKeyID, cipher);
+    aGpgEncryptionData[2].Value <<= aKeyID;
+
+    aEncryptionData[0].Name = PACKAGE_ENCRYPTIONDATA_SHA256UTF8;
+    aEncryptionData[0].Value <<= aVector;
 
     aContainer[0].Name = "GpgInfos";
-    aContainer[0].Value <<= aGpgEncryptionData;
+    aContainer[0].Value = makeAny(aGpgEncryptionData);
     aContainer[1].Name = "EncryptionKey";
-    aContainer[1].Value <<= aEncryptionData;
+    aContainer[1].Value = makeAny(aEncryptionData);
 
     return aContainer;
 }
diff --git a/xmlsecurity/source/gpg/SecurityEnvironment.cxx b/xmlsecurity/source/gpg/SecurityEnvironment.cxx
index 2bbcf8ddf79b..ba21794097d5 100644
--- a/xmlsecurity/source/gpg/SecurityEnvironment.cxx
+++ b/xmlsecurity/source/gpg/SecurityEnvironment.cxx
@@ -119,7 +119,7 @@ Reference< XCertificate > SecurityEnvironmentGpg::getCertificate( const OUString
     if(xmlSecBase64Decode(strKeyId, const_cast<xmlSecByte*>(strKeyId), xmlStrlen(strKeyId)) < 0)
         throw RuntimeException("Base64 decode failed");
 
-    m_ctx->setKeyListMode(GPGME_KEYLIST_MODE_LOCAL);
+    m_ctx->addKeyListMode(GPGME_KEYLIST_MODE_LOCAL);
     GpgME::Error err = m_ctx->startKeyListing("", false);
     while (!err) {
         GpgME::Key k = m_ctx->nextKey(err);
commit b1e1f323efc65beba64dc5f126e6c19c6c94859d
Author: Thorsten Behrens <thorsten.behrens at cib.de>
Date:   Thu Nov 23 23:28:13 2017 +0100

    gpg4libre: add gpg encrypt checbox to win32 filepicker
    
    Change-Id: Ia6315e8b1f04228984afd2fbca3c059df9589497

diff --git a/fpicker/source/office/OfficeControlAccess.cxx b/fpicker/source/office/OfficeControlAccess.cxx
index 1b30f285734b..be9a91f212af 100644
--- a/fpicker/source/office/OfficeControlAccess.cxx
+++ b/fpicker/source/office/OfficeControlAccess.cxx
@@ -77,6 +77,7 @@ namespace svt
             { "FilterList",             LISTBOX_FILTER,                 PROPERTY_FLAGS_COMMON                               },
             { "FilterListLabel",        LISTBOX_FILTER_LABEL,           PROPERTY_FLAGS_COMMON | PropFlags::Text          },
             { "FilterOptionsBox",       CHECKBOX_FILTEROPTIONS,         PROPERTY_FLAGS_COMMON | PROPERTY_FLAGS_CHECKBOX     },
+            { "GpgPassword",            CHECKBOX_GPGENCRYPTION,         PROPERTY_FLAGS_COMMON | PROPERTY_FLAGS_CHECKBOX     },
             { "HelpButton",             PUSHBUTTON_HELP,                PROPERTY_FLAGS_COMMON | PropFlags::Text          },
             { "ImageTemplateList",      LISTBOX_IMAGE_TEMPLATE,         PROPERTY_FLAGS_COMMON | PROPERTY_FLAGS_LISTBOX      },
             { "ImageTemplateListLabel", LISTBOX_IMAGE_TEMPLATE_LABEL,   PROPERTY_FLAGS_COMMON | PropFlags::Text          },
diff --git a/fpicker/source/win32/filepicker/VistaFilePicker.cxx b/fpicker/source/win32/filepicker/VistaFilePicker.cxx
index 449be62fb848..54ff672579ff 100644
--- a/fpicker/source/win32/filepicker/VistaFilePicker.cxx
+++ b/fpicker/source/win32/filepicker/VistaFilePicker.cxx
@@ -396,6 +396,7 @@ void SAL_CALL VistaFilePicker::initialize(const css::uno::Sequence< css::uno::An
             bFileOpenDialog  = false;
             nFeatures        |= FEATURE_AUTOEXTENSION;
             nFeatures        |= FEATURE_PASSWORD;
+            nFeatures        |= FEATURE_GPGPASSWORD;
         }
         break;
 
@@ -405,6 +406,7 @@ void SAL_CALL VistaFilePicker::initialize(const css::uno::Sequence< css::uno::An
             nFeatures        |= FEATURE_AUTOEXTENSION;
             nFeatures        |= FEATURE_PASSWORD;
             nFeatures        |= FEATURE_FILTEROPTIONS;
+            nFeatures        |= FEATURE_GPGPASSWORD;
         }
         break;
 
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
index 430ac9d208b1..17c9fc0548b2 100644
--- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
+++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
@@ -588,6 +588,13 @@ void VistaFilePickerImpl::impl_sta_enableFeatures(::sal_Int32 nFeatures, ::sal_I
         setLabelToControl(iCustom, nControlId);
     }
 
+    if ((nFeatures & FEATURE_GPGPASSWORD) == FEATURE_GPGPASSWORD)
+    {
+        nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_GPGENCRYPTION;
+        iCustom->AddCheckButton (nControlId, L"GpgPassword", false);
+        setLabelToControl(iCustom, nControlId);
+    }
+
     if ((nFeatures & FEATURE_READONLY) == FEATURE_READONLY)
     {
         nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_READONLY;
@@ -1108,6 +1115,7 @@ void VistaFilePickerImpl::impl_sta_GetControlValue(const RequestRef& rRequest)
         switch (nId)
         {
         case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_PASSWORD :
+        case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_GPGENCRYPTION :
         case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_READONLY :
         case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS :
         case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_LINK :
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx
index 70272ad8c1c0..5161d787e767 100644
--- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx
+++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx
@@ -67,6 +67,7 @@ static const ::sal_Int32 FEATURE_IMAGETEMPLATE  =  128;
 static const ::sal_Int32 FEATURE_PLAY           =  256;
 static const ::sal_Int32 FEATURE_READONLY       =  512;
 static const ::sal_Int32 FEATURE_VERSION        = 1024;
+static const ::sal_Int32 FEATURE_GPGPASSWORD    = 2048;
 
 static const OUString PROP_PICKER_LISTENER("picker_listener"   ); // [XFilePickerListenert]
 static const OUString PROP_DIALOG_SHOW_RESULT("dialog_show_result" ); // [sal_Bool] true=OK, false=CANCEL
diff --git a/fpicker/source/win32/misc/resourceprovider.cxx b/fpicker/source/win32/misc/resourceprovider.cxx
index bc9c270774b5..b7b70d4d45de 100644
--- a/fpicker/source/win32/misc/resourceprovider.cxx
+++ b/fpicker/source/win32/misc/resourceprovider.cxx
@@ -61,7 +61,8 @@ Entry const CtrlIdToResIdTable[] = {
     { LISTBOX_IMAGE_TEMPLATE_LABEL,             STR_SVT_FILEPICKER_IMAGE_TEMPLATE },
     { CHECKBOX_SELECTION,                       STR_SVT_FILEPICKER_SELECTION },
     { FOLDERPICKER_TITLE,                       STR_SVT_FOLDERPICKER_DEFAULT_TITLE },
-    { FOLDER_PICKER_DEF_DESCRIPTION,            STR_SVT_FOLDERPICKER_DEFAULT_DESCRIPTION }
+    { FOLDER_PICKER_DEF_DESCRIPTION,            STR_SVT_FOLDERPICKER_DEFAULT_DESCRIPTION },
+    { CHECKBOX_GPGENCRYPTION,                   STR_SVT_FILEPICKER_GPGENCRYPT }
 };
 
 const sal_Int32 SIZE_TABLE = SAL_N_ELEMENTS( CtrlIdToResIdTable );
commit 137e9b0aed05338acaf986d6a7ab6f175ba5a8cb
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date:   Thu Nov 23 15:47:41 2017 +0100

    gpg4libre: translatable strings for non-LibO filepickers
    
    just strings, code using them is yet to be implemented
    
    Change-Id: I03b2c44f574b3212b39bf4aabedf01c577f35de9
    Reviewed-on: https://gerrit.libreoffice.org/45156
    Reviewed-by: Siegmund Gorr <siegmund.gorr at cib.de>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    (cherry picked from commit d938e1ab00897c12938443ed373bf00083126df2)

diff --git a/include/fpicker/strings.hrc b/include/fpicker/strings.hrc
index ad0569aed0ed..eee7cc86f385 100644
--- a/include/fpicker/strings.hrc
+++ b/include/fpicker/strings.hrc
@@ -13,6 +13,8 @@
 
 #define STR_SVT_FILEPICKER_AUTO_EXTENSION           NC_("STR_SVT_FILEPICKER_AUTO_EXTENSION", "~Automatic file name extension")
 #define STR_SVT_FILEPICKER_PASSWORD                 NC_("STR_SVT_FILEPICKER_PASSWORD", "Save with pass~word")
+//dear loplugins, please don't remove this constant, it will be used in follow-up commits
+#define STR_SVT_FILEPICKER_GPGENCRYPT               NC_("STR_SVT_FILEPICKER_GPGENCRYPT", "Encrypt with ~GPG key")
 #define STR_SVT_FILEPICKER_FILTER_OPTIONS           NC_("STR_SVT_FILEPICKER_FILTER_OPTIONS", "~Edit filter settings")
 #define STR_SVT_FILEPICKER_READONLY                 NC_("STR_SVT_FILEPICKER_READONLY", "~Read-only")
 #define STR_SVT_FILEPICKER_INSERT_AS_LINK           NC_("STR_SVT_FILEPICKER_INSERT_AS_LINK", "~Link")
diff --git a/vcl/inc/strings.hrc b/vcl/inc/strings.hrc
index c06bc06d7793..3960232843f7 100644
--- a/vcl/inc/strings.hrc
+++ b/vcl/inc/strings.hrc
@@ -92,6 +92,8 @@
 
 #define STR_FPICKER_AUTO_EXTENSION                   NC_("STR_FPICKER_AUTO_EXTENSION", "~Automatic file name extension")
 #define STR_FPICKER_PASSWORD                         NC_("STR_FPICKER_PASSWORD", "Save with pass~word")
+// dear loplugins, please don't remove this constant, it will be used in follow-up commits
+#define STR_FPICKER_GPGENCRYPT                       NC_("STR_FPICKER_GPGENCRYPT", "Encrypt with ~GPG key")
 #define STR_FPICKER_FILTER_OPTIONS                   NC_("STR_FPICKER_FILTER_OPTIONS", "~Edit filter settings")
 #define STR_FPICKER_READONLY                         NC_("STR_FPICKER_READONLY", "~Read-only")
 #define STR_FPICKER_INSERT_AS_LINK                   NC_("STR_FPICKER_INSERT_AS_LINK", "Insert as ~Link")
commit d5549635c3255b22560eaf46ca4b49047a6d6cce
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date:   Thu Nov 23 13:37:26 2017 +0100

    gpg4libre: UI and config for adding GPG keys to user's identity
    
    Change-Id: I1a176ca998f49b68c6ca8129fba4eb56445892a2
    Reviewed-on: https://gerrit.libreoffice.org/45145
    Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Reviewed-by: Siegmund Gorr <siegmund.gorr at cib.de>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    (cherry picked from commit 9d06ffadbec8c3b2281f3e04b6c612b86965c146)

diff --git a/cui/uiconfig/ui/optuserpage.ui b/cui/uiconfig/ui/optuserpage.ui
index 61245f6fb3b8..ad893936cb0f 100644
--- a/cui/uiconfig/ui/optuserpage.ui
+++ b/cui/uiconfig/ui/optuserpage.ui
@@ -1,815 +1,924 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.19.0 -->
+<!-- Generated with glade 3.20.0 -->
 <interface domain="cui">
   <requires lib="gtk+" version="3.0"/>
-  <object class="GtkFrame" id="OptUserPage">
+  <object class="GtkBox" id="OptUserPage">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
-    <property name="label_xalign">0</property>
-    <property name="shadow_type">none</property>
+    <property name="orientation">vertical</property>
     <child>
-      <object class="GtkAlignment" id="alignment1">
+      <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="top_padding">6</property>
-        <property name="left_padding">12</property>
+        <property name="border_width">6</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">none</property>
         <child>
-          <object class="GtkGrid" id="grid1">
+          <object class="GtkAlignment" id="alignment1">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="row_spacing">6</property>
-            <property name="column_spacing">12</property>
+            <property name="top_padding">6</property>
+            <property name="left_padding">12</property>
             <child>
-              <object class="GtkLabel" id="companyft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|companyft">_Company:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">company</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="nameft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|nameft">First/last _name/initials:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">firstname</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="streetft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|streetft">_Street:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">street</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">4</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="cityft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|cityft">City/state/_zip:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">city</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">7</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="countryft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|countryft">Country/re_gion:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">country</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">8</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="titleft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|titleft">_Title/position:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">title</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">9</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="phoneft">
+              <object class="GtkGrid" id="grid1">
+                <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|phoneft">Telephone (home/_work):</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">home</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="phoneft-atkobject">
-                    <property name="AtkObject::accessible-description" translatable="yes" context="optuserpage|phoneft-atkobject">Home telephone number</property>
+                <property name="row_spacing">6</property>
+                <property name="column_spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="companyft">
+                    <property name="can_focus">False</property>
+                    <property name="no_show_all">True</property>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|companyft">_Company:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">company</property>
                   </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                  </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">10</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="faxft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|faxft">Fa_x/e-mail:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">fax</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">11</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid2">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="firstname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="nameft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="firstname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|firstname-atkobject">First name</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|nameft">First/last _name/initials:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">firstname</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">1</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="lastname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="streetft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="lastname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|lastname-atkobject">Last name</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|streetft">_Street:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">street</property>
                   </object>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">4</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="shortname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="cityft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="invisible_char">•</property>
-                    <property name="width_chars">7</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="shortname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|shortname-atkobject">Initials</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|cityft">City/state/_zip:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">city</property>
                   </object>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">7</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid3">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="city">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="countryft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="city-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|city-atkobject">City</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|countryft">Country/re_gion:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">country</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">8</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="state">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="titleft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="state-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|state-atkobject">State</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|titleft">_Title/position:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">title</property>
                   </object>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">9</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="zip">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="phoneft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="invisible_char">•</property>
-                    <property name="width_chars">15</property>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|phoneft">Telephone (home/_work):</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">home</property>
                     <child internal-child="accessible">
-                      <object class="AtkObject" id="zip-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|zip-atkobject">Zip code</property>
+                      <object class="AtkObject" id="phoneft-atkobject">
+                        <property name="AtkObject::accessible-description" translatable="yes" context="phoneft-atkobject">Home telephone number</property>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">10</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">7</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid5">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="hexpand">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="title">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="faxft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="title-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|title-atkobject">Title</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|faxft">Fa_x/e-mail:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">fax</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">11</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="position">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid2">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="position-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|position-atkobject">Position</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="firstname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="firstname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|firstname-atkobject">First name</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="lastname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="lastname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="lastname-atkobject">Last name</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="shortname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="invisible_char">•</property>
+                        <property name="width_chars">7</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="shortname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="shortname-atkobject">Initials</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">1</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">9</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid6">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="home">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid3">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="home-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|home-atkobject">Home telephone number</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="city">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="city-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="city-atkobject">City</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="state">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="state-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="state-atkobject">State</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="zip">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="invisible_char">•</property>
+                        <property name="width_chars">15</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="zip-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="zip-atkobject">Zip code</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">7</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="work">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid5">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
                     <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="work-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|work-atkobject">Work telephone number</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="title">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="title-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="title-atkobject">Title</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="position">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="position-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="position-atkobject">Position</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">9</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">10</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid7">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="hexpand">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="fax">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid6">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="fax-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|fax-atkobject">FAX number</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="home">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="home-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="home-atkobject">Home telephone number</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="work">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="work-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="work-atkobject">Work telephone number</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">10</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="email">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid7">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
                     <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="email-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|email-atkobject">email address</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="fax">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="fax-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="fax-atkobject">FAX number</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="email">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="email-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="email-atkobject">email address</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">11</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">11</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkCheckButton" id="usefordocprop">
-                <property name="label" translatable="yes" context="optuserpage|usefordocprop">Use data for document properties</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="xalign">0</property>
-                <property name="draw_indicator">True</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">12</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="rusnameft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|rusnameft">Last name/first _name/father’s name/initials:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">ruslastname</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid8">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="ruslastname">
+                  <object class="GtkCheckButton" id="usefordocprop">
+                    <property name="label" translatable="yes" context="optuserpage|usefordocprop">Use data for document properties</property>
+                    <property name="visible">True</property>
                     <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">12</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="rusnameft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="ruslastname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|ruslastname-atkobject">Last name</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|rusnameft">Last name/first _name/father’s name/initials:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">ruslastname</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="rusfathersname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid8">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="rusfathersname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|rusfathersname-atkobject">Father's name</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="ruslastname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="ruslastname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="ruslastname-atkobject">Last name</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="rusfathersname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="rusfathersname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="rusfathersname-atkobject">Father's name</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="russhortname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="invisible_char">•</property>
+                        <property name="width_chars">7</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="russhortname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="russhortname-atkobject">Initials</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">3</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="rusfirstname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="rusfirstname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="rusfirstname-atkobject">First name</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="russhortname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="eastnameft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="invisible_char">•</property>
-                    <property name="width_chars">7</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="russhortname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|russhortname-atkobject">Initials</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|eastnameft">Last/first _name/initials:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">eastlastname</property>
                   </object>
                   <packing>
-                    <property name="left_attach">3</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">3</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="rusfirstname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid9">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="rusfirstname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|rusfirstname-atkobject">First name</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="eastlastname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="eastlastname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="eastlastname-atkobject">Last name</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="eastfirstname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="eastfirstname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="eastfirstname-atkobject">First name</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="eastshortname">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="invisible_char">•</property>
+                        <property name="width_chars">7</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="eastshortname-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="eastshortname-atkobject">Initials</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">3</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="eastnameft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|eastnameft">Last/first _name/initials:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">eastlastname</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">3</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid9">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="eastlastname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="russtreetft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="eastlastname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|eastlastname-atkobject">Last name</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|russtreetft">_Street/apartment number:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">russtreet</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">5</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="eastfirstname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid10">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="eastfirstname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|eastfirstname-atkobject">First name</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="russtreet">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="russtreet-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="russtreet-atkobject">Street</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="apartnum">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="invisible_char">•</property>
+                        <property name="width_chars">15</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="apartnum-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="ruslastname-atkobject">Apartment number</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">5</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="eastshortname">
-                    <property name="can_focus">True</property>
+                  <object class="GtkLabel" id="icityft">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="invisible_char">•</property>
-                    <property name="width_chars">7</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="eastshortname-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|eastshortname-atkobject">Initials</property>
-                      </object>
-                    </child>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|icityft">_Zip/city:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">izip</property>
                   </object>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">6</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">3</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="russtreetft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|russtreetft">_Street/apartment number:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">russtreet</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">5</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid10">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="russtreet">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid11">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="russtreet-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|russtreet-atkobject">Street</property>
+                    <property name="column_spacing">6</property>
+                    <child>
+                      <object class="GtkEntry" id="icity">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="icity-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="icity-atkobject">City</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="izip">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="invisible_char">•</property>
+                        <property name="width_chars">15</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="izip-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes" context="izip-atkobject">Zip code</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">6</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="apartnum">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid4">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="invisible_char">•</property>
-                    <property name="width_chars">15</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="apartnum-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|apartnum-atkobject">Apartment number</property>
+                    <property name="hexpand">True</property>
+                    <child>
+                      <object class="GtkEntry" id="street">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">4</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">5</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="icityft">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="halign">end</property>
-                <property name="label" translatable="yes" context="optuserpage|icityft">_Zip/city:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">izip</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">6</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid11">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="column_spacing">6</property>
                 <child>
-                  <object class="GtkEntry" id="icity">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid12">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
                     <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="icity-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|icity-atkobject">City</property>
+                    <child>
+                      <object class="GtkEntry" id="country">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="top_attach">8</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="izip">
-                    <property name="can_focus">True</property>
+                  <object class="GtkGrid" id="grid13">
+                    <property name="can_focus">False</property>
                     <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="invisible_char">•</property>
-                    <property name="width_chars">15</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="izip-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes" context="optuserpage|izip-atkobject">Zip code</property>
+                    <property name="hexpand">True</property>
+                    <child>
+                      <object class="GtkEntry" id="company">
+                        <property name="can_focus">True</property>
+                        <property name="no_show_all">True</property>
+                        <property name="valign">center</property>
+                        <property name="hexpand">True</property>
+                        <property name="invisible_char">•</property>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="left_attach">0</property>
+                    <property name="left_attach">1</property>
                     <property name="top_attach">0</property>
                   </packing>
                 </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">6</property>
-              </packing>
             </child>
+          </object>
+        </child>
+        <child type="label">
+          <object class="GtkLabel" id="label1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes" context="optuserpage|label1">Address</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkFrame" id="frame2">
+        <property name="can_focus">False</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">none</property>
+        <child>
+          <object class="GtkAlignment" id="alignment2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="top_padding">6</property>
+            <property name="left_padding">12</property>
             <child>
-              <object class="GtkGrid" id="grid4">
+              <object class="GtkGrid" id="grid14">
                 <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="hexpand">True</property>
+                <property name="row_spacing">6</property>
+                <property name="column_spacing">12</property>
                 <child>
-                  <object class="GtkEntry" id="street">
-                    <property name="can_focus">True</property>
-                    <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
+                  <object class="GtkLabel" id="signingkeylabel">
+                    <property name="can_focus">False</property>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|signingkeylabel">OpenPGP signing key:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">encryptionkey</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
                     <property name="top_attach">0</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">4</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid12">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="hexpand">True</property>
                 <child>
-                  <object class="GtkEntry" id="country">
-                    <property name="can_focus">True</property>
-                    <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
+                  <object class="GtkLabel" id="encryptionkeylabel">
+                    <property name="can_focus">False</property>
+                    <property name="halign">end</property>
+                    <property name="label" translatable="yes" context="optuserpage|encryptionkeylabel">OpenPGP encryption key:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">encryptionkey</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBox" id="encryptionkey">
+                    <property name="can_focus">False</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBox" id="signingkey">
+                    <property name="can_focus">False</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
                     <property name="top_attach">0</property>
                   </packing>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">8</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkGrid" id="grid13">
-                <property name="can_focus">False</property>
-                <property name="no_show_all">True</property>
-                <property name="hexpand">True</property>
                 <child>
-                  <object class="GtkEntry" id="company">
+                  <object class="GtkCheckButton" id="encrypttoself">
+                    <property name="label" translatable="yes" context="optuserpage|encrypttoself">When encrypting documents, always encrypt to self</property>
                     <property name="can_focus">True</property>
-                    <property name="no_show_all">True</property>
-                    <property name="valign">center</property>
-                    <property name="hexpand">True</property>
-                    <property name="invisible_char">•</property>
+                    <property name="receives_default">False</property>
+                    <property name="draw_indicator">True</property>
                   </object>
                   <packing>
-                    <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">2</property>
                   </packing>
                 </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
-              </packing>
-            </child>
-            <child>
-              <placeholder/>
             </child>
           </object>
         </child>
+        <child type="label">
+          <object class="GtkLabel" id="label2">
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes" context="optuserpage|label2">Cryptography</property>
+            <property name="use_underline">True</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+        </child>
       </object>
-    </child>
-    <child type="label">
-      <object class="GtkLabel" id="label1">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes" context="optuserpage|label1">Address</property>
-        <attributes>
-          <attribute name="weight" value="bold"/>
-        </attributes>
-      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">1</property>
+      </packing>
     </child>
   </object>
 </interface>
diff --git a/officecfg/registry/schema/org/openoffice/UserProfile.xcs b/officecfg/registry/schema/org/openoffice/UserProfile.xcs
index 4398968b8774..014a6ac18c4f 100644
--- a/officecfg/registry/schema/org/openoffice/UserProfile.xcs
+++ b/officecfg/registry/schema/org/openoffice/UserProfile.xcs
@@ -199,6 +199,27 @@
         </info>
         <value/>
       </prop>
+      <prop oor:name="signingkey" oor:type="xs:string" oor:nillable="false">
+        <!-- UIHints: Tools - Options - General - User Data -->
+        <info>
+          <desc>Specifies user's preferred OpenPGP key used for document signing</desc>
+        </info>
+        <value/>
+      </prop>
+      <prop oor:name="encryptionkey" oor:type="xs:string" oor:nillable="false">
+        <!-- UIHints: Tools - Options - General - User Data -->
+        <info>
+          <desc>Specifies user's preferred OpenPGP key used for document encryption</desc>
+        </info>
+        <value/>
+      </prop>
+      <prop oor:name="encrypttoself" oor:type="xs:boolean" oor:nillable="false">
+        <!-- UIHints: Tools - Options - General - User Data -->
+        <info>
+          <desc>Whether to encrypt documents for recipient(s) and also for the user with their preferred encryption key</desc>
+        </info>
+        <value>true</value>
+      </prop>
     </group>
   </component>
 </oor:component-schema>
commit 2135585331d012e62dfa090db94fe2aaeebf112b
Author: Thorsten Behrens <thorsten.behrens at cib.de>
Date:   Thu Nov 23 22:18:09 2017 +0100

    gpg4libre: find keymanager executable on Windows
    

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list