[Libreoffice-commits] core.git: officecfg/registry sw/inc sw/Library_sw.mk sw/sdi sw/source sw/uiconfig sw/UIConfig_swriter.mk

Samuel Mehrbrodt Samuel.Mehrbrodt at cib.de
Wed Dec 13 14:46:03 UTC 2017


 officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu |    8 
 sw/Library_sw.mk                                                    |    1 
 sw/UIConfig_swriter.mk                                              |    1 
 sw/inc/cmdid.h                                                      |    1 
 sw/inc/swabstdlg.hxx                                                |    1 
 sw/sdi/swriter.sdi                                                  |   17 
 sw/sdi/viewsh.sdi                                                   |    6 
 sw/source/ui/dialog/swdlgfact.cxx                                   |    7 
 sw/source/ui/dialog/swdlgfact.hxx                                   |    2 
 sw/source/uibase/dialog/SignatureLineDialog.cxx                     |  313 ++++++++++
 sw/source/uibase/inc/SignatureLineDialog.hxx                        |   43 +
 sw/source/uibase/uiview/viewdlg2.cxx                                |   11 
 sw/source/uibase/uiview/viewstat.cxx                                |    1 
 sw/uiconfig/swriter/menubar/menubar.xml                             |    1 
 sw/uiconfig/swriter/ui/signatureline.ui                             |  237 +++++++
 15 files changed, 650 insertions(+)

New commits:
commit 03db771e92160e95b0af8710f88b0c43591e8f3e
Author: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
Date:   Mon Dec 4 16:37:14 2017 +0100

    tdf#83877 Add dialog to generate signature line
    
    Change-Id: Iacc929edf1469c7e37707f8d9518cd07642bb9dd
    Reviewed-on: https://gerrit.libreoffice.org/45810
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
    Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
index 2c3c827be9c4..8efa138bb380 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
@@ -845,6 +845,14 @@
           <value>1</value>
         </prop>
       </node>
+      <node oor:name=".uno:SignatureLineDialog" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Signature ~Line</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
       <node oor:name=".uno:AutoFormatApply" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
           <value xml:lang="en-US">Appl~y</value>
diff --git a/sw/Library_sw.mk b/sw/Library_sw.mk
index 7ca75085cc74..4056c57deb27 100644
--- a/sw/Library_sw.mk
+++ b/sw/Library_sw.mk
@@ -588,6 +588,7 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
     sw/source/uibase/config/uinums \
     sw/source/uibase/config/usrpref \
     sw/source/uibase/config/viewopt \
+    sw/source/uibase/dialog/SignatureLineDialog \
     sw/source/uibase/dialog/SwSpellDialogChildWindow \
     sw/source/uibase/dialog/regionsw \
     sw/source/uibase/dialog/swabstdlg \
diff --git a/sw/UIConfig_swriter.mk b/sw/UIConfig_swriter.mk
index caa24da40f0c..9d5a8a811ad9 100644
--- a/sw/UIConfig_swriter.mk
+++ b/sw/UIConfig_swriter.mk
@@ -245,6 +245,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/swriter,\
 	sw/uiconfig/swriter/ui/selectindexdialog \
 	sw/uiconfig/swriter/ui/selecttabledialog \
 	sw/uiconfig/swriter/ui/sidebarpage \
+	sw/uiconfig/swriter/ui/signatureline \
 	sw/uiconfig/swriter/ui/pageformatpanel \
 	sw/uiconfig/swriter/ui/pagestylespanel \
 	sw/uiconfig/swriter/ui/pageheaderpanel \
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index 651c72082eff..c0ae37149ba0 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -209,6 +209,7 @@
 
 #define FN_INSERT_IDX_ENTRY_DLG (FN_INSERT + 35)    /* insert index entry */
 #define FN_INSERT_FRAME_INTERACT_NOCOL (FN_INSERT + 36) /*insert interactive non column frame*/
+#define FN_INSERT_SIGNATURELINE (FN_INSERT + 37)    /*insert signature line*/
 
 #define FN_TOOL_ANCHOR          (FN_INSERT + 49)    /* Draw Anchor for object */
 #define FN_TOOL_ANCHOR_PAGE     (FN_INSERT + 50)    /* anchor Draw object to page */
diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx
index f28a86a5fac5..61e64265dfe3 100644
--- a/sw/inc/swabstdlg.hxx
+++ b/sw/inc/swabstdlg.hxx
@@ -400,6 +400,7 @@ public:
         SwCharDlgMode nDialogMode, const OUString* pFormatStr = nullptr) = 0;
     virtual VclPtr<AbstractSwConvertTableDlg> CreateSwConvertTableDlg(SwView& rView, bool bToTable) = 0;
     virtual VclPtr<VclAbstractDialog> CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) = 0;
