move xmlsecurity .ui stuff to right place and adapt code to use it

Change-Id: If1f3dbbbef07004ec02a65563524c6c17dc16c00
This commit is contained in:
Caolán McNamara
2013-01-01 16:15:58 +00:00
parent 504b79c6ca
commit 2e00c0efbe
19 changed files with 564 additions and 684 deletions
+1
View File
@@ -41,6 +41,7 @@ protected:
public:
SvxSimpleTableContainer( Window* pParent, const ResId& rResId );
SvxSimpleTableContainer( Window* pParent, WinBits nBits = WB_BORDER | WB_3DLOOK );
void SetTable(SvxSimpleTable* pTable);
+15 -1
View File
@@ -18,6 +18,7 @@
*/
#include <svx/simptabl.hxx>
#include <vcl/builder.hxx>
#include <vcl/svapp.hxx>
#include <comphelper/processfactory.hxx>
@@ -27,13 +28,26 @@
// SvxSimpleTableContainer ------------------------------------------------------
SvxSimpleTableContainer::SvxSimpleTableContainer( Window* pParent, const ResId& rResId)
SvxSimpleTableContainer::SvxSimpleTableContainer(Window* pParent, const ResId& rResId)
: Control(pParent, rResId)
, m_pTable(NULL)
{
SetBorderStyle(WINDOW_BORDER_NOBORDER);
}
SvxSimpleTableContainer::SvxSimpleTableContainer(Window* pParent, WinBits nBits)
: Control(pParent, nBits)
, m_pTable(NULL)
{
SetBorderStyle(WINDOW_BORDER_NOBORDER);
}
extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeSvxSimpleTableContainer(Window *pParent,
VclBuilder::stringmap &)
{
return new SvxSimpleTableContainer(pParent);
}
void SvxSimpleTableContainer::SetTable(SvxSimpleTable* pTable)
{
m_pTable = pTable;
-227
View File
@@ -1,227 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkDialog" id="dialog1">
<property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="dialog-action_area1">
<property name="can_focus">False</property>
<property name="layout_style">spread</property>
<child>
<object class="GtkButton" id="button4">
<property name="label">gtk-help</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button5">
<property name="label">gtk-close</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">The following have signed the document content: </property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkButtonBox" id="buttonbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="layout_style">start</property>
<child>
<object class="GtkButton" id="button1">
<property name="label" translatable="yes">View Certificate...</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="label" translatable="yes">Sign Document...</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button3">
<property name="label" translatable="yes">Remove</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="column_spacing">40</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Signed by </property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Digital ID issued by </property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Date</property>
</object>
<packing>
<property name="left_attach">3</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<action-widgets>
<action-widget response="0">button4</action-widget>
<action-widget response="0">button5</action-widget>
</action-widgets>
</object>
</interface>
-1
View File
@@ -50,7 +50,6 @@ $(eval $(call gb_SrsTarget_set_include,xmlsec/res,\
$(eval $(call gb_SrsTarget_add_files,xmlsec/res,\
xmlsecurity/source/dialogs/certificateviewer.src \
xmlsecurity/source/dialogs/macrosecurity.src \
xmlsecurity/source/dialogs/certificatechooser.src \
xmlsecurity/source/dialogs/digitalsignaturesdialog.src \
xmlsecurity/source/component/warnbox.src \
))
+2 -1
View File
@@ -32,7 +32,8 @@ $(eval $(call gb_Module_add_targets,xmlsecurity,\
AllLangResTarget_xsec \
Library_xmlsecurity \
Library_xsec_fw \
$(if $(filter-out IOS ANDROID,$(OS)),Library_xsec_xmlsec) \
$(if $(filter-out IOS ANDROID,$(OS)),Library_xsec_xmlsec) \
UI_xmlsec \
))
#FIXME: ^^^, get nss&libxmlsec building on ios and android
+17
View File
@@ -0,0 +1,17 @@
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# 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/.
#
$(eval $(call gb_UI_UI,xmlsec))
$(eval $(call gb_UI_add_uifiles,xmlsec,\
xmlsecurity/uiconfig/ui/digitalsignaturesdialog \
xmlsecurity/uiconfig/ui/selectcertificatedialog \
))
# vim: set noet sw=4 ts=4:
@@ -50,16 +50,9 @@ private:
cssu::Sequence< cssu::Reference< dcss::security::XCertificate > > maCerts;
SignatureInformations maCertsToIgnore;
FixedText maHintFT;
SvxSimpleTableContainer m_aCertLBContainer;
SvxSimpleTable maCertLB;
PushButton maViewBtn;
FixedLine maBottomSepFL;
OKButton maOKBtn;
CancelButton maCancelBtn;
HelpButton maHelpBtn;
SvxSimpleTable* m_pCertLB;
PushButton* m_pViewBtn;
OKButton* m_pOKBtn;
bool mbInitialized;
@@ -67,28 +67,26 @@ private:
DocumentSignatureMode meSignatureMode;
css::uno::Sequence < css::uno::Sequence < css::beans::PropertyValue > > m_manifest;
FixedText maHintDocFT;
FixedText maHintBasicFT;
FixedText maHintPackageFT;
SvxSimpleTableContainer maSignaturesLBContainer;
SvxSimpleTable maSignaturesLB;
FixedImage maSigsValidImg;
FixedInfo maSigsValidFI;
FixedImage maSigsInvalidImg;
FixedInfo maSigsInvalidFI;
FixedImage maSigsNotvalidatedImg;
FixedInfo maSigsNotvalidatedFI;
FixedInfo maSigsOldSignatureFI;
FixedText* m_pHintDocFT;
FixedText* m_pHintBasicFT;
FixedText* m_pHintPackageFT;
SvxSimpleTable* m_pSignaturesLB;
FixedImage* m_pSigsValidImg;
FixedText* m_pSigsValidFI;
FixedImage* m_pSigsInvalidImg;
FixedText* m_pSigsInvalidFI;
FixedImage* m_pSigsNotvalidatedImg;
FixedText* m_pSigsNotvalidatedFI;
FixedImage* m_pSigsOldSignatureImg;
FixedText* m_pSigsOldSignatureFI;
PushButton maViewBtn;
PushButton maAddBtn;
PushButton maRemoveBtn;
PushButton* m_pViewBtn;
PushButton* m_pAddBtn;
PushButton* m_pRemoveBtn;
FixedLine maBottomSepFL;
OKButton maOKBtn;
HelpButton maHelpBtn;
PushButton* m_pCloseBtn;
::rtl::OUString m_sODFVersion;
OUString m_sODFVersion;
//Signals if the document contains already a document signature. This is only
//importent when we are signing macros and if the value is true.
bool m_bHasDocumentSignature;
-2
View File
@@ -21,8 +21,6 @@
// global resource ids
#define RID_XMLSECDLG_DIGSIG 1000
#define RID_XMLSECDLG_CERTCHOOSER 1001
#define RID_XMLSECDLG_CERTVIEWER 1002
#define RID_XMLSECTP_GENERAL 1003
#define RID_XMLSECTP_DETAILS 1004
@@ -29,16 +29,10 @@
#include <com/sun/star/security/CertificateCharacters.hpp>
#include <com/sun/star/security/SerialNumberAdapter.hpp>
#include <dialogs.hrc>
#include <resourcemanager.hxx>
#include <vcl/msgbox.hxx>
#include "svtools/treelistentry.hxx"
/* HACK: disable some warnings for MS-C */
#ifdef _MSC_VER
#pragma warning (disable : 4355) // 4355: this used in initializer-list
#endif
using namespace ::com::sun::star;
#define INVAL_SEL 0xFFFF
@@ -47,7 +41,7 @@ sal_uInt16 CertificateChooser::GetSelectedEntryPos( void ) const
{
sal_uInt16 nSel = INVAL_SEL;
SvTreeListEntry* pSel = maCertLB.FirstSelected();
SvTreeListEntry* pSel = m_pCertLB->FirstSelected();
if( pSel )
nSel = (sal_uInt16) ( sal_uIntPtr ) pSel->GetUserData();
@@ -55,25 +49,31 @@ sal_uInt16 CertificateChooser::GetSelectedEntryPos( void ) const
}
CertificateChooser::CertificateChooser( Window* _pParent, uno::Reference< uno::XComponentContext>& _rxCtx, uno::Reference< dcss::xml::crypto::XSecurityEnvironment >& _rxSecurityEnvironment, const SignatureInformations& _rCertsToIgnore )
:ModalDialog ( _pParent, XMLSEC_RES( RID_XMLSECDLG_CERTCHOOSER ) )
,maCertsToIgnore( _rCertsToIgnore )
,maHintFT ( this, XMLSEC_RES( FT_HINT_SELECT ) )
,m_aCertLBContainer(this, XMLSEC_RES(LB_SIGNATURES))
,maCertLB(m_aCertLBContainer)
,maViewBtn ( this, XMLSEC_RES( BTN_VIEWCERT ) )
,maBottomSepFL ( this, XMLSEC_RES( FL_BOTTOM_SEP ) )
,maOKBtn ( this, XMLSEC_RES( BTN_OK ) )
,maCancelBtn ( this, XMLSEC_RES( BTN_CANCEL ) )
,maHelpBtn ( this, XMLSEC_RES( BTN_HELP ) )
: ModalDialog(_pParent, "SelectCertificateDialog", "xmlsec/ui/selectcertificatedialog.ui")
, maCertsToIgnore( _rCertsToIgnore )
{
static long nTabs[] = { 3, 0, 30*CS_LB_WIDTH/100, 60*CS_LB_WIDTH/100 };
maCertLB.SetTabs( &nTabs[0] );
maCertLB.InsertHeaderEntry( XMLSEC_RES( STR_HEADERBAR ) );
maCertLB.SetSelectHdl( LINK( this, CertificateChooser, CertificateHighlightHdl ) );
maCertLB.SetDoubleClickHdl( LINK( this, CertificateChooser, CertificateSelectHdl ) );
maViewBtn.SetClickHdl( LINK( this, CertificateChooser, ViewButtonHdl ) );
get(m_pOKBtn, "ok");
get(m_pViewBtn, "viewcert");
FreeResource();
Size aControlSize(275, 122);
const long nControlWidth = aControlSize.Width();
aControlSize = LogicToPixel(aControlSize, MAP_APPFONT);
SvxSimpleTableContainer *pSignatures = get<SvxSimpleTableContainer>("signatures");
pSignatures->set_width_request(aControlSize.Width());
pSignatures->set_height_request(aControlSize.Height());
m_pCertLB = new SvxSimpleTable(*pSignatures);
static long nTabs[] = { 3, 0, 30*nControlWidth/100, 60*nControlWidth/100 };
m_pCertLB->SetTabs( &nTabs[0] );
OUStringBuffer sHeader;
sHeader.append(get<FixedText>("issuedto")->GetText())
.append("\t").append(get<FixedText>("issuedby")->GetText())
.append("\t").append(get<FixedText>("expiration")->GetText());
m_pCertLB->InsertHeaderEntry(sHeader.makeStringAndClear());
m_pCertLB->SetSelectHdl( LINK( this, CertificateChooser, CertificateHighlightHdl ) );
m_pCertLB->SetDoubleClickHdl( LINK( this, CertificateChooser, CertificateSelectHdl ) );
m_pViewBtn->SetClickHdl( LINK( this, CertificateChooser, ViewButtonHdl ) );
mxCtx = _rxCtx;
mxSecurityEnvironment = _rxSecurityEnvironment;
@@ -85,6 +85,7 @@ CertificateChooser::CertificateChooser( Window* _pParent, uno::Reference< uno::X
CertificateChooser::~CertificateChooser()
{
delete m_pCertLB;
}
short CertificateChooser::Execute()
@@ -178,7 +179,7 @@ void CertificateChooser::ImplInitialize()
sEntry.append( XmlSec::GetContentPart( maCerts[ nC ]->getIssuerName() ) );
sEntry.append( '\t' );
sEntry.append( XmlSec::GetDateString( maCerts[ nC ]->getNotValidAfter() ) );
SvTreeListEntry* pEntry = maCertLB.InsertEntry( sEntry.makeStringAndClear() );
SvTreeListEntry* pEntry = m_pCertLB->InsertEntry( sEntry.makeStringAndClear() );
pEntry->SetUserData( ( void* )(sal_IntPtr)nC ); // missuse user data as index
}
@@ -201,8 +202,8 @@ uno::Reference< dcss::security::XCertificate > CertificateChooser::GetSelectedCe
IMPL_LINK_NOARG(CertificateChooser, CertificateHighlightHdl)
{
sal_Bool bEnable = GetSelectedCertificate().is();
maViewBtn.Enable( bEnable );
maOKBtn.Enable( bEnable );
m_pViewBtn->Enable( bEnable );
m_pOKBtn->Enable( bEnable );
return 0;
}
@@ -1,79 +0,0 @@
/*
* 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/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include "dialogs.hrc"
#include "helpids.hrc"
ModalDialog RID_XMLSECDLG_CERTCHOOSER
{
HelpId = HID_XMLSEC_DLG_CERTCHOOSER;
Size = MAP_APPFONT( CS_WIDTH, CS_HEIGHT );
OutputSize = TRUE;
Closeable = TRUE;
Moveable = TRUE;
SVLook = TRUE;
Text [ en-US ] = "Select Certificate";
FixedText FT_HINT_SELECT
{
Pos = MAP_APPFONT( CS_COL_0, CS_ROW_0 );
Size = MAP_APPFONT( CS_COL_2-CS_COL_0, RSC_CD_FIXEDTEXT_HEIGHT );
Text [ en-US ] = "Select the certificate you want to use for signing";
};
Control LB_SIGNATURES
{
HelpId = HID_XMLSEC_CTRL_CHOOSESIGNATURES;
Pos = MAP_APPFONT( CS_COL_0, CS_ROW_1 );
Size = MAP_APPFONT( CS_LB_WIDTH, CS_ROW_2-CS_ROW_1 );
SVLook = TRUE;
Border = TRUE;
};
String STR_HEADERBAR
{
Text [ en-US ] = "Issued to\tIssued by\tExpiration date";
};
PushButton BTN_VIEWCERT
{
HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_CERTCHOOSER:BTN_VIEWCERT";
Pos = MAP_APPFONT( CS_COL_1, CS_ROW_3 );
Size = MAP_APPFONT( CS_COL_2-CS_COL_1, RSC_CD_PUSHBUTTON_HEIGHT );
Text [ en-US ] = "View Certificate...";
};
FixedLine FL_BOTTOM_SEP
{
Pos = MAP_APPFONT( 0, DLGS_BOTTOM_FL_Y( CS_HEIGHT ) );
Size = MAP_APPFONT( CS_WIDTH, RSC_CD_FIXEDLINE_HEIGHT );
};
OKButton BTN_OK
{
DefButton = TRUE;
Pos = MAP_APPFONT( DLGS_BOTTOM_OK_X( CS_WIDTH ), DLGS_BOTTOM_BTN_Y( CS_HEIGHT ) );
Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
};
CancelButton BTN_CANCEL
{
Pos = MAP_APPFONT( DLGS_BOTTOM_CANCEL_X( CS_WIDTH ), DLGS_BOTTOM_BTN_Y( CS_HEIGHT ) );
Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
};
HelpButton BTN_HELP
{
Pos = MAP_APPFONT( DLGS_BOTTOM_HELP_X( CS_WIDTH ), DLGS_BOTTOM_BTN_Y( CS_HEIGHT ) );
Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT );
};
};
+2 -33
View File
@@ -61,43 +61,12 @@
#define DLGS_BOTTOM_OK_X(dlgw) (DLGS_BOTTOM_CANCEL_X(dlgw)-RSC_SP_CTRL_DESC_X-RSC_CD_PUSHBUTTON_WIDTH)
// --------- dialog Digital Signatures ---------
#define BTN_ADDCERT 2
#define BTN_REMOVECERT 3
#define FT_HINT_DOC 4
#define FT_HINT_BASIC 5
#define FT_HINT_PACK 6
#define IMG_STATE_VALID 7
#define FI_STATE_VALID 8
#define IMG_STATE_BROKEN 9
#define FI_STATE_BROKEN 10
#define IMG_STATE_NOTVALIDATED 11
#define FI_STATE_NOTVALIDATED 12
#define FI_STATE_OLDSIGNATURE 16
#define DS_BTNWIDTH_1 70
// --------- dialog Ceritficate chooser ---------
#define FT_HINT_SELECT 1
#define CS_WIDTH DLGS_WIDTH
#define CS_HEIGHT DLGS_HEIGHT
#define CS_BTNWIDTH_1 DS_BTNWIDTH_1
// --------- tab dialog Certificate viewer ---------
#define CS_COL_0 RSC_SP_DLG_INNERBORDER_LEFT
#define CS_COL_2 (CS_WIDTH-RSC_SP_DLG_INNERBORDER_RIGHT)
#define CS_COL_1 (CS_COL_2-CS_BTNWIDTH_1)
#define CS_ROW_0 RSC_SP_DLG_INNERBORDER_TOP
#define CS_ROW_1 (CS_ROW_0+RSC_CD_FIXEDTEXT_HEIGHT+RSC_SP_CTRL_DESC_X)
#define CS_ROW_4 DLGS_BOTTOM_LAST_CTRL_L(CS_HEIGHT)
#define CS_ROW_3 (CS_ROW_4-RSC_CD_PUSHBUTTON_HEIGHT)
#define CS_ROW_2 (CS_ROW_3-RSC_SP_CTRL_Y)
#define CS_COL_2 (DLGS_WIDTH-RSC_SP_DLG_INNERBORDER_RIGHT)
#define CS_LB_WIDTH (CS_COL_2-CS_COL_0)
// --------- tab dialog Certificate viewer ---------
#define CV_COL_0 TD_SP_INNERBORDER_LEFT
#define CV_COL_1 (TP_WIDTH-RSC_SP_TBPG_INNERBORDER_RIGHT)
#define CV_ROW_0 RSC_SP_TBPG_INNERBORDER_TOP
@@ -174,79 +174,78 @@ DigitalSignaturesDialog::DigitalSignaturesDialog(
Window* pParent,
uno::Reference< uno::XComponentContext >& rxCtx, DocumentSignatureMode eMode,
sal_Bool bReadOnly, const ::rtl::OUString& sODFVersion, bool bHasDocumentSignature)
:ModalDialog ( pParent, XMLSEC_RES( RID_XMLSECDLG_DIGSIG ) )
,mxCtx ( rxCtx )
,maSignatureHelper ( rxCtx )
,meSignatureMode ( eMode )
,maHintDocFT ( this, XMLSEC_RES( FT_HINT_DOC ) )
,maHintBasicFT ( this, XMLSEC_RES( FT_HINT_BASIC ) )
,maHintPackageFT ( this, XMLSEC_RES( FT_HINT_PACK ) )
,maSignaturesLBContainer(this, XMLSEC_RES(LB_SIGNATURES))
,maSignaturesLB(maSignaturesLBContainer)
,maSigsValidImg ( this, XMLSEC_RES( IMG_STATE_VALID ) )
,maSigsValidFI ( this, XMLSEC_RES( FI_STATE_VALID ) )
,maSigsInvalidImg ( this, XMLSEC_RES( IMG_STATE_BROKEN ) )
,maSigsInvalidFI ( this, XMLSEC_RES( FI_STATE_BROKEN ) )
,maSigsNotvalidatedImg( this, XMLSEC_RES( IMG_STATE_NOTVALIDATED ) )
,maSigsNotvalidatedFI ( this, XMLSEC_RES( FI_STATE_NOTVALIDATED ) )
,maSigsOldSignatureFI ( this, XMLSEC_RES( FI_STATE_OLDSIGNATURE) )
,maViewBtn ( this, XMLSEC_RES( BTN_VIEWCERT ) )
,maAddBtn ( this, XMLSEC_RES( BTN_ADDCERT ) )
,maRemoveBtn ( this, XMLSEC_RES( BTN_REMOVECERT ) )
,maBottomSepFL ( this, XMLSEC_RES( FL_BOTTOM_SEP ) )
,maOKBtn ( this, XMLSEC_RES( BTN_OK ) )
,maHelpBtn ( this, XMLSEC_RES( BTN_HELP ) )
,m_sODFVersion (sODFVersion)
,m_bHasDocumentSignature(bHasDocumentSignature)
,m_bWarningShowSignMacro(false)
: ModalDialog(pParent, "DigitalSignaturesDialog", "xmlsec/ui/digitalsignaturesdialog.ui")
, mxCtx(rxCtx)
, maSignatureHelper(rxCtx)
, meSignatureMode(eMode)
, m_sODFVersion (sODFVersion)
, m_bHasDocumentSignature(bHasDocumentSignature)
, m_bWarningShowSignMacro(false)
{
// #i48253# the tablistbox needs its own unique id
maSignaturesLB.Window::SetUniqueId( HID_XMLSEC_TREE_SIGNATURESDLG );
Size aControlSize( maSignaturesLB.GetSizePixel() );
aControlSize = maSignaturesLB.PixelToLogic( aControlSize, MapMode( MAP_APPFONT ) );
get(m_pHintDocFT, "dochint");
get(m_pHintBasicFT, "macrohint");
get(m_pHintPackageFT, "packagehint");
get(m_pViewBtn, "view");
get(m_pAddBtn, "sign");
get(m_pRemoveBtn, "remove");
get(m_pCloseBtn, "close");
get(m_pSigsValidImg, "validimg");
get(m_pSigsValidFI, "validft");
get(m_pSigsInvalidImg, "invalidimg");
get(m_pSigsInvalidFI, "invalidft");
get(m_pSigsNotvalidatedImg, "notvalidatedimg");
get(m_pSigsNotvalidatedFI, "notvalidatedft");
get(m_pSigsOldSignatureImg, "oldsignatureimg");
get(m_pSigsOldSignatureFI, "oldsignatureft");
Size aControlSize(275, 109);
const long nControlWidth = aControlSize.Width();
aControlSize = LogicToPixel(aControlSize, MAP_APPFONT);
SvxSimpleTableContainer *pSignatures = get<SvxSimpleTableContainer>("signatures");
pSignatures->set_width_request(aControlSize.Width());
pSignatures->set_height_request(aControlSize.Height());
m_pSignaturesLB = new SvxSimpleTable(*pSignatures);
// #i48253# the tablistbox needs its own unique id
m_pSignaturesLB->Window::SetUniqueId( HID_XMLSEC_TREE_SIGNATURESDLG );
static long nTabs[] = { 4, 0, 6*nControlWidth/100, 36*nControlWidth/100, 74*nControlWidth/100 };
maSignaturesLB.SetTabs( &nTabs[ 0 ] );
maSignaturesLB.InsertHeaderEntry( XMLSEC_RES( STR_HEADERBAR ) );
m_pSignaturesLB->SetTabs( &nTabs[ 0 ] );
maSigsNotvalidatedFI.SetText( XMLSEC_RES( STR_NO_INFO_TO_VERIFY ) );
FreeResource();
OUStringBuffer sHeader;
sHeader.append("\t").append(get<FixedText>("signed")->GetText())
.append("\t").append(get<FixedText>("issued")->GetText())
.append("\t").append(get<FixedText>("date")->GetText());
m_pSignaturesLB->InsertHeaderEntry(sHeader.makeStringAndClear());
mbVerifySignatures = true;
mbSignaturesChanged = false;
maSignaturesLB.SetSelectHdl( LINK( this, DigitalSignaturesDialog, SignatureHighlightHdl ) );
maSignaturesLB.SetDoubleClickHdl( LINK( this, DigitalSignaturesDialog, SignatureSelectHdl ) );
m_pSignaturesLB->SetSelectHdl( LINK( this, DigitalSignaturesDialog, SignatureHighlightHdl ) );
m_pSignaturesLB->SetDoubleClickHdl( LINK( this, DigitalSignaturesDialog, SignatureSelectHdl ) );
maViewBtn.SetClickHdl( LINK( this, DigitalSignaturesDialog, ViewButtonHdl ) );
maViewBtn.Disable();
m_pViewBtn->SetClickHdl( LINK( this, DigitalSignaturesDialog, ViewButtonHdl ) );
m_pViewBtn->Disable();
maAddBtn.SetClickHdl( LINK( this, DigitalSignaturesDialog, AddButtonHdl ) );
m_pAddBtn->SetClickHdl( LINK( this, DigitalSignaturesDialog, AddButtonHdl ) );
if ( bReadOnly )
maAddBtn.Disable();
m_pAddBtn->Disable();
maRemoveBtn.SetClickHdl( LINK( this, DigitalSignaturesDialog, RemoveButtonHdl ) );
maRemoveBtn.Disable();
m_pRemoveBtn->SetClickHdl( LINK( this, DigitalSignaturesDialog, RemoveButtonHdl ) );
m_pRemoveBtn->Disable();
maOKBtn.SetClickHdl( LINK( this, DigitalSignaturesDialog, OKButtonHdl) );
m_pCloseBtn->SetClickHdl( LINK( this, DigitalSignaturesDialog, OKButtonHdl) );
switch( meSignatureMode )
{
case SignatureModeDocumentContent: maHintDocFT.Show(); break;
case SignatureModeMacros: maHintBasicFT.Show(); break;
case SignatureModePackage: maHintPackageFT.Show(); break;
case SignatureModeDocumentContent: m_pHintDocFT->Show(); break;
case SignatureModeMacros: m_pHintBasicFT->Show(); break;
case SignatureModePackage: m_pHintPackageFT->Show(); break;
}
// adjust fixed text to images
XmlSec::AlignAndFitImageAndControl( maSigsValidImg, maSigsValidFI, 5 );
XmlSec::AlignAndFitImageAndControl( maSigsInvalidImg, maSigsInvalidFI, 5 );
XmlSec::AlignAndFitImageAndControl( maSigsNotvalidatedImg, maSigsNotvalidatedFI, 5 );
XmlSec::AlignAndFitImageAndControl( maSigsNotvalidatedImg, maSigsOldSignatureFI, 5 );
}
DigitalSignaturesDialog::~DigitalSignaturesDialog()
{
delete m_pSignaturesLB;
}
sal_Bool DigitalSignaturesDialog::Init()
@@ -362,10 +361,10 @@ short DigitalSignaturesDialog::Execute()
IMPL_LINK_NOARG(DigitalSignaturesDialog, SignatureHighlightHdl)
{
bool bSel = maSignaturesLB.FirstSelected() ? true : false;
maViewBtn.Enable( bSel );
if ( maAddBtn.IsEnabled() ) // not read only
maRemoveBtn.Enable( bSel );
bool bSel = m_pSignaturesLB->FirstSelected() ? true : false;
m_pViewBtn->Enable( bSel );
if ( m_pAddBtn->IsEnabled() ) // not read only
m_pRemoveBtn->Enable( bSel );
return 0;
}
@@ -523,11 +522,11 @@ IMPL_LINK_NOARG(DigitalSignaturesDialog, RemoveButtonHdl)
{
if (!canRemove())
return 0;
if( maSignaturesLB.FirstSelected() )
if( m_pSignaturesLB->FirstSelected() )
{
try
{
sal_uInt16 nSelected = (sal_uInt16) (sal_uIntPtr) maSignaturesLB.FirstSelected()->GetUserData();
sal_uInt16 nSelected = (sal_uInt16) (sal_uIntPtr) m_pSignaturesLB->FirstSelected()->GetUserData();
maCurrentSignatureInformations.erase( maCurrentSignatureInformations.begin()+nSelected );
// Export all other signatures...
@@ -570,7 +569,7 @@ IMPL_LINK_NOARG(DigitalSignaturesDialog, StartVerifySignatureHdl)
void DigitalSignaturesDialog::ImplFillSignaturesBox()
{
maSignaturesLB.Clear();
m_pSignaturesLB->Clear();
uno::Reference< ::com::sun::star::xml::crypto::XSecurityEnvironment > xSecEnv = maSignatureHelper.GetSecurityEnvironment();
uno::Reference<com::sun::star::security::XSerialNumberAdapter> xSerialNumberAdapter =
@@ -654,11 +653,11 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox()
Image aImage;
if (!bSigValid)
{
aImage = maSigsInvalidImg.GetImage();
aImage = m_pSigsInvalidImg->GetImage();
}
else if (bSigValid && !bCertValid)
{
aImage = maSigsNotvalidatedImg.GetImage();
aImage = m_pSigsNotvalidatedImg->GetImage();
}
//Check if the signature is a "old" document signature, that is, which was created
//by an version of OOo previous to 3.2
@@ -666,25 +665,25 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox()
&& bSigValid && bCertValid && !DocumentSignatureHelper::isOOo3_2_Signature(
maCurrentSignatureInformations[n]))
{
aImage = maSigsNotvalidatedImg.GetImage();
aImage = m_pSigsNotvalidatedImg->GetImage();
bAllNewSignatures &= false;
}
else if (meSignatureMode == SignatureModeDocumentContent
&& bSigValid && bCertValid && DocumentSignatureHelper::isOOo3_2_Signature(
maCurrentSignatureInformations[n]))
{
aImage = maSigsValidImg.GetImage();
aImage = m_pSigsValidImg->GetImage();
}
else if (meSignatureMode == SignatureModeMacros
&& bSigValid && bCertValid)
{
aImage = maSigsValidImg.GetImage();
aImage = m_pSigsValidImg->GetImage();
}
SvTreeListEntry* pEntry = maSignaturesLB.InsertEntry( OUString(), aImage, aImage );
maSignaturesLB.SetEntryText( aSubject, pEntry, 1 );
maSignaturesLB.SetEntryText( aIssuer, pEntry, 2 );
maSignaturesLB.SetEntryText( aDateTimeStr, pEntry, 3 );
SvTreeListEntry* pEntry = m_pSignaturesLB->InsertEntry( OUString(), aImage, aImage );
m_pSignaturesLB->SetEntryText( aSubject, pEntry, 1 );
m_pSignaturesLB->SetEntryText( aIssuer, pEntry, 2 );
m_pSignaturesLB->SetEntryText( aDateTimeStr, pEntry, 3 );
pEntry->SetUserData( ( void* ) n ); // missuse user data as index
}
}
@@ -693,23 +692,27 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox()
bool bAllCertsValid = (nValidCerts == nInfos);
bool bShowValidState = nInfos && (bAllSigsValid && bAllCertsValid && bAllNewSignatures);
bool bShowNotValidatedState = nInfos && (bAllSigsValid && (!bAllCertsValid || !bAllNewSignatures));
m_pSigsValidImg->Show( bShowValidState);
m_pSigsValidFI->Show( bShowValidState );
bool bShowInvalidState = nInfos && !bAllSigsValid;
maSigsValidImg.Show( bShowValidState);
maSigsValidFI.Show( bShowValidState );
maSigsInvalidImg.Show( bShowInvalidState );
maSigsInvalidFI.Show( bShowInvalidState );
m_pSigsInvalidImg->Show( bShowInvalidState );
m_pSigsInvalidFI->Show( bShowInvalidState );
bool bShowNotValidatedState = nInfos && bAllSigsValid && !bAllCertsValid;
m_pSigsNotvalidatedImg->Show(bShowNotValidatedState);
m_pSigsNotvalidatedFI->Show(bShowNotValidatedState);
maSigsNotvalidatedImg.Show(bShowNotValidatedState);
//bAllNewSignatures is always true if we are not in document mode
maSigsNotvalidatedFI.Show(nInfos && bAllSigsValid && ! bAllCertsValid);
maSigsOldSignatureFI.Show(nInfos && bAllSigsValid && bAllCertsValid && !bAllNewSignatures);
bool bShowOldSignature = nInfos && bAllSigsValid && bAllCertsValid && !bAllNewSignatures;
m_pSigsOldSignatureImg->Show(bShowOldSignature);
m_pSigsOldSignatureFI->Show(bShowOldSignature);
SignatureHighlightHdl( NULL );
}
//If bUseTempStream is true then the temporary signature stream is used.
//Otherwise the real signature stream is used.
void DigitalSignaturesDialog::ImplGetSignatureInformations(bool bUseTempStream)
@@ -734,9 +737,9 @@ void DigitalSignaturesDialog::ImplGetSignatureInformations(bool bUseTempStream)
void DigitalSignaturesDialog::ImplShowSignaturesDetails()
{
if( maSignaturesLB.FirstSelected() )
if( m_pSignaturesLB->FirstSelected() )
{
sal_uInt16 nSelected = (sal_uInt16) (sal_uIntPtr) maSignaturesLB.FirstSelected()->GetUserData();
sal_uInt16 nSelected = (sal_uInt16) (sal_uIntPtr) m_pSignaturesLB->FirstSelected()->GetUserData();
const SignatureInformation& rInfo = maCurrentSignatureInformations[ nSelected ];
css::uno::Reference<css::xml::crypto::XSecurityEnvironment > xSecEnv =
maSignatureHelper.GetSecurityEnvironment();
@@ -20,161 +20,6 @@
#include "helpids.hrc"
#include "digitalsignaturesdialog.hrc"
ModalDialog RID_XMLSECDLG_DIGSIG
{
HelpId = HID_XMLSEC_DLG_DIGSIG;
Size = MAP_APPFONT( 234, 191 );
OutputSize = TRUE;
Closeable = TRUE;
Moveable = TRUE;
SVLook = TRUE;
Text [ en-US ] = "Digital Signatures";
FixedText FT_HINT_DOC
{
Pos = MAP_APPFONT( 6, 3 );
Size = MAP_APPFONT( 222, 8 );
Hide = TRUE;
Text [ en-US ] = "The following have signed the document content:";
};
FixedText FT_HINT_BASIC
{
Pos = MAP_APPFONT( 6, 3 );
Size = MAP_APPFONT( 222, 8 );
Hide = TRUE;
Text [ en-US ] = "The following have signed the document macro:";
};
FixedText FT_HINT_PACK
{
Pos = MAP_APPFONT( 6, 3 );
Size = MAP_APPFONT( 222, 8 );
Hide = TRUE;
Text [ en-US ] = "The following have signed this package:";
};
Control LB_SIGNATURES
{
HelpId = HID_XMLSEC_CTRL_SIGNATURESDLG;
Pos = MAP_APPFONT( 6, 14 );
Size = MAP_APPFONT( 222, 109 );
SVLook = TRUE;
Border = TRUE;
};
String STR_HEADERBAR
{
Text [ en-US ] = "\tSigned by\tDigital ID issued by\tDate";
};
String STR_VALID_SIGNATURE
{
Text [ en-US ] = "Valid signature";
};
String STR_NO_INFO_TO_VERIFY
{
Text [ en-US ] = "Certificate could not be validated";
};
String STR_INVALID_SIGNATURE
{
Text [ en-US ] = "The signatures in this document are invalid";
};
FixedImage IMG_STATE_VALID
{
Pos = MAP_APPFONT( 6, 127 );
Size = MAP_APPFONT( 33, 22 );
Fixed = Image
{
ImageBitmap = Bitmap { File = "signet_11x16.png"; };
MaskColor = STD_MASKCOLOR;
};
};
FixedText FI_STATE_VALID
{
Pos = MAP_APPFONT( 6, 127 );
Size = MAP_APPFONT( 222, 8 );
Hide = TRUE;
Text [ en-US ] = "The signatures in this document are valid";
};
FixedText FI_STATE_OLDSIGNATURE
{
Pos = MAP_APPFONT( 6, 127 );
Size = MAP_APPFONT( 222, 8 );
Hide = TRUE;
Text [ en-US ] = "Not all parts of the document are signed";
};
FixedImage IMG_STATE_BROKEN
{
Pos = MAP_APPFONT( 6, 127 );
Size = MAP_APPFONT( 33, 22 );
Fixed = Image
{
ImageBitmap = Bitmap { File = "caution_11x16.png"; };
MaskColor = STD_MASKCOLOR;
};
};
FixedText FI_STATE_BROKEN
{
Pos = MAP_APPFONT( 6, 127 );
Size = MAP_APPFONT( 222, 8 );
Hide = TRUE;
Text [ en-US ] = "The signatures in this document are invalid";
};
FixedImage IMG_STATE_NOTVALIDATED
{
Pos = MAP_APPFONT( 6, 127 );
Size = MAP_APPFONT( 33, 22 );
Fixed = Image
{
ImageBitmap = Bitmap { File = "notcertificate_16.png"; };
MaskColor = STD_MASKCOLOR;
};
};
FixedText FI_STATE_NOTVALIDATED
{
Pos = MAP_APPFONT( 6, 127 );
Size = MAP_APPFONT( 222, 8 );
Hide = TRUE;
};
PushButton BTN_VIEWCERT
{
HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_VIEWCERT";
Pos = MAP_APPFONT( 6, 142 );
Size = MAP_APPFONT( 70, 14 );
Text [ en-US ] = "View Certificate...";
};
PushButton BTN_ADDCERT
{
HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_ADDCERT";
Pos = MAP_APPFONT( 82, 142 );
Size = MAP_APPFONT( 70, 14 );
Text [ en-US ] = "Sign Document...";
};
PushButton BTN_REMOVECERT
{
HelpID = "xmlsecurity:PushButton:RID_XMLSECDLG_DIGSIG:BTN_REMOVECERT";
Pos = MAP_APPFONT( 158, 142 );
Size = MAP_APPFONT( 70, 14 );
Text [ en-US ] = "Remove";
};
FixedLine FL_BOTTOM_SEP
{
Pos = MAP_APPFONT( 0, 160 );
Size = MAP_APPFONT( 234, 8 );
};
OKButton BTN_OK
{
DefButton = TRUE;
Pos = MAP_APPFONT( 178, 171 );
Size = MAP_APPFONT( 50, 14 );
Text [ en-US ] = "Close";
};
HelpButton BTN_HELP
{
Pos = MAP_APPFONT( 6, 171 );
Size = MAP_APPFONT( 50, 14 );
};
};
ErrorBox RID_XMLSECDLG_OLD_ODF_FORMAT
{
Buttons = WB_OK ;
-2
View File
@@ -30,9 +30,7 @@
#define HID_XMLSEC_TP_GENERAL "XMLSECURITY_HID_XMLSEC_TP_GENERAL"
#define HID_XMLSEC_TP_DETAILS "XMLSECURITY_HID_XMLSEC_TP_DETAILS"
#define HID_XMLSEC_TP_CERTPATH "XMLSECURITY_HID_XMLSEC_TP_CERTPATH"
#define HID_XMLSEC_DLG_DIGSIG "XMLSECURITY_HID_XMLSEC_DLG_DIGSIG"
#define HID_XMLSEC_TP_MACROWARN "XMLSECURITY_HID_XMLSEC_TP_MACROWARN"
#define HID_XMLSEC_DLG_CERTCHOOSER "XMLSECURITY_HID_XMLSEC_DLG_CERTCHOOSER"
#define HID_XMLSEC_CTRL_TRUSTSOURCES "XMLSECURITY_HID_XMLSEC_CTRL_TRUSTSOURCES"
#define HID_XMLSEC_CTRL_ELEMENTS "XMLSECURITY_HID_XMLSEC_CTRL_ELEMENTS"
#define HID_XMLSEC_CTRL_VIEWSIGNATURES "XMLSECURITY_HID_XMLSEC_CTRL_VIEWSIGNATURES"
@@ -381,12 +381,6 @@ vector< pair< OUString, OUString> > parseDN(const OUString& rRawString)
AlignAfterImage( _rImage, static_cast< Control& >( _rFI ), _nXOffset );
ShrinkToFitWidth( _rFI );
}
void AlignAndFitImageAndControl( FixedImage& _rImage, FixedInfo& _rFI, long _nXOffset )
{
_rImage.SetSizePixel( _rImage.GetImage().GetSizePixel() );
AlignAfterImage( _rImage, _rFI, _nXOffset );
}
}
@@ -52,7 +52,6 @@ namespace XmlSec
long ShrinkToFitWidth( Control& _rCtrl, long _nOffs = 0 ); // return = new width
void AlignAfterImage( const FixedImage& _rImage, Control& _rCtrl, long _nXOffset = 0 );
void AlignAfterImage( const FixedImage& _rImage, FixedInfo& _rFI, long _nXOffset = 0 );
void AlignAndFitImageAndControl( FixedImage& _rImage, FixedInfo& _rFI, long _nXOffset = 0 );
}
#define XMLSEC_RES(id) ResId(id,*XmlSec::GetResMgr())
@@ -0,0 +1,371 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkDialog" id="DigitalSignaturesDialog">
<property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="title" translatable="yes">Digital Signatures</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="dialog-action_area1">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="help">
<property name="label">gtk-help</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">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="secondary">True</property>
</packing>
</child>
<child>
<object class="GtkButton" id="close">
<property name="label">gtk-close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel" id="dochint">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">The following have signed the document content: </property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="svxcorelo:SvxSimpleTableContainer" id="signatures">
<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">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkButtonBox" id="buttonbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">12</property>
<property name="homogeneous">True</property>
<property name="layout_style">spread</property>
<child>
<object class="GtkButton" id="view">
<property name="label" translatable="yes">View Certificate...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="sign">
<property name="label" translatable="yes">Sign Document...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="remove">
<property name="label" translatable="yes">Remove</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">6</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkLabel" id="signed">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Signed by </property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="issued">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Digital ID issued by </property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="date">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Date</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="macrohint">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">The following have signed the document macro:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="packagehint">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">The following have signed this package:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkLabel" id="validft">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">The signatures in this document are valid</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="validimg">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="pixbuf">xmlsecurity/res/signet_11x16.png</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="invalidft">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">The signatures in this document are invalid</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="oldsignatureft">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Not all parts of the document are signed</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="notvalidatedft">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Certificate could not be validated</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="invalidimg">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="pixbuf">xmlsecurity/res/caution_11x16.png</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="oldsignatureimg">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="pixbuf">xmlsecurity/res/caution_11x16.png</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="notvalidatedimg">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="pixbuf">xmlsecurity/res/notcertificate_16.png</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">5</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<action-widgets>
<action-widget response="0">help</action-widget>
<action-widget response="0">close</action-widget>
</action-widgets>
</object>
</interface>
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkDialog" id="dialog1">
<object class="GtkDialog" id="SelectCertificateDialog">
<property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="title" translatable="yes">Select Certificate</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
@@ -17,11 +18,9 @@
<child>
<object class="GtkButton" id="ok">
<property name="label">gtk-ok</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
@@ -33,11 +32,11 @@
<child>
<object class="GtkButton" id="cancel">
<property name="label">gtk-cancel</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
@@ -49,11 +48,9 @@
<child>
<object class="GtkButton" id="help">
<property name="label">gtk-help</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
@@ -74,16 +71,20 @@
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">10</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="column_spacing">40</property>
<property name="no_show_all">True</property>
<property name="hexpand">True</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<object class="GtkLabel" id="issuedto">
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Issued to </property>
</object>
<packing>
@@ -94,9 +95,9 @@
</packing>
</child>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<object class="GtkLabel" id="issuedby">
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Issued by</property>
</object>
<packing>
@@ -107,9 +108,9 @@
</packing>
</child>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<object class="GtkLabel" id="expiration">
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Expiration date</property>
</object>
<packing>
@@ -143,13 +144,11 @@
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<object class="svxcorelo:SvxSimpleTableContainer" id="signatures">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -159,26 +158,12 @@
</packing>
</child>
<child>
<object class="GtkButtonBox" id="buttonbox1">
<object class="GtkButton" id="viewcert">
<property name="label" translatable="yes">View Certificate...</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="button2">
<property name="label" translatable="yes">View Certificate</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="halign">end</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -189,7 +174,7 @@
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>