+    virtual VclPtr<VclAbstractDialog> CreateSignatureLineDialog(vcl::Window* pParent, SwView& rView) = 0;
 
     virtual VclPtr<AbstractSwInsertDBColAutoPilot> CreateSwInsertDBColAutoPilot(SwView& rView,
         css::uno::Reference< css::sdbc::XDataSource> rxSource,
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index 2f0d5d9ec45a..75e75897bf41 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -3314,6 +3314,23 @@ SfxVoidItem InsertTopicField FN_INSERT_FLD_TOPIC
     GroupId = SfxGroupId::Insert;
 ]
 
+SfxVoidItem SignatureLineDialog FN_INSERT_SIGNATURELINE
+()
+[
+    AutoUpdate = FALSE,
+    FastCall = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    ToolBoxConfig = TRUE,
+    GroupId = SfxGroupId::Insert;
+]
+
 SfxVoidItem JumpDownThisLevel FN_NUM_BULLET_NEXT
 ()
 [
diff --git a/sw/sdi/viewsh.sdi b/sw/sdi/viewsh.sdi
index 93987042363c..9e4fdabee84d 100644
--- a/sw/sdi/viewsh.sdi
+++ b/sw/sdi/viewsh.sdi
@@ -36,6 +36,12 @@ interface TextEditView : BaseTextEditView
         StateMethod = GetState ;
         DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
     ]
+    FN_INSERT_SIGNATURELINE // status()
+    [
+        ExecMethod = ExecDlgExt ;
+        StateMethod = GetState ;
+        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+    ]
     FN_EDIT_FOOTNOTE // status(final|play)
     [
         ExecMethod = ExecDlgExt ;
diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx
index 5747c999a01d..03fe0e5caa7b 100644
--- a/sw/source/ui/dialog/swdlgfact.cxx
+++ b/sw/source/ui/dialog/swdlgfact.cxx
@@ -83,6 +83,7 @@
 #include <mailconfigpage.hxx>
 #include <uiborder.hxx>
 #include <mmresultdialogs.hxx>
+#include <SignatureLineDialog.hxx>
 
 using namespace ::com::sun::star;
 
@@ -727,6 +728,12 @@ VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwCaptionDialog (
     return VclPtr<VclAbstractDialog_Impl>::Create( pDlg );
 }
 
+VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSignatureLineDialog(vcl::Window* pParent, SwView& rV)
+{
+    VclPtr<Dialog> pDlg = VclPtr<SignatureLineDialog>::Create(pParent, rV);
+    return VclPtr<VclAbstractDialog_Impl>::Create(pDlg);
+}
+
 VclPtr<AbstractSwInsertDBColAutoPilot> SwAbstractDialogFactory_Impl::CreateSwInsertDBColAutoPilot( SwView& rView,
         uno::Reference< sdbc::XDataSource> rxSource,
         uno::Reference<sdbcx::XColumnsSupplier> xColSupp,
diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx
index b371b9a13c8d..1fb05b1919db 100644
--- a/sw/source/ui/dialog/swdlgfact.hxx
+++ b/sw/source/ui/dialog/swdlgfact.hxx
@@ -389,6 +389,8 @@ public:
         SwCharDlgMode nDialogMode, const OUString* pFormatStr = nullptr) override;
     virtual VclPtr<AbstractSwConvertTableDlg> CreateSwConvertTableDlg(SwView& rView, bool bToTable) override;
     virtual VclPtr<VclAbstractDialog> CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) override;
+    virtual VclPtr<VclAbstractDialog> CreateSignatureLineDialog(vcl::Window* pParent,
+                                                                SwView& rView) override;
 
     virtual VclPtr<AbstractSwInsertDBColAutoPilot> CreateSwInsertDBColAutoPilot(SwView& rView,
         css::uno::Reference< css::sdbc::XDataSource> rxSource,
diff --git a/sw/source/uibase/dialog/SignatureLineDialog.cxx b/sw/source/uibase/dialog/SignatureLineDialog.cxx
new file mode 100644
index 000000000000..7944d68cb8a1
--- /dev/null
+++ b/sw/source/uibase/dialog/SignatureLineDialog.cxx
@@ -0,0 +1,313 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <SignatureLineDialog.hxx>
+
+#include <comphelper/processfactory.hxx>
+#include <comphelper/xmltools.hxx>
+#include <tools/stream.hxx>
+#include <unotools/streamwrap.hxx>
+#include <view.hxx>
+
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/graphic/GraphicProvider.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/text/TextContentAnchorType.hpp>
+#include <com/sun/star/text/XTextContent.hpp>
+#include <com/sun/star/text/XTextDocument.hpp>
+
+using namespace css;
+using namespace css::uno;
+using namespace css::beans;
+using namespace css::io;
+using namespace css::lang;
+using namespace css::frame;
+using namespace css::text;
+using namespace css::drawing;
+using namespace css::graphic;
+
+SignatureLineDialog::SignatureLineDialog(vcl::Window* pParent, SwView& rView)
+    : SvxStandardDialog(pParent, "SignatureLineDialog", "modules/swriter/ui/signatureline.ui")
+    , mrView(rView)
+{
+    get(m_pEditName, "edit_name");
+    get(m_pEditTitle, "edit_title");
+    get(m_pEditEmail, "edit_email");
+    get(m_pEditInstructions, "edit_instructions");
+    get(m_pCheckboxCanAddComments, "checkbox_can_add_comments");
+    get(m_pCheckboxShowSignDate, "checkbox_show_sign_date");
+}
+
+SignatureLineDialog::~SignatureLineDialog() { disposeOnce(); }
+
+void SignatureLineDialog::dispose()
+{
+    m_pEditName.clear();
+    m_pEditTitle.clear();
+    m_pEditEmail.clear();
+    m_pEditInstructions.clear();
+    m_pCheckboxCanAddComments.clear();
+    m_pCheckboxShowSignDate.clear();
+
+    SvxStandardDialog::dispose();
+}
+
+void SignatureLineDialog::Apply()
+{
+    OUString aSignatureLineId
+        = OStringToOUString(comphelper::xml::generateGUIDString(), RTL_TEXTENCODING_UTF8);
+    OUString aSignerName(m_pEditName->GetText());
+    OUString aSignerTitle(m_pEditTitle->GetText());
+    OUString aSignerEmail(m_pEditEmail->GetText());
+    OUString aSigningInstructions(m_pEditInstructions->GetText());
+    bool bCanAddComments(m_pCheckboxCanAddComments->IsChecked());
+    bool bShowSignDate(m_pCheckboxShowSignDate->IsChecked());
+
+    // Read svg and replace placeholder texts
+    OUString aSvgImage(getSignatureImage());
+    aSvgImage = aSvgImage.replaceAll("[SIGNER_NAME]", aSignerName);
+    aSvgImage = aSvgImage.replaceAll("[SIGNER_TITLE]", aSignerTitle);
+
+    // These are only filled if the signature line is signed.
+    aSvgImage = aSvgImage.replaceAll("[SIGNATURE]", "");
+    aSvgImage = aSvgImage.replaceAll("[SIGNED_BY]", "");
+    aSvgImage = aSvgImage.replaceAll("[INVALID_SIGNATURE]", "");
+    aSvgImage = aSvgImage.replaceAll("[DATE]", "");
+
+    // Insert graphic
+    SvMemoryStream aSvgStream(4096, 4096);
+    aSvgStream.WriteOString(OUStringToOString(aSvgImage, RTL_TEXTENCODING_UTF8));
+    Reference<XInputStream> xInputStream(new utl::OSeekableInputStreamWrapper(aSvgStream));
+    Reference<XComponentContext> xContext(comphelper::getProcessComponentContext());
+    Reference<XGraphicProvider> xProvider = css::graphic::GraphicProvider::create(xContext);
+
+    Sequence<PropertyValue> aMediaProperties(1);
+    aMediaProperties[0].Name = "InputStream";
+    aMediaProperties[0].Value <<= xInputStream;
+    Reference<XGraphic> xGraphic(xProvider->queryGraphic(aMediaProperties));
+
+    Reference<XModel> const xModel(mrView.GetCurrentDocument());
+    Reference<XPropertySet> const xShapeProps(
+        Reference<lang::XMultiServiceFactory>(xModel, UNO_QUERY)
+            ->createInstance("com.sun.star.drawing.GraphicObjectShape"),
+        UNO_QUERY);
+    xShapeProps->setPropertyValue("Graphic", Any(xGraphic));
+    xShapeProps->setPropertyValue("AnchorType", Any(TextContentAnchorType_AT_PARAGRAPH));
+
+    // Set shape properties
+    Reference<XShape> xShape(xShapeProps, UNO_QUERY);
+    awt::Size aShapeSize;
+    aShapeSize.Height = 3000;
+    aShapeSize.Width = 6000;
+    xShape->setSize(aShapeSize);
+
+    // Set signature line properties
+    xShapeProps->setPropertyValue("IsSignatureLine", Any(true));
+    xShapeProps->setPropertyValue("SignatureLineId", Any(aSignatureLineId));
+    if (!aSignerName.isEmpty())
+        xShapeProps->setPropertyValue("SignatureLineSuggestedSignerName", Any(aSignerName));
+    if (!aSignerTitle.isEmpty())
+        xShapeProps->setPropertyValue("SignatureLineSuggestedSignerTitle", Any(aSignerTitle));
+    if (!aSignerEmail.isEmpty())
+        xShapeProps->setPropertyValue("SignatureLineSuggestedSignerEmail", Any(aSignerEmail));
+    if (!aSigningInstructions.isEmpty())
+        xShapeProps->setPropertyValue("SignatureLineSigningInstructions",
+                                      Any(aSigningInstructions));
+    xShapeProps->setPropertyValue("SignatureLineShowSignDate", Any(bShowSignDate));
+    xShapeProps->setPropertyValue("SignatureLineCanAddComment", Any(bCanAddComments));
+
+    // Insert into document
+    Reference<XTextRange> const xEnd
+        = Reference<XTextDocument>(xModel, UNO_QUERY)->getText()->getEnd();
+    Reference<XTextContent> const xShapeContent(xShapeProps, UNO_QUERY);
+    xShapeContent->attach(xEnd);
+}
+
+OUString SignatureLineDialog::getSignatureImage()
+{
+    OUString svg(
+        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><svg "
+        "xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" "
+        "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" "
+        "xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" "
+        "xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" "
+        "xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.2\" "
+        "width=\"90mm\" height=\"45mm\" viewBox=\"0 0 9000 4500\" preserveAspectRatio=\"xMidYMid\" "
+        "fill-rule=\"evenodd\" stroke-width=\"28.222\" stroke-linejoin=\"round\" "
+        "xml:space=\"preserve\" id=\"svg577\" inkscape:version=\"0.92.2 (5c3e80d, "
+        "2017-08-06)\"><metadata id=\"metadata581\"><rdf:RDF><cc:Work "
+        "rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type "
+        "rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/><dc:title/></cc:Work></rdf:RDF></"
+        "metadata><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" "
+        "borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" "
+        "inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1863\" "
+        "inkscape:window-height=\"1056\" id=\"namedview579\" showgrid=\"false\" "
+        "inkscape:zoom=\"0.90252315\" inkscape:cx=\"170.07874\" inkscape:cy=\"85.03937\" "
+        "inkscape:window-x=\"57\" inkscape:window-y=\"24\" inkscape:window-maximized=\"1\" "
+        "inkscape:current-layer=\"svg577\" inkscape:pagecheckerboard=\"false\"/><defs "
+        "class=\"ClipPathGroup\" id=\"defs8\"><clipPath id=\"presentation_clip_path\" "
+        "clipPathUnits=\"userSpaceOnUse\"><rect x=\"0\" y=\"0\" width=\"9000\" height=\"4500\" "
+        "id=\"rect2\"/></clipPath></defs><defs id=\"defs49\"/><defs id=\"defs86\"/><defs "
+        "class=\"TextShapeIndex\" id=\"defs90\"/><defs class=\"EmbeddedBulletChars\" "
+        "id=\"defs122\"/><defs class=\"TextEmbeddedBitmaps\" id=\"defs124\"/><g id=\"g129\"><g "
+        "id=\"id2\" class=\"Master_Slide\"><g id=\"bg-id2\" class=\"Background\"/><g id=\"bo-id2\" "
+        "class=\"BackgroundObjects\"/></g></g><g class=\"SlideGroup\" id=\"g575\"><g "
+        "id=\"g573\"><g id=\"container-id1\"><g id=\"id1\" class=\"Slide\" "
+        "clip-path=\"url(#presentation_clip_path)\"><g class=\"Page\" id=\"g569\"><g "
+        "class=\"com.sun.star.drawing.LineShape\" id=\"g154\"><g id=\"id3\"><rect "
+        "class=\"BoundingBox\" stroke=\"none\" fill=\"none\" x=\"-27\" y=\"2373\" width=\"9055\" "
+        "height=\"55\" id=\"rect131\"/><desc id=\"desc133\">150</desc><desc "
+        "id=\"desc135\">139</desc><desc id=\"desc137\">132</desc><desc id=\"desc139\">512: "
+        "XPATHSTROKE_SEQ_BEGIN</desc><desc id=\"desc141\">132</desc><desc "
+        "id=\"desc143\">133</desc><desc id=\"desc145\">109</desc><path fill=\"none\" "
+        "stroke=\"rgb(0,0,0)\" stroke-width=\"53\" stroke-linejoin=\"round\" d=\"M 0,2400 L "
+        "9000,2400\" id=\"path147\"/><desc id=\"desc149\">512: XPATHSTROKE_SEQ_END</desc><desc "
+        "id=\"desc151\">140</desc></g></g><g class=\"com.sun.star.drawing.ClosedBezierShape\" "
+        "id=\"g173\"><g id=\"id4\"><rect class=\"BoundingBox\" stroke=\"none\" fill=\"none\" "
+        "x=\"301\" y=\"1400\" width=\"801\" height=\"801\" id=\"rect156\"/><desc "
+        "id=\"desc158\">150</desc><desc id=\"desc160\">139</desc><desc "
+        "id=\"desc162\">133</desc><desc id=\"desc164\">132</desc><desc "
+        "id=\"desc166\">111</desc><path fill=\"rgb(0,0,0)\" stroke=\"none\" d=\"M 969,2200 C "
+        "880,2083 792,1967 704,1850 614,1967 523,2083 433,2200 389,2200 345,2200 301,2200 413,2061 "
+        "525,1923 637,1784 533,1656 430,1528 327,1400 371,1400 415,1400 459,1400 541,1505 623,1609 "
+        "704,1714 784,1609 863,1505 943,1400 987,1400 1031,1400 1075,1400 975,1527 874,1653 "
+        "773,1780 882,1920 992,2060 1101,2200 1057,2200 1013,2200 969,2200 Z\" "
+        "id=\"path168\"/><desc id=\"desc170\">140</desc></g></g><g "
+        "class=\"com.sun.star.drawing.TextShape\" id=\"g236\"><g id=\"id5\"><rect "
+        "class=\"BoundingBox\" stroke=\"none\" fill=\"none\" x=\"1300\" y=\"1500\" width=\"8001\" "
+        "height=\"925\" id=\"rect175\"/><desc id=\"desc177\">150</desc><desc id=\"desc179\">512: "
+        "XTEXT_PAINTSHAPE_BEGIN</desc><text class=\"TextShape\" id=\"text233\"><desc "
+        "class=\"Paragraph\" id=\"desc181\"/><tspan class=\"TextParagraph\" "
+        "font-family=\"Liberation Sans, sans-serif\" font-size=\"600px\" font-weight=\"400\" "
+        "id=\"tspan231\"><desc id=\"desc183\">138</desc><desc id=\"desc185\">136</desc><desc "
+        "id=\"desc187\">135</desc><desc id=\"desc189\">134</desc><desc "
+        "id=\"desc191\">113</desc><desc class=\"TextPortion\" id=\"desc193\">type: Text; content: "
+        "[SIGNATURE]; </desc><tspan class=\"TextPosition\" x=\"1550\" y=\"2171\" "
+        "id=\"tspan229\"><tspan fill=\"rgb(0,0,0)\" stroke=\"none\" "
+        "id=\"tspan195\">[SIGNATURE]</tspan><desc id=\"desc197\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc199\">512: XTEXT_EOC</desc><desc id=\"desc201\">512: XTEXT_EOW</desc><desc "
+        "id=\"desc203\">512: XTEXT_EOC</desc><desc id=\"desc205\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc207\">512: XTEXT_EOC</desc><desc id=\"desc209\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc211\">512: XTEXT_EOC</desc><desc id=\"desc213\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc215\">512: XTEXT_EOC</desc><desc id=\"desc217\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc219\">512: XTEXT_EOC</desc><desc id=\"desc221\">512: XTEXT_EOW</desc><desc "
+        "id=\"desc223\">512: XTEXT_EOL</desc><desc id=\"desc225\">512: XTEXT_EOP</desc><desc "
+        "id=\"desc227\">512: XTEXT_PAINTSHAPE_END</desc></tspan></tspan></text></g></g><g "
+        "class=\"com.sun.star.drawing.TextShape\" id=\"g303\"><g id=\"id6\"><rect "
+        "class=\"BoundingBox\" stroke=\"none\" fill=\"none\" x=\"100\" y=\"2500\" width=\"8901\" "
+        "height=\"726\" id=\"rect238\"/><desc id=\"desc240\">150</desc><desc id=\"desc242\">512: "
+        "XTEXT_PAINTSHAPE_BEGIN</desc><text class=\"TextShape\" id=\"text300\"><desc "
+        "class=\"Paragraph\" id=\"desc244\"/><tspan class=\"TextParagraph\" "
+        "font-family=\"Liberation Sans, sans-serif\" font-size=\"423px\" font-weight=\"400\" "
+        "id=\"tspan298\"><desc id=\"desc246\">138</desc><desc id=\"desc248\">136</desc><desc "
+        "id=\"desc250\">135</desc><desc id=\"desc252\">134</desc><desc "
+        "id=\"desc254\">113</desc><desc class=\"TextPortion\" id=\"desc256\">type: Text; content: "
+        "[SIGNER_NAME]; </desc><tspan class=\"TextPosition\" x=\"350\" y=\"3010\" "
+        "id=\"tspan296\"><tspan fill=\"rgb(0,0,0)\" stroke=\"none\" "
+        "id=\"tspan258\">[SIGNER_NAME]</tspan><desc id=\"desc260\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc262\">512: XTEXT_EOC</desc><desc id=\"desc264\">512: XTEXT_EOW</desc><desc "
+        "id=\"desc266\">512: XTEXT_EOC</desc><desc id=\"desc268\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc270\">512: XTEXT_EOC</desc><desc id=\"desc272\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc274\">512: XTEXT_EOC</desc><desc id=\"desc276\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc278\">512: XTEXT_EOC</desc><desc id=\"desc280\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc282\">512: XTEXT_EOC</desc><desc id=\"desc284\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc286\">512: XTEXT_EOC</desc><desc id=\"desc288\">512: XTEXT_EOW</desc><desc "
+        "id=\"desc290\">512: XTEXT_EOL</desc><desc id=\"desc292\">512: XTEXT_EOP</desc><desc "
+        "id=\"desc294\">512: XTEXT_PAINTSHAPE_END</desc></tspan></tspan></text></g></g><g "
+        "class=\"com.sun.star.drawing.TextShape\" id=\"g372\"><g id=\"id7\"><rect "
+        "class=\"BoundingBox\" stroke=\"none\" fill=\"none\" x=\"100\" y=\"3075\" width=\"8901\" "
+        "height=\"726\" id=\"rect305\"/><desc id=\"desc307\">150</desc><desc id=\"desc309\">512: "
+        "XTEXT_PAINTSHAPE_BEGIN</desc><text class=\"TextShape\" id=\"text369\"><desc "
+        "class=\"Paragraph\" id=\"desc311\"/><tspan class=\"TextParagraph\" "
+        "font-family=\"Liberation Sans, sans-serif\" font-size=\"423px\" font-weight=\"400\" "
+        "id=\"tspan367\"><desc id=\"desc313\">138</desc><desc id=\"desc315\">136</desc><desc "
+        "id=\"desc317\">135</desc><desc id=\"desc319\">134</desc><desc "
+        "id=\"desc321\">113</desc><desc class=\"TextPortion\" id=\"desc323\">type: Text; content: "
+        "[SIGNER_TITLE]; </desc><tspan class=\"TextPosition\" x=\"350\" y=\"3585\" "
+        "id=\"tspan365\"><tspan fill=\"rgb(0,0,0)\" stroke=\"none\" "
+        "id=\"tspan325\">[SIGNER_TITLE]</tspan><desc id=\"desc327\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc329\">512: XTEXT_EOC</desc><desc id=\"desc331\">512: XTEXT_EOW</desc><desc "
+        "id=\"desc333\">512: XTEXT_EOC</desc><desc id=\"desc335\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc337\">512: XTEXT_EOC</desc><desc id=\"desc339\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc341\">512: XTEXT_EOC</desc><desc id=\"desc343\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc345\">512: XTEXT_EOC</desc><desc id=\"desc347\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc349\">512: XTEXT_EOC</desc><desc id=\"desc351\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc353\">512: XTEXT_EOC</desc><desc id=\"desc355\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc357\">512: XTEXT_EOW</desc><desc id=\"desc359\">512: XTEXT_EOL</desc><desc "
+        "id=\"desc361\">512: XTEXT_EOP</desc><desc id=\"desc363\">512: "
+        "XTEXT_PAINTSHAPE_END</desc></tspan></tspan></text></g></g><g "
+        "class=\"com.sun.star.drawing.TextShape\" id=\"g435\"><g id=\"id8\"><rect "
+        "class=\"BoundingBox\" stroke=\"none\" fill=\"none\" x=\"100\" y=\"3660\" width=\"8901\" "
+        "height=\"726\" id=\"rect374\"/><desc id=\"desc376\">150</desc><desc id=\"desc378\">512: "
+        "XTEXT_PAINTSHAPE_BEGIN</desc><text class=\"TextShape\" id=\"text432\"><desc "
+        "class=\"Paragraph\" id=\"desc380\"/><tspan class=\"TextParagraph\" "
+        "font-family=\"Liberation Sans, sans-serif\" font-size=\"423px\" font-weight=\"400\" "
+        "id=\"tspan430\"><desc id=\"desc382\">138</desc><desc id=\"desc384\">136</desc><desc "
+        "id=\"desc386\">135</desc><desc id=\"desc388\">134</desc><desc "
+        "id=\"desc390\">113</desc><desc class=\"TextPortion\" id=\"desc392\">type: Text; content: "
+        "[SIGNED_BY]; </desc><tspan class=\"TextPosition\" x=\"350\" y=\"4170\" "
+        "id=\"tspan428\"><tspan fill=\"rgb(0,0,0)\" stroke=\"none\" "
+        "id=\"tspan394\">[SIGNED_BY]</tspan><desc id=\"desc396\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc398\">512: XTEXT_EOC</desc><desc id=\"desc400\">512: XTEXT_EOW</desc><desc "
+        "id=\"desc402\">512: XTEXT_EOC</desc><desc id=\"desc404\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc406\">512: XTEXT_EOC</desc><desc id=\"desc408\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc410\">512: XTEXT_EOC</desc><desc id=\"desc412\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc414\">512: XTEXT_EOC</desc><desc id=\"desc416\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc418\">512: XTEXT_EOC</desc><desc id=\"desc420\">512: XTEXT_EOW</desc><desc "
+        "id=\"desc422\">512: XTEXT_EOL</desc><desc id=\"desc424\">512: XTEXT_EOP</desc><desc "
+        "id=\"desc426\">512: XTEXT_PAINTSHAPE_END</desc></tspan></tspan></text></g></g><g "
+        "class=\"com.sun.star.drawing.TextShape\" id=\"g488\"><g id=\"id9\"><rect "
+        "class=\"BoundingBox\" stroke=\"none\" fill=\"none\" x=\"4800\" y=\"0\" width=\"4201\" "
+        "height=\"726\" id=\"rect437\"/><desc id=\"desc439\">150</desc><desc id=\"desc441\">512: "
+        "XTEXT_PAINTSHAPE_BEGIN</desc><text class=\"TextShape\" id=\"text485\"><desc "
+        "class=\"Paragraph\" id=\"desc443\"/><tspan class=\"TextParagraph\" "
+        "font-family=\"Liberation Sans, sans-serif\" font-size=\"423px\" font-weight=\"400\" "
+        "id=\"tspan483\"><desc id=\"desc445\">138</desc><desc id=\"desc447\">136</desc><desc "
+        "id=\"desc449\">135</desc><desc id=\"desc451\">134</desc><desc "
+        "id=\"desc453\">113</desc><desc class=\"TextPortion\" id=\"desc455\">type: Text; content: "
+        "[DATE]; </desc><tspan class=\"TextPosition\" x=\"7417\" y=\"510\" id=\"tspan481\"><tspan "
+        "fill=\"rgb(0,0,0)\" stroke=\"none\" id=\"tspan457\">[DATE]</tspan><desc "
+        "id=\"desc459\">512: XTEXT_EOC</desc><desc id=\"desc461\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc463\">512: XTEXT_EOW</desc><desc id=\"desc465\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc467\">512: XTEXT_EOC</desc><desc id=\"desc469\">512: XTEXT_EOC</desc><desc "
+        "id=\"desc471\">512: XTEXT_EOC</desc><desc id=\"desc473\">512: XTEXT_EOW</desc><desc "
+        "id=\"desc475\">512: XTEXT_EOL</desc><desc id=\"desc477\">512: XTEXT_EOP</desc><desc "
+        "id=\"desc479\">512: XTEXT_PAINTSHAPE_END</desc></tspan></tspan></text></g></g><g "
+        "class=\"com.sun.star.drawing.TextShape\" id=\"g567\"><g id=\"id10\"><rect "
+        "class=\"BoundingBox\" stroke=\"none\" fill=\"none\" x=\"0\" y=\"1\" width=\"9001\" "
+        "height=\"726\" id=\"rect490\"/><desc id=\"desc492\">150</desc><desc id=\"desc494\">512: "
+        "XTEXT_PAINTSHAPE_BEGIN</desc><text class=\"TextShape\" id=\"text564\"><desc "
+        "class=\"Paragraph\" id=\"desc496\"/><tspan class=\"TextParagraph\" "
+        "font-family=\"Liberation Sans, sans-serif\" font-size=\"423px\" font-weight=\"700\" "
+        "id=\"tspan562\"><desc id=\"desc498\">138</desc><desc id=\"desc500\">136</desc><desc "
+        "id=\"desc502\">135</desc><desc id=\"desc504\">134</desc><desc "
+        "id=\"desc506\">113</desc><desc class=\"TextPortion\" id=\"desc508\">type: Text; content: "
+        "[INVALID_SIGNATURE]; </desc><tspan class=\"TextPosition\" x=\"2180\" y=\"511\" "
+        "id=\"tspan560\"><tspan fill=\"rgb(239,65,61)\" stroke=\"none\" "
+        "id=\"tspan510\">[INVALID_SIGNATURE]</tspan><desc id=\"desc512\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc514\">512: XTEXT_EOC</desc><desc id=\"desc516\">512: "
+        "XTEXT_EOW</desc><desc id=\"desc518\">512: XTEXT_EOC</desc><desc id=\"desc520\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc522\">512: XTEXT_EOC</desc><desc id=\"desc524\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc526\">512: XTEXT_EOC</desc><desc id=\"desc528\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc530\">512: XTEXT_EOC</desc><desc id=\"desc532\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc534\">512: XTEXT_EOC</desc><desc id=\"desc536\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc538\">512: XTEXT_EOC</desc><desc id=\"desc540\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc542\">512: XTEXT_EOC</desc><desc id=\"desc544\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc546\">512: XTEXT_EOC</desc><desc id=\"desc548\">512: "
+        "XTEXT_EOC</desc><desc id=\"desc550\">512: XTEXT_EOC</desc><desc id=\"desc552\">512: "
+        "XTEXT_EOW</desc><desc id=\"desc554\">512: XTEXT_EOL</desc><desc id=\"desc556\">512: "
+        "XTEXT_EOP</desc><desc id=\"desc558\">512: "
+        "XTEXT_PAINTSHAPE_END</desc></tspan></tspan></text></g></g></g></g></g></g></g></svg>");
+    return svg;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/sw/source/uibase/inc/SignatureLineDialog.hxx b/sw/source/uibase/inc/SignatureLineDialog.hxx
new file mode 100644
index 000000000000..390ab9b203b1
--- /dev/null
+++ b/sw/source/uibase/inc/SignatureLineDialog.hxx
@@ -0,0 +1,43 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+#ifndef INCLUDED_SW_INC_SIGNATURELINEDIALOG_HXX
+#define INCLUDED_SW_INC_SIGNATURELINEDIALOG_HXX
+
+#include <svx/stddlg.hxx>
+#include <swdllapi.h>
+#include <vcl/button.hxx>
+#include <vcl/edit.hxx>
+
+class SwView;
+
+class SW_DLLPUBLIC SignatureLineDialog : public SvxStandardDialog
+{
+public:
+    SignatureLineDialog(vcl::Window* pParent, SwView& rView);
+    virtual ~SignatureLineDialog() override;
+    virtual void dispose() override;
+
+    virtual void Apply() override;
+
+private:
+    OUString getSignatureImage();
+
+    SwView& mrView;
+
+    VclPtr<Edit> m_pEditName;
+    VclPtr<Edit> m_pEditTitle;
+    VclPtr<Edit> m_pEditEmail;
+    VclPtr<Edit> m_pEditInstructions;
+    VclPtr<CheckBox> m_pCheckboxCanAddComments;
+    VclPtr<CheckBox> m_pCheckboxShowSignDate;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/sw/source/uibase/uiview/viewdlg2.cxx b/sw/source/uibase/uiview/viewdlg2.cxx
index fb7d352fd503..38beca593167 100644
--- a/sw/source/uibase/uiview/viewdlg2.cxx
+++ b/sw/source/uibase/uiview/viewdlg2.cxx
@@ -60,6 +60,17 @@ void SwView::ExecDlgExt(SfxRequest const &rReq)
             }
             break;
         }
+        case FN_INSERT_SIGNATURELINE:
+        {
+            SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
+            assert(pFact && "SwAbstractDialogFactory fail!");
+
+            ScopedVclPtr<VclAbstractDialog> pDialog(pFact->CreateSignatureLineDialog(pMDI, *this));
+            assert(pDialog && "Dialog creation failed!");
+            if (pDialog)
+                pDialog->Execute();
+            break;
+        }
         case  FN_EDIT_FOOTNOTE:
         {
             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
diff --git a/sw/source/uibase/uiview/viewstat.cxx b/sw/source/uibase/uiview/viewstat.cxx
index 13a69b257523..9f3132f0dbf0 100644
--- a/sw/source/uibase/uiview/viewstat.cxx
+++ b/sw/source/uibase/uiview/viewstat.cxx
@@ -97,6 +97,7 @@ void SwView::GetState(SfxItemSet &rSet)
                 break;
 
             case SID_INSERT_GRAPHIC:
+            case FN_INSERT_SIGNATURELINE:
                 if( m_pWrtShell->CursorInsideInputField() )
                 {
                     rSet.DisableItem(nWhich);
diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml
index a9dabcc18a6a..67de5a0934f6 100644
--- a/sw/uiconfig/swriter/menubar/menubar.xml
+++ b/sw/uiconfig/swriter/menubar/menubar.xml
@@ -268,6 +268,7 @@
           <menu:menuitem menu:id=".uno:FlowChartShapes"/>
         </menu:menupopup>
       </menu:menu>
+      <menu:menuitem menu:id=".uno:SignatureLineDialog"/>
       <menu:menuitem menu:id=".uno:FontworkGalleryFloater"/>
       <menu:menuseparator/>
       <menu:menuitem menu:id=".uno:DrawText"/>
diff --git a/sw/uiconfig/swriter/ui/signatureline.ui b/sw/uiconfig/swriter/ui/signatureline.ui
new file mode 100644
index 000000000000..6a7e0bc9c483
--- /dev/null
+++ b/sw/uiconfig/swriter/ui/signatureline.ui
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="sw">
+  <requires lib="gtk+" version="3.20"/>
+  <object class="GtkDialog" id="SignatureLineDialog">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes" context="signatureline|SignatureLineDialog">Signature Line</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="btn_cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="btn_ok">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkGrid">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="margin_left">6</property>
+            <property name="margin_right">6</property>
+            <property name="margin_top">6</property>
+            <property name="margin_bottom">6</property>
+            <property name="row_spacing">6</property>
+            <property name="column_spacing">6</property>
+            <child>
+              <object class="GtkEntry" id="edit_name">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="placeholder_text" translatable="yes" context="signatureline|edit_name">John Doe</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="edit_title">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="placeholder_text" translatable="yes" context="signatureline|edit_title">Director</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="edit_email">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="placeholder_text" translatable="yes" context="signatureline|edit_email">john.doe at example.org</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label_name">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes" context="signatureline|label_name" comments="Suggested Signer Name">Name:</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label_title">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes" context="signatureline|label_title" comments="Suggested Signer Title">Title:</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label_suggestedsigner">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="margin_bottom">6</property>
+                <property name="label" translatable="yes" context="signatureline|label_suggestedsigner">Suggested Signer</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+                <property name="width">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label_email">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes" context="signatureline|label_email" comments="Suggested Signer email">Email:</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label_more">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="margin_top">6</property>
+                <property name="margin_bottom">6</property>
+                <property name="label" translatable="yes" context="signatureline|label_more">More</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">4</property>
+                <property name="width">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label_instructions">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes" context="signatureline|label_instructions">Instructions to the signer:</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">7</property>
+                <property name="width">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTextView" id="edit_instructions">
+                <property name="height_request">60</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">8</property>
+                <property name="width">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="checkbox_can_add_comments">
+                <property name="label" translatable="yes" context="signatureline|checkbox_can_add_comments">Signer can add comments</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="halign">start</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">5</property>
+                <property name="width">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="checkbox_show_sign_date">
+                <property name="label" translatable="yes" context="signatureline|checkbox_show_sign_date">Show sign date in signature line</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="halign">start</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">6</property>
+                <property name="width">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>


More information about the Libreoffice-commits mailing list