diff options
286 files changed, 6634 insertions, 5915 deletions
diff --git a/basic/inc/basic/sberrors.hxx b/basic/inc/basic/sberrors.hxx index 250eac5b5c..92866fd81a 100644 --- a/basic/inc/basic/sberrors.hxx +++ b/basic/inc/basic/sberrors.hxx @@ -287,6 +287,8 @@ typedef ULONG SbError; #define ERRCODE_BASIC_LOOP_NOT_INIT ((LAST_SBX_ERROR_ID+109UL) | ERRCODE_AREA_SBX | \ ERRCODE_CLASS_COMPILER) // For loop not initialized +#define ERRCODE_BASIC_COMPAT ((LAST_SBX_ERROR_ID+103UL)| ERRCODE_AREA_SBX | ERRCODE_CLASS_RUNTIME) + // Map old codes to new codes #define SbERR_SYNTAX ERRCODE_BASIC_SYNTAX #define SbERR_NO_GOSUB ERRCODE_BASIC_NO_GOSUB @@ -410,6 +412,7 @@ typedef ULONG SbError; #define SbERR_PROG_TOO_LARGE ERRCODE_BASIC_PROG_TOO_LARGE #define SbERR_NO_STRINGS_ARRAYS ERRCODE_BASIC_NO_STRINGS_ARRAYS #define SbERR_BASIC_EXCEPTION ERRCODE_BASIC_EXCEPTION +#define SbERR_BASIC_COMPAT ERRCODE_BASIC_COMPAT #define SbERR_BASIC_ARRAY_FIX ERRCODE_BASIC_ARRAY_FIX #define SbERR_BASIC_STRING_OVERFLOW ERRCODE_BASIC_STRING_OVERFLOW #define SbERR_BASIC_EXPR_TOO_COMPLEX ERRCODE_BASIC_EXPR_TOO_COMPLEX diff --git a/basic/inc/basic/sbmod.hxx b/basic/inc/basic/sbmod.hxx index a46a1a20e2..9681149936 100644 --- a/basic/inc/basic/sbmod.hxx +++ b/basic/inc/basic/sbmod.hxx @@ -31,9 +31,7 @@ #include <basic/sbdef.hxx> #include <basic/sbxobj.hxx> #include <basic/sbxdef.hxx> -#ifndef _RTL_USTRING_HXX #include <rtl/ustring.hxx> -#endif class SbMethod; class SbProperty; @@ -63,6 +61,10 @@ protected: SbiImage* pImage; // the Image SbiBreakpoints* pBreaks; // Breakpoints SbClassData* pClassData; + BOOL mbVBACompat; + INT32 mnType; + SbxObjectRef pDocObject; // an impl object ( used by Document Modules ) + bool bIsProxyModule; void StartDefinitions(); SbMethod* GetMethod( const String&, SbxDataType ); @@ -87,7 +89,7 @@ protected: public: SBX_DECL_PERSIST_NODATA(SBXCR_SBX,SBXID_BASICMOD,2); TYPEINFO(); - SbModule( const String& ); + SbModule( const String&, BOOL bCompat = FALSE ); virtual void SetParent( SbxObject* ); virtual void Clear(); @@ -123,6 +125,11 @@ public: BOOL LoadBinaryData( SvStream& ); BOOL ExceedsLegacyModuleSize(); void fixUpMethodStart( bool bCvtToLegacy, SbiImage* pImg = NULL ) const; + BOOL IsVBACompat(); + void SetVBACompat( BOOL bCompat ); + INT32 GetModuleType() { return mnType; } + void SetModuleType( INT32 nType ) { mnType = nType; } + bool GetIsProxyModule() { return bIsProxyModule; } }; #ifndef __SB_SBMODULEREF_HXX diff --git a/basic/inc/basic/sbobjmod.hxx b/basic/inc/basic/sbobjmod.hxx new file mode 100644 index 0000000000..ad804dcfab --- /dev/null +++ b/basic/inc/basic/sbobjmod.hxx @@ -0,0 +1,97 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: sbobjmod.hxx,v $ + * + * $Revision: 1.4 $ + * + * last change: $Author: $ $Date: 2007/08/27 16:31:39 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#ifndef _SB_OBJMOD_HXX +#define _SB_OBJMOD_HXX + +#include <basic/sbmod.hxx> +#include <basic/sbstar.hxx> +#include <com/sun/star/script/ModuleInfo.hpp> +#include <com/sun/star/lang/XEventListener.hpp> +#include <com/sun/star/awt/XDialog.hpp> +#include <com/sun/star/frame/XModel.hpp> + +namespace css = ::com::sun::star; + +// Basic-Module for excel object. + +class SbObjModule : public SbModule +{ + SbObjModule( const SbObjModule& ); + SbObjModule(); +public: + TYPEINFO(); + SbObjModule( const String& rName, const com::sun::star::script::ModuleInfo& mInfo, bool bIsVbaCompatible ); + virtual SbxVariable* Find( const XubString& rName, SbxClassType t ); + using SbxValue::GetObject; + SbxVariable* GetObject(); + void SetUnoObject( const com::sun::star::uno::Any& aObj )throw ( com::sun::star::uno::RuntimeException ) ; +}; + +class SbUserFormModule : public SbObjModule +{ + css::uno::Reference<css::lang::XEventListener> m_DialogListener; + css::uno::Reference<css::awt::XDialog> m_xDialog; + css::uno::Reference<css::frame::XModel> m_xModel; + String sFormName; + bool mbInit; + SbUserFormModule( const SbUserFormModule& ); + SbUserFormModule(); + +protected: + virtual void InitObject(); +public: + TYPEINFO(); + SbUserFormModule( const String& rName, const com::sun::star::script::ModuleInfo& mInfo, bool bIsVBACompat ); + virtual SbxVariable* Find( const XubString& rName, SbxClassType t ); + void ResetApiObj(); + void Unload(); + void load(); + void triggerMethod( const String& ); + void triggerMethod( const String&, css::uno::Sequence< css::uno::Any >& ); + void triggerActivateEvent(); + void triggerDeActivateEvent(); + void triggerInitializeEvent(); + void triggerTerminateEvent(); +}; + +#ifndef __SB_SBOBJMODULEREF_HXX +#define __SB_SBOBJMODULEREF_HXX + +SV_DECL_IMPL_REF(SbObjModule); + +#endif +#endif + diff --git a/basic/inc/basic/sbstar.hxx b/basic/inc/basic/sbstar.hxx index f354d8c7b5..299b1e19eb 100644 --- a/basic/inc/basic/sbstar.hxx +++ b/basic/inc/basic/sbstar.hxx @@ -37,6 +37,7 @@ #include <basic/sbdef.hxx> #include <basic/sberrors.hxx> +#include <com/sun/star/script/ModuleInfo.hpp> class SbModule; // completed module class SbiInstance; // runtime instance @@ -69,6 +70,7 @@ class StarBASIC : public SbxObject BOOL bNoRtl; // if TRUE: do not search RTL BOOL bBreak; // if TRUE: Break, otherwise Step BOOL bDocBasic; + BOOL bVBAEnabled; BasicLibInfo* pLibInfo; // Info block for basic manager SbLanguageMode eLanguageMode; // LanguageMode of the basic object BOOL bQuit; @@ -117,6 +119,7 @@ public: // Compiler-Interface SbModule* MakeModule( const String& rName, const String& rSrc ); SbModule* MakeModule32( const String& rName, const ::rtl::OUString& rSrc ); + SbModule* MakeModule32( const String& rName, const com::sun::star::script::ModuleInfo& mInfo, const ::rtl::OUString& rSrc ); BOOL Compile( SbModule* ); BOOL Disassemble( SbModule*, String& rText ); static void Stop(); @@ -189,6 +192,8 @@ public: ( const String& rName, USHORT& rStatus ); static SbMethod* GetActiveMethod( USHORT nLevel = 0 ); static SbModule* GetActiveModule(); + void SetVBAEnabled( BOOL bEnabled ); + BOOL isVBAEnabled(); // #60175 TRUE: SFX-Resource is not displayed on basic errors static void StaticSuppressSfxResource( BOOL bSuppress ); diff --git a/basic/inc/basic/sbuno.hxx b/basic/inc/basic/sbuno.hxx index 38008dcb1c..27fe320dd8 100644 --- a/basic/inc/basic/sbuno.hxx +++ b/basic/inc/basic/sbuno.hxx @@ -41,5 +41,7 @@ void createAllObjectProperties( SbxObject* pObj ); ::com::sun::star::uno::Any sbxToUnoValue( SbxVariable* pVar ); +void unoToSbxValue( SbxVariable* pVar, const ::com::sun::star::uno::Any& aValue ); + #endif diff --git a/basic/prj/build.lst b/basic/prj/build.lst index 994901580c..9453154edf 100644..100755 --- a/basic/prj/build.lst +++ b/basic/prj/build.lst @@ -1,11 +1,11 @@ -sb basic : l10n offuh svtools xmlscript framework NULL +sb basic : l10n offuh oovbaapi svtools xmlscript framework NULL sb basic usr1 - all sb_mkout NULL sb basic\inc nmake - all sb_inc NULL sb basic\source\app nmake - all sb_app sb_class sb_inc NULL sb basic\source\basmgr nmake - all sb_mgr sb_inc NULL sb basic\source\classes nmake - all sb_class sb_inc NULL sb basic\source\comp nmake - all sb_comp sb_inc NULL -sb basic\source\runtime nmake - all sb_rt sb_inc NULL +sb basic\source\runtime nmake - all sb_rt sb_inc sb_class NULL sb basic\source\sample nmake - all sb_samp sb_inc NULL sb basic\source\sbx nmake - all sb_sbx sb_inc NULL sb basic\source\uno nmake - all sb_uno sb_inc NULL diff --git a/basic/source/basmgr/basmgr.cxx b/basic/source/basmgr/basmgr.cxx index ffb23f9710..a18b9bb081 100644 --- a/basic/source/basmgr/basmgr.cxx +++ b/basic/source/basmgr/basmgr.cxx @@ -41,6 +41,7 @@ #include <tools/debug.hxx> #include <tools/diagnose_ex.h> #include <basic/sbmod.hxx> +#include <basic/sbobjmod.hxx> #include <basic/sbuno.hxx> #include <basic/basmgr.hxx> @@ -65,6 +66,9 @@ #include <com/sun/star/script/XStarBasicDialogInfo.hpp> #include <com/sun/star/script/XStarBasicLibraryInfo.hpp> #include <com/sun/star/script/XLibraryContainerPassword.hpp> +#include <com/sun/star/script/ModuleInfo.hpp> +#include <com/sun/star/script/XVBAModuleInfo.hpp> +#include <com/sun/star/script/XVBACompat.hpp> #include <cppuhelper/implbase1.hxx> @@ -236,7 +240,15 @@ void BasMgrContainerListenerImpl::addLibraryModulesImpl( BasicManager* pMgr, Any aElement = xLibNameAccess->getByName( aModuleName ); ::rtl::OUString aMod; aElement >>= aMod; - pLib->MakeModule32( aModuleName, aMod ); + Reference< XVBAModuleInfo > xVBAModuleInfo( xLibNameAccess, UNO_QUERY ); + if ( xVBAModuleInfo.is() && xVBAModuleInfo->hasModuleInfo( aModuleName ) ) + { + ModuleInfo mInfo = xVBAModuleInfo->getModuleInfo( aModuleName ); + OSL_TRACE("#addLibraryModulesImpl - aMod"); + pLib->MakeModule32( aModuleName, mInfo, aMod ); + } + else + pLib->MakeModule32( aModuleName, aMod ); } } @@ -270,11 +282,16 @@ void SAL_CALL BasMgrContainerListenerImpl::elementInserted( const ContainerEvent { Reference< XLibraryContainer > xScriptCont( Event.Source, UNO_QUERY ); insertLibraryImpl( xScriptCont, mpMgr, Event.Element, aName ); + StarBASIC* pLib = mpMgr->GetLib( aName ); + if ( pLib ) + { + Reference<XVBACompat> xVBACompat( xScriptCont, UNO_QUERY ); + if ( xVBACompat.is() ) + pLib->SetVBAEnabled( xVBACompat->getVBACompatModeOn() ); + } } else { - ::rtl::OUString aMod; - Event.Element >>= aMod; StarBASIC* pLib = mpMgr->GetLib( maLibName ); DBG_ASSERT( pLib, "BasMgrContainerListenerImpl::elementInserted: Unknown lib!"); @@ -283,7 +300,16 @@ void SAL_CALL BasMgrContainerListenerImpl::elementInserted( const ContainerEvent SbModule* pMod = pLib->FindModule( aName ); if( !pMod ) { - pLib->MakeModule32( aName, aMod ); + ::rtl::OUString aMod; + Event.Element >>= aMod; + Reference< XVBAModuleInfo > xVBAModuleInfo( Event.Source, UNO_QUERY ); + if ( xVBAModuleInfo.is() && xVBAModuleInfo->hasModuleInfo( aName ) ) + { + ModuleInfo mInfo = xVBAModuleInfo->getModuleInfo( aName ); + pLib->MakeModule32( aName, mInfo, aMod ); + } + else + pLib->MakeModule32( aName, aMod ); pLib->SetModified( FALSE ); } } @@ -312,11 +338,12 @@ void SAL_CALL BasMgrContainerListenerImpl::elementReplaced( const ContainerEvent SbModule* pMod = pLib->FindModule( aName ); ::rtl::OUString aMod; Event.Element >>= aMod; + if( pMod ) - pMod->SetSource32( aMod ); + pMod->SetSource32( aMod ); else - pLib->MakeModule32( aName, aMod ); - + pLib->MakeModule32( aName, aMod ); + pLib->SetModified( FALSE ); } } diff --git a/basic/source/classes/errobject.cxx b/basic/source/classes/errobject.cxx new file mode 100644 index 0000000000..4f661faeaf --- /dev/null +++ b/basic/source/classes/errobject.cxx @@ -0,0 +1,225 @@ +/************************************************************************* +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_basic.hxx" +#include "errobject.hxx" + +#include <cppuhelper/implbase2.hxx> +#include <com/sun/star/script/XDefaultProperty.hpp> +#include "sbintern.hxx" +#include "runtime.hxx" + +using namespace ::com::sun::star; +using namespace ::ooo; + +typedef ::cppu::WeakImplHelper2< vba::XErrObject, script::XDefaultProperty > ErrObjectImpl_BASE; + +class ErrObject : public ErrObjectImpl_BASE +{ + rtl::OUString m_sHelpFile; + rtl::OUString m_sSource; + rtl::OUString m_sDescription; + sal_Int32 m_nNumber; + sal_Int32 m_nHelpContext; + +public: + ErrObject(); + ~ErrObject(); + // Attributes + virtual ::sal_Int32 SAL_CALL getNumber() throw (uno::RuntimeException); + virtual void SAL_CALL setNumber( ::sal_Int32 _number ) throw (uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getHelpContext() throw (uno::RuntimeException); + virtual void SAL_CALL setHelpContext( ::sal_Int32 _helpcontext ) throw (uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getHelpFile() throw (uno::RuntimeException); + virtual void SAL_CALL setHelpFile( const ::rtl::OUString& _helpfile ) throw (uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getDescription() throw (uno::RuntimeException); + virtual void SAL_CALL setDescription( const ::rtl::OUString& _description ) throw (uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getSource() throw (uno::RuntimeException); + virtual void SAL_CALL setSource( const ::rtl::OUString& _source ) throw (uno::RuntimeException); + + // Methods + virtual void SAL_CALL Clear( ) throw (uno::RuntimeException); + virtual void SAL_CALL Raise( const uno::Any& Number, const uno::Any& Source, const uno::Any& Description, const uno::Any& HelpFile, const uno::Any& HelpContext ) throw (uno::RuntimeException); + // XDefaultProperty + virtual ::rtl::OUString SAL_CALL getDefaultPropertyName( ) throw (uno::RuntimeException); + + // Helper method + void setData( const uno::Any& Number, const uno::Any& Source, const uno::Any& Description, + const uno::Any& HelpFile, const uno::Any& HelpContext ) throw (uno::RuntimeException); +}; + + +ErrObject::~ErrObject() +{ +} + +ErrObject::ErrObject() : m_nNumber(0), m_nHelpContext(0) +{ +} + +sal_Int32 SAL_CALL +ErrObject::getNumber() throw (uno::RuntimeException) +{ + return m_nNumber; +} + +void SAL_CALL +ErrObject::setNumber( ::sal_Int32 _number ) throw (uno::RuntimeException) +{ + pINST->setErrorVB( _number, String() ); + ::rtl::OUString _description = pINST->GetErrorMsg(); + setData( uno::makeAny( _number ), uno::Any(), uno::makeAny( _description ), uno::Any(), uno::Any() ); +} + +::sal_Int32 SAL_CALL +ErrObject::getHelpContext() throw (uno::RuntimeException) +{ + return m_nHelpContext; +} +void SAL_CALL +ErrObject::setHelpContext( ::sal_Int32 _helpcontext ) throw (uno::RuntimeException) +{ + m_nHelpContext = _helpcontext; +} + +::rtl::OUString SAL_CALL +ErrObject::getHelpFile() throw (uno::RuntimeException) +{ + return m_sHelpFile; +} + +void SAL_CALL +ErrObject::setHelpFile( const ::rtl::OUString& _helpfile ) throw (uno::RuntimeException) +{ + m_sHelpFile = _helpfile; +} + +::rtl::OUString SAL_CALL +ErrObject::getDescription() throw (uno::RuntimeException) +{ + return m_sDescription; +} + +void SAL_CALL +ErrObject::setDescription( const ::rtl::OUString& _description ) throw (uno::RuntimeException) +{ + m_sDescription = _description; +} + +::rtl::OUString SAL_CALL +ErrObject::getSource() throw (uno::RuntimeException) +{ + return m_sSource; +} + +void SAL_CALL +ErrObject::setSource( const ::rtl::OUString& _source ) throw (uno::RuntimeException) +{ + m_sSource = _source; +} + +// Methods +void SAL_CALL +ErrObject::Clear( ) throw (uno::RuntimeException) +{ + m_sHelpFile = rtl::OUString(); + m_sSource = m_sHelpFile; + m_sDescription = m_sSource; + m_nNumber = 0; + m_nHelpContext = 0; +} + +void SAL_CALL +ErrObject::Raise( const uno::Any& Number, const uno::Any& Source, const uno::Any& Description, const uno::Any& HelpFile, const uno::Any& HelpContext ) throw (uno::RuntimeException) +{ + setData( Number, Source, Description, HelpFile, HelpContext ); + if ( m_nNumber ) + pINST->ErrorVB( m_nNumber, m_sDescription ); +} + +// XDefaultProperty +::rtl::OUString SAL_CALL +ErrObject::getDefaultPropertyName( ) throw (uno::RuntimeException) +{ + static rtl::OUString sDfltPropName( RTL_CONSTASCII_USTRINGPARAM("Number") ); + return sDfltPropName; +} + +void ErrObject::setData( const uno::Any& Number, const uno::Any& Source, const uno::Any& Description, const uno::Any& HelpFile, const uno::Any& HelpContext ) + throw (uno::RuntimeException) +{ + if ( !Number.hasValue() ) + throw uno::RuntimeException( rtl::OUString::createFromAscii("Missing Required Paramater"), uno::Reference< uno::XInterface >() ); + Number >>= m_nNumber; + Description >>= m_sDescription; + Source >>= m_sSource; + HelpFile >>= m_sHelpFile; + HelpContext >>= m_nHelpContext; +} + +// SbxErrObject +SbxErrObject::SbxErrObject( const String& rName, const Any& rUnoObj ) + : SbUnoObject( rName, rUnoObj ) + , m_pErrObject( NULL ) +{ + OSL_TRACE("SbxErrObject::SbxErrObject ctor"); + rUnoObj >>= m_xErr; + if ( m_xErr.is() ) + { + SetDfltProperty( uno::Reference< script::XDefaultProperty >( m_xErr, uno::UNO_QUERY_THROW )->getDefaultPropertyName() ) ; + m_pErrObject = static_cast< ErrObject* >( m_xErr.get() ); + } +} + +SbxErrObject::~SbxErrObject() +{ + OSL_TRACE("SbxErrObject::~SbxErrObject dtor"); +} + +uno::Reference< vba::XErrObject > +SbxErrObject::getUnoErrObject() +{ + SbxVariable* pVar = getErrObject(); + SbxErrObject* pGlobErr = static_cast< SbxErrObject* >( pVar ); + return pGlobErr->m_xErr; +} + +SbxVariableRef +SbxErrObject::getErrObject() +{ + static SbxVariableRef pGlobErr = new SbxErrObject( String( RTL_CONSTASCII_USTRINGPARAM("Err")), uno::makeAny( uno::Reference< vba::XErrObject >( new ErrObject() ) ) ); + return pGlobErr; +} + +void SbxErrObject::setNumberAndDescription( ::sal_Int32 _number, const ::rtl::OUString& _description ) + throw (uno::RuntimeException) +{ + if( m_pErrObject != NULL ) + m_pErrObject->setData( uno::makeAny( _number ), uno::Any(), uno::makeAny( _description ), uno::Any(), uno::Any() ); +} + diff --git a/basic/source/classes/eventatt.cxx b/basic/source/classes/eventatt.cxx index 0335b3e746..4b1efefbdf 100644 --- a/basic/source/classes/eventatt.cxx +++ b/basic/source/classes/eventatt.cxx @@ -55,13 +55,17 @@ #include <com/sun/star/awt/XDialogProvider.hpp> #include <com/sun/star/frame/XModel.hpp> - +#include <com/sun/star/frame/XDesktop.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <basic/basicmanagerrepository.hxx> +#include <basic/basmgr.hxx> //================================================================================================== #include <xmlscript/xmldlg_imexp.hxx> #include <sbunoobj.hxx> #include <basic/sbstar.hxx> #include <basic/sbmeth.hxx> +#include <basic/sbuno.hxx> #include <runtime.hxx> #include <sbintern.hxx> @@ -85,11 +89,6 @@ using namespace ::osl; -//=================================================================== -void unoToSbxValue( SbxVariable* pVar, const Any& aValue ); -Any sbxToUnoValue( SbxVariable* pVar ); - - Reference< frame::XModel > getModelFromBasic( SbxObject* pBasic ) { OSL_PRECOND( pBasic != NULL, "getModelFromBasic: illegal call!" ); @@ -450,6 +449,43 @@ Any implFindDialogLibForDialog( const Any& rDlgAny, SbxObject* pBasic ) return aRetDlgLibAny; } +Any implFindDialogLibForDialogBasic( const Any& aAnyISP, SbxObject* pBasic, StarBASIC*& pFoundBasic ) +{ + Any aDlgLibAny; + // Find dialog library for dialog, direct access is not possible here + StarBASIC* pStartedBasic = (StarBASIC*)pBasic; + SbxObject* pParentBasic = pStartedBasic ? pStartedBasic->GetParent() : NULL; + SbxObject* pParentParentBasic = pParentBasic ? pParentBasic->GetParent() : NULL; + + SbxObject* pSearchBasic1 = NULL; + SbxObject* pSearchBasic2 = NULL; + if( pParentParentBasic ) + { + pSearchBasic1 = pParentBasic; + pSearchBasic2 = pParentParentBasic; + } + else + { + pSearchBasic1 = pStartedBasic; + pSearchBasic2 = pParentBasic; + } + if( pSearchBasic1 ) + { + aDlgLibAny = implFindDialogLibForDialog( aAnyISP, pSearchBasic1 ); + + if ( aDlgLibAny.hasValue() ) + pFoundBasic = (StarBASIC*)pSearchBasic1; + + else if( pSearchBasic2 ) + { + aDlgLibAny = implFindDialogLibForDialog( aAnyISP, pSearchBasic2 ); + if ( aDlgLibAny.hasValue() ) + pFoundBasic = (StarBASIC*)pSearchBasic2; + } + } + return aDlgLibAny; +} + static ::rtl::OUString aDecorationPropName = ::rtl::OUString::createFromAscii( "Decoration" ); static ::rtl::OUString aTitlePropName = @@ -529,39 +565,54 @@ void RTL_Impl_CreateUnoDialog( StarBASIC* pBasic, SbxArray& rPar, BOOL bWrite ) {} } - // Find dialog library for dialog, direct access is not possible here - StarBASIC* pStartedBasic = pINST->GetBasic(); - SbxObject* pParentBasic = pStartedBasic ? pStartedBasic->GetParent() : NULL; - SbxObject* pParentParentBasic = pParentBasic ? pParentBasic->GetParent() : NULL; - - SbxObject* pSearchBasic1 = NULL; - SbxObject* pSearchBasic2 = NULL; - if( pParentParentBasic ) + Any aDlgLibAny; + bool bDocDialog = false; + StarBASIC* pFoundBasic = NULL; + OSL_TRACE("About to try get a hold of ThisComponent"); + Reference< frame::XModel > xModel = getModelFromBasic( pINST->GetBasic() ) ; + aDlgLibAny = implFindDialogLibForDialogBasic( aAnyISP, pINST->GetBasic(), pFoundBasic ); + // If we found the dialog then it belongs to the Search basic + if ( !pFoundBasic ) { - pSearchBasic1 = pParentBasic; - pSearchBasic2 = pParentParentBasic; - } - else + Reference< frame::XDesktop > xDesktop( xMSF->createInstance + ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ) ), + UNO_QUERY ); + Reference< container::XEnumeration > xModels; + if ( xDesktop.is() ) { - pSearchBasic1 = pStartedBasic; - pSearchBasic2 = pParentBasic; - } - - Any aDlgLibAny; - if( pSearchBasic1 ) + Reference< container::XEnumerationAccess > xComponents( xDesktop->getComponents(), UNO_QUERY ); + if ( xComponents.is() ) + xModels.set( xComponents->createEnumeration(), UNO_QUERY ); + if ( xModels.is() ) + { + while ( xModels->hasMoreElements() ) + { + Reference< frame::XModel > xNextModel( xModels->nextElement(), UNO_QUERY ); + if ( xNextModel.is() ) + { + BasicManager* pMgr = basic::BasicManagerRepository::getDocumentBasicManager( xNextModel ); + if ( pMgr ) + aDlgLibAny = implFindDialogLibForDialogBasic( aAnyISP, pMgr->GetLib(0), pFoundBasic ); + if ( aDlgLibAny.hasValue() ) { - aDlgLibAny = implFindDialogLibForDialog( aAnyISP, pSearchBasic1 ); - if( pSearchBasic2 && aDlgLibAny.getValueType().getTypeClass() == TypeClass_VOID ) - aDlgLibAny = implFindDialogLibForDialog( aAnyISP, pSearchBasic2 ); + bDocDialog = true; + xModel = xNextModel; + break; } - - - OSL_TRACE("About to try get a hold of ThisComponent"); - Reference< frame::XModel > xModel = getModelFromBasic( pStartedBasic ) ; - Reference< XScriptListener > xScriptListener = new BasicScriptListener_Impl( pStartedBasic, xModel ); + } + } + } + } + } + if ( pFoundBasic ) + bDocDialog = pFoundBasic->IsDocBasic(); + Reference< XScriptListener > xScriptListener = new BasicScriptListener_Impl( pINST->GetBasic(), xModel ); Sequence< Any > aArgs( 4 ); - aArgs[ 0 ] <<= xModel; + if( bDocDialog ) + aArgs[ 0 ] <<= xModel; + else + aArgs[ 0 ] <<= uno::Reference< uno::XInterface >(); aArgs[ 1 ] <<= xInput; aArgs[ 2 ] = aDlgLibAny; aArgs[ 3 ] <<= xScriptListener; diff --git a/basic/source/classes/makefile.mk b/basic/source/classes/makefile.mk index eb5486f02a..e00ed4674c 100644 --- a/basic/source/classes/makefile.mk +++ b/basic/source/classes/makefile.mk @@ -37,18 +37,28 @@ ENABLE_EXCEPTIONS=TRUE .INCLUDE : settings.mk +ALLTAR .SEQUENTIAL : \ + $(MISC)$/$(TARGET).don \ + $(MISC)$/$(TARGET).slo + +$(MISC)$/$(TARGET).don : $(SOLARBINDIR)$/oovbaapi.rdb + +$(CPPUMAKER) -O$(OUT)$/inc -BUCR $(SOLARBINDIR)$/oovbaapi.rdb -X$(SOLARBINDIR)$/types.rdb && echo > $@ + echo $@ + +$(MISC)$/$(TARGET).slo : $(SLOTARGET) + echo $@ + # --- Allgemein ----------------------------------------------------------- -COMMON_SLOFILES= \ +SLOFILES= \ $(SLO)$/sb.obj \ $(SLO)$/sbxmod.obj \ $(SLO)$/image.obj \ $(SLO)$/sbintern.obj \ $(SLO)$/sbunoobj.obj \ $(SLO)$/propacc.obj \ - $(SLO)$/disas.obj - -SLOFILES= $(COMMON_SLOFILES) \ + $(SLO)$/disas.obj \ + $(SLO)$/errobject.obj \ $(SLO)$/eventatt.obj OBJFILES= \ diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx index 213cd8b883..a7d1c50987 100644..100755 --- a/basic/source/classes/sb.cxx +++ b/basic/source/classes/sb.cxx @@ -49,11 +49,18 @@ #include "disas.hxx" #include "runtime.hxx" #include <basic/sbuno.hxx> +#include <basic/sbobjmod.hxx> #include "stdobj.hxx" #include "filefmt.hxx" #include "sb.hrc" #include <basrid.hxx> #include <vos/mutex.hxx> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include "errobject.hxx" + +#include <com/sun/star/script/ModuleType.hpp> +#include <com/sun/star/script/ModuleInfo.hpp> +using namespace ::com::sun::star::script; // #pragma SW_SEGMENT_CLASS( SBASIC, SBASIC_CODE ) @@ -63,18 +70,43 @@ TYPEINIT1(StarBASIC,SbxObject) #define RTLNAME "@SBRTL" // i#i68894# +using com::sun::star::uno::Reference; +using com::sun::star::uno::Any; +using com::sun::star::uno::UNO_QUERY; +using com::sun::star::lang::XMultiServiceFactory; + +const static String aThisComponent( RTL_CONSTASCII_USTRINGPARAM("ThisComponent") ); +const static String aVBAHook( RTL_CONSTASCII_USTRINGPARAM( "VBAGlobals" ) ); SbxObject* StarBASIC::getVBAGlobals( ) { if ( !pVBAGlobals ) - pVBAGlobals = (SbUnoObject*)Find( String(RTL_CONSTASCII_USTRINGPARAM("VBAGlobals")), SbxCLASS_DONTCARE ); + { + Any aThisDoc; + if ( GetUNOConstant("ThisComponent", aThisDoc) ) + { + Reference< XMultiServiceFactory > xDocFac( aThisDoc, UNO_QUERY ); + if ( xDocFac.is() ) + { + try + { + xDocFac->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.VBAGlobals" ) ) ); + } + catch( Exception& ) + { + // Ignore + } + } + } + pVBAGlobals = (SbUnoObject*)Find( aVBAHook , SbxCLASS_DONTCARE ); + } return pVBAGlobals; } // i#i68894# SbxVariable* StarBASIC::VBAFind( const String& rName, SbxClassType t ) { - if( rName.EqualsAscii("ThisComponent") ) + if( rName == aThisComponent ) return NULL; // rename to init globals if ( getVBAGlobals( ) ) @@ -212,6 +244,7 @@ const SFX_VB_ErrorItem __FAR_DATA SFX_VB_ErrorTab[] = { 1004, SbERR_METHOD_FAILED }, { 1005, SbERR_SETPROP_FAILED }, { 1006, SbERR_GETPROP_FAILED }, + { 1007, SbERR_BASIC_COMPAT }, { 0xFFFF, 0xFFFFFFFFL } // End mark }; @@ -482,6 +515,7 @@ SbClassModuleObject::SbClassModuleObject( SbModule* pClassModule ) } } } + SetModuleType( ModuleType::CLASS ); } SbClassModuleObject::~SbClassModuleObject() @@ -679,6 +713,7 @@ StarBASIC::StarBASIC( StarBASIC* p, BOOL bIsDocBasic ) SetParent( p ); pLibInfo = NULL; bNoRtl = bBreak = FALSE; + bVBAEnabled = FALSE; pModules = new SbxArray; if( !GetSbData()->nInst++ ) @@ -779,7 +814,34 @@ SbModule* StarBASIC::MakeModule( const String& rName, const String& rSrc ) SbModule* StarBASIC::MakeModule32( const String& rName, const ::rtl::OUString& rSrc ) { - SbModule* p = new SbModule( rName ); + ModuleInfo mInfo; + mInfo.ModuleType = ModuleType::NORMAL; + return MakeModule32( rName, mInfo, rSrc ); +} +SbModule* StarBASIC::MakeModule32( const String& rName, const ModuleInfo& mInfo, const rtl::OUString& rSrc ) +{ + + OSL_TRACE("create module %s type mInfo %d", rtl::OUStringToOString( rName, RTL_TEXTENCODING_UTF8 ).getStr(), mInfo.ModuleType ); + SbModule* p = NULL; + switch ( mInfo.ModuleType ) + { + case ModuleType::DOCUMENT: + // In theory we should be able to create Object modules + // in ordinary basic ( in vba mode thought these are create + // by the application/basic and not by the user ) + p = new SbObjModule( rName, mInfo, isVBAEnabled() ); + break; + case ModuleType::CLASS: + p = new SbModule( rName, isVBAEnabled() ); + p->SetModuleType( ModuleType::CLASS ); + break; + case ModuleType::FORM: + p = new SbUserFormModule( rName, mInfo, isVBAEnabled() ); + break; + default: + p = new SbModule( rName, isVBAEnabled() ); + + } p->SetSource32( rSrc ); p->SetParent( this ); pModules->Insert( p, pModules->Count() ); @@ -955,6 +1017,12 @@ SbxVariable* StarBASIC::Find( const String& rName, SbxClassType t ) } pNamed = p; } + // Only variables qualified by the Module Name e.g. Sheet1.foo + // should work for Documant && Class type Modules + INT32 nType = p->GetModuleType(); + if ( nType == ModuleType::DOCUMENT || nType == ModuleType::FORM ) + continue; + // otherwise check if the element is available // unset GBLSEARCH-Flag (due to Rekursion) USHORT nGblFlag = p->GetFlags() & SBX_GBLSEARCH; @@ -1326,6 +1394,7 @@ void StarBASIC::MakeErrorText( SbError nId, const String& aMsg ) } else GetSbData()->aErrMsg = String::EmptyString(); + } BOOL StarBASIC::CError @@ -1382,7 +1451,22 @@ BOOL StarBASIC::RTError( SbError code, const String& rMsg, USHORT l, USHORT c1, // Umsetzung des Codes fuer String-Transport in SFX-Error if( rMsg.Len() ) - code = (ULONG)*new StringErrorInfo( code, String(rMsg) ); + { + // very confusing, even though MakeErrorText sets up the error text + // seems that this is not used ( if rMsg already has content ) + // In the case of VBA MakeErrorText also formats the error to be alittle more + // like vba ( adds an error number etc ) + if ( SbiRuntime::isVBAEnabled() && ( code == SbERR_BASIC_COMPAT ) ) + { + String aTmp = '\''; + aTmp += String::CreateFromInt32( SbxErrObject::getUnoErrObject()->getNumber() ); + aTmp += String( RTL_CONSTASCII_USTRINGPARAM("\'\n") ); + aTmp += GetSbData()->aErrMsg.Len() ? GetSbData()->aErrMsg : rMsg; + code = (ULONG)*new StringErrorInfo( code, aTmp ); + } + else + code = (ULONG)*new StringErrorInfo( code, String(rMsg) ); + } SetErrorData( code, l, c1, c2 ); if( GetSbData()->aErrHdl.IsSet() ) diff --git a/basic/source/classes/sb.src b/basic/source/classes/sb.src index b80133553b..632148acc0 100644 --- a/basic/source/classes/sb.src +++ b/basic/source/classes/sb.src @@ -588,6 +588,10 @@ Resource RID_BASIC_START { Text [ en-US ] = "For loop not initialized." ; }; + String ERRCODE_BASIC_COMPAT & ERRCODE_RES_MASK + { + Text [ en-US ] = "$(ARG1)" ; + }; }; // Hinweis: IDS_SBERR_TERMINATED = IDS_SBERR_START+2000. String IDS_SBERR_TERMINATED diff --git a/basic/source/classes/sbunoobj.cxx b/basic/source/classes/sbunoobj.cxx index cebf92c58a..f80e5e082c 100644..100755 --- a/basic/source/classes/sbunoobj.cxx +++ b/basic/source/classes/sbunoobj.cxx @@ -139,16 +139,19 @@ bool SbUnoObject::getDefaultPropName( SbUnoObject* pUnoObj, String& sDfltProp ) SbxVariable* getDefaultProp( SbxVariable* pRef ) { SbxVariable* pDefaultProp = NULL; - SbxObject* pObj = PTR_CAST(SbxObject,(SbxVariable*) pRef); - if ( !pObj ) + if ( pRef->GetType() == SbxOBJECT ) { - SbxBase* pObjVarObj = pRef->GetObject(); - pObj = PTR_CAST(SbxObject,pObjVarObj); - } - if ( pObj && pObj->ISA(SbUnoObject) ) - { - SbUnoObject* pUnoObj = PTR_CAST(SbUnoObject,(SbxObject*)pObj); - pDefaultProp = pUnoObj->GetDfltProperty(); + SbxObject* pObj = PTR_CAST(SbxObject,(SbxVariable*) pRef); + if ( !pObj ) + { + SbxBase* pObjVarObj = pRef->GetObject(); + pObj = PTR_CAST(SbxObject,pObjVarObj); + } + if ( pObj && pObj->ISA(SbUnoObject) ) + { + SbUnoObject* pUnoObj = PTR_CAST(SbUnoObject,(SbxObject*)pObj); + pDefaultProp = pUnoObj->GetDfltProperty(); + } } return pDefaultProp; } @@ -564,7 +567,7 @@ SbxDataType unoToSbxType( const Reference< XIdlClass >& xIdlClass ) } return eRetType; } -void unoToSbxValue( SbxVariable* pVar, const Any& aValue ); + static void implSequenceToMultiDimArray( SbxDimArray*& pArray, Sequence< sal_Int32 >& indices, Sequence< sal_Int32 >& sizes, const Any& aValue, sal_Int32& dimension, sal_Bool bIsZeroIndex, Type* pType = NULL ) { Type aType = aValue.getValueType(); @@ -1601,6 +1604,23 @@ bool checkUnoObjectType( SbUnoObject* pUnoObj, break; } ::rtl::OUString sClassName = xClass->getName(); + if ( sClassName.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.oleautomation.XAutomationObject" ) ) ) ) + { + // there is a hack in the extensions/source/ole/oleobj.cxx to return the typename of the automation object, lets check if it + // matches + Reference< XInvocation > xInv( aToInspectObj, UNO_QUERY ); + if ( xInv.is() ) + { + rtl::OUString sTypeName; + xInv->getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("$GetTypeName") ) ) >>= sTypeName; + if ( sTypeName.getLength() == 0 || sTypeName.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("IDispatch") ) ) ) + // can't check type, leave it pass + result = true; + else + result = sTypeName.equals( aClass ); + } + break; // finished checking automation object + } OSL_TRACE("Checking if object implements %s", OUStringToOString( defaultNameSpace + aClass, RTL_TEXTENCODING_UTF8 ).getStr() ); diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx index fb52d92c50..8c3ef89017 100644 --- a/basic/source/classes/sbxmod.cxx +++ b/basic/source/classes/sbxmod.cxx @@ -52,7 +52,13 @@ #include <basic/basrdll.hxx> #include <vos/mutex.hxx> +#include <basic/sbobjmod.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/script/ModuleType.hpp> +#include <com/sun/star/script/XVBACompat.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +using namespace com::sun::star; // for the bsearch #ifdef WNT @@ -72,6 +78,13 @@ #include <vcl/svapp.hxx> using namespace ::com::sun::star; +#include <com/sun/star/script/XLibraryContainer.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/awt/XDialogProvider.hpp> +#include <com/sun/star/awt/XTopWindow.hpp> +#include <com/sun/star/awt/XControl.hpp> +#include <cppuhelper/implbase1.hxx> +#include <comphelper/anytostring.hxx> TYPEINIT1(SbModule,SbxObject) TYPEINIT1(SbMethod,SbxMethod) @@ -79,6 +92,8 @@ TYPEINIT1(SbProperty,SbxProperty) TYPEINIT1(SbProcedureProperty,SbxProperty) TYPEINIT1(SbJScriptModule,SbModule) TYPEINIT1(SbJScriptMethod,SbMethod) +TYPEINIT1(SbObjModule,SbModule) +TYPEINIT1(SbUserFormModule,SbObjModule) SV_DECL_VARARR(SbiBreakpoints,USHORT,4,4) SV_IMPL_VARARR(SbiBreakpoints,USHORT) @@ -86,6 +101,26 @@ SV_IMPL_VARARR(SbiBreakpoints,USHORT) SV_IMPL_VARARR(HighlightPortions, HighlightPortion) +bool getDefaultVBAMode( StarBASIC* pb ) +{ + bool bResult = false; + if ( pb && pb->IsDocBasic() ) + { + uno::Any aDoc; + if ( pb->GetUNOConstant( "ThisComponent", aDoc ) ) + { + uno::Reference< beans::XPropertySet > xProp( aDoc, uno::UNO_QUERY ); + if ( xProp.is() ) + { + uno::Reference< script::XVBACompat > xVBAMode( xProp->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BasicLibraries") ) ), uno::UNO_QUERY ); + if ( xVBAMode.is() ) + bResult = ( xVBAMode->getVBACompatModeOn() == sal_True ); + } + } + } + return bResult; +} + class AsyncQuitHandler { AsyncQuitHandler() {} @@ -148,12 +183,13 @@ bool UnlockControllerHack( StarBASIC* pBasic ) // Ein BASIC-Modul hat EXTSEARCH gesetzt, damit die im Modul enthaltenen // Elemente von anderen Modulen aus gefunden werden koennen. -SbModule::SbModule( const String& rName ) +SbModule::SbModule( const String& rName, BOOL bVBACompat ) : SbxObject( String( RTL_CONSTASCII_USTRINGPARAM("StarBASICModule") ) ), - pImage( NULL ), pBreaks( NULL ), pClassData( NULL ) + pImage( NULL ), pBreaks( NULL ), pClassData( NULL ), mbVBACompat( bVBACompat ), pDocObject( NULL ), bIsProxyModule( false ) { SetName( rName ); SetFlag( SBX_EXTSEARCH | SBX_GBLSEARCH ); + SetModuleType( script::ModuleType::NORMAL ); } SbModule::~SbModule() @@ -328,7 +364,10 @@ void SbModule::Clear() SbxVariable* SbModule::Find( const XubString& rName, SbxClassType t ) { + // make sure a search in an uninstatiated class module will fail SbxVariable* pRes = SbxObject::Find( rName, t ); + if ( bIsProxyModule ) + return NULL; if( !pRes && pImage ) { SbiInstance* pInst = pINST; @@ -427,6 +466,8 @@ void SbModule::SetSource( const String& r ) void SbModule::SetSource32( const ::rtl::OUString& r ) { + // Default basic mode to library container mode, but.. allow Option VBASupport 0/1 override + SetVBACompat( getDefaultVBAMode( static_cast< StarBASIC*>( GetParent() ) ) ); aOUSource = r; StartDefinitions(); SbiTokenizer aTok( r ); @@ -457,9 +498,14 @@ void SbModule::SetSource32( const ::rtl::OUString& r ) if( eCurTok == OPTION ) { eCurTok = aTok.Next(); - if( eCurTok == COMPATIBLE - || ( ( eCurTok == VBASUPPORT ) && ( aTok.Next() == NUMBER ) && ( aTok.GetDbl()== 1 ) ) ) + if( eCurTok == COMPATIBLE ) aTok.SetCompatible( true ); + else if ( ( eCurTok == VBASUPPORT ) && ( aTok.Next() == NUMBER ) ) + { + BOOL bIsVBA = ( aTok.GetDbl()== 1 ); + SetVBACompat( bIsVBA ); + aTok.SetCompatible( bIsVBA ); + } } } eLastTok = eCurTok; @@ -600,7 +646,15 @@ void ClearUnoObjectsInRTL_Impl( StarBASIC* pBasic ) if( ((StarBASIC*)p) != pBasic ) ClearUnoObjectsInRTL_Impl_Rek( (StarBASIC*)p ); } - +BOOL SbModule::IsVBACompat() +{ + return mbVBACompat; +} + +void SbModule::SetVBACompat( BOOL bCompat ) +{ + mbVBACompat = bCompat; +} // Ausfuehren eines BASIC-Unterprogramms USHORT SbModule::Run( SbMethod* pMeth ) { @@ -695,10 +749,9 @@ USHORT SbModule::Run( SbMethod* pMeth ) if( pRt->pNext ) pRt->pNext->block(); pINST->pRun = pRt; - if ( SbiRuntime ::isVBAEnabled() ) + if ( mbVBACompat ) { pINST->EnableCompatibility( TRUE ); - pRt->SetVBAEnabled( true ); } while( pRt->Step() ) {} if( pRt->pNext ) @@ -1483,6 +1536,389 @@ SbJScriptMethod::~SbJScriptMethod() ///////////////////////////////////////////////////////////////////////// +SbObjModule::SbObjModule( const String& rName, const com::sun::star::script::ModuleInfo& mInfo, bool bIsVbaCompatible ) + : SbModule( rName, bIsVbaCompatible ) +{ + SetModuleType( mInfo.ModuleType ); + if ( mInfo.ModuleType == script::ModuleType::FORM ) + { + SetClassName( rtl::OUString::createFromAscii( "Form" ) ); + } + else if ( mInfo.ModuleObject.is() ) + SetUnoObject( uno::makeAny( mInfo.ModuleObject ) ); +} +void +SbObjModule::SetUnoObject( const uno::Any& aObj ) throw ( uno::RuntimeException ) +{ + SbUnoObject* pUnoObj = PTR_CAST(SbUnoObject,(SbxVariable*)pDocObject); + if ( pUnoObj && pUnoObj->getUnoAny() == aObj ) // object is equal, nothing to do + return; + pDocObject = new SbUnoObject( GetName(), uno::makeAny( aObj ) ); + + com::sun::star::uno::Reference< com::sun::star::lang::XServiceInfo > xServiceInfo( aObj, com::sun::star::uno::UNO_QUERY_THROW ); + if( xServiceInfo->supportsService( rtl::OUString::createFromAscii( "ooo.vba.excel.Worksheet" ) ) ) + { + SetClassName( rtl::OUString::createFromAscii( "Worksheet" ) ); + } + else if( xServiceInfo->supportsService( rtl::OUString::createFromAscii( "ooo.vba.excel.Workbook" ) ) ) + { + SetClassName( rtl::OUString::createFromAscii( "Workbook" ) ); + } +} + +SbxVariable* +SbObjModule::GetObject() +{ + return pDocObject; +} +SbxVariable* +SbObjModule::Find( const XubString& rName, SbxClassType t ) +{ + //OSL_TRACE("SbObjectModule find for %s", rtl::OUStringToOString( rName, RTL_TEXTENCODING_UTF8 ).getStr() ); + SbxVariable* pVar = NULL; + if ( pDocObject) + pVar = pDocObject->Find( rName, t ); + if ( !pVar ) + pVar = SbModule::Find( rName, t ); + return pVar; +} + +typedef ::cppu::WeakImplHelper1< awt::XTopWindowListener > EventListener_BASE; + +class FormObjEventListenerImpl : public EventListener_BASE +{ + SbUserFormModule* mpUserForm; + uno::Reference< lang::XComponent > mxComponent; + bool mbDisposed; + sal_Bool mbOpened; + sal_Bool mbActivated; + sal_Bool mbShowing; + FormObjEventListenerImpl(); // not defined + FormObjEventListenerImpl(const FormObjEventListenerImpl&); // not defined +public: + FormObjEventListenerImpl( SbUserFormModule* pUserForm, const uno::Reference< lang::XComponent >& xComponent ) : mpUserForm( pUserForm ), mxComponent( xComponent) , mbDisposed( false ), mbOpened( sal_False ), mbActivated( sal_False ), mbShowing( sal_False ) + { + if ( mxComponent.is() ) + { + uno::Reference< awt::XTopWindow > xList( mxComponent, uno::UNO_QUERY_THROW );; + OSL_TRACE("*********** Registering the listener"); + xList->addTopWindowListener( this ); + } + } + + ~FormObjEventListenerImpl() + { + removeListener(); + } + sal_Bool isShowing() { return mbShowing; } + void removeListener() + { + try + { + if ( mxComponent.is() && !mbDisposed ) + { + uno::Reference< awt::XTopWindow > xList( mxComponent, uno::UNO_QUERY_THROW );; + OSL_TRACE("*********** Removing the listener"); + xList->removeTopWindowListener( this ); + mxComponent = NULL; + } + } + catch( uno::Exception& ) {} + } + virtual void SAL_CALL windowOpened( const lang::EventObject& /*e*/ ) throw (uno::RuntimeException) + { + if ( mpUserForm ) + { + mbOpened = sal_True; + mbShowing = sal_True; + if ( mbActivated ) + { + mbOpened = mbActivated = sal_False; + mpUserForm->triggerActivateEvent(); + } + } + } + + //liuchen 2009-7-21, support Excel VBA Form_QueryClose event + virtual void SAL_CALL windowClosing( const lang::EventObject& /*e*/ ) throw (uno::RuntimeException) + { +#if IN_THE_FUTURE + uno::Reference< awt::XDialog > xDialog( e.Source, uno::UNO_QUERY ); + if ( xDialog.is() ) + { + uno::Reference< awt::XControl > xControl( xDialog, uno::UNO_QUERY ); + if ( xControl->getPeer().is() ) + { + uno::Reference< document::XVbaMethodParameter > xVbaMethodParameter( xControl->getPeer(), uno::UNO_QUERY ); + if ( xVbaMethodParameter.is() ) + { + sal_Int8 nCancel = 0; + sal_Int8 nCloseMode = 0; + + Sequence< Any > aParams; + aParams.realloc(2); + aParams[0] <<= nCancel; + aParams[1] <<= nCloseMode; + + mpUserForm->triggerMethod( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Userform_QueryClose") ), + aParams); + xVbaMethodParameter->setVbaMethodParameter( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Cancel")), aParams[0]); + return; + + } + } + } + + mpUserForm->triggerMethod( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Userform_QueryClose") ) ); +#endif + } + //liuchen 2009-7-21 + + virtual void SAL_CALL windowClosed( const lang::EventObject& /*e*/ ) throw (uno::RuntimeException) { mbOpened = sal_False; mbShowing = sal_False; } + virtual void SAL_CALL windowMinimized( const lang::EventObject& /*e*/ ) throw (uno::RuntimeException) {} + virtual void SAL_CALL windowNormalized( const lang::EventObject& /*e*/ ) throw (uno::RuntimeException){} + virtual void SAL_CALL windowActivated( const lang::EventObject& /*e*/ ) throw (uno::RuntimeException) + { + if ( mpUserForm ) + { + mbActivated = sal_True; + if ( mbOpened ) + { + mbOpened = mbActivated = sal_False; + mpUserForm->triggerActivateEvent(); + } + } + } + + virtual void SAL_CALL windowDeactivated( const lang::EventObject& /*e*/ ) throw (uno::RuntimeException) + { + if ( mpUserForm ) + mpUserForm->triggerDeActivateEvent(); + } + + + virtual void SAL_CALL disposing( const lang::EventObject& Source ) throw (uno::RuntimeException) + { + OSL_TRACE("** Userform/Dialog disposing"); + mbDisposed = true; + uno::Any aSource; + aSource <<= Source; + mxComponent = NULL; + if ( mpUserForm ) + mpUserForm->ResetApiObj(); + } +}; + +SbUserFormModule::SbUserFormModule( const String& rName, const com::sun::star::script::ModuleInfo& mInfo, bool bIsCompat ) + :SbObjModule( rName, mInfo, bIsCompat ), mbInit( false ) +{ + m_xModel.set( mInfo.ModuleObject, uno::UNO_QUERY_THROW ); +} + +void SbUserFormModule::ResetApiObj() +{ + if ( m_xDialog.is() ) // probably someone close the dialog window + { + triggerTerminateEvent(); + } + pDocObject = NULL; + m_xDialog = NULL; +} + +void SbUserFormModule::triggerMethod( const String& aMethodToRun ) +{ + Sequence< Any > aArguments; + triggerMethod( aMethodToRun, aArguments ); +} +void SbUserFormModule::triggerMethod( const String& aMethodToRun, Sequence< Any >& /*aArguments*/) +{ + OSL_TRACE("*** trigger %s ***", rtl::OUStringToOString( aMethodToRun, RTL_TEXTENCODING_UTF8 ).getStr() ); + // Search method + SbxVariable* pMeth = SbObjModule::Find( aMethodToRun, SbxCLASS_METHOD ); + if( pMeth ) + { +#if IN_THE_FUTURE + //liuchen 2009-7-21, support Excel VBA UserForm_QueryClose event with parameters + if ( aArguments.getLength() > 0 ) // Setup parameters + { + SbxArrayRef xArray = new SbxArray; + xArray->Put( pMeth, 0 ); // Method as parameter 0 + + for ( sal_Int32 i = 0; i < aArguments.getLength(); ++i ) + { + SbxVariableRef xSbxVar = new SbxVariable( SbxVARIANT ); + unoToSbxValue( static_cast< SbxVariable* >( xSbxVar ), aArguments[i] ); + xArray->Put( xSbxVar, static_cast< USHORT >( i ) + 1 ); + + // Enable passing by ref + if ( xSbxVar->GetType() != SbxVARIANT ) + xSbxVar->SetFlag( SBX_FIXED ); + } + pMeth->SetParameters( xArray ); + + SbxValues aVals; + pMeth->Get( aVals ); + + for ( sal_Int32 i = 0; i < aArguments.getLength(); ++i ) + { + aArguments[i] = sbxToUnoValue( xArray->Get( static_cast< USHORT >(i) + 1) ); + } + pMeth->SetParameters( NULL ); + } + else +//liuchen 2009-7-21 +#endif + { + SbxValues aVals; + pMeth->Get( aVals ); + } + } +} + +void SbUserFormModule::triggerActivateEvent( void ) +{ + OSL_TRACE("**** entering SbUserFormModule::triggerActivate"); + triggerMethod( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("UserForm_activate") ) ); + OSL_TRACE("**** leaving SbUserFormModule::triggerActivate"); +} + +void SbUserFormModule::triggerDeActivateEvent( void ) +{ + OSL_TRACE("**** SbUserFormModule::triggerDeActivate"); + triggerMethod( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Userform_DeActivate") ) ); +} + +void SbUserFormModule::triggerInitializeEvent( void ) + +{ + if ( mbInit ) + return; + OSL_TRACE("**** SbUserFormModule::triggerInitializeEvent"); + static String aInitMethodName( RTL_CONSTASCII_USTRINGPARAM("Userform_Initialize") ); + triggerMethod( aInitMethodName ); + mbInit = true; +} + +void SbUserFormModule::triggerTerminateEvent( void ) +{ + OSL_TRACE("**** SbUserFormModule::triggerTerminateEvent"); + static String aTermMethodName( RTL_CONSTASCII_USTRINGPARAM("Userform_Terminate") ); + triggerMethod( aTermMethodName ); + mbInit=false; +} + +void SbUserFormModule::load() +{ + OSL_TRACE("** load() "); + // forces a load + if ( !pDocObject ) + InitObject(); +} + +//liuchen 2009-7-21 change to accmordate VBA's beheavior +void SbUserFormModule::Unload() +{ + OSL_TRACE("** Unload() "); + + sal_Int8 nCancel = 0; + sal_Int8 nCloseMode = 1; + + Sequence< Any > aParams; + aParams.realloc(2); + aParams[0] <<= nCancel; + aParams[1] <<= nCloseMode; + + triggerMethod( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Userform_QueryClose") ), aParams); + + aParams[0] >>= nCancel; + if (nCancel == 1) + { + return; + } + + if ( m_xDialog.is() ) + { + triggerTerminateEvent(); + } + // Search method + SbxVariable* pMeth = SbObjModule::Find( String( RTL_CONSTASCII_USTRINGPARAM( "UnloadObject" ) ), SbxCLASS_METHOD ); + if( pMeth ) + { + OSL_TRACE("Attempting too run the UnloadObjectMethod"); + m_xDialog = NULL; //release ref to the uno object + SbxValues aVals; + FormObjEventListenerImpl* pFormListener = dynamic_cast< FormObjEventListenerImpl* >( m_DialogListener.get() ); + bool bWaitForDispose = true; // assume dialog is showing + if ( pFormListener ) + { + bWaitForDispose = pFormListener->isShowing(); + OSL_TRACE("Showing %d", bWaitForDispose ); + } + pMeth->Get( aVals); + if ( !bWaitForDispose ) + { + // we've either already got a dispose or we'er never going to get one + ResetApiObj(); + } // else wait for dispose + OSL_TRACE("UnloadObject completed ( we hope )"); + } +} +//liuchen + +void SbUserFormModule::InitObject() +{ + try + { + + String aHook( RTL_CONSTASCII_USTRINGPARAM( "VBAGlobals" ) ); + SbUnoObject* pGlobs = (SbUnoObject*)GetParent()->Find( aHook, SbxCLASS_DONTCARE ); + if ( m_xModel.is() && pGlobs ) + { + + uno::Reference< lang::XMultiServiceFactory > xVBAFactory( pGlobs->getUnoAny(), uno::UNO_QUERY_THROW ); + uno::Reference< lang::XMultiServiceFactory > xFactory = comphelper::getProcessServiceFactory(); + uno::Sequence< uno::Any > aArgs(1); + aArgs[ 0 ] <<= m_xModel; + rtl::OUString sDialogUrl( RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.script:" ) ); + rtl::OUString sProjectName( RTL_CONSTASCII_USTRINGPARAM("Standard") ); + if ( this->GetParent()->GetName().Len() ) + sProjectName = this->GetParent()->GetName(); + sDialogUrl = sDialogUrl.concat( sProjectName ).concat( rtl::OUString( '.') ).concat( GetName() ).concat( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("?location=document") ) ); + + uno::Reference< awt::XDialogProvider > xProvider( xFactory->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.DialogProvider")), aArgs ), uno::UNO_QUERY_THROW ); + m_xDialog = xProvider->createDialog( sDialogUrl ); + + // create vba api object + aArgs.realloc( 4 ); + aArgs[ 0 ] = uno::Any(); + aArgs[ 1 ] <<= m_xDialog; + aArgs[ 2 ] <<= m_xModel; + aArgs[ 3 ] <<= rtl::OUString( GetParent()->GetName() ); + pDocObject = new SbUnoObject( GetName(), uno::makeAny( xVBAFactory->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.msforms.UserForm")), aArgs ) ) ); + uno::Reference< lang::XComponent > xComponent( aArgs[ 1 ], uno::UNO_QUERY_THROW ); + // remove old listener if it exists + FormObjEventListenerImpl* pFormListener = dynamic_cast< FormObjEventListenerImpl* >( m_DialogListener.get() ); + if ( pFormListener ) + pFormListener->removeListener(); + m_DialogListener = new FormObjEventListenerImpl( this, xComponent ); + + triggerInitializeEvent(); + } + } + catch( uno::Exception& ) + { + } + +} + +SbxVariable* +SbUserFormModule::Find( const XubString& rName, SbxClassType t ) +{ + if ( !pDocObject && !GetSbData()->bRunInit && pINST ) + InitObject(); + return SbObjModule::Find( rName, t ); +} +///////////////////////////////////////////////////////////////////////// SbProperty::SbProperty( const String& r, SbxDataType t, SbModule* p ) : SbxProperty( r, t ), pMod( p ) diff --git a/basic/source/comp/codegen.cxx b/basic/source/comp/codegen.cxx index f6cb11bce3..c7e8f1101c 100644 --- a/basic/source/comp/codegen.cxx +++ b/basic/source/comp/codegen.cxx @@ -32,6 +32,7 @@ #include "sbcomp.hxx" #include "image.hxx" #include <limits> +#include <com/sun/star/script/ModuleType.hpp> // nInc ist die Inkrementgroesse der Puffer @@ -127,12 +128,12 @@ void SbiCodeGen::Save() // OPTION EXPLICIT-Flag uebernehmen if( pParser->bExplicit ) p->SetFlag( SBIMG_EXPLICIT ); - if( pParser->IsVBASupportOn() ) - p->SetFlag( SBIMG_VBASUPPORT ); int nIfaceCount = 0; - if( pParser->bClassModule ) + if( rMod.mnType == com::sun::star::script::ModuleType::CLASS ) { + OSL_TRACE("COdeGen::save() classmodule processing"); + rMod.bIsProxyModule = true; p->SetFlag( SBIMG_CLASSMODULE ); pCLASSFAC->AddClassModule( &rMod ); @@ -155,6 +156,10 @@ void SbiCodeGen::Save() else { pCLASSFAC->RemoveClassModule( &rMod ); + // Only a ClassModule can revert to Normal + if ( rMod.mnType == com::sun::star::script::ModuleType::CLASS ) + rMod.mnType = com::sun::star::script::ModuleType::NORMAL; + rMod.bIsProxyModule = false; } if( pParser->bText ) p->SetFlag( SBIMG_COMPARETEXT ); diff --git a/basic/source/comp/parser.cxx b/basic/source/comp/parser.cxx index 69643715a9..eecc2291e3 100644 --- a/basic/source/comp/parser.cxx +++ b/basic/source/comp/parser.cxx @@ -29,6 +29,7 @@ #include "precompiled_basic.hxx" #include <basic/sbx.hxx> #include "sbcomp.hxx" +#include <com/sun/star/script/ModuleType.hpp> struct SbiParseStack { // "Stack" fuer Statement-Blocks SbiParseStack* pNext; // Chain @@ -140,7 +141,8 @@ SbiParser::SbiParser( StarBASIC* pb, SbModule* pm ) bNewGblDefs = bSingleLineIf = bExplicit = FALSE; - bClassModule = FALSE; + bClassModule = ( pm->GetModuleType() == com::sun::star::script::ModuleType::CLASS ); + OSL_TRACE("Parser - %s, bClassModule %d", rtl::OUStringToOString( pm->GetName(), RTL_TEXTENCODING_UTF8 ).getStr(), bClassModule ); pPool = &aPublics; for( short i = 0; i < 26; i++ ) eDefTypes[ i ] = SbxVARIANT; // Kein expliziter Defaulttyp @@ -153,6 +155,10 @@ SbiParser::SbiParser( StarBASIC* pb, SbModule* pm ) rTypeArray = new SbxArray; // Array fuer Benutzerdefinierte Typen rEnumArray = new SbxArray; // Array for Enum types + bVBASupportOn = pm->IsVBACompat(); + if ( bVBASupportOn ) + EnableCompatibility(); + } @@ -751,6 +757,7 @@ void SbiParser::Option() case CLASSMODULE: bClassModule = TRUE; + aGen.GetModule().SetModuleType( com::sun::star::script::ModuleType::CLASS ); break; case VBASUPPORT: if( Next() == NUMBER ) @@ -760,6 +767,10 @@ void SbiParser::Option() bVBASupportOn = ( nVal == 1 ); if ( bVBASupportOn ) EnableCompatibility(); + // if the module setting is different + // reset it to what the Option tells us + if ( bVBASupportOn != aGen.GetModule().IsVBACompat() ) + aGen.GetModule().SetVBACompat( bVBASupportOn ); break; } } diff --git a/basic/source/inc/codegen.hxx b/basic/source/inc/codegen.hxx index f6896df51d..362e9e2947 100644 --- a/basic/source/inc/codegen.hxx +++ b/basic/source/inc/codegen.hxx @@ -53,6 +53,7 @@ public: void GenStmnt(); // evtl. Statement-Opcode erzeugen UINT32 GetPC(); UINT32 GetOffset() { return GetPC() + 1; } + SbModule& GetModule() { return rMod; } void Save(); // #29955 for-Schleifen-Ebene pflegen diff --git a/basic/source/inc/errobject.hxx b/basic/source/inc/errobject.hxx new file mode 100644 index 0000000000..39e6e319ca --- /dev/null +++ b/basic/source/inc/errobject.hxx @@ -0,0 +1,52 @@ +/************************************************************************* +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +************************************************************************/ + +#ifndef ERROBJECT_HXX +#define ERROBJECT_HXX +#include "sbunoobj.hxx" +#include <ooo/vba/XErrObject.hpp> + + +class SbxErrObject : public SbUnoObject +{ + class ErrObject* m_pErrObject; + com::sun::star::uno::Reference< ooo::vba::XErrObject > m_xErr; + + SbxErrObject( const String& aName_, const com::sun::star::uno::Any& aUnoObj_ ); + ~SbxErrObject(); + + class ErrObject* getImplErrObject( void ) + { return m_pErrObject; } + +public: + static SbxVariableRef getErrObject(); + static com::sun::star::uno::Reference< ooo::vba::XErrObject > getUnoErrObject(); + + void setNumberAndDescription( ::sal_Int32 _number, const ::rtl::OUString& _description ) + throw (com::sun::star::uno::RuntimeException); +}; +#endif diff --git a/basic/source/inc/image.hxx b/basic/source/inc/image.hxx index ea79c0c918..35715b4d38 100644 --- a/basic/source/inc/image.hxx +++ b/basic/source/inc/image.hxx @@ -106,6 +106,5 @@ public: #define SBIMG_COMPARETEXT 0x0002 // OPTION COMPARE TEXT ist aktiv #define SBIMG_INITCODE 0x0004 // Init-Code vorhanden #define SBIMG_CLASSMODULE 0x0008 // OPTION ClassModule is active -#define SBIMG_VBASUPPORT 0x0020 // OPTION VBASupport is 1 #endif diff --git a/basic/source/inc/namecont.hxx b/basic/source/inc/namecont.hxx index cdc6cf4968..7bbe89671e 100644 --- a/basic/source/inc/namecont.hxx +++ b/basic/source/inc/namecont.hxx @@ -58,19 +58,22 @@ #include <cppuhelper/implbase2.hxx> #include <cppuhelper/compbase6.hxx> +#include <cppuhelper/compbase7.hxx> #include <cppuhelper/interfacecontainer.hxx> +#include <com/sun/star/script/XVBACompat.hpp> class BasicManager; namespace basic { -typedef ::cppu::WeakComponentImplHelper6< +typedef ::cppu::WeakComponentImplHelper7< ::com::sun::star::lang::XInitialization, ::com::sun::star::script::XStorageBasedLibraryContainer, ::com::sun::star::script::XLibraryContainerPassword, ::com::sun::star::script::XLibraryContainerExport, ::com::sun::star::container::XContainer, + ::com::sun::star::script::XVBACompat, ::com::sun::star::lang::XServiceInfo > LibraryContainerHelper; typedef ::cppu::WeakImplHelper2< ::com::sun::star::container::XNameContainer, @@ -216,6 +219,7 @@ public: class SfxLibraryContainer :public LibraryContainerHelper ,public ::utl::OEventListenerAdapter { + sal_Bool mbVBACompat; protected: ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMSF; ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess > mxSFI; @@ -493,6 +497,9 @@ public: throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException) = 0; + // Methods XVBACompat + virtual ::sal_Bool SAL_CALL getVBACompatModeOn() throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL setVBACompatModeOn( ::sal_Bool _vbacompatmodeon ) throw (::com::sun::star::uno::RuntimeException); }; class LibraryContainerMethodGuard diff --git a/basic/source/inc/runtime.hxx b/basic/source/inc/runtime.hxx index 71997dae2f..64ecac24a5 100644 --- a/basic/source/inc/runtime.hxx +++ b/basic/source/inc/runtime.hxx @@ -219,6 +219,8 @@ public: void Error( SbError ); // trappable Error void Error( SbError, const String& rMsg ); // trappable Error mit Message + void ErrorVB( sal_Int32 nVBNumber, const String& rMsg ); + void setErrorVB( sal_Int32 nVBNumber, const String& rMsg ); void FatalError( SbError ); // non-trappable Error void FatalError( SbError, const String& ); // non-trappable Error void Abort(); // Abbruch mit aktuellem Fehlercode @@ -433,7 +435,7 @@ class SbiRuntime void StepFIND_CM( UINT32, UINT32 ); void StepFIND_STATIC( UINT32, UINT32 ); public: - void SetVBAEnabled( bool bEnabled ) { bVBAEnabled = bEnabled; }; + void SetVBAEnabled( bool bEnabled ); USHORT GetImageFlag( USHORT n ) const; USHORT GetBase(); xub_StrLen nLine,nCol1,nCol2; // aktuelle Zeile, Spaltenbereich @@ -441,10 +443,11 @@ public: SbiRuntime( SbModule*, SbMethod*, UINT32 ); ~SbiRuntime(); - void Error( SbError ); // Fehler setzen, falls != 0 + void Error( SbError, bool bVBATranslationAlreadyDone = false ); // Fehler setzen, falls != 0 void Error( SbError, const String& ); // Fehler setzen, falls != 0 void FatalError( SbError ); // Fehlerbehandlung=Standard, Fehler setzen void FatalError( SbError, const String& ); // Fehlerbehandlung=Standard, Fehler setzen + static sal_Int32 translateErrorToVba( SbError nError, String& rMsg ); void DumpPCode(); BOOL Step(); // Einzelschritt (ein Opcode) void Stop() { bRun = FALSE; } diff --git a/basic/source/inc/scriptcont.hxx b/basic/source/inc/scriptcont.hxx index a3c07dd5b5..b1abdcd9ee 100644 --- a/basic/source/inc/scriptcont.hxx +++ b/basic/source/inc/scriptcont.hxx @@ -30,6 +30,8 @@ #include "namecont.hxx" #include <basic/basmgr.hxx> +#include <com/sun/star/script/XVBAModuleInfo.hpp> +#include <comphelper/uno3.hxx> class BasicManager; @@ -134,13 +136,19 @@ public: }; //============================================================================ +typedef std::hash_map< ::rtl::OUString, ::com::sun::star::script::ModuleInfo, ::rtl::OUStringHash, ::std::equal_to< ::rtl::OUString > > ModuleInfoMap; + +typedef ::cppu::ImplHelper1 < ::com::sun::star::script::XVBAModuleInfo + > SfxScriptLibrary_BASE; class SfxScriptLibrary : public SfxLibrary + , public SfxScriptLibrary_BASE { friend class SfxScriptLibraryContainer; sal_Bool mbLoadedSource; sal_Bool mbLoadedBinary; + ModuleInfoMap mModuleInfos; // Provide modify state including resources virtual sal_Bool isModified( void ); @@ -167,6 +175,15 @@ public: const ::rtl::OUString& aLibInfoFileURL, const ::rtl::OUString& aStorageURL, sal_Bool ReadOnly ); + DECLARE_XINTERFACE() + DECLARE_XTYPEPROVIDER() + + // XVBAModuleInfo + virtual ::com::sun::star::script::ModuleInfo SAL_CALL getModuleInfo( const ::rtl::OUString& ModuleName ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL hasModuleInfo( const ::rtl::OUString& ModuleName ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL insertModuleInfo( const ::rtl::OUString& ModuleName, const ::com::sun::star::script::ModuleInfo& ModuleInfo ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeModuleInfo( const ::rtl::OUString& ModuleName ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); + static bool containsValidModule( const ::com::sun::star::uno::Any& _rElement ); protected: diff --git a/basic/source/runtime/makefile.mk b/basic/source/runtime/makefile.mk index c0b4bd3bdc..9bd197975e 100644 --- a/basic/source/runtime/makefile.mk +++ b/basic/source/runtime/makefile.mk @@ -82,8 +82,5 @@ EXCEPTIONSFILES=$(SLO)$/step0.obj \ $(SLO)$/%.obj: %.s #kendy: Cut'n'paste from bridges/source/cpp_uno/mingw_intel/makefile.mk -#cmc: Ideally --noexecstack would be in operations, but with #i51385# pyuno -#remote bridgeing breaks -# $(CC) -Wa,--noexecstack -c -o $(SLO)$/$(@:b).o $< $(CC) -c -o $(SLO)$/$(@:b).obj $< touch $@ diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index c32abbd1c3..02959f73c3 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -61,6 +61,7 @@ #else #include <osl/file.hxx> #endif +#include "errobject.hxx" #ifdef _USE_UNO #include <comphelper/processfactory.hxx> @@ -120,6 +121,10 @@ using namespace com::sun::star::io; #include <io.h> #endif +using namespace rtl; + +#include <basic/sbobjmod.hxx> + static void FilterWhiteSpace( String& rStr ) { rStr.EraseAllChars( ' ' ); @@ -256,6 +261,7 @@ RTLFUNC(Error) { String aErrorMsg; SbError nErr = 0L; + INT32 nCode = 0; if( rPar.Count() == 1 ) { nErr = StarBASIC::GetErrBasic(); @@ -263,14 +269,34 @@ RTLFUNC(Error) } else { - INT32 nCode = rPar.Get( 1 )->GetLong(); + nCode = rPar.Get( 1 )->GetLong(); if( nCode > 65535L ) StarBASIC::Error( SbERR_CONVERSION ); else nErr = StarBASIC::GetSfxFromVBError( (USHORT)nCode ); } - pBasic->MakeErrorText( nErr, aErrorMsg ); - rPar.Get( 0 )->PutString( pBasic->GetErrorText() ); + + bool bVBA = SbiRuntime::isVBAEnabled(); + String tmpErrMsg; + if( bVBA && aErrorMsg.Len() > 0 ) + { + tmpErrMsg = aErrorMsg; + } + else + { + pBasic->MakeErrorText( nErr, aErrorMsg ); + tmpErrMsg = pBasic->GetErrorText(); + } + // If this rtlfunc 'Error' passed a errcode the same as the active Err Objects's + // current err then return the description for the error message if it is set + // ( complicated isn't it ? ) + if ( bVBA && rPar.Count() > 1 ) + { + com::sun::star::uno::Reference< ooo::vba::XErrObject > xErrObj( SbxErrObject::getUnoErrObject() ); + if ( xErrObj.is() && xErrObj->getNumber() == nCode && xErrObj->getDescription().getLength() ) + tmpErrMsg = xErrObj->getDescription(); + } + rPar.Get( 0 )->PutString( tmpErrMsg ); } } @@ -4106,12 +4132,20 @@ RTLFUNC(Load) // Diesen Call einfach an das Object weiterreichen SbxBase* pObj = (SbxObject*)rPar.Get(1)->GetObject(); - if( pObj && pObj->IsA( TYPE( SbxObject ) ) ) + if ( pObj ) { - SbxVariable* pVar = ((SbxObject*)pObj)-> - Find( String( RTL_CONSTASCII_USTRINGPARAM("Load") ), SbxCLASS_METHOD ); - if( pVar ) - pVar->GetInteger(); + if( pObj->IsA( TYPE( SbUserFormModule ) ) ) + { + SbUserFormModule* pFormModule = ( SbUserFormModule* )pObj; + pFormModule->load(); + } + else if( pObj->IsA( TYPE( SbxObject ) ) ) + { + SbxVariable* pVar = ((SbxObject*)pObj)-> + Find( String( RTL_CONSTASCII_USTRINGPARAM("Load") ), SbxCLASS_METHOD ); + if( pVar ) + pVar->GetInteger(); + } } } @@ -4129,12 +4163,20 @@ RTLFUNC(Unload) // Diesen Call einfach an das Object weitereichen SbxBase* pObj = (SbxObject*)rPar.Get(1)->GetObject(); - if( pObj && pObj->IsA( TYPE( SbxObject ) ) ) + if ( pObj ) { - SbxVariable* pVar = ((SbxObject*)pObj)-> - Find( String( RTL_CONSTASCII_USTRINGPARAM("Unload") ), SbxCLASS_METHOD ); - if( pVar ) - pVar->GetInteger(); + if( pObj->IsA( TYPE( SbUserFormModule ) ) ) + { + SbUserFormModule* pFormModule = ( SbUserFormModule* )pObj; + pFormModule->Unload(); + } + else if( pObj->IsA( TYPE( SbxObject ) ) ) + { + SbxVariable* pVar = ((SbxObject*)pObj)-> + Find( String( RTL_CONSTASCII_USTRINGPARAM("Unload") ), SbxCLASS_METHOD ); + if( pVar ) + pVar->GetInteger(); + } } } diff --git a/basic/source/runtime/methods1.cxx b/basic/source/runtime/methods1.cxx index bf55a97d47..69c6713122 100644 --- a/basic/source/runtime/methods1.cxx +++ b/basic/source/runtime/methods1.cxx @@ -61,6 +61,7 @@ #endif #include <vcl/jobset.hxx> +#include <basic/sbobjmod.hxx> #include "sbintern.hxx" #include "runtime.hxx" @@ -2594,14 +2595,16 @@ RTLFUNC(Me) SbModule* pActiveModule = pINST->GetActiveModule(); SbClassModuleObject* pClassModuleObject = PTR_CAST(SbClassModuleObject,pActiveModule); + SbxVariableRef refVar = rPar.Get(0); if( pClassModuleObject == NULL ) { - StarBASIC::Error( SbERR_INVALID_USAGE_OBJECT ); + SbObjModule* pMod = PTR_CAST(SbObjModule,pActiveModule); + if ( pMod ) + refVar->PutObject( pMod ); + else + StarBASIC::Error( SbERR_INVALID_USAGE_OBJECT ); } else - { - SbxVariableRef refVar = rPar.Get(0); refVar->PutObject( pClassModuleObject ); - } } diff --git a/basic/source/runtime/props.cxx b/basic/source/runtime/props.cxx index fad64d68c0..5a215bb40d 100644 --- a/basic/source/runtime/props.cxx +++ b/basic/source/runtime/props.cxx @@ -31,6 +31,7 @@ #include "runtime.hxx" #include "stdobj.hxx" #include "rtlproto.hxx" +#include "errobject.hxx" // Properties und Methoden legen beim Get (bWrite = FALSE) den Returnwert @@ -50,14 +51,21 @@ RTLFUNC(Err) (void)pBasic; (void)bWrite; - if( bWrite ) + if( SbiRuntime::isVBAEnabled() ) { - INT32 nVal = rPar.Get( 0 )->GetLong(); - if( nVal <= 65535L ) - StarBASIC::Error( StarBASIC::GetSfxFromVBError( (USHORT) nVal ) ); + rPar.Get( 0 )->PutObject( SbxErrObject::getErrObject() ); } else - rPar.Get( 0 )->PutLong( StarBASIC::GetVBErrorCode( StarBASIC::GetErrBasic() ) ); + { + if( bWrite ) + { + INT32 nVal = rPar.Get( 0 )->GetLong(); + if( nVal <= 65535L ) + StarBASIC::Error( StarBASIC::GetSfxFromVBError( (USHORT) nVal ) ); + } + else + rPar.Get( 0 )->PutLong( StarBASIC::GetVBErrorCode( StarBASIC::GetErrBasic() ) ); + } } RTLFUNC(False) diff --git a/basic/source/runtime/runtime.cxx b/basic/source/runtime/runtime.cxx index d0751547eb..b26b03b76a 100644..100755 --- a/basic/source/runtime/runtime.cxx +++ b/basic/source/runtime/runtime.cxx @@ -43,13 +43,16 @@ #include <comphelper/processfactory.hxx> #include <com/sun/star/container/XEnumerationAccess.hpp> #include "sbunoobj.hxx" +#include "errobject.hxx" + +using namespace ::com::sun::star; bool SbiRuntime::isVBAEnabled() { bool result = false; SbiInstance* pInst = pINST; if ( pInst && pINST->pRun ) - result = pInst->pRun->GetImageFlag( SBIMG_VBASUPPORT ); + result = pInst->pRun->bVBAEnabled; return result; } @@ -60,6 +63,24 @@ void StarBASIC::StaticEnableReschedule( BOOL bReschedule ) { bStaticGlobalEnableReschedule = bReschedule; } +void StarBASIC::SetVBAEnabled( BOOL bEnabled ) +{ + if ( bDocBasic ) + { + bVBAEnabled = bEnabled; + } +} + +BOOL StarBASIC::isVBAEnabled() +{ + if ( bDocBasic ) + { + if( SbiRuntime::isVBAEnabled() ) + return TRUE; + return bVBAEnabled; + } + return FALSE; +} struct SbiArgvStack { // Argv stack: @@ -422,6 +443,35 @@ void SbiInstance::Error( SbError n, const String& rMsg ) } } +void SbiInstance::ErrorVB( sal_Int32 nVBNumber, const String& rMsg ) +{ + if( !bWatchMode ) + { + SbError n = StarBASIC::GetSfxFromVBError( static_cast< USHORT >( nVBNumber ) ); + if ( !n ) + n = nVBNumber; // force orig number, probably should have a specific table of vb ( localized ) errors + + aErrorMsg = rMsg; + SbiRuntime::translateErrorToVba( n, aErrorMsg ); + + bool bVBATranslationAlreadyDone = true; + pRun->Error( SbERR_BASIC_COMPAT, bVBATranslationAlreadyDone ); + } +} + +void SbiInstance::setErrorVB( sal_Int32 nVBNumber, const String& rMsg ) +{ + SbError n = StarBASIC::GetSfxFromVBError( static_cast< USHORT >( nVBNumber ) ); + if( !n ) + n = nVBNumber; // force orig number, probably should have a specific table of vb ( localized ) errors + + aErrorMsg = rMsg; + SbiRuntime::translateErrorToVba( n, aErrorMsg ); + + nErr = n; +} + + void SbiInstance::FatalError( SbError n ) { pRun->FatalError( n ); @@ -520,6 +570,7 @@ SbiRuntime::SbiRuntime( SbModule* pm, SbMethod* pe, UINT32 nStart ) nForLvl = 0; nOps = 0; refExprStk = new SbxArray; + SetVBAEnabled( pMod->IsVBACompat() ); #if defined GCC SetParameters( pe ? pe->GetParameters() : (class SbxArray *)NULL ); #else @@ -527,7 +578,6 @@ SbiRuntime::SbiRuntime( SbModule* pm, SbMethod* pe, UINT32 nStart ) #endif pRefSaveList = NULL; pItemStoreList = NULL; - bVBAEnabled = isVBAEnabled(); } SbiRuntime::~SbiRuntime() @@ -546,6 +596,11 @@ SbiRuntime::~SbiRuntime() } } +void SbiRuntime::SetVBAEnabled(bool bEnabled ) +{ + bVBAEnabled = bEnabled; +} + // Aufbau der Parameterliste. Alle ByRef-Parameter werden direkt // uebernommen; von ByVal-Parametern werden Kopien angelegt. Falls // ein bestimmter Datentyp verlangt wird, wird konvertiert. @@ -791,10 +846,24 @@ BOOL SbiRuntime::Step() return bRun; } -void SbiRuntime::Error( SbError n ) +void SbiRuntime::Error( SbError n, bool bVBATranslationAlreadyDone ) { if( n ) + { nError = n; + if( isVBAEnabled() && !bVBATranslationAlreadyDone ) + { + String aMsg = pInst->GetErrorMsg(); + sal_Int32 nVBAErrorNumber = translateErrorToVba( nError, aMsg ); + SbxVariable* pSbxErrObjVar = SbxErrObject::getErrObject(); + SbxErrObject* pGlobErr = static_cast< SbxErrObject* >( pSbxErrObjVar ); + if( pGlobErr != NULL ) + pGlobErr->setNumberAndDescription( nVBAErrorNumber, aMsg ); + + pInst->aErrorMsg = aMsg; + nError = SbERR_BASIC_COMPAT; + } + } } void SbiRuntime::Error( SbError _errCode, const String& _details ) @@ -826,6 +895,32 @@ void SbiRuntime::FatalError( SbError _errCode, const String& _details ) Error( _errCode, _details ); } +sal_Int32 SbiRuntime::translateErrorToVba( SbError nError, String& rMsg ) +{ + // If a message is defined use that ( in preference to + // the defined one for the error ) NB #TODO + // if there is an error defined it more than likely + // is not the one you want ( some are the same though ) + // we really need a new vba compatible error list + if ( !rMsg.Len() ) + { + // TEST, has to be vb here always +#ifdef DBG_UTIL + SbError nTmp = StarBASIC::GetSfxFromVBError( nError ); + DBG_ASSERT( nTmp, "No VB error!" ); +#endif + + StarBASIC::MakeErrorText( nError, rMsg ); + rMsg = StarBASIC::GetErrorText(); + if ( !rMsg.Len() ) // no message for err no, need localized resource here + rMsg = String( RTL_CONSTASCII_USTRINGPARAM("Internal Object Error:") ); + } + // no num? most likely then it *is* really a vba err + USHORT nVBErrorCode = StarBASIC::GetVBErrorCode( nError ); + sal_Int32 nVBAErrorNumber = ( nVBErrorCode == 0 ) ? nError : nVBErrorCode; + return nVBAErrorNumber; +} + ////////////////////////////////////////////////////////////////////////// // // Parameter, Locals, Caller diff --git a/basic/source/runtime/stdobj.cxx b/basic/source/runtime/stdobj.cxx index 5d3573de09..c9baf952ed 100644 --- a/basic/source/runtime/stdobj.cxx +++ b/basic/source/runtime/stdobj.cxx @@ -230,7 +230,7 @@ static Methods aMethods[] = { { "EOF", SbxBOOL, 1 | _FUNCTION, RTLNAME(EOF),0 }, { "Channel", SbxINTEGER, 0,NULL,0 }, { "Erl", SbxLONG, _ROPROP, RTLNAME( Erl ),0 }, -{ "Err", SbxLONG, _RWPROP, RTLNAME( Err ),0 }, +{ "Err", SbxVARIANT, _RWPROP, RTLNAME( Err ),0 }, { "Error", SbxSTRING, 1 | _FUNCTION, RTLNAME( Error ),0 }, { "code", SbxLONG, 0,NULL,0 }, { "Exp", SbxDOUBLE, 1 | _FUNCTION, RTLNAME(Exp),0 }, diff --git a/basic/source/runtime/step0.cxx b/basic/source/runtime/step0.cxx index 83b610eef1..96a3e80a84 100644 --- a/basic/source/runtime/step0.cxx +++ b/basic/source/runtime/step0.cxx @@ -30,6 +30,7 @@ #include <vcl/msgbox.hxx> #include <tools/fsys.hxx> +#include "errobject.hxx" #include "runtime.hxx" #include "sbintern.hxx" #include "iosys.hxx" @@ -1116,6 +1117,7 @@ void SbiRuntime::StepSTDERROR() pInst->nErr = 0L; pInst->nErl = 0; nError = 0L; + SbxErrObject::getUnoErrObject()->Clear(); } void SbiRuntime::StepNOERROR() @@ -1124,6 +1126,7 @@ void SbiRuntime::StepNOERROR() pInst->nErr = 0L; pInst->nErl = 0; nError = 0L; + SbxErrObject::getUnoErrObject()->Clear(); bError = FALSE; } @@ -1132,6 +1135,9 @@ void SbiRuntime::StepNOERROR() void SbiRuntime::StepLEAVE() { bRun = FALSE; + // If VBA and we are leaving an ErrorHandler then clear the error ( it's been processed ) + if ( bInError && pError ) + SbxErrObject::getUnoErrObject()->Clear(); } void SbiRuntime::StepCHANNEL() // TOS = Kanalnummer @@ -1265,6 +1271,9 @@ void SbiRuntime::StepERROR() SbxVariableRef refCode = PopVar(); USHORT n = refCode->GetUShort(); SbError error = StarBASIC::GetSfxFromVBError( n ); - Error( error ); + if ( bVBAEnabled ) + pInst->Error( error ); + else + Error( error ); } diff --git a/basic/source/runtime/step1.cxx b/basic/source/runtime/step1.cxx index 3fe4d4542d..cfbea24405 100644 --- a/basic/source/runtime/step1.cxx +++ b/basic/source/runtime/step1.cxx @@ -30,11 +30,13 @@ #include <stdlib.h> #include <rtl/math.hxx> +#include <basic/sbuno.hxx> #include "runtime.hxx" #include "sbintern.hxx" #include "iosys.hxx" #include "image.hxx" #include "sbunoobj.hxx" +#include "errobject.hxx" bool checkUnoObjectType( SbUnoObject* refVal, const String& aClass ); @@ -230,8 +232,6 @@ void SbiRuntime::StepRETURN( UINT32 nOp1 ) // FOR-Variable testen (+Endlabel) -void unoToSbxValue( SbxVariable* pVar, const Any& aValue ); - void SbiRuntime::StepTESTFOR( UINT32 nOp1 ) { if( !pForStk ) @@ -360,6 +360,7 @@ void SbiRuntime::StepERRHDL( UINT32 nOp1 ) pInst->nErr = 0; pInst->nErl = 0; nError = 0; + SbxErrObject::getUnoErrObject()->Clear(); } // Resume nach Fehlern (+0=statement, 1=next or Label) @@ -380,6 +381,8 @@ void SbiRuntime::StepRESUME( UINT32 nOp1 ) } else pCode = pErrStmnt; + if ( pError ) // current in error handler ( and got a Resume Next statment ) + SbxErrObject::getUnoErrObject()->Clear(); if( nOp1 > 1 ) StepJUMP( nOp1 ); diff --git a/basic/source/uno/namecont.cxx b/basic/source/uno/namecont.cxx index 657ecd03f4..06f4ecf22d 100644 --- a/basic/source/uno/namecont.cxx +++ b/basic/source/uno/namecont.cxx @@ -73,7 +73,6 @@ #include <cppuhelper/exc_hlp.hxx> #include <basic/sbmod.hxx> - namespace basic { @@ -327,6 +326,7 @@ DBG_NAME( SfxLibraryContainer ) // Ctor SfxLibraryContainer::SfxLibraryContainer( void ) : LibraryContainerHelper( maMutex ) + , mbVBACompat( sal_False ) , maModifiable( *this, maMutex ) , maNameContainer( getCppuType( (Reference< XNameAccess >*) NULL ) ) , mbOldInfoFormat( sal_False ) @@ -2785,6 +2785,28 @@ OUString SfxLibraryContainer::expand_url( const OUString& url ) } } +::sal_Bool SAL_CALL SfxLibraryContainer::getVBACompatModeOn() throw (RuntimeException) +{ + return mbVBACompat; +} + +void SAL_CALL SfxLibraryContainer::setVBACompatModeOn( ::sal_Bool _vbacompatmodeon ) throw (RuntimeException) +{ + BasicManager* pBasMgr = getBasicManager(); + if( pBasMgr ) + { + // get the standard library + String aLibName( RTL_CONSTASCII_USTRINGPARAM( "Standard" ) ); + if ( pBasMgr->GetName().Len() ) + aLibName = pBasMgr->GetName(); + + StarBASIC* pBasic = pBasMgr->GetLib( aLibName ); + if( pBasic ) + pBasic->SetVBAEnabled( _vbacompatmodeon ); + } + mbVBACompat = _vbacompatmodeon; +} + // Methods XServiceInfo ::sal_Bool SAL_CALL SfxLibraryContainer::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException) diff --git a/basic/source/uno/scriptcont.cxx b/basic/source/uno/scriptcont.cxx index 89e9f6cc85..c490571855 100644 --- a/basic/source/uno/scriptcont.cxx +++ b/basic/source/uno/scriptcont.cxx @@ -942,7 +942,7 @@ sal_Bool SfxScriptLibraryContainer::implLoadPasswordLibrary try { xElementRootStorage = ::comphelper::OStorageHelper::GetStorageFromURL( aElementPath, - embed::ElementModes::READWRITE ); + embed::ElementModes::READ ); } catch( uno::Exception& ) { // TODO: error handling @@ -1166,6 +1166,45 @@ bool SAL_CALL SfxScriptLibrary::isLibraryElementValid( ::com::sun::star::uno::An return SfxScriptLibrary::containsValidModule( aElement ); } +IMPLEMENT_FORWARD_XINTERFACE2( SfxScriptLibrary, SfxLibrary, SfxScriptLibrary_BASE ); +IMPLEMENT_FORWARD_XTYPEPROVIDER2( SfxScriptLibrary, SfxLibrary, SfxScriptLibrary_BASE ); + +script::ModuleInfo SAL_CALL +SfxScriptLibrary::getModuleInfo( const ::rtl::OUString& ModuleName ) throw (NoSuchElementException, WrappedTargetException, RuntimeException) +{ + if ( !hasModuleInfo( ModuleName ) ) + throw NoSuchElementException(); + return mModuleInfos[ ModuleName ]; +} + +sal_Bool SAL_CALL +SfxScriptLibrary::hasModuleInfo( const ::rtl::OUString& ModuleName ) throw (RuntimeException) +{ + sal_Bool bRes = sal_False; + ModuleInfoMap::iterator it = mModuleInfos.find( ModuleName ); + + if ( it != mModuleInfos.end() ) + bRes = sal_True; + + return bRes; +} + +void SAL_CALL SfxScriptLibrary::insertModuleInfo( const ::rtl::OUString& ModuleName, const script::ModuleInfo& ModuleInfo ) throw (IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException) +{ + if ( hasModuleInfo( ModuleName ) ) + throw ElementExistException(); + mModuleInfos[ ModuleName ] = ModuleInfo; +} + +void SAL_CALL SfxScriptLibrary::removeModuleInfo( const ::rtl::OUString& ModuleName ) throw (NoSuchElementException, WrappedTargetException, RuntimeException) +{ + // #FIXME add NoSuchElementException to the spec + if ( !hasModuleInfo( ModuleName ) ) + throw NoSuchElementException(); + mModuleInfos.erase( mModuleInfos.find( ModuleName ) ); +} + + //============================================================================ } // namespace basic diff --git a/configmgr/prj/d.lst b/configmgr/prj/d.lst index a9d91980b2..17ccdbe86a 100644 --- a/configmgr/prj/d.lst +++ b/configmgr/prj/d.lst @@ -1,8 +1,3 @@ -mkdir: %_DEST%\inc%_EXT%\configmgr -mkdir: %_DEST%\inc%_EXT%\configmgr\detail -..\%__SRC%\bin\configmgr.dll %_DEST%\bin%_EXT%\configmgr.dll -..\%__SRC%\lib\iconfigmgr.lib %_DEST%\lib%_EXT%\iconfigmgr.lib -..\%__SRC%\lib\libconfigmgr.dylib %_DEST%\lib%_EXT%\libconfigmgr.dylib -..\%__SRC%\lib\libconfigmgr.so %_DEST%\lib%_EXT%\libconfigmgr.so -..\inc\configmgr\detail\configmgrdllapi.hxx %_DEST%\inc%_EXT%\configmgr\detail\configmgrdllapi.hxx -..\inc\configmgr\update.hxx %_DEST%\inc%_EXT%\configmgr\update.hxx +..\%__SRC%\bin\configmgr.uno.dll %_DEST%\bin%_EXT%\configmgr.uno.dll +..\%__SRC%\lib\configmgr.uno.dylib %_DEST%\lib%_EXT%\configmgr.uno.dylib +..\%__SRC%\lib\configmgr.uno.so %_DEST%\lib%_EXT%\configmgr.uno.so diff --git a/configmgr/source/README b/configmgr/source/README index 6d19a3b786..b731043d34 100644 --- a/configmgr/source/README +++ b/configmgr/source/README @@ -76,6 +76,7 @@ update.cxx data.cxx lock.cxx nodemap.cxx +partial.cxx path.hxx type.cxx Utilities. diff --git a/configmgr/source/access.cxx b/configmgr/source/access.cxx index 7af9c1f8d9..60f6a4a54e 100644 --- a/configmgr/source/access.cxx +++ b/configmgr/source/access.cxx @@ -1917,7 +1917,7 @@ css::uno::Reference< css::uno::XInterface > Access::createInstance() tmplName), static_cast< cppu::OWeakObject * >(this)); } - rtl::Reference< Node > node(tmpl->clone()); + rtl::Reference< Node > node(tmpl->clone(true)); node->setLayer(Data::NO_LAYER); return static_cast< cppu::OWeakObject * >( new ChildAccess(components_, getRootAccess(), node)); diff --git a/configmgr/source/components.cxx b/configmgr/source/components.cxx index 51a1a6547d..48f90fa838 100644 --- a/configmgr/source/components.cxx +++ b/configmgr/source/components.cxx @@ -46,6 +46,7 @@ #include "osl/diagnose.h" #include "osl/file.hxx" #include "rtl/bootstrap.hxx" +#include "rtl/logfile.h" #include "rtl/ref.hxx" #include "rtl/string.h" #include "rtl/textenc.h" @@ -58,6 +59,7 @@ #include "modifications.hxx" #include "node.hxx" #include "parsemanager.hxx" +#include "partial.hxx" #include "rootaccess.hxx" #include "writemodfile.hxx" #include "xcdparser.hxx" @@ -82,26 +84,29 @@ struct UnresolvedListItem { typedef std::list< UnresolvedListItem > UnresolvedList; -void parseXcsFile(rtl::OUString const & url, int layer, Data * data, +void parseXcsFile( + rtl::OUString const & url, int layer, Data & data, Partial const * partial, Modifications * modifications) SAL_THROW(( css::container::NoSuchElementException, css::uno::RuntimeException)) { - OSL_ASSERT(modifications == 0); (void) modifications; + OSL_ASSERT(partial == 0 && modifications == 0); + (void) partial; (void) modifications; OSL_VERIFY( rtl::Reference< ParseManager >( new ParseManager(url, new XcsParser(layer, data)))->parse()); } void parseXcuFile( - rtl::OUString const & url, int layer, Data * data, + rtl::OUString const & url, int layer, Data & data, Partial const * partial, Modifications * modifications) SAL_THROW(( css::container::NoSuchElementException, css::uno::RuntimeException)) { OSL_VERIFY( rtl::Reference< ParseManager >( - new ParseManager(url, new XcuParser(layer, data, modifications)))-> + new ParseManager( + url, new XcuParser(layer, data, partial, modifications)))-> parse()); } @@ -112,7 +117,7 @@ rtl::OUString expand(rtl::OUString const & str) { } static bool singletonCreated = false; -static Components * singleton; // leaks +static Components * singleton = 0; } @@ -122,7 +127,8 @@ void Components::initSingleton( OSL_ASSERT(context.is()); if (!singletonCreated) { singletonCreated = true; - singleton = new Components(context); + static Components theSingleton(context); + singleton = &theSingleton; } } @@ -211,7 +217,7 @@ void Components::insertExtensionXcsFile( bool shared, rtl::OUString const & fileUri) { try { - parseXcsFile(fileUri, shared ? 9 : 13, &data_, 0); + parseXcsFile(fileUri, shared ? 9 : 13, data_, 0, 0); } catch (css::container::NoSuchElementException & e) { throw css::uno::RuntimeException( (rtl::OUString( @@ -227,7 +233,7 @@ void Components::insertExtensionXcuFile( { OSL_ASSERT(modifications != 0); try { - parseXcuFile(fileUri, shared ? 10 : 14, &data_, modifications); + parseXcuFile(fileUri, shared ? 10 : 14, data_, 0, modifications); } catch (css::container::NoSuchElementException & e) { throw css::uno::RuntimeException( (rtl::OUString( @@ -238,6 +244,24 @@ void Components::insertExtensionXcuFile( } } +void Components::insertModificationXcuFile( + rtl::OUString const & fileUri, + std::set< rtl::OUString > const & includedPaths, + std::set< rtl::OUString > const & excludedPaths, + Modifications * modifications) +{ + OSL_ASSERT(modifications != 0); + try { + Partial part(includedPaths, excludedPaths); + parseXcuFile(fileUri, Data::NO_LAYER, data_, &part, modifications); + } catch (css::uno::Exception & e) { //TODO: more specific exception catching + OSL_TRACE( + "configmgr error inserting %s: %s", + rtl::OUStringToOString(fileUri, RTL_TEXTENCODING_UTF8).getStr(), + rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_UTF8).getStr()); + } +} + css::beans::Optional< css::uno::Any > Components::getExternalValue( rtl::OUString const & descriptor) { @@ -315,7 +339,7 @@ Components::Components( context_(context) { OSL_ASSERT(context.is()); -/*SB*/try{ + RTL_LOGFILE_TRACE_AUTHOR("configmgr", "sb", "begin parsing"); parseXcsXcuLayer( 0, expand( @@ -380,24 +404,22 @@ Components::Components( ":UNO_USER_PACKAGES_CACHE}/registry/" "com.sun.star.comp.deployment.configuration." "PackageRegistryBackend/configmgr.ini")))); -/*SB*/}catch(css::uno::Exception&e){fprintf(stderr,"caught <%s>\n",rtl::OUStringToOString(e.Message,RTL_TEXTENCODING_UTF8).getStr());throw;} try { parseModificationLayer(); } catch (css::uno::Exception & e) { //TODO: more specific exception catching - // Silently ignore unreadable parts of a corrupted - // registrymodifications.xcu file, instead of completely preventing OOo - // from starting: + // Silently ignore unreadable parts of a corrupted user modification + // layer, instead of completely preventing OOo from starting: OSL_TRACE( "configmgr error reading user modification layer: %s", rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_UTF8).getStr()); } + RTL_LOGFILE_TRACE_AUTHOR("configmgr", "sb", "end parsing"); } Components::~Components() {} void Components::parseFiles( - int layer, rtl::OUString const & extension, - void (* parseFile)(rtl::OUString const &, int, Data *, Modifications *), + int layer, rtl::OUString const & extension, FileParser * parseFile, rtl::OUString const & url, bool recursive) { osl::Directory dir(url); @@ -447,7 +469,7 @@ void Components::parseFiles( file.match(extension, file.getLength() - extension.getLength())) { try { - (*parseFile)(stat.getFileURL(), layer, &data_, 0); + (*parseFile)(stat.getFileURL(), layer, data_, 0, 0); } catch (css::container::NoSuchElementException & e) { throw css::uno::RuntimeException( (rtl::OUString( @@ -462,23 +484,20 @@ void Components::parseFiles( } void Components::parseFileList( - int layer, - void (* parseFile)(rtl::OUString const &, int, Data *, Modifications *), - rtl::OUString const & urls, rtl::Bootstrap const & ini) + int layer, FileParser * parseFile, rtl::OUString const & urls, + rtl::Bootstrap const & ini) { for (sal_Int32 i = 0;;) { rtl::OUString url(urls.getToken(0, ' ', i)); if (url.getLength() != 0) { ini.expandMacrosFrom(url); //TODO: detect failure try { - (*parseFile)(url, layer, &data_, 0); + (*parseFile)(url, layer, data_, 0, 0); } catch (css::container::NoSuchElementException & e) { - throw css::uno::RuntimeException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "stat'ed file does not exist: ")) + - e.Message), - css::uno::Reference< css::uno::XInterface >()); + OSL_TRACE( + "configmgr file does not exist: %s", + rtl::OUStringToOString( + e.Message, RTL_TEXTENCODING_UTF8).getStr()); } } if (i == -1) { @@ -539,7 +558,7 @@ void Components::parseXcdFiles(int layer, rtl::OUString const & url) { rtl::Reference< ParseManager > manager; try { manager = new ParseManager( - stat.getFileURL(), new XcdParser(layer, deps, &data_)); + stat.getFileURL(), new XcdParser(layer, deps, data_)); } catch (css::container::NoSuchElementException & e) { throw css::uno::RuntimeException( (rtl::OUString( @@ -630,7 +649,7 @@ rtl::OUString Components::getModificationFileUrl() const { void Components::parseModificationLayer() { try { - parseXcuFile(getModificationFileUrl(), Data::NO_LAYER, &data_, 0); + parseXcuFile(getModificationFileUrl(), Data::NO_LAYER, data_, 0, 0); } catch (css::container::NoSuchElementException &) { OSL_TRACE( "configmgr user registrymodifications.xcu does not (yet) exist"); diff --git a/configmgr/source/components.hxx b/configmgr/source/components.hxx index 8523b02cbb..a78ed32596 100644 --- a/configmgr/source/components.hxx +++ b/configmgr/source/components.hxx @@ -58,6 +58,7 @@ namespace configmgr { class Broadcaster; class Modifications; class Node; +class Partial; class RootAccess; class Components: private boost::noncopyable { @@ -96,10 +97,19 @@ public: bool shared, rtl::OUString const & fileUri, Modifications * modifications); + void insertModificationXcuFile( + rtl::OUString const & fileUri, + std::set< rtl::OUString > const & includedPaths, + std::set< rtl::OUString > const & excludedPaths, + Modifications * modifications); + com::sun::star::beans::Optional< com::sun::star::uno::Any > getExternalValue(rtl::OUString const & descriptor); private: + typedef void FileParser( + rtl::OUString const &, int, Data &, Partial const *, Modifications *); + Components( com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > const & context); @@ -107,14 +117,12 @@ private: ~Components(); void parseFiles( - int layer, rtl::OUString const & extension, - void (* parseFile)(rtl::OUString const &, int, Data *, Modifications *), + int layer, rtl::OUString const & extension, FileParser * parseFile, rtl::OUString const & url, bool recursive); void parseFileList( - int layer, - void (* parseFile)(rtl::OUString const &, int, Data *, Modifications *), - rtl::OUString const & urls, rtl::Bootstrap const & ini); + int layer, FileParser * parseFile, rtl::OUString const & urls, + rtl::Bootstrap const & ini); void parseXcdFiles(int layer, rtl::OUString const & url); diff --git a/configmgr/source/groupnode.cxx b/configmgr/source/groupnode.cxx index 60d825451d..59c0f89df5 100644 --- a/configmgr/source/groupnode.cxx +++ b/configmgr/source/groupnode.cxx @@ -44,8 +44,8 @@ GroupNode::GroupNode( mandatory_(Data::NO_LAYER) {} -rtl::Reference< Node > GroupNode::clone() const { - return new GroupNode(*this); +rtl::Reference< Node > GroupNode::clone(bool keepTemplateName) const { + return new GroupNode(*this, keepTemplateName); } NodeMap & GroupNode::getMembers() { @@ -68,11 +68,13 @@ bool GroupNode::isExtensible() const { return extensible_; } -GroupNode::GroupNode(GroupNode const & other): - Node(other), extensible_(other.extensible_), - templateName_(other.templateName_), mandatory_(other.mandatory_) +GroupNode::GroupNode(GroupNode const & other, bool keepTemplateName): + Node(other), extensible_(other.extensible_), mandatory_(other.mandatory_) { cloneNodeMap(other.members_, &members_); + if (keepTemplateName) { + templateName_ = other.templateName_; + } } GroupNode::~GroupNode() {} diff --git a/configmgr/source/groupnode.hxx b/configmgr/source/groupnode.hxx index be4907b86c..9d7bbbafa5 100644 --- a/configmgr/source/groupnode.hxx +++ b/configmgr/source/groupnode.hxx @@ -42,7 +42,7 @@ class GroupNode: public Node { public: GroupNode(int layer, bool extensible, rtl::OUString const & templateName); - virtual rtl::Reference< Node > clone() const; + virtual rtl::Reference< Node > clone(bool keepTemplateName) const; virtual NodeMap & getMembers(); @@ -55,7 +55,7 @@ public: bool isExtensible() const; private: - GroupNode(GroupNode const & other); + GroupNode(GroupNode const & other, bool keepTemplateName); virtual ~GroupNode(); diff --git a/configmgr/source/localizedpropertynode.cxx b/configmgr/source/localizedpropertynode.cxx index 9c5fa3328a..54560d7ade 100644 --- a/configmgr/source/localizedpropertynode.cxx +++ b/configmgr/source/localizedpropertynode.cxx @@ -51,7 +51,7 @@ LocalizedPropertyNode::LocalizedPropertyNode( Node(layer), staticType_(staticType), nillable_(nillable) {} -rtl::Reference< Node > LocalizedPropertyNode::clone() const { +rtl::Reference< Node > LocalizedPropertyNode::clone(bool) const { return new LocalizedPropertyNode(*this); } diff --git a/configmgr/source/localizedpropertynode.hxx b/configmgr/source/localizedpropertynode.hxx index d5a16af0e5..4ebcf8e243 100644 --- a/configmgr/source/localizedpropertynode.hxx +++ b/configmgr/source/localizedpropertynode.hxx @@ -47,7 +47,7 @@ class LocalizedPropertyNode: public Node { public: LocalizedPropertyNode(int layer, Type staticType, bool nillable); - virtual rtl::Reference< Node > clone() const; + virtual rtl::Reference< Node > clone(bool keepTemplateName) const; virtual NodeMap & getMembers(); diff --git a/configmgr/source/localizedvaluenode.cxx b/configmgr/source/localizedvaluenode.cxx index f6246106c8..c0e3bc3331 100644 --- a/configmgr/source/localizedvaluenode.cxx +++ b/configmgr/source/localizedvaluenode.cxx @@ -48,7 +48,7 @@ LocalizedValueNode::LocalizedValueNode(int layer, css::uno::Any const & value): Node(layer), value_(value) {} -rtl::Reference< Node > LocalizedValueNode::clone() const { +rtl::Reference< Node > LocalizedValueNode::clone(bool) const { return new LocalizedValueNode(*this); } diff --git a/configmgr/source/localizedvaluenode.hxx b/configmgr/source/localizedvaluenode.hxx index 7f8a5dd987..bfcbdea1de 100644 --- a/configmgr/source/localizedvaluenode.hxx +++ b/configmgr/source/localizedvaluenode.hxx @@ -43,7 +43,7 @@ class LocalizedValueNode: public Node { public: LocalizedValueNode(int layer, com::sun::star::uno::Any const & value); - virtual rtl::Reference< Node > clone() const; + virtual rtl::Reference< Node > clone(bool keepTemplateName) const; virtual rtl::OUString getTemplateName() const; diff --git a/configmgr/source/makefile.mk b/configmgr/source/makefile.mk index d6972e12b9..777fed3323 100644 --- a/configmgr/source/makefile.mk +++ b/configmgr/source/makefile.mk @@ -34,7 +34,7 @@ VISIBILITY_HIDDEN = TRUE .INCLUDE: settings.mk -CDEFS += -DOOO_DLLIMPLEMENTATION_CONFIGMGR +DLLPRE = SLOFILES = \ $(SLO)/access.obj \ @@ -54,6 +54,7 @@ SLOFILES = \ $(SLO)/nodemap.obj \ $(SLO)/pad.obj \ $(SLO)/parsemanager.obj \ + $(SLO)/partial.obj \ $(SLO)/propertynode.obj \ $(SLO)/rootaccess.obj \ $(SLO)/services.obj \ @@ -76,7 +77,7 @@ SHL1STDLIBS = \ $(CPPULIB) \ $(SALHELPERLIB) \ $(SALLIB) -SHL1TARGET = configmgr +SHL1TARGET = configmgr.uno SHL1USE_EXPORTS = name DEF1NAME = $(SHL1TARGET) diff --git a/configmgr/source/node.hxx b/configmgr/source/node.hxx index 10f1685205..7c9417e68e 100644 --- a/configmgr/source/node.hxx +++ b/configmgr/source/node.hxx @@ -46,7 +46,7 @@ public: virtual Kind kind() const = 0; - virtual rtl::Reference< Node > clone() const = 0; + virtual rtl::Reference< Node > clone(bool keepTemplateName) const = 0; virtual NodeMap & getMembers(); diff --git a/configmgr/source/nodemap.cxx b/configmgr/source/nodemap.cxx index 6b22863b56..8e4d06030b 100644 --- a/configmgr/source/nodemap.cxx +++ b/configmgr/source/nodemap.cxx @@ -42,7 +42,7 @@ void cloneNodeMap(NodeMap const & source, NodeMap * target) { OSL_ASSERT(target != 0 && target->empty()); NodeMap clone(source); for (NodeMap::iterator i(clone.begin()); i != clone.end(); ++i) { - i->second = i->second->clone(); + i->second = i->second->clone(true); } std::swap(clone, *target); } diff --git a/configmgr/source/partial.cxx b/configmgr/source/partial.cxx new file mode 100644 index 0000000000..4c9189ed05 --- /dev/null +++ b/configmgr/source/partial.cxx @@ -0,0 +1,137 @@ +/************************************************************************* +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +************************************************************************/ + +#include "precompiled_configmgr.hxx" +#include "sal/config.h" + +#include <map> +#include <set> + +#include "com/sun/star/uno/Reference.hxx" +#include "com/sun/star/uno/RuntimeException.hpp" +#include "com/sun/star/uno/XInterface.hpp" +#include "osl/diagnose.h" +#include "rtl/ustring.h" +#include "rtl/ustring.hxx" +#include "sal/types.h" + +#include "data.hxx" +#include "partial.hxx" + +namespace configmgr { + +namespace { + +namespace css = com::sun::star; + +bool parseSegment( + rtl::OUString const & path, sal_Int32 * index, rtl::OUString * segment) +{ + OSL_ASSERT( + index != 0 && *index >= 0 && *index <= path.getLength() && + segment != 0); + if (path[(*index)++] == '/') { + rtl::OUString name; + bool setElement; + rtl::OUString templateName; + *index = Data::parseSegment( + path, *index, &name, &setElement, &templateName); + if (*index != -1) { + *segment = Data::createSegment(templateName, name); + return *index == path.getLength(); + } + } + throw css::uno::RuntimeException( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("bad path ")) + path, + css::uno::Reference< css::uno::XInterface >()); +} + +} + +Partial::Partial( + std::set< rtl::OUString > const & includedPaths, + std::set< rtl::OUString > const & excludedPaths) +{ + for (std::set< rtl::OUString >::const_iterator i(includedPaths.begin()); + i != includedPaths.end(); ++i) + { + sal_Int32 n = 0; + for (Node * p = &root_;;) { + rtl::OUString seg; + bool end = parseSegment(*i, &n, &seg); + p = &p->children[seg]; + if (p->startInclude) { + break; + } + if (end) { + p->children.clear(); + p->startInclude = true; + break; + } + } + } + for (std::set< rtl::OUString >::const_iterator i(excludedPaths.begin()); + i != excludedPaths.end(); ++i) + { + sal_Int32 n = 0; + for (Node * p = &root_;;) { + rtl::OUString seg; + bool end = parseSegment(*i, &n, &seg); + if (end) { + p->children[seg] = Node(); + break; + } + Node::Children::iterator j(p->children.find(seg)); + if (j == p->children.end()) { + break; + } + p = &j->second; + } + } +} + +Partial::~Partial() {} + +Partial::Containment Partial::contains(Path const & path) const { + //TODO: For set elements, the segment names recorded in the node tree need + // not match the corresponding path segments, so this function can fail. + Node const * p = &root_; + bool includes = false; + for (Path::const_iterator i(path.begin()); i != path.end(); ++i) { + Node::Children::const_iterator j(p->children.find(*i)); + if (j == p->children.end()) { + break; + } + p = &j->second; + includes |= p->startInclude; + } + return p->children.empty() && !p->startInclude + ? CONTAINS_NOT + : includes ? CONTAINS_NODE : CONTAINS_SUBNODES; +} + +} diff --git a/configmgr/source/partial.hxx b/configmgr/source/partial.hxx new file mode 100644 index 0000000000..39931448c6 --- /dev/null +++ b/configmgr/source/partial.hxx @@ -0,0 +1,71 @@ +/************************************************************************* +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +************************************************************************/ + +#ifndef INCLUDED_CONFIGMGR_SOURCE_PARTIAL_HXX +#define INCLUDED_CONFIGMGR_SOURCE_PARTIAL_HXX + +#include "sal/config.h" + +#include <map> +#include <set> + +#include "boost/noncopyable.hpp" + +#include "path.hxx" + +namespace rtl { class OUString; } + +namespace configmgr { + +class Partial: private boost::noncopyable { +public: + enum Containment { CONTAINS_NOT, CONTAINS_SUBNODES, CONTAINS_NODE }; + + Partial( + std::set< rtl::OUString > const & includedPaths, + std::set< rtl::OUString > const & excludedPaths); + + ~Partial(); + + Containment contains(Path const & path) const; + +private: + struct Node { + typedef std::map< rtl::OUString, Node > Children; + + Node(): startInclude(false) {} + + Children children; + bool startInclude; + }; + + Node root_; +}; + +} + +#endif diff --git a/configmgr/source/propertynode.cxx b/configmgr/source/propertynode.cxx index 070b56d9be..f3e459998e 100644 --- a/configmgr/source/propertynode.cxx +++ b/configmgr/source/propertynode.cxx @@ -55,7 +55,7 @@ PropertyNode::PropertyNode( extension_(extension) {} -rtl::Reference< Node > PropertyNode::clone() const { +rtl::Reference< Node > PropertyNode::clone(bool) const { return new PropertyNode(*this); } diff --git a/configmgr/source/propertynode.hxx b/configmgr/source/propertynode.hxx index 1566cbf72d..506526ffcc 100644 --- a/configmgr/source/propertynode.hxx +++ b/configmgr/source/propertynode.hxx @@ -48,7 +48,7 @@ public: int layer, Type staticType, bool nillable, com::sun::star::uno::Any const & value, bool extension); - virtual rtl::Reference< Node > clone() const; + virtual rtl::Reference< Node > clone(bool keepTemplateName) const; Type getStaticType() const; diff --git a/configmgr/source/services.cxx b/configmgr/source/services.cxx index 3a009b3cee..f8c3289664 100644 --- a/configmgr/source/services.cxx +++ b/configmgr/source/services.cxx @@ -44,6 +44,7 @@ #include "configurationprovider.hxx" #include "configurationregistry.hxx" #include "defaultprovider.hxx" +#include "update.hxx" namespace { @@ -67,6 +68,9 @@ static cppu::ImplementationEntry const services[] = { { &dummy, &configmgr::configuration_registry::getImplementationName, &configmgr::configuration_registry::getSupportedServiceNames, &configmgr::configuration_registry::createFactory, 0, 0 }, + { &dummy, &configmgr::update::getImplementationName, + &configmgr::update::getSupportedServiceNames, + &configmgr::update::createFactory, 0, 0 }, { 0, 0, 0, 0, 0, 0 } }; @@ -107,6 +111,19 @@ extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.DefaultProvider"))); + css::uno::Reference< css::registry::XRegistryKey >( + (css::uno::Reference< css::registry::XRegistryKey >( + static_cast< css::registry::XRegistryKey * >(pRegistryKey))-> + createKey( + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "/com.sun.star.comp.configuration.Update/UNO/" + "SINGLETONS/com.sun.star.configuration.Update")))), + css::uno::UNO_SET_THROW)-> + setStringValue( + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.configuration.Update_Service"))); } catch (css::uno::Exception & e) { (void) e; OSL_TRACE( diff --git a/configmgr/source/setnode.cxx b/configmgr/source/setnode.cxx index f19c36c0bb..465345a5f8 100644 --- a/configmgr/source/setnode.cxx +++ b/configmgr/source/setnode.cxx @@ -69,8 +69,8 @@ SetNode::SetNode( templateName_(templateName), mandatory_(Data::NO_LAYER) {} -rtl::Reference< Node > SetNode::clone() const { - return new SetNode(*this); +rtl::Reference< Node > SetNode::clone(bool keepTemplateName) const { + return new SetNode(*this, keepTemplateName); } NodeMap & SetNode::getMembers() { @@ -105,12 +105,15 @@ bool SetNode::isValidTemplate(rtl::OUString const & templateName) const { additionalTemplateNames_.end()); } -SetNode::SetNode(SetNode const & other): +SetNode::SetNode(SetNode const & other, bool keepTemplateName): Node(other), defaultTemplateName_(other.defaultTemplateName_), additionalTemplateNames_(other.additionalTemplateNames_), - templateName_(other.templateName_), mandatory_(other.mandatory_) + mandatory_(other.mandatory_) { cloneNodeMap(other.members_, &members_); + if (keepTemplateName) { + templateName_ = other.templateName_; + } } SetNode::~SetNode() {} diff --git a/configmgr/source/setnode.hxx b/configmgr/source/setnode.hxx index 7bf1ab0a19..94ce537add 100644 --- a/configmgr/source/setnode.hxx +++ b/configmgr/source/setnode.hxx @@ -46,7 +46,7 @@ public: int layer, rtl::OUString const & defaultTemplateName, rtl::OUString const & templateName); - virtual rtl::Reference< Node > clone() const; + virtual rtl::Reference< Node > clone(bool keepTemplateName) const; virtual NodeMap & getMembers(); @@ -63,7 +63,7 @@ public: bool isValidTemplate(rtl::OUString const & templateName) const; private: - SetNode(SetNode const & other); + SetNode(SetNode const & other, bool keepTemplateName); virtual ~SetNode(); diff --git a/configmgr/source/update.cxx b/configmgr/source/update.cxx index ab711c3bec..4c1d59d5d0 100644 --- a/configmgr/source/update.cxx +++ b/configmgr/source/update.cxx @@ -28,27 +28,86 @@ #include "precompiled_configmgr.hxx" #include "sal/config.h" -#include "configmgr/update.hxx" +#include <set> + +#include "boost/noncopyable.hpp" +#include "com/sun/star/configuration/XUpdate.hpp" +#include "com/sun/star/lang/XSingleComponentFactory.hpp" +#include "com/sun/star/uno/Any.hxx" +#include "com/sun/star/uno/Exception.hpp" +#include "com/sun/star/uno/Reference.hxx" +#include "com/sun/star/uno/RuntimeException.hpp" +#include "com/sun/star/uno/Sequence.hxx" +#include "com/sun/star/uno/XComponentContext.hpp" +#include "com/sun/star/uno/XInterface.hpp" +#include "cppuhelper/factory.hxx" +#include "cppuhelper/implbase1.hxx" +#include "cppuhelper/weak.hxx" #include "osl/mutex.hxx" #include "rtl/ref.hxx" +#include "rtl/unload.h" +#include "rtl/ustring.h" #include "rtl/ustring.hxx" +#include "sal/types.h" #include "broadcaster.hxx" #include "components.hxx" #include "lock.hxx" #include "modifications.hxx" #include "rootaccess.hxx" +#include "update.hxx" + +namespace configmgr { namespace update { + +namespace { + +namespace css = com::sun::star; + +std::set< rtl::OUString > seqToSet( + css::uno::Sequence< rtl::OUString > const & sequence) +{ + return std::set< rtl::OUString >( + sequence.getConstArray(), + sequence.getConstArray() + sequence.getLength()); +} + +class Service: + public cppu::WeakImplHelper1< css::configuration::XUpdate >, + private boost::noncopyable +{ +public: + Service() {} + +private: + virtual ~Service() {} + + virtual void SAL_CALL insertExtensionXcsFile( + sal_Bool shared, rtl::OUString const & fileUri) + throw (css::uno::RuntimeException); -namespace configmgr { + virtual void SAL_CALL insertExtensionXcuFile( + sal_Bool shared, rtl::OUString const & fileUri) + throw (css::uno::RuntimeException); -namespace update { + virtual void SAL_CALL insertModificationXcuFile( + rtl::OUString const & fileUri, + css::uno::Sequence< rtl::OUString > const & includedPaths, + css::uno::Sequence< rtl::OUString > const & excludedPaths) + throw (css::uno::RuntimeException); +}; -void insertExtensionXcsFile(bool shared, rtl::OUString const & fileUri) { +void Service::insertExtensionXcsFile( + sal_Bool shared, rtl::OUString const & fileUri) + throw (css::uno::RuntimeException) +{ osl::MutexGuard g(lock); Components::getSingleton().insertExtensionXcsFile(shared, fileUri); } -void insertExtensionXcuFile(bool shared, rtl::OUString const & fileUri) { +void Service::insertExtensionXcuFile( + sal_Bool shared, rtl::OUString const & fileUri) + throw (css::uno::RuntimeException) +{ Broadcaster bc; { osl::MutexGuard g(lock); @@ -61,6 +120,91 @@ void insertExtensionXcuFile(bool shared, rtl::OUString const & fileUri) { bc.send(); } +void Service::insertModificationXcuFile( + rtl::OUString const & fileUri, + css::uno::Sequence< rtl::OUString > const & includedPaths, + css::uno::Sequence< rtl::OUString > const & excludedPaths) + throw (css::uno::RuntimeException) +{ + Broadcaster bc; + { + osl::MutexGuard g(lock); + Modifications mods; + Components::getSingleton().insertModificationXcuFile( + fileUri, seqToSet(includedPaths), seqToSet(excludedPaths), &mods); + Components::getSingleton().initGlobalBroadcaster( + mods, rtl::Reference< RootAccess >(), &bc); + } + bc.send(); } +class Factory: + public cppu::WeakImplHelper1< css::lang::XSingleComponentFactory >, + private boost::noncopyable +{ +public: + Factory() {} + +private: + virtual ~Factory() {} + + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL + createInstanceWithContext( + css::uno::Reference< css::uno::XComponentContext > const & Context) + throw (css::uno::Exception, css::uno::RuntimeException); + + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL + createInstanceWithArgumentsAndContext( + css::uno::Sequence< css::uno::Any > const & Arguments, + css::uno::Reference< css::uno::XComponentContext > const & Context) + throw (css::uno::Exception, css::uno::RuntimeException); +}; + +css::uno::Reference< css::uno::XInterface > Factory::createInstanceWithContext( + css::uno::Reference< css::uno::XComponentContext > const & Context) + throw (css::uno::Exception, css::uno::RuntimeException) +{ + return createInstanceWithArgumentsAndContext( + css::uno::Sequence< css::uno::Any >(), Context); +} + +css::uno::Reference< css::uno::XInterface > +Factory::createInstanceWithArgumentsAndContext( + css::uno::Sequence< css::uno::Any > const & Arguments, + css::uno::Reference< css::uno::XComponentContext > const &) + throw (css::uno::Exception, css::uno::RuntimeException) +{ + if (Arguments.getLength() != 0) { + throw css::uno::Exception( + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.comp.configuration.Update must be" + " instantiated without arguments")), + static_cast< cppu::OWeakObject * >(this)); + } + return static_cast< cppu::OWeakObject * >(new Service); +} + +} + +rtl::OUString getImplementationName() { + return rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.configuration.Update")); +} + +css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { + rtl::OUString name( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.configuration.Update_Service")); + return css::uno::Sequence< rtl::OUString >(&name, 1); +} + +css::uno::Reference< css::lang::XSingleComponentFactory > createFactory( + cppu::ComponentFactoryFunc, rtl::OUString const &, + css::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) + SAL_THROW(()) +{ + return new Factory; } + +} } diff --git a/configmgr/source/update.hxx b/configmgr/source/update.hxx new file mode 100644 index 0000000000..faa5c86b15 --- /dev/null +++ b/configmgr/source/update.hxx @@ -0,0 +1,59 @@ +/************************************************************************* +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +************************************************************************/ + +#ifndef INCLUDED_CONFIGMGR_SOURCE_UPDATE_HXX +#define INCLUDED_CONFIGMGR_SOURCE_UPDATE_HXX + +#include "sal/config.h" + +#include "com/sun/star/uno/Reference.hxx" +#include "com/sun/star/uno/Sequence.hxx" +#include "cppuhelper/factory.hxx" +#include "rtl/unload.h" +#include "sal/types.h" + +namespace com { namespace sun { namespace star { namespace lang { + class XSingleComponentFactory; +} } } } +namespace rtl { class OUString; } + +namespace configmgr { namespace update { + +rtl::OUString SAL_CALL getImplementationName(); + +com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL +getSupportedServiceNames(); + +com::sun::star::uno::Reference< com::sun::star::lang::XSingleComponentFactory > +SAL_CALL createFactory( + cppu::ComponentFactoryFunc, rtl::OUString const &, + com::sun::star::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) + SAL_THROW(()); + +} } + +#endif diff --git a/configmgr/source/valueparser.cxx b/configmgr/source/valueparser.cxx index f951aac5ca..4adf452c40 100644 --- a/configmgr/source/valueparser.cxx +++ b/configmgr/source/valueparser.cxx @@ -270,6 +270,10 @@ XmlReader::Text ValueParser::getTextMode() const { if (node_.is()) { switch (state_) { case STATE_TEXT: + if (!items_.empty()) { + break; + } + // fall through case STATE_IT: return (type_ == TYPE_STRING || type_ == TYPE_STRING_LIST || @@ -294,7 +298,9 @@ bool ValueParser::startElement( name.equals(RTL_CONSTASCII_STRINGPARAM("it")) && isListType(type_) && separator_.getLength() == 0) { - checkEmptyPad(reader); + pad_.clear(); + // before first <it>, characters are not ignored; assume they + // are only whitespace state_ = STATE_IT; return true; } @@ -351,7 +357,7 @@ bool ValueParser::startElement( css::uno::Reference< css::uno::XInterface >()); } -bool ValueParser::endElement(XmlReader const & reader) { +bool ValueParser::endElement() { if (!node_.is()) { return false; } @@ -363,7 +369,6 @@ bool ValueParser::endElement(XmlReader const & reader) { value = parseValue(separator_, pad_.get(), type_); pad_.clear(); } else { - checkEmptyPad(reader); switch (type_) { case TYPE_BOOLEAN_LIST: value = convertItems< sal_Bool >(); @@ -454,17 +459,6 @@ int ValueParser::getLayer() const { return layer_; } -void ValueParser::checkEmptyPad(XmlReader const & reader) const { - if (pad_.is()) { - throw css::uno::RuntimeException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "mixed text and <it> elements in ")) + - reader.getUrl()), - css::uno::Reference< css::uno::XInterface >()); - } -} - template< typename T > css::uno::Any ValueParser::convertItems() { css::uno::Sequence< T > seq(items_.size()); for (sal_Int32 i = 0; i < seq.getLength(); ++i) { diff --git a/configmgr/source/valueparser.hxx b/configmgr/source/valueparser.hxx index c328fe7edd..4e899f4632 100644 --- a/configmgr/source/valueparser.hxx +++ b/configmgr/source/valueparser.hxx @@ -61,7 +61,7 @@ public: bool startElement( XmlReader & reader, XmlReader::Namespace ns, Span const & name); - bool endElement(XmlReader const & reader); + bool endElement(); void characters(Span const & text); @@ -75,8 +75,6 @@ public: rtl::OString separator_; private: - void checkEmptyPad(XmlReader const & reader) const; - template< typename T > com::sun::star::uno::Any convertItems(); enum State { STATE_TEXT, STATE_TEXT_UNICODE, STATE_IT, STATE_IT_UNICODE }; diff --git a/configmgr/source/writemodfile.cxx b/configmgr/source/writemodfile.cxx index a8e0f77cbd..c2573ab674 100644 --- a/configmgr/source/writemodfile.cxx +++ b/configmgr/source/writemodfile.cxx @@ -451,9 +451,9 @@ void writeNode( void writeModifications( Components & components, oslFileHandle handle, - rtl::OUString const & grandparentPathRepresentation, - rtl::OUString const & parentName, rtl::Reference< Node > const & parent, - rtl::OUString const & nodeName, rtl::Reference< Node > const & node, + rtl::OUString const & parentPathRepresentation, + rtl::Reference< Node > const & parent, rtl::OUString const & nodeName, + rtl::Reference< Node > const & node, Modifications::Node const & modifications) { // It is never necessary to write oor:finalized or oor:mandatory attributes, @@ -461,27 +461,15 @@ void writeModifications( if (modifications.children.empty()) { OSL_ASSERT(parent.is()); // components themselves have no parent but must have children + writeData(handle, RTL_CONSTASCII_STRINGPARAM("<item oor:path=\"")); + writeAttributeValue(handle, parentPathRepresentation); + writeData(handle, RTL_CONSTASCII_STRINGPARAM("\">")); if (node.is()) { - writeData(handle, RTL_CONSTASCII_STRINGPARAM("<item oor:path=\"")); - writeAttributeValue( - handle, - (grandparentPathRepresentation + - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + - Data::createSegment(parent->getTemplateName(), parentName))); - writeData(handle, RTL_CONSTASCII_STRINGPARAM("\">")); writeNode(components, handle, parent, nodeName, node); - writeData(handle, RTL_CONSTASCII_STRINGPARAM("</item>")); } else { - writeData(handle, RTL_CONSTASCII_STRINGPARAM("<item oor:path=\"")); switch (parent->kind()) { case Node::KIND_LOCALIZED_PROPERTY: - writeAttributeValue(handle, grandparentPathRepresentation); - writeData( - handle, RTL_CONSTASCII_STRINGPARAM("\"><prop oor:name=\"")); - writeAttributeValue(handle, parentName); - writeData( - handle, - RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"fuse\"><value")); + writeData(handle, RTL_CONSTASCII_STRINGPARAM("<value")); if (nodeName.getLength() != 0) { writeData( handle, RTL_CONSTASCII_STRINGPARAM(" xml:lang=\"")); @@ -489,61 +477,44 @@ void writeModifications( writeData(handle, RTL_CONSTASCII_STRINGPARAM("\"")); } writeData( - handle, - RTL_CONSTASCII_STRINGPARAM( - " oor:op=\"remove\"/></prop></item>")); + handle, RTL_CONSTASCII_STRINGPARAM(" oor:op=\"remove\"/>")); break; case Node::KIND_GROUP: OSL_ASSERT( dynamic_cast< GroupNode * >(parent.get())->isExtensible()); - writeAttributeValue( - handle, - (grandparentPathRepresentation + - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + - Data::createSegment( - parent->getTemplateName(), parentName))); writeData( - handle, RTL_CONSTASCII_STRINGPARAM("\"><prop oor:name=\"")); + handle, RTL_CONSTASCII_STRINGPARAM("<prop oor:name=\"")); writeAttributeValue(handle, nodeName); writeData( handle, - RTL_CONSTASCII_STRINGPARAM( - "\" oor:op=\"remove\"/></item>")); + RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"remove\"/>")); break; case Node::KIND_SET: - writeAttributeValue( - handle, - (grandparentPathRepresentation + - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + - Data::createSegment( - parent->getTemplateName(), parentName))); writeData( - handle, RTL_CONSTASCII_STRINGPARAM("\"><node oor:name=\"")); + handle, RTL_CONSTASCII_STRINGPARAM("<node oor:name=\"")); writeAttributeValue(handle, nodeName); writeData( handle, - RTL_CONSTASCII_STRINGPARAM( - "\" oor:op=\"remove\"/></item>")); + RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"remove\"/>")); break; default: OSL_ASSERT(false); // this cannot happen break; } } + writeData(handle, RTL_CONSTASCII_STRINGPARAM("</item>")); } else { - rtl::OUString parentPathRep; - if (parent.is()) { // components themselves have no parent - parentPathRep = grandparentPathRepresentation + - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + - Data::createSegment(parent->getTemplateName(), parentName); - } OSL_ASSERT(node.is()); + rtl::OUString pathRep( + parentPathRepresentation + + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + + Data::createSegment(node->getTemplateName(), nodeName)); for (Modifications::Node::Children::const_iterator i( modifications.children.begin()); i != modifications.children.end(); ++i) { writeModifications( - components, handle, parentPathRep, nodeName, node, i->first, + components, handle, pathRep, node, i->first, node->getMember(i->first), i->second); } } @@ -605,9 +576,8 @@ void writeModFile( j != data.modifications.getRoot().children.end(); ++j) { writeModifications( - components, tmp.handle, rtl::OUString(), rtl::OUString(), - rtl::Reference< Node >(), j->first, - Data::findNode(Data::NO_LAYER, data.components, j->first), + components, tmp.handle, rtl::OUString(), rtl::Reference< Node >(), + j->first, Data::findNode(Data::NO_LAYER, data.components, j->first), j->second); } writeData(tmp.handle, RTL_CONSTASCII_STRINGPARAM("</oor:items>")); diff --git a/configmgr/source/xcdparser.cxx b/configmgr/source/xcdparser.cxx index 8306c692c3..498254b356 100644 --- a/configmgr/source/xcdparser.cxx +++ b/configmgr/source/xcdparser.cxx @@ -53,7 +53,7 @@ namespace css = com::sun::star; } -XcdParser::XcdParser(int layer, Dependencies const & dependencies, Data * data): +XcdParser::XcdParser(int layer, Dependencies const & dependencies, Data & data): layer_(layer), dependencies_(dependencies), data_(data), state_(STATE_START) {} @@ -137,7 +137,7 @@ bool XcdParser::startElement( if (ns == XmlReader::NAMESPACE_OOR && name.equals(RTL_CONSTASCII_STRINGPARAM("component-data"))) { - nestedParser_ = new XcuParser(layer_ + 1, data_, 0); + nestedParser_ = new XcuParser(layer_ + 1, data_, 0, 0); nesting_ = 1; return nestedParser_->startElement(reader, ns, name); } diff --git a/configmgr/source/xcdparser.hxx b/configmgr/source/xcdparser.hxx index 2e35b3686e..2ad8ecea7f 100644 --- a/configmgr/source/xcdparser.hxx +++ b/configmgr/source/xcdparser.hxx @@ -47,7 +47,7 @@ class XcdParser: public Parser { public: typedef std::set< rtl::OUString > Dependencies; - XcdParser(int layer, Dependencies const & dependencies, Data * data); + XcdParser(int layer, Dependencies const & dependencies, Data & data); private: virtual ~XcdParser(); @@ -66,7 +66,7 @@ private: int layer_; Dependencies const & dependencies_; - Data * data_; + Data & data_; State state_; rtl::OUString dependency_; rtl::Reference< Parser > nestedParser_; diff --git a/configmgr/source/xcsparser.cxx b/configmgr/source/xcsparser.cxx index 15141844a2..79e122759f 100644 --- a/configmgr/source/xcsparser.cxx +++ b/configmgr/source/xcsparser.cxx @@ -60,9 +60,66 @@ namespace { namespace css = com::sun::star; +// Conservatively merge a template or component (and its recursive parts) into +// an existing instance: +void merge( + rtl::Reference< Node > const & original, + rtl::Reference< Node > const & update) +{ + OSL_ASSERT( + original.is() && update.is() && original->kind() == update->kind() && + update->getFinalized() == Data::NO_LAYER); + if (update->getLayer() >= original->getLayer() && + update->getLayer() <= original->getFinalized()) + { + switch (original->kind()) { + case Node::KIND_PROPERTY: + case Node::KIND_LOCALIZED_PROPERTY: + case Node::KIND_LOCALIZED_VALUE: + break; //TODO: merge certain parts? + case Node::KIND_GROUP: + for (NodeMap::iterator i2(update->getMembers().begin()); + i2 != update->getMembers().end(); ++i2) + { + NodeMap::iterator i1(original->getMembers().find(i2->first)); + if (i1 == original->getMembers().end()) { + if (i2->second->kind() == Node::KIND_PROPERTY && + dynamic_cast< GroupNode * >( + original.get())->isExtensible()) + { + original->getMembers().insert(*i2); + } + } else if (i2->second->kind() == i1->second->kind()) { + merge(i1->second, i2->second); + } + } + break; + case Node::KIND_SET: + for (NodeMap::iterator i2(update->getMembers().begin()); + i2 != update->getMembers().end(); ++i2) + { + NodeMap::iterator i1(original->getMembers().find(i2->first)); + if (i1 == original->getMembers().end()) { + if (dynamic_cast< SetNode * >(original.get())-> + isValidTemplate(i2->second->getTemplateName())) + { + original->getMembers().insert(*i2); + } + } else if (i2->second->kind() == i1->second->kind() && + (i2->second->getTemplateName() == + i1->second->getTemplateName())) + { + merge(i1->second, i2->second); + } + } + break; + } + } } -XcsParser::XcsParser(int layer, Data * data): +} + +XcsParser::XcsParser(int layer, Data & data): valueParser_(layer), data_(data), state_(STATE_START) {} @@ -209,7 +266,7 @@ bool XcsParser::startElement( } void XcsParser::endElement(XmlReader const & reader) { - if (valueParser_.endElement(reader)) { + if (valueParser_.endElement()) { return; } if (ignoring_ > 0) { @@ -218,15 +275,30 @@ void XcsParser::endElement(XmlReader const & reader) { Element top(elements_.top()); elements_.pop(); if (top.node.is()) { - NodeMap * map; if (elements_.empty()) { switch (state_) { case STATE_TEMPLATES: - map = &data_->templates; + { + NodeMap::iterator i(data_.templates.find(top.name)); + if (i == data_.templates.end()) { + data_.templates.insert( + NodeMap::value_type(top.name, top.node)); + } else { + merge(i->second, top.node); + } + } break; case STATE_COMPONENT: - map = &data_->components; - state_ = STATE_COMPONENT_DONE; + { + NodeMap::iterator i(data_.components.find(top.name)); + if (i == data_.components.end()) { + data_.components.insert( + NodeMap::value_type(top.name, top.node)); + } else { + merge(i->second, top.node); + } + state_ = STATE_COMPONENT_DONE; + } break; default: OSL_ASSERT(false); @@ -235,10 +307,9 @@ void XcsParser::endElement(XmlReader const & reader) { RTL_CONSTASCII_USTRINGPARAM("this cannot happen")), css::uno::Reference< css::uno::XInterface >()); } - } else { - map = &elements_.top().node->getMembers(); - } - if (!map->insert(NodeMap::value_type(top.name, top.node)).second) { + } else if (!elements_.top().node->getMembers().insert( + NodeMap::value_type(top.name, top.node)).second) + { throw css::uno::RuntimeException( (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("duplicate ")) + top.name + @@ -372,7 +443,7 @@ void XcsParser::handleNodeRef(XmlReader & reader) { css::uno::Reference< css::uno::XInterface >()); } rtl::Reference< Node > tmpl( - data_->getTemplate( + data_.getTemplate( valueParser_.getLayer(), xmldata::parseTemplateReference( component, hasNodeType, nodeType, 0))); @@ -385,7 +456,7 @@ void XcsParser::handleNodeRef(XmlReader & reader) { reader.getUrl()), css::uno::Reference< css::uno::XInterface >()); } - rtl::Reference< Node > node(tmpl->clone()); + rtl::Reference< Node > node(tmpl->clone(false)); node->setLayer(valueParser_.getLayer()); elements_.push(Element(node, name)); } diff --git a/configmgr/source/xcsparser.hxx b/configmgr/source/xcsparser.hxx index 21a124945a..196add9a82 100644 --- a/configmgr/source/xcsparser.hxx +++ b/configmgr/source/xcsparser.hxx @@ -48,7 +48,7 @@ struct Span; class XcsParser: public Parser { public: - XcsParser(int layer, Data * data); + XcsParser(int layer, Data & data); private: virtual ~XcsParser(); @@ -94,7 +94,7 @@ private: typedef std::stack< Element > ElementStack; ValueParser valueParser_; - Data * data_; + Data & data_; rtl::OUString componentName_; State state_; long ignoring_; diff --git a/configmgr/source/xcuparser.cxx b/configmgr/source/xcuparser.cxx index 220168c627..f9f439c989 100644 --- a/configmgr/source/xcuparser.cxx +++ b/configmgr/source/xcuparser.cxx @@ -49,6 +49,7 @@ #include "modifications.hxx" #include "node.hxx" #include "nodemap.hxx" +#include "partial.hxx" #include "path.hxx" #include "propertynode.hxx" #include "setnode.hxx" @@ -65,14 +66,15 @@ namespace css = com::sun::star; } -XcuParser::XcuParser(int layer, Data * data, Modifications * modifications): - valueParser_(layer), data_(data), modifications_(modifications) -{ - if (layer == Data::NO_LAYER) { - OSL_ASSERT(modifications_ == 0); - modifications_ = &data_->modifications; - } -} +XcuParser::XcuParser( + int layer, Data & data, Partial const * partial, + Modifications * broadcastModifications): + valueParser_(layer), data_(data), + partial_(partial), broadcastModifications_(broadcastModifications), + recordModifications_(layer == Data::NO_LAYER), + trackPath_( + partial_ != 0 || broadcastModifications_ != 0 || recordModifications_) +{} XcuParser::~XcuParser() {} @@ -105,7 +107,7 @@ bool XcuParser::startElement( css::uno::Reference< css::uno::XInterface >()); } } else if (state_.top().ignore) { - state_.push(state_.top()); + state_.push(State(false)); } else if (!state_.top().node.is()) { if (ns == XmlReader::NAMESPACE_NONE && name.equals(RTL_CONSTASCII_STRINGPARAM("item"))) @@ -209,12 +211,12 @@ bool XcuParser::startElement( return true; } -void XcuParser::endElement(XmlReader const & reader) { - if (valueParser_.endElement(reader)) { +void XcuParser::endElement(XmlReader const &) { + if (valueParser_.endElement()) { return; } OSL_ASSERT(!state_.empty()); - bool ignore = state_.top().ignore; + bool pop = state_.top().pop; rtl::Reference< Node > insert; rtl::OUString name; if (state_.top().insert) { @@ -227,10 +229,10 @@ void XcuParser::endElement(XmlReader const & reader) { OSL_ASSERT(!state_.empty() && state_.top().node.is()); state_.top().node->getMembers()[name] = insert; } - if (!ignore && !modificationPath_.empty()) { - modificationPath_.pop_back(); + if (pop && !path_.empty()) { + path_.pop_back(); // </item> will pop less than <item> pushed, but that is harmless, - // as the next <item> will reset modificationPath_ + // as the next <item> will reset path_ } } @@ -328,16 +330,27 @@ void XcuParser::handleComponentData(XmlReader & reader) { } componentName_ = xmldata::convertFromUtf8( Span(buf.getStr(), buf.getLength())); + if (trackPath_) { + OSL_ASSERT(path_.empty()); + path_.push_back(componentName_); + if (partial_ != 0 && partial_->contains(path_) == Partial::CONTAINS_NOT) + { + state_.push(State(true)); // ignored + return; + } + } rtl::Reference< Node > node( Data::findNode( - valueParser_.getLayer(), data_->components, componentName_)); + valueParser_.getLayer(), data_.components, componentName_)); if (!node.is()) { - throw css::uno::RuntimeException( - (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unknown component ")) + - componentName_ + - rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" in ")) + - reader.getUrl()), - css::uno::Reference< css::uno::XInterface >()); + OSL_TRACE( + "configmgr unknown component %s in %s", + rtl::OUStringToOString( + componentName_, RTL_TEXTENCODING_UTF8).getStr(), + rtl::OUStringToOString( + reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr()); + state_.push(State(true)); // ignored + return; } switch (op) { case OPERATION_MODIFY: @@ -356,10 +369,6 @@ void XcuParser::handleComponentData(XmlReader & reader) { node->getFinalized()); node->setFinalized(finalizedLayer); state_.push(State(node, finalizedLayer < valueParser_.getLayer())); - if (modifications_ != 0) { - OSL_ASSERT(modificationPath_.empty()); - modificationPath_.push_back(componentName_); - } } void XcuParser::handleItem(XmlReader & reader) { @@ -386,27 +395,43 @@ void XcuParser::handleItem(XmlReader & reader) { rtl::OUString path(xmldata::convertFromUtf8(attrPath)); int finalizedLayer; rtl::Reference< Node > node( - data_->resolvePathRepresentation( - path, &modificationPath_, &finalizedLayer)); + data_.resolvePathRepresentation(path, &path_, &finalizedLayer)); if (!node.is()) { - //TODO: Within Components::parseModificationLayer (but only there) it - // can rightly happen that data is read that does not match a schema - // (that no schema exists, or that the schema specifies a different - // type), namely if the schema was brought along by an extension that - // has been removed or replaced; instead of taking care of that at all - // the relevant places, as a hack, only "top-level" <item>s (that only - // appear in modification layer data) with unknown path are filtered out - // here. OSL_TRACE( - "configmgr unknown <item path=\"%s\">", - rtl::OUStringToOString(path, RTL_TEXTENCODING_UTF8).getStr()); - state_.push(State()); // ignored + "configmgr unknown item %s in %s", + rtl::OUStringToOString(path, RTL_TEXTENCODING_UTF8).getStr(), + rtl::OUStringToOString( + reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr()); + state_.push(State(true)); // ignored return; } - OSL_ASSERT(!modificationPath_.empty()); - componentName_ = modificationPath_.front(); - if (modifications_ == 0) { - modificationPath_.clear(); + OSL_ASSERT(!path_.empty()); + componentName_ = path_.front(); + if (trackPath_) { + if (partial_ != 0 && partial_->contains(path_) == Partial::CONTAINS_NOT) + { + state_.push(State(true)); // ignored + return; + } + } else { + path_.clear(); + } + switch (node->kind()) { + case Node::KIND_PROPERTY: + case Node::KIND_LOCALIZED_VALUE: + OSL_TRACE( + "configmgr item of bad type %s in %s", + rtl::OUStringToOString(path, RTL_TEXTENCODING_UTF8).getStr(), + rtl::OUStringToOString( + reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr()); + state_.push(State(true)); // ignored + return; + case Node::KIND_LOCALIZED_PROPERTY: + valueParser_.type_ = dynamic_cast< LocalizedPropertyNode * >( + node.get())->getStaticType(); + break; + default: + break; } state_.push(State(node, finalizedLayer < valueParser_.getLayer())); } @@ -483,13 +508,13 @@ void XcuParser::handlePropValue(XmlReader & reader, PropertyNode * prop) { css::uno::Reference< css::uno::XInterface >()); } prop->setValue(valueParser_.getLayer(), css::uno::Any()); - state_.push(State()); + state_.push(State(false)); } else if (external.getLength() == 0) { valueParser_.separator_ = separator; valueParser_.start(prop); } else { prop->setExternal(valueParser_.getLayer(), external); - state_.push(State()); + state_.push(State(false)); } } @@ -546,11 +571,20 @@ void XcuParser::handleLocpropValue( op = parseOperation(reader.getAttributeValue(true)); } } + if (trackPath_) { + path_.push_back(name); + if (partial_ != 0 && + partial_->contains(path_) != Partial::CONTAINS_NODE) + { + state_.push(State(true)); // ignored + return; + } + } NodeMap::iterator i(locprop->getMembers().find(name)); if (i != locprop->getMembers().end() && i->second->getLayer() > valueParser_.getLayer()) { - state_.push(State()); // ignored + state_.push(State(true)); // ignored return; } if (nil && !locprop->isNillable()) { @@ -563,23 +597,29 @@ void XcuParser::handleLocpropValue( } switch (op) { case OPERATION_FUSE: - if (nil) { - if (i == locprop->getMembers().end()) { - locprop->getMembers()[name] = new LocalizedValueNode( - valueParser_.getLayer(), css::uno::Any()); + { + bool pop = false; + if (nil) { + if (i == locprop->getMembers().end()) { + locprop->getMembers()[name] = new LocalizedValueNode( + valueParser_.getLayer(), css::uno::Any()); + } else { + dynamic_cast< LocalizedValueNode * >( + i->second.get())->setValue( + valueParser_.getLayer(), css::uno::Any()); + } + state_.push(State(true)); } else { - dynamic_cast< LocalizedValueNode * >(i->second.get())->setValue( - valueParser_.getLayer(), css::uno::Any()); + valueParser_.separator_ = separator; + valueParser_.start(locprop, name); + pop = true; + } + if (trackPath_) { + recordModification(); + if (pop) { + path_.pop_back(); + } } - state_.push(State()); - } else { - valueParser_.separator_ = separator; - valueParser_.start(locprop, name); - } - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - modificationPath_.pop_back(); } break; case OPERATION_REMOVE: @@ -588,12 +628,8 @@ void XcuParser::handleLocpropValue( if (i != locprop->getMembers().end()) { locprop->getMembers().erase(i); } - state_.push(State()); - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - modificationPath_.pop_back(); - } + state_.push(State(true)); + recordModification(); break; default: throw css::uno::RuntimeException( @@ -643,6 +679,17 @@ void XcuParser::handleGroupProp(XmlReader & reader, GroupNode * group) { reader.getUrl()), css::uno::Reference< css::uno::XInterface >()); } + if (trackPath_) { + path_.push_back(name); + //TODO: This ignores locprop values for which specific include paths + // exist (i.e., for which contains(locprop path) = CONTAINS_SUBNODES): + if (partial_ != 0 && + partial_->contains(path_) != Partial::CONTAINS_NODE) + { + state_.push(State(true)); // ignored + return; + } + } NodeMap::iterator i(group->getMembers().find(name)); if (i == group->getMembers().end()) { handleUnknownGroupProp(reader, group, name, type, op, finalized); @@ -672,17 +719,10 @@ void XcuParser::handleUnknownGroupProp( XmlReader const & reader, GroupNode * group, rtl::OUString const & name, Type type, Operation operation, bool finalized) { - if (!group->isExtensible()) { - throw css::uno::RuntimeException( - (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unknown prop ")) + - name + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" in ")) + - reader.getUrl()), - css::uno::Reference< css::uno::XInterface >()); - } switch (operation) { case OPERATION_REPLACE: case OPERATION_FUSE: - { + if (group->isExtensible()) { if (type == TYPE_ERROR) { throw css::uno::RuntimeException( (rtl::OUString( @@ -701,17 +741,17 @@ void XcuParser::handleUnknownGroupProp( prop->setFinalized(valueParser_.getLayer()); } state_.push(State(prop, name, state_.top().locked)); - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - } + recordModification(); + break; } - break; + // fall through default: OSL_TRACE( - "ignoring modify or remove of unknown (presumably extension)" - " property"); - state_.push(State()); + "configmgr unknown property %s in %s", + rtl::OUStringToOString(name, RTL_TEXTENCODING_UTF8).getStr(), + rtl::OUStringToOString( + reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr()); + state_.push(State(true)); // ignored break; } } @@ -724,7 +764,7 @@ void XcuParser::handlePlainGroupProp( PropertyNode * property = dynamic_cast< PropertyNode * >( propertyIndex->second.get()); if (property->getLayer() > valueParser_.getLayer()) { - state_.push(State()); // ignored + state_.push(State(true)); // ignored return; } int finalizedLayer = std::min( @@ -751,10 +791,7 @@ void XcuParser::handlePlainGroupProp( property, (state_.top().locked || finalizedLayer < valueParser_.getLayer()))); - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - } + recordModification(); break; case OPERATION_REMOVE: if (!property->isExtension()) { @@ -767,12 +804,8 @@ void XcuParser::handlePlainGroupProp( css::uno::Reference< css::uno::XInterface >()); } group->getMembers().erase(propertyIndex); - state_.push(State()); // ignore children - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - modificationPath_.pop_back(); - } + state_.push(State(true)); // ignore children + recordModification(); break; } } @@ -782,7 +815,7 @@ void XcuParser::handleLocalizedGroupProp( rtl::OUString const & name, Type type, Operation operation, bool finalized) { if (property->getLayer() > valueParser_.getLayer()) { - state_.push(State()); // ignored + state_.push(State(true)); // ignored return; } int finalizedLayer = std::min( @@ -808,9 +841,6 @@ void XcuParser::handleLocalizedGroupProp( property, (state_.top().locked || finalizedLayer < valueParser_.getLayer()))); - if (modifications_ != 0) { - modificationPath_.push_back(name); - } break; case OPERATION_REPLACE: { @@ -824,10 +854,7 @@ void XcuParser::handleLocalizedGroupProp( replacement, name, (state_.top().locked || finalizedLayer < valueParser_.getLayer()))); - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - } + recordModification(); } break; case OPERATION_REMOVE: @@ -876,14 +903,24 @@ void XcuParser::handleGroupNode( reader.getUrl()), css::uno::Reference< css::uno::XInterface >()); } + if (trackPath_) { + path_.push_back(name); + if (partial_ != 0 && partial_->contains(path_) == Partial::CONTAINS_NOT) + { + state_.push(State(true)); // ignored + return; + } + } rtl::Reference< Node > child( Data::findNode(valueParser_.getLayer(), group->getMembers(), name)); if (!child.is()) { - throw css::uno::RuntimeException( - (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unknown node ")) + - name + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" in ")) + - reader.getUrl()), - css::uno::Reference< css::uno::XInterface >()); + OSL_TRACE( + "configmgr unknown node %s in %s", + rtl::OUStringToOString(name, RTL_TEXTENCODING_UTF8).getStr(), + rtl::OUStringToOString( + reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr()); + state_.push(State(true)); // ignored + return; } if (op != OPERATION_MODIFY && op != OPERATION_FUSE) { throw css::uno::RuntimeException( @@ -901,9 +938,6 @@ void XcuParser::handleGroupNode( State( child, state_.top().locked || finalizedLayer < valueParser_.getLayer())); - if (modifications_ != 0) { - modificationPath_.push_back(name); - } } void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) { @@ -958,6 +992,14 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) { reader.getUrl()), css::uno::Reference< css::uno::XInterface >()); } + if (trackPath_) { + path_.push_back(name); + if (partial_ != 0 && partial_->contains(path_) == Partial::CONTAINS_NOT) + { + state_.push(State(true)); // ignored + return; + } + } rtl::OUString templateName( xmldata::parseTemplateReference( component, hasNodeType, nodeType, &set->getDefaultTemplateName())); @@ -972,7 +1014,7 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) { css::uno::Reference< css::uno::XInterface >()); } rtl::Reference< Node > tmpl( - data_->getTemplate(valueParser_.getLayer(), templateName)); + data_.getTemplate(valueParser_.getLayer(), templateName)); if (!tmpl.is()) { throw css::uno::RuntimeException( (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("set member node ")) + @@ -993,7 +1035,7 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) { mandatoryLayer = std::min(mandatoryLayer, i->second->getMandatory()); i->second->setMandatory(mandatoryLayer); if (i->second->getLayer() > valueParser_.getLayer()) { - state_.push(State()); // ignored + state_.push(State(true)); // ignored return; } } @@ -1001,48 +1043,39 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) { case OPERATION_MODIFY: if (i == set->getMembers().end()) { OSL_TRACE("ignoring modify of unknown set member node"); - state_.push(State()); + state_.push(State(true)); // ignored } else { state_.push( State( i->second, (state_.top().locked || finalizedLayer < valueParser_.getLayer()))); - if (modifications_ != 0) { - modificationPath_.push_back(name); - } } break; case OPERATION_REPLACE: if (state_.top().locked || finalizedLayer < valueParser_.getLayer()) { - state_.push(State()); // ignored + state_.push(State(true)); // ignored } else { - rtl::Reference< Node > member(tmpl->clone()); + rtl::Reference< Node > member(tmpl->clone(true)); member->setLayer(valueParser_.getLayer()); member->setFinalized(finalizedLayer); member->setMandatory(mandatoryLayer); state_.push(State(member, name, false)); - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - } + recordModification(); } break; case OPERATION_FUSE: if (i == set->getMembers().end()) { if (state_.top().locked || finalizedLayer < valueParser_.getLayer()) { - state_.push(State()); // ignored + state_.push(State(true)); // ignored } else { - rtl::Reference< Node > member(tmpl->clone()); + rtl::Reference< Node > member(tmpl->clone(true)); member->setLayer(valueParser_.getLayer()); member->setFinalized(finalizedLayer); member->setMandatory(mandatoryLayer); state_.push(State(member, name, false)); - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - } + recordModification(); } } else { state_.push( @@ -1050,9 +1083,6 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) { i->second, (state_.top().locked || finalizedLayer < valueParser_.getLayer()))); - if (modifications_ != 0) { - modificationPath_.push_back(name); - } } break; case OPERATION_REMOVE: @@ -1064,14 +1094,19 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) { { set->getMembers().erase(i); } - state_.push(State()); - if (modifications_ != 0) { - modificationPath_.push_back(name); - modifications_->add(modificationPath_); - modificationPath_.pop_back(); - } + state_.push(State(true)); + recordModification(); break; } } +void XcuParser::recordModification() { + if (broadcastModifications_ != 0) { + broadcastModifications_->add(path_); + } + if (recordModifications_) { + data_.modifications.add(path_); + } +} + } diff --git a/configmgr/source/xcuparser.hxx b/configmgr/source/xcuparser.hxx index 21806edebe..64108451b4 100644 --- a/configmgr/source/xcuparser.hxx +++ b/configmgr/source/xcuparser.hxx @@ -49,6 +49,7 @@ namespace configmgr { class GroupNode; class LocalizedPropertyNode; class Modifications; +class Partial; class PropertyNode; class SetNode; struct Data; @@ -56,7 +57,9 @@ struct Span; class XcuParser: public Parser { public: - XcuParser(int layer, Data * data, Modifications * modifications); + XcuParser( + int layer, Data & data, Partial const * partial, + Modifications * broadcastModifications); private: virtual ~XcuParser(); @@ -105,36 +108,44 @@ private: void handleSetNode(XmlReader & reader, SetNode * set); + void recordModification(); + struct State { rtl::Reference< Node > node; // empty iff ignore or <items> rtl::OUString name; // empty and ignored if !insert bool ignore; bool insert; bool locked; + bool pop; - inline State(): ignore(true), insert(false), locked(false) {} + inline State(bool thePop): + ignore(true), insert(false), locked(false), pop(thePop) + {} inline State(rtl::Reference< Node > const & theNode, bool theLocked): - node(theNode), ignore(false), insert(false), locked(theLocked) + node(theNode), ignore(false), insert(false), locked(theLocked), + pop(true) {} inline State( rtl::Reference< Node > const & theNode, rtl::OUString const & theName, bool theLocked): node(theNode), name(theName), ignore(false), insert(true), - locked(theLocked) + locked(theLocked), pop(true) {} }; typedef std::stack< State > StateStack; ValueParser valueParser_; - Data * data_; - Modifications * modifications_; + Data & data_; + Partial const * partial_; + Modifications * broadcastModifications_; + bool recordModifications_; + bool trackPath_; rtl::OUString componentName_; StateStack state_; - Path modificationPath_; - rtl::OUString path_; + Path path_; }; } diff --git a/connectivity/prj/build.lst b/connectivity/prj/build.lst index dd386c7c71..0b15c06acf 100644 --- a/connectivity/prj/build.lst +++ b/connectivity/prj/build.lst @@ -1,4 +1,4 @@ -cn connectivity : shell l10n comphelper MOZ:moz SO:moz_prebuilt svl UNIXODBC:unixODBC unoil javaunohelper HSQLDB:hsqldb QADEVOOO:qadevOOo officecfg NSS:nss NULL +cn connectivity : shell l10n comphelper MOZ:moz SO:moz_prebuilt svl UNIXODBC:unixODBC unoil javaunohelper HSQLDB:hsqldb qadevOOo officecfg NSS:nss NULL cn connectivity usr1 - all cn_mkout NULL cn connectivity\inc nmake - all cn_inc NULL cn connectivity\com\sun\star\sdbcx\comp\hsqldb nmake - all cn_jhsqldbdb cn_hsqldb cn_inc NULL diff --git a/connectivity/qa/connectivity/tools/makefile.mk b/connectivity/qa/connectivity/tools/makefile.mk index 0f3c9c84b9..07490532a1 100644 --- a/connectivity/qa/connectivity/tools/makefile.mk +++ b/connectivity/qa/connectivity/tools/makefile.mk @@ -38,7 +38,6 @@ all: @echo "Java not available. Build skipped" .ELSE -.IF "$(BUILD_QADEVOOO)" == "YES" #----- compile .java files ----------------------------------------- JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunnerLight.jar @@ -61,8 +60,6 @@ ALL : ALLTAR ALL: ALLDEP .ENDIF -.ENDIF - .ENDIF # "$(SOLAR_JAVA)" == "" .INCLUDE : target.mk diff --git a/connectivity/source/drivers/calc/CTable.cxx b/connectivity/source/drivers/calc/CTable.cxx index 65505495cd..c1c2e90beb 100644 --- a/connectivity/source/drivers/calc/CTable.cxx +++ b/connectivity/source/drivers/calc/CTable.cxx @@ -347,14 +347,15 @@ void lcl_SetValue( ORowSetValue& rValue, const Reference<XSpreadsheet>& xSheet, switch (nType) { case DataType::VARCHAR: - if ( eCellType == CellContentType_TEXT ) + if ( eCellType == CellContentType_EMPTY ) + rValue.setNull(); + else { + // #i25840# still let Calc convert numbers to text const Reference<XText> xText( xCell, UNO_QUERY ); if ( xText.is() ) rValue = xText->getString(); - } // if ( eCellType == CellContentType_TEXT ) - else - rValue.setNull(); + } break; case DataType::DECIMAL: if ( eCellType == CellContentType_VALUE ) diff --git a/desktop/prj/build.lst b/desktop/prj/build.lst index 9253b4e82b..6f611926a0 100644 --- a/desktop/prj/build.lst +++ b/desktop/prj/build.lst @@ -1,4 +1,4 @@ -dt desktop : l10n sfx2 stoc BERKELEYDB:berkeleydb sysui SO:sysui_so BOOST:boost svx xmlhelp sal unoil officecfg configmgr NULL +dt desktop : l10n sfx2 stoc BERKELEYDB:berkeleydb sysui SO:sysui_so BOOST:boost svx xmlhelp sal unoil officecfg offuh NULL dt desktop usr1 - all dt_mkout NULL dt desktop\inc nmake - all dt_inc NULL dt desktop\prj get - all dt_prj NULL diff --git a/desktop/scripts/soffice.sh b/desktop/scripts/soffice.sh index 8c25257873..af6a9df908 100644 --- a/desktop/scripts/soffice.sh +++ b/desktop/scripts/soffice.sh @@ -114,10 +114,6 @@ if [ -f /etc/adabasrc ]; then . /etc/adabasrc fi -# Set PATH so that crash_report is found: -PATH=$sd_prog${PATH+:$PATH} -export PATH - # execute soffice binary "$sd_prog/$sd_binary" "$@" & trap 'kill -9 $!' TERM diff --git a/desktop/scripts/unopkg.sh b/desktop/scripts/unopkg.sh index 491b706b58..5a8ee262ae 100644 --- a/desktop/scripts/unopkg.sh +++ b/desktop/scripts/unopkg.sh @@ -70,10 +70,6 @@ unset XENVIRONMENT # uncomment line below if you encounter problems starting soffice on your system # SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS -# Set PATH so that crash_report is found: -PATH=$sd_prog${PATH+:$PATH} -export PATH - # execute binary exec "$sd_prog/unopkg.bin" "$@" \ "-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc" diff --git a/desktop/source/app/appfirststart.cxx b/desktop/source/app/appfirststart.cxx index 90818009e1..9e2d865184 100644 --- a/desktop/source/app/appfirststart.cxx +++ b/desktop/source/app/appfirststart.cxx @@ -108,6 +108,9 @@ OUString Desktop::GetLicensePath() /* Check if we need to accept license. */ sal_Bool Desktop::LicenseNeedsAcceptance() { + // Don't show a license + return sal_False; +/* sal_Bool bShowLicense = sal_True; sal_Int32 nOpenSourceContext = 0; try @@ -122,6 +125,7 @@ sal_Bool Desktop::LicenseNeedsAcceptance() bShowLicense = sal_False; return bShowLicense; +*/ } /* Local function - was the wizard completed already? */ diff --git a/desktop/source/deployment/makefile.mk b/desktop/source/deployment/makefile.mk index 7eda0f582e..173ff35bec 100644 --- a/desktop/source/deployment/makefile.mk +++ b/desktop/source/deployment/makefile.mk @@ -80,8 +80,7 @@ SHL1STDLIBS = \ $(SVLLIB) \ $(UNOTOOLSLIB) \ $(DEPLOYMENTMISCLIB) \ - $(HELPLINKERLIB) \ - $(CONFIGMGRLIB) + $(HELPLINKERLIB) SHL1DEPN = SHL1IMPLIB = i$(TARGET) diff --git a/desktop/source/deployment/manager/dp_manager.cxx b/desktop/source/deployment/manager/dp_manager.cxx index 6418e5c32c..8a3bd27f56 100644 --- a/desktop/source/deployment/manager/dp_manager.cxx +++ b/desktop/source/deployment/manager/dp_manager.cxx @@ -542,11 +542,19 @@ OUString PackageManagerImpl::insertToActivationLayer( { // inflate content: ::rtl::OUStringBuffer buf; - buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.zip://") ); - buf.append( ::rtl::Uri::encode( sourceContent.getURL(), - rtl_UriCharClassRegName, - rtl_UriEncodeIgnoreEscapes, - RTL_TEXTENCODING_UTF8 ) ); + if (!sourceContent.isFolder()) + { + buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.zip://") ); + buf.append( ::rtl::Uri::encode( sourceContent.getURL(), + rtl_UriCharClassRegName, + rtl_UriEncodeIgnoreEscapes, + RTL_TEXTENCODING_UTF8 ) ); + } + else + { + //Folder. No need to unzip, just copy + buf.append(sourceContent.getURL()); + } buf.append( static_cast<sal_Unicode>('/') ); sourceContent = ::ucbhelper::Content( buf.makeStringAndClear(), xCmdEnv ); diff --git a/desktop/source/deployment/misc/dp_dependencies.cxx b/desktop/source/deployment/misc/dp_dependencies.cxx index d073f4121e..599826a957 100644 --- a/desktop/source/deployment/misc/dp_dependencies.cxx +++ b/desktop/source/deployment/misc/dp_dependencies.cxx @@ -56,17 +56,13 @@ namespace css = ::com::sun::star; static char const xmlNamespace[] = "http://openoffice.org/extensions/description/2006"; -::dp_misc::Order compareWithVersion(::rtl::OUString const & version) { +bool satisfiesMinimalVersion(::rtl::OUString const & version) { ::rtl::OUString v( RTL_CONSTASCII_USTRINGPARAM( "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":Version:OOOPackageVersion}")); ::rtl::Bootstrap::expandMacros(v); - return ::dp_misc::compareVersions(v, version); -} - -bool satisfiesMinimalVersion(::rtl::OUString const & version) { - return compareWithVersion(version) != ::dp_misc::LESS; + return ::dp_misc::compareVersions(v, version) != ::dp_misc::LESS; } } @@ -102,8 +98,14 @@ check(::dp_misc::DescriptionInfoset const & infoset) { RTL_CONSTASCII_STRINGPARAM( "OpenOffice.org-maximal-version"))) { + ::rtl::OUString v( + RTL_CONSTASCII_USTRINGPARAM( + "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") + ":Version:OOOBaseVersion}")); + ::rtl::Bootstrap::expandMacros(v); sat = - compareWithVersion( + ::dp_misc::compareVersions( + v, e->getAttribute( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")))) != ::dp_misc::GREATER; diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx index 187ef14a17..579cc8a051 100644 --- a/desktop/source/deployment/misc/dp_platform.cxx +++ b/desktop/source/deployment/misc/dp_platform.cxx @@ -47,8 +47,11 @@ #define PLATFORM_LINUX_MIPS_EL "linux_mips_el" #define PLATFORM_LINUX_MIPS_EB "linux_mips_eb" #define PLATFORM_LINUX_IA64 "linux_ia64" +#define PLATFORM_LINUX_M68K "linux_m68k" #define PLATFORM_LINUX_S390 "linux_s390" #define PLATFORM_LINUX_S390x "linux_s390x" +#define PLATFORM_LINUX_HPPA "linux_hppa" +#define PLATFORM_LINUX_ALPHA "linux_alpha" @@ -142,10 +145,16 @@ namespace ret = checkOSandCPU(OUSTR("Linux"), OUSTR("MIPS_EB")); else if (token.equals(OUSTR(PLATFORM_LINUX_IA64))) ret = checkOSandCPU(OUSTR("Linux"), OUSTR("IA64")); + else if (token.equals(OUSTR(PLATFORM_LINUX_M68K))) + ret = checkOSandCPU(OUSTR("Linux"), OUSTR("M68K")); else if (token.equals(OUSTR(PLATFORM_LINUX_S390))) ret = checkOSandCPU(OUSTR("Linux"), OUSTR("S390")); else if (token.equals(OUSTR(PLATFORM_LINUX_S390x))) ret = checkOSandCPU(OUSTR("Linux"), OUSTR("S390x")); + else if (token.equals(OUSTR(PLATFORM_LINUX_HPPA))) + ret = checkOSandCPU(OUSTR("Linux"), OUSTR("HPPA")); + else if (token.equals(OUSTR(PLATFORM_LINUX_ALPHA))) + ret = checkOSandCPU(OUSTR("Linux"), OUSTR("ALPHA")); else if (token.equals(OUSTR(PLATFORM_SOLARIS_SPARC))) ret = checkOSandCPU(OUSTR("Solaris"), OUSTR("SPARC")); else if (token.equals(OUSTR(PLATFORM_SOLARIS_SPARC64))) diff --git a/desktop/source/deployment/registry/configuration/dp_configuration.cxx b/desktop/source/deployment/registry/configuration/dp_configuration.cxx index cef5d488f6..f52a05b529 100644 --- a/desktop/source/deployment/registry/configuration/dp_configuration.cxx +++ b/desktop/source/deployment/registry/configuration/dp_configuration.cxx @@ -45,9 +45,9 @@ #include "ucbhelper/content.hxx" #include "comphelper/anytostring.hxx" #include "comphelper/servicedecl.hxx" -#include "configmgr/update.hxx" #include "xmlscript/xml_helper.hxx" #include "svl/inettype.hxx" +#include "com/sun/star/configuration/Update.hpp" #include "com/sun/star/ucb/NameClash.hpp" #include "com/sun/star/io/XActiveDataSink.hpp" #include "com/sun/star/lang/WrappedTargetRuntimeException.hpp" @@ -645,14 +645,16 @@ void BackendImpl::PackageImpl::processPackage_( { if (m_isSchema) { - configmgr::update::insertExtensionXcsFile( - that->m_eContext == CONTEXT_SHARED, expandUnoRcUrl(url)); + com::sun::star::configuration::Update::get( + that->m_xComponentContext)->insertExtensionXcsFile( + that->m_eContext == CONTEXT_SHARED, expandUnoRcUrl(url)); } else { url = replaceOrigin(url, xCmdEnv); - configmgr::update::insertExtensionXcuFile( - that->m_eContext == CONTEXT_SHARED, expandUnoRcUrl(url)); + com::sun::star::configuration::Update::get( + that->m_xComponentContext)->insertExtensionXcuFile( + that->m_eContext == CONTEXT_SHARED, expandUnoRcUrl(url)); } that->addToConfigmgrIni( m_isSchema, url, xCmdEnv ); diff --git a/desktop/source/deployment/registry/dp_registry.cxx b/desktop/source/deployment/registry/dp_registry.cxx index c20a8835f6..fa4fe53c09 100644 --- a/desktop/source/deployment/registry/dp_registry.cxx +++ b/desktop/source/deployment/registry/dp_registry.cxx @@ -181,6 +181,7 @@ OUString normalizeMediaType( OUString const & mediaType ) } //______________________________________________________________________________ + void PackageRegistryImpl::insertBackend( Reference<deployment::XPackageRegistry> const & xBackend ) { @@ -201,7 +202,8 @@ void PackageRegistryImpl::insertBackend( ::std::pair<t_string2registry::iterator, bool> mb_insertion( m_mediaType2backend.insert( t_string2registry::value_type( mediaType, xBackend ) ) ); - if (mb_insertion.second) { + if (mb_insertion.second) + { // add parameterless media-type, too: sal_Int32 semi = mediaType.indexOf( ';' ); if (semi >= 0) { @@ -210,9 +212,13 @@ void PackageRegistryImpl::insertBackend( mediaType.copy( 0, semi ), xBackend ) ); } const OUString fileFilter( xPackageType->getFileFilter() ); + //The package backend shall also be called to determine the mediatype + //(XPackageRegistry.bindPackage) when the URL points to a directory. + const bool bExtension = mediaType.equals(OUSTR("application/vnd.sun.star.package-bundle")); if (fileFilter.getLength() == 0 || fileFilter.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("*.*") ) || - fileFilter.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("*") )) + fileFilter.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("*") ) || + bExtension) { m_ambiguousBackends.insert( xBackend ); } @@ -351,7 +357,10 @@ Reference<deployment::XPackageRegistry> PackageRegistryImpl::create( } } - // insert bundle be: + // Insert bundle back-end. + // Always register as last, because we want to add extensions also as folders + // and as a default we accept every folder, which was not recognized by the other + // backends. that->insertBackend( ::dp_registry::backend::bundle::create( that, context, cachePath, readOnly, xComponentContext ) ); @@ -445,7 +454,8 @@ Reference<deployment::XPackage> PackageRegistryImpl::bindPackage( { ::ucbhelper::Content ucbContent; if (create_ucb_content( - &ucbContent, url, xCmdEnv, false /* no throw */ )) + &ucbContent, url, xCmdEnv, false /* no throw */ ) + && !ucbContent.isFolder()) { OUString title( ucbContent.getPropertyValue( StrTitle::get() ).get<OUString>() ); diff --git a/desktop/source/deployment/registry/package/dp_package.cxx b/desktop/source/deployment/registry/package/dp_package.cxx index 8a61eb026f..48de481bab 100644 --- a/desktop/source/deployment/registry/package/dp_package.cxx +++ b/desktop/source/deployment/registry/package/dp_package.cxx @@ -287,7 +287,7 @@ BackendImpl::BackendImpl( m_xBundleTypeInfo->getShortDescription(), RID_IMG_DEF_PACKAGE_BUNDLE, RID_IMG_DEF_PACKAGE_BUNDLE_HC ) ), - m_typeInfos( 2 ) + m_typeInfos(2) { m_typeInfos[ 0 ] = m_xBundleTypeInfo; m_typeInfos[ 1 ] = m_xLegacyBundleTypeInfo; @@ -342,17 +342,32 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_( ::ucbhelper::Content ucbContent; if (create_ucb_content( &ucbContent, url, xCmdEnv )) { - const OUString title( ucbContent.getPropertyValue( - StrTitle::get() ).get<OUString>() ); - if (title.endsWithIgnoreAsciiCaseAsciiL( - RTL_CONSTASCII_STRINGPARAM(".oxt") ) || - title.endsWithIgnoreAsciiCaseAsciiL( - RTL_CONSTASCII_STRINGPARAM(".uno.pkg") )) - mediaType = OUSTR("application/vnd.sun.star.package-bundle"); - else if (title.endsWithIgnoreAsciiCaseAsciiL( - RTL_CONSTASCII_STRINGPARAM(".zip") )) - mediaType = - OUSTR("application/vnd.sun.star.legacy-package-bundle"); + if (ucbContent.isFolder()) + { + //Every .oxt, uno.pkg file must contain a META-INF folder + ::ucbhelper::Content metaInfContent; + if (create_ucb_content( + &metaInfContent, makeURL( url, OUSTR("META-INF/manifest.xml") ), + xCmdEnv, false /* no throw */ )) + { + mediaType = OUSTR("application/vnd.sun.star.package-bundle"); + } + //No support of legacy bundles, because every folder could be one. + } + else + { + const OUString title( ucbContent.getPropertyValue( + StrTitle::get() ).get<OUString>() ); + if (title.endsWithIgnoreAsciiCaseAsciiL( + RTL_CONSTASCII_STRINGPARAM(".oxt") ) || + title.endsWithIgnoreAsciiCaseAsciiL( + RTL_CONSTASCII_STRINGPARAM(".uno.pkg") )) + mediaType = OUSTR("application/vnd.sun.star.package-bundle"); + else if (title.endsWithIgnoreAsciiCaseAsciiL( + RTL_CONSTASCII_STRINGPARAM(".zip") )) + mediaType = + OUSTR("application/vnd.sun.star.legacy-package-bundle"); + } } if (mediaType.getLength() == 0) throw lang::IllegalArgumentException( @@ -1303,7 +1318,7 @@ void BackendImpl::PackageImpl::scanBundle( { OSL_ENSURE( 0, "### missing META-INF/manifest.xml file!" ); return; -} + } const lang::Locale officeLocale = getOfficeLocale(); diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx index 80f9b53681..0b64e7620d 100755 --- a/desktop/source/migration/migration.cxx +++ b/desktop/source/migration/migration.cxx @@ -28,6 +28,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_desktop.hxx" +#include <map> +#include <new> +#include <set> + #include "migration.hxx" #include "migration_impl.hxx" #include "cfgfilter.hxx" @@ -37,6 +41,7 @@ #include <comphelper/sequence.hxx> #include <unotools/bootstrap.hxx> #include <rtl/bootstrap.hxx> +#include <rtl/uri.hxx> #include <tools/config.hxx> #include <i18npool/lang.h> #include <tools/urlobj.hxx> @@ -46,12 +51,11 @@ #include <osl/security.hxx> #include <unotools/configmgr.hxx> +#include <com/sun/star/configuration/Update.hpp> #include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/task/XJob.hpp> #include <com/sun/star/beans/NamedValue.hpp> #include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/configuration/backend/XLayer.hpp> -#include <com/sun/star/configuration/backend/XSingleLayerStratum.hpp> #include <com/sun/star/util/XRefreshable.hpp> #include <com/sun/star/util/XChangesBatch.hpp> #include <com/sun/star/util/XStringSubstitution.hpp> @@ -64,8 +68,6 @@ using namespace com::sun::star::lang; using namespace com::sun::star::beans; using namespace com::sun::star::util; using namespace com::sun::star::container; -using namespace com::sun::star::configuration; -using namespace com::sun::star::configuration::backend; using com::sun::star::uno::Exception; using namespace com::sun::star; @@ -154,18 +156,15 @@ MigrationImpl::~MigrationImpl() sal_Bool MigrationImpl::doMigration() { - // compile file and service list for migration - m_vrFileList = compileFileList(); - m_vrServiceList = compileServiceList(); + // compile file list for migration + m_vrFileList = compileFileList(); sal_Bool result = sal_False; try{ copyFiles(); // execute the migration items from Setup.xcu - // and refresh the cache copyConfig(); - refresh(); // execute custom migration services from Setup.xcu // and refresh the cache @@ -232,7 +231,7 @@ static void insertSorted(migrations_available& rAvailableMigrations, supported_m { rAvailableMigrations.insert(pIter, aSupportedMigration ); bInserted = true; - break; + break; // i111193: insert invalidates iterator! } ++pIter; } @@ -333,13 +332,6 @@ migrations_vr MigrationImpl::readMigrationSteps(const ::rtl::OUString& rMigratio tmpStep.excludeExtensions.push_back(tmpSeq[j]); } - // config components - if (tmpAccess->getByName(OUString::createFromAscii("ServiceConfigComponents")) >>= tmpSeq) - { - for (sal_Int32 j=0; j<tmpSeq.getLength(); j++) - tmpStep.configComponents.push_back(tmpSeq[j]); - } - // generic service tmpAccess->getByName(OUString::createFromAscii("MigrationService")) >>= tmpStep.service; @@ -526,77 +518,104 @@ strings_vr MigrationImpl::compileFileList() return vrResult; } +namespace { -void MigrationImpl::copyConfig() -{ - try { - // 1. get a list of all components from hierachy browser - uno::Reference< XJob > xBrowser(m_xFactory->createInstance( - OUString::createFromAscii("com.sun.star.configuration.backend.LocalHierarchyBrowser")), uno::UNO_QUERY_THROW); - - uno::Sequence< NamedValue > seqArgs(2); - seqArgs[0] = NamedValue( - OUString::createFromAscii("LayerDataUrl"), - uno::makeAny(m_aInfo.userdata + OUString::createFromAscii("/user/registry"))); - seqArgs[1] = NamedValue( - OUString::createFromAscii("FetchComponentNames"), - uno::makeAny(sal_True)); - - // execute the search - uno::Any aResult = xBrowser->execute(seqArgs); - uno::Sequence< OUString > seqComponents; - aResult >>= seqComponents; - OSL_ENSURE(seqComponents.getLength()>0, "MigrationImpl::copyConfig(): no config components available"); - - // 2. create an importer - uno::Reference< XJob > xImporter(m_xFactory->createInstance( - OUString::createFromAscii("com.sun.star.configuration.backend.LocalDataImporter")), uno::UNO_QUERY_THROW); - - // 3. for each migration step... - uno::Sequence< NamedValue > importerArgs(3); - importerArgs[0] = NamedValue( - OUString::createFromAscii("LayerDataUrl"), - uno::makeAny(m_aInfo.userdata + OUString::createFromAscii("/user/registry"))); - importerArgs[1] = NamedValue( - OUString::createFromAscii("LayerFilter"), - uno::Any()); - importerArgs[2] = NamedValue( - OUString::createFromAscii("Component"), - uno::Any()); - - migrations_v::const_iterator i_mig = m_vrMigrations->begin(); - while (i_mig != m_vrMigrations->end()) - { - // a. create config filter for step - uno::Reference< XInitialization > xFilter( - new CConfigFilter(&(i_mig->includeConfig), &(i_mig->excludeConfig))); - importerArgs[1].Value = uno::makeAny(xFilter); +struct componentParts { + std::set< rtl::OUString > includedPaths; + std::set< rtl::OUString > excludedPaths; +}; - // b. run each importer with config filter - for (sal_Int32 i=0; i<seqComponents.getLength(); i++) - { - OUString component = seqComponents[i]; - importerArgs[2].Value = uno::makeAny(seqComponents[i]); - try { - aResult = xImporter->execute(importerArgs); - Exception myException; - if (aResult >>= myException) throw myException; - } catch(Exception& aException) { - OString aMsg("Exception in config layer import.\ncomponent: "); - aMsg += OUStringToOString(seqComponents[i], RTL_TEXTENCODING_ASCII_US); - aMsg += "\nmessage: "; - aMsg += OUStringToOString(aException.Message, RTL_TEXTENCODING_ASCII_US); - OSL_ENSURE(sal_False, aMsg.getStr()); - } +typedef std::map< rtl::OUString, componentParts > Components; + +bool getComponent(rtl::OUString const & path, rtl::OUString * component) { + OSL_ASSERT(component != 0); + if (path.getLength() == 0 || path[0] != '/') { + OSL_TRACE( + ("configuration migration in/exclude path %s ignored (does not" + " start with slash)"), + rtl::OUStringToOString(path, RTL_TEXTENCODING_UTF8).getStr()); + return false; + } + sal_Int32 i = path.indexOf('/', 1); + *component = i < 0 ? path.copy(1) : path.copy(1, i - 1); + return true; +} + +uno::Sequence< rtl::OUString > setToSeq(std::set< rtl::OUString > const & set) { + std::set< rtl::OUString >::size_type n = set.size(); + if (n > SAL_MAX_INT32) { + throw std::bad_alloc(); + } + uno::Sequence< rtl::OUString > seq(static_cast< sal_Int32 >(n)); + sal_Int32 i = 0; + for (std::set< rtl::OUString >::const_iterator j(set.begin()); + j != set.end(); ++j) + { + seq[i++] = *j; + } + return seq; +} + +} + +void MigrationImpl::copyConfig() { + Components comps; + for (migrations_v::const_iterator i(m_vrMigrations->begin()); + i != m_vrMigrations->end(); ++i) + { + for (strings_v::const_iterator j(i->includeConfig.begin()); + j != i->includeConfig.end(); ++j) + { + rtl::OUString comp; + if (getComponent(*j, &comp)) { + comps[comp].includedPaths.insert(*j); + } + } + for (strings_v::const_iterator j(i->excludeConfig.begin()); + j != i->excludeConfig.end(); ++j) + { + rtl::OUString comp; + if (getComponent(*j, &comp)) { + comps[comp].excludedPaths.insert(*j); } - i_mig++; } } - catch (Exception& e) - { - OString aMsg("Exception in config layer import.\nmessage: "); - aMsg += OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US); - OSL_ENSURE(sal_False, aMsg.getStr()); + for (Components::const_iterator i(comps.begin()); i != comps.end(); ++i) { + if (!i->second.includedPaths.empty()) { + rtl::OUStringBuffer buf(m_aInfo.userdata); + buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/user/registry/data")); + sal_Int32 n = 0; + do { + rtl::OUString seg(i->first.getToken(0, '.', n)); + rtl::OUString enc( + rtl::Uri::encode( + seg, rtl_UriCharClassPchar, rtl_UriEncodeStrict, + RTL_TEXTENCODING_UTF8)); + if (enc.getLength() == 0 && seg.getLength() != 0) { + OSL_TRACE( + ("configuration migration component %s ignored (cannot" + " be encoded as file path)"), + rtl::OUStringToOString( + i->first, RTL_TEXTENCODING_UTF8).getStr()); + goto next; + } + buf.append(sal_Unicode('/')); + buf.append(enc); + } while (n >= 0); + buf.appendAscii(RTL_CONSTASCII_STRINGPARAM(".xcu")); + configuration::Update::get( + comphelper::getProcessComponentContext())-> + insertModificationXcuFile( + buf.makeStringAndClear(), setToSeq(i->second.includedPaths), + setToSeq(i->second.excludedPaths)); + } else { + OSL_TRACE( + ("configuration migration component %s ignored (only excludes," + " no includes)"), + rtl::OUStringToOString( + i->first, RTL_TEXTENCODING_UTF8).getStr()); + } + next:; } } @@ -705,17 +724,8 @@ void MigrationImpl::copyFiles() void MigrationImpl::runServices() { - //create stratum for old user layer - OUString aOldLayerURL = m_aInfo.userdata; - aOldLayerURL += OUString::createFromAscii("/user/registry"); - OUString aStratumSvc = OUString::createFromAscii("com.sun.star.configuration.backend.LocalSingleStratum"); - uno::Sequence< uno::Any > stratumArgs(1); - stratumArgs[0] = uno::makeAny(aOldLayerURL); - uno::Reference< XSingleLayerStratum> xStartum( m_xFactory->createInstanceWithArguments( - aStratumSvc, stratumArgs), uno::UNO_QUERY); - // Build argument array - uno::Sequence< uno::Any > seqArguments(4); + uno::Sequence< uno::Any > seqArguments(3); seqArguments[0] = uno::makeAny(NamedValue( OUString::createFromAscii("Productname"), uno::makeAny(m_aInfo.productname))); @@ -736,34 +746,13 @@ void MigrationImpl::runServices() try { - // create access to old configuration components in the user layer - // that were requested by the migration service - uno::Sequence< NamedValue > seqComponents(i_mig->configComponents.size()); - strings_v::const_iterator i_comp = i_mig->configComponents.begin(); - sal_Int32 i = 0; - while (i_comp != i_mig->configComponents.end() && xStartum.is()) - { - // create Layer for i_comp - seqComponents[i] = NamedValue( - *i_comp, uno::makeAny(xStartum->getLayer(*i_comp, OUString()))); - - // next component - i_comp++; - i++; - } - - // set old config argument - seqArguments[2] = uno::makeAny(NamedValue( - OUString::createFromAscii("OldConfiguration"), - uno::makeAny(seqComponents))); - // set black list for extension migration uno::Sequence< rtl::OUString > seqExtBlackList; sal_uInt32 nSize = i_mig->excludeExtensions.size(); if ( nSize > 0 ) seqExtBlackList = comphelper::arrayToSequence< ::rtl::OUString >( &i_mig->excludeExtensions[0], nSize ); - seqArguments[3] = uno::makeAny(NamedValue( + seqArguments[2] = uno::makeAny(NamedValue( OUString::createFromAscii("ExtensionBlackList"), uno::makeAny( seqExtBlackList ))); @@ -792,17 +781,4 @@ void MigrationImpl::runServices() } } - -strings_vr MigrationImpl::compileServiceList() -{ - strings_vr vrResult(new strings_v); - migrations_v::const_iterator i_migr = m_vrMigrations->begin(); - while (i_migr != m_vrMigrations->end()) - { - vrResult->push_back(i_migr->service); - i_migr++; - } - return vrResult; -} - } // namespace desktop diff --git a/desktop/source/migration/migration_impl.hxx b/desktop/source/migration/migration_impl.hxx index a1533212ed..9a2980faeb 100644 --- a/desktop/source/migration/migration_impl.hxx +++ b/desktop/source/migration/migration_impl.hxx @@ -64,7 +64,6 @@ struct migration_step strings_v excludeFiles; strings_v includeConfig; strings_v excludeConfig; - strings_v configComponents; strings_v includeExtensions; strings_v excludeExtensions; rtl::OUString service; @@ -92,8 +91,6 @@ private: migrations_vr m_vrMigrations; // list of all migration specs from config install_info m_aInfo; // info about the version being migrated strings_vr m_vrFileList; // final list of files to be copied - strings_vr m_vrConfigList; // final list of nodes to be copied - strings_vr m_vrServiceList; // final list of services to be called // functions to control the migration process bool readAvailableMigrations(migrations_available&); @@ -101,8 +98,6 @@ private: sal_Int32 findPreferedMigrationProcess(const migrations_available&); install_info findInstallation(const strings_v& rVersions); strings_vr compileFileList(); - strings_vr compileConfigList(); - strings_vr compileServiceList(); // helpers void substract(strings_v& va, const strings_v& vb_c) const; diff --git a/desktop/test/deployment/boxt/Addons.xcu b/desktop/test/deployment/boxt/Addons.xcu new file mode 100644 index 0000000000..3df7e2de27 --- /dev/null +++ b/desktop/test/deployment/boxt/Addons.xcu @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--********************************************************************** +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +**********************************************************************--> + +<o:component-data xmlns:o="http://openoffice.org/2001/registry" + o:package="org.openoffice.Office" o:name="Addons"> + <node o:name="AddonUI"> + <node o:name="OfficeMenuBar"> + <node o:name="org.openoffice.test.desktop.deployment.boxt" o:op="replace"> + <prop o:name="Title" xml:lang="en-US"> + <value>boxt</value> + </prop> + <node o:name="Submenu"> + <node o:name="1" o:op="replace"> + <prop o:name="URL"> + <value>vnd.org.openoffice.test.desktop.deployment.boxt:</value> + </prop> + <prop o:name="Title" xml:lang="en-US"> + <value>boxt</value> + </prop> + </node> + </node> + </node> + </node> + </node> +</o:component-data> diff --git a/configmgr/inc/configmgr/detail/configmgrdllapi.hxx b/desktop/test/deployment/boxt/ProtocolHandler.xcu index 6eb2ea7bc9..fe448aedbe 100644 --- a/configmgr/inc/configmgr/detail/configmgrdllapi.hxx +++ b/desktop/test/deployment/boxt/ProtocolHandler.xcu @@ -1,4 +1,5 @@ -/************************************************************************* +<?xml version="1.0" encoding="UTF-8"?> +<!--********************************************************************** * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -23,19 +24,15 @@ * <http://www.openoffice.org/license.html> * for a copy of the LGPLv3 License. * -************************************************************************/ +**********************************************************************--> -#ifndef INCLUDED_CONFIGMGR_DETAIL_CONFIGMGRDLLAPI_HXX -#define INCLUDED_CONFIGMGR_DETAIL_CONFIGMGRDLLAPI_HXX - -#include "sal/config.h" - -#include "sal/types.h" - -#if defined OOO_DLLIMPLEMENTATION_CONFIGMGR -#define OOO_DLLPUBLIC_CONFIGMGR SAL_DLLPUBLIC_EXPORT -#else -#define OOO_DLLPUBLIC_CONFIGMGR SAL_DLLPUBLIC_IMPORT -#endif - -#endif +<o:component-data xmlns:o="http://openoffice.org/2001/registry" + o:package="org.openoffice.Office" o:name="ProtocolHandler"> + <node o:name="HandlerSet"> + <node o:name="com.sun.star.test.deployment.boxt" o:op="replace"> + <prop o:name="Protocols"> + <value>vnd.org.openoffice.test.desktop.deployment.boxt:*</value> + </prop> + </node> + </node> +</o:component-data> diff --git a/desktop/test/deployment/boxt/boxt.cxx b/desktop/test/deployment/boxt/boxt.cxx new file mode 100644 index 0000000000..dc82c0c004 --- /dev/null +++ b/desktop/test/deployment/boxt/boxt.cxx @@ -0,0 +1,235 @@ +/************************************************************************* +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +************************************************************************/ + +#include "precompiled_desktop.hxx" +#include "sal/config.h" + +#include "boost/noncopyable.hpp" +#include "com/sun/star/beans/PropertyValue.hpp" +#include "com/sun/star/frame/DispatchDescriptor.hpp" +#include "com/sun/star/frame/XDispatch.hpp" +#include "com/sun/star/frame/XDispatchProvider.hpp" +#include "com/sun/star/frame/XStatusListener.hpp" +#include "com/sun/star/lang/XServiceInfo.hpp" +#include "com/sun/star/lang/XSingleComponentFactory.hpp" +#include "com/sun/star/uno/Any.hxx" +#include "com/sun/star/uno/Exception.hpp" +#include "com/sun/star/uno/Reference.hxx" +#include "com/sun/star/uno/RuntimeException.hpp" +#include "com/sun/star/uno/Sequence.hxx" +#include "com/sun/star/uno/XComponentContext.hpp" +#include "com/sun/star/uno/XInterface.hpp" +#include "com/sun/star/util/URL.hpp" +#include "cppuhelper/factory.hxx" +#include "cppuhelper/implbase1.hxx" +#include "cppuhelper/implbase3.hxx" +#include "cppuhelper/implementationentry.hxx" +#include "cppuhelper/weak.hxx" +#include "filter/msfilter/countryid.hxx" +#include "osl/diagnose.h" +#include "rtl/ustring.h" +#include "rtl/ustring.hxx" +#include "sal/types.h" +#include "uno/lbnames.h" +#include "vcl/svapp.hxx" + +namespace { + +namespace css = com::sun::star; + +namespace service { + +rtl::OUString getImplementationName() { + return rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.test.deployment.boxt")); +} + +css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { + rtl::OUString name( + RTL_CONSTASCII_USTRINGPARAM("com.sun.star.test.deployment.boxt")); + return css::uno::Sequence< rtl::OUString >(&name, 1); +} + +} + +class Service: + public cppu::WeakImplHelper3< + css::lang::XServiceInfo, css::frame::XDispatchProvider, + css::frame::XDispatch >, + private boost::noncopyable +{ +public: + Service() {} + +private: + virtual ~Service() {} + + virtual rtl::OUString SAL_CALL getImplementationName() + throw (css::uno::RuntimeException) + { return service::getImplementationName(); } + + virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName) + throw (css::uno::RuntimeException) + { return ServiceName == getSupportedServiceNames()[0]; } //TODO + + virtual css::uno::Sequence< rtl::OUString > SAL_CALL + getSupportedServiceNames() throw (css::uno::RuntimeException) + { return service::getSupportedServiceNames(); } + + virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch( + css::util::URL const &, rtl::OUString const &, sal_Int32) + throw (css::uno::RuntimeException) + { return this; } + + virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > + SAL_CALL queryDispatches( + css::uno::Sequence< css::frame::DispatchDescriptor > const & Requests) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL dispatch( + css::util::URL const &, + css::uno::Sequence< css::beans::PropertyValue > const &) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL addStatusListener( + css::uno::Reference< css::frame::XStatusListener > const &, + css::util::URL const &) + throw (css::uno::RuntimeException) + {} + + virtual void SAL_CALL removeStatusListener( + css::uno::Reference< css::frame::XStatusListener > const &, + css::util::URL const &) + throw (css::uno::RuntimeException) + {} +}; + +css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > +Service::queryDispatches( + css::uno::Sequence< css::frame::DispatchDescriptor > const & Requests) + throw (css::uno::RuntimeException) +{ + css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > s( + Requests.getLength()); + for (sal_Int32 i = 0; i < s.getLength(); ++i) { + s[i] = queryDispatch( + Requests[i].FeatureURL, Requests[i].FrameName, + Requests[i].SearchFlags); + } + return s; +} + +void Service::dispatch( + css::util::URL const &, + css::uno::Sequence< css::beans::PropertyValue > const &) + throw (css::uno::RuntimeException) +{ + msfilter::ConvertCountryToLanguage(msfilter::COUNTRY_DONTKNOW); + // link against some obscure library that is unlikely already loaded + Application::ShowNativeErrorBox( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("boxt")), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("test"))); +} + +class Factory: + public cppu::WeakImplHelper1< css::lang::XSingleComponentFactory >, + private boost::noncopyable +{ +public: + Factory() {} + +private: + virtual ~Factory() {} + + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL + createInstanceWithContext( + css::uno::Reference< css::uno::XComponentContext > const &) + throw (css::uno::Exception, css::uno::RuntimeException) + { return static_cast< cppu::OWeakObject * >(new Service); } + + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL + createInstanceWithArgumentsAndContext( + css::uno::Sequence< css::uno::Any > const &, + css::uno::Reference< css::uno::XComponentContext > const & Context) + throw (css::uno::Exception, css::uno::RuntimeException) + { return createInstanceWithContext(Context); } +}; + +css::uno::Reference< css::uno::XInterface > SAL_CALL dummy( + css::uno::Reference< css::uno::XComponentContext > const &) + SAL_THROW((css::uno::Exception)) +{ + OSL_ASSERT(false); + return css::uno::Reference< css::uno::XInterface >(); +} + +rtl::OUString SAL_CALL getImplementationName() { + return rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.test.deployment.boxt")); +} + +css::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() { + rtl::OUString name( + RTL_CONSTASCII_USTRINGPARAM("com.sun.star.test.deployment.boxt")); + return css::uno::Sequence< rtl::OUString >(&name, 1); +} + +css::uno::Reference< css::lang::XSingleComponentFactory > SAL_CALL +createFactory( + cppu::ComponentFactoryFunc, rtl::OUString const &, + css::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) + SAL_THROW(()) +{ + return new Factory; +} + +static cppu::ImplementationEntry const services[] = { + { &dummy, &service::getImplementationName, + &service::getSupportedServiceNames, &createFactory, 0, 0 }, + { 0, 0, 0, 0, 0, 0 } +}; + +} + +extern "C" void * SAL_CALL component_getFactory( + char const * pImplName, void * pServiceManager, void * pRegistryKey) +{ + return cppu::component_getFactoryHelper( + pImplName, pServiceManager, pRegistryKey, services); +} + +extern "C" void SAL_CALL component_getImplementationEnvironment( + char const ** ppEnvTypeName, uno_Environment **) +{ + *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; +} + +extern "C" sal_Bool SAL_CALL component_writeInfo( + void * pServiceManager, void * pRegistryKey) +{ + return component_writeInfoHelper(pServiceManager, pRegistryKey, services); +} diff --git a/desktop/test/deployment/boxt/description.xml b/desktop/test/deployment/boxt/description.xml new file mode 100644 index 0000000000..5a67bf3e94 --- /dev/null +++ b/desktop/test/deployment/boxt/description.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--********************************************************************** +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +**********************************************************************--> + +<d:description xmlns:d="http://openoffice.org/extensions/description/2006"> + <d:identifier value="org.openoffice/framework/desktop/test/deployment/boxt"/> + <d:version value="@VERSION@"/> + <d:platform value="@PLATFORM@"/> + <d:dependencies> + <d:OpenOffice.org-minimal-version d:name="OpenOffice.org @VERSION@" + value="@VERSION@"/> + <d:OpenOffice.org-maximal-version d:name="OpenOffice.org @VERSION@ or older" + d:OpenOffice.org-minimal-version="2.3" value="@VERSION@"/> + </d:dependencies> +</d:description> diff --git a/desktop/test/deployment/boxt/makefile.mk b/desktop/test/deployment/boxt/makefile.mk new file mode 100644 index 0000000000..63f123fcc6 --- /dev/null +++ b/desktop/test/deployment/boxt/makefile.mk @@ -0,0 +1,70 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#***********************************************************************/ + +PRJ = ../../.. +PRJNAME = desktop +TARGET = test_deployment_boxt + +ENABLE_EXCEPTIONS = TRUE + +.INCLUDE: settings.mk +.INCLUDE: rtlbootstrap.mk + +#TODO: The underlying OOo base version needed here is currently only available +# as instsetoo_native/util/openoffice.lst OOOBASEVERSION, so hard-coding it here +# for now (see issue 110653): +my_version = 3.3 + +DLLPRE = + +SLOFILES = $(SHL1OBJS) + +SHL1TARGET = boxt.uno +SHL1OBJS = $(SLO)/boxt.obj +SHL1RPATH = BOXT +SHL1STDLIBS = \ + $(CPPUHELPERLIB) $(CPPULIB) $(MSFILTERLIB) $(SALLIB) $(TOOLSLIB) $(VCLLIB) +SHL1VERSIONMAP = $(SOLARENV)/src/component.map +DEF1NAME = $(SHL1TARGET) + +.INCLUDE: target.mk + +ALLTAR : $(MISC)/boxt.oxt + +$(MISC)/boxt.oxt .ERRREMOVE : manifest.xml description.xml Addons.xcu \ + ProtocolHandler.xcu $(SHL1TARGETN) + $(RM) -r $@ $(MISC)/$(TARGET).zip + $(MKDIR) $(MISC)/$(TARGET).zip + $(MKDIR) $(MISC)/$(TARGET).zip/META-INF + $(SED) -e 's|@PATH@|$(SHL1TARGETN:f)|g' < manifest.xml \ + > $(MISC)/$(TARGET).zip/META-INF/manifest.xml + $(SED) -e 's|@PLATFORM@|$(RTL_OS:l)_$(RTL_ARCH:l)|g' \ + -e 's|@VERSION@|$(my_version)|g' < description.xml \ + > $(MISC)/$(TARGET).zip/description.xml + $(COPY) Addons.xcu ProtocolHandler.xcu $(SHL1TARGETN) $(MISC)/$(TARGET).zip + cd $(MISC)/$(TARGET).zip && zip ../boxt.oxt META-INF/manifest.xml \ + description.xml Addons.xcu ProtocolHandler.xcu $(SHL1TARGETN:f) diff --git a/configmgr/inc/configmgr/update.hxx b/desktop/test/deployment/boxt/manifest.xml index b27a324874..73ebfc306e 100644 --- a/configmgr/inc/configmgr/update.hxx +++ b/desktop/test/deployment/boxt/manifest.xml @@ -1,4 +1,5 @@ -/************************************************************************* +<?xml version="1.0" encoding="UTF-8"?> +<!--********************************************************************** * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -23,29 +24,14 @@ * <http://www.openoffice.org/license.html> * for a copy of the LGPLv3 License. * -************************************************************************/ - -#ifndef INCLUDED_CONFIGMGR_UPDATE_HXX -#define INCLUDED_CONFIGMGR_UPDATE_HXX - -#include "sal/config.h" - -#include "configmgr/detail/configmgrdllapi.hxx" - -namespace rtl { class OUString; } - -namespace configmgr { - -namespace update { - -OOO_DLLPUBLIC_CONFIGMGR void insertExtensionXcsFile( - bool shared, rtl::OUString const & fileUri); - -OOO_DLLPUBLIC_CONFIGMGR void insertExtensionXcuFile( - bool shared, rtl::OUString const & fileUri); - -} - -} - -#endif +**********************************************************************--> + +<m:manifest xmlns:m="http://openoffice.org/2001/manifest"> + <m:file-entry m:media-type="application/vnd.sun.star.configuration-data" + m:full-path="Addons.xcu"/> + <m:file-entry m:media-type="application/vnd.sun.star.configuration-data" + m:full-path="ProtocolHandler.xcu"/> + <m:file-entry + m:media-type="application/vnd.sun.star.uno-component;type=native" + m:full-path="@PATH@"/> +</m:manifest> diff --git a/desktop/util/makefile.mk b/desktop/util/makefile.mk index c669206bb3..47885dfd6b 100644 --- a/desktop/util/makefile.mk +++ b/desktop/util/makefile.mk @@ -81,41 +81,7 @@ APP1TARGET=so$/$(TARGET) APP1NOSAL=TRUE APP1RPATH=BRAND APP1OBJS=$(OBJ)$/copyright_ascii_sun.obj $(OBJ)$/main.obj -APP1STDLIBS = \ - $(SALLIB) \ - $(SOFFICELIB) \ - $(COMPHELPERLIB) \ - $(CPPUHELPERLIB) \ - $(CPPULIB) \ - $(I18NISOLANGLIB) \ - $(SALLIB) \ - $(SFXLIB) \ - $(SVLLIB) \ - $(SVTOOLLIB) \ - $(TKLIB) \ - $(TOOLSLIB) \ - $(UCBHELPERLIB) \ - $(UNOTOOLSLIB) \ - $(VCLLIB) \ - $(FWELIB) \ - $(BASICLIB) \ - $(XMLSCRIPTLIB) \ - $(SALHELPERLIB) \ - $(SOTLIB) \ - $(SAXLIB) \ - $(FWILIB) \ - $(ICUUCLIB) \ - $(I18NUTILLIB) \ - $(ICULIB) \ - $(JVMFWKLIB) \ - $(BASEGFXLIB) \ - $(ICUDATALIB) \ - $(ICULELIB) \ - $(JVMACCESSLIB) \ - $(SALHELPERLIB) \ - $(VOSLIB) - - +APP1STDLIBS = $(SALLIB) $(SOFFICELIB) APP1DEPN= $(APP1RES) verinfo.rc .IF "$(GUI)" == "WNT" @@ -140,40 +106,7 @@ APP5TARGET=soffice APP5NOSAL=TRUE APP5RPATH=BRAND APP5OBJS=$(OBJ)$/copyright_ascii_ooo.obj $(OBJ)$/main.obj -APP5STDLIBS = \ - $(SALLIB) \ - $(SOFFICELIB) \ - $(COMPHELPERLIB) \ - $(CPPUHELPERLIB) \ - $(CPPULIB) \ - $(I18NISOLANGLIB) \ - $(SALLIB) \ - $(SFXLIB) \ - $(SVLLIB) \ - $(SVTOOLLIB) \ - $(TKLIB) \ - $(TOOLSLIB) \ - $(UCBHELPERLIB) \ - $(UNOTOOLSLIB) \ - $(VCLLIB) \ - $(FWELIB) \ - $(BASICLIB) \ - $(XMLSCRIPTLIB) \ - $(SALHELPERLIB) \ - $(SOTLIB) \ - $(SAXLIB) \ - $(FWILIB) \ - $(ICUUCLIB) \ - $(I18NUTILLIB) \ - $(ICULIB) \ - $(JVMFWKLIB) \ - $(BASEGFXLIB) \ - $(ICUDATALIB) \ - $(ICULELIB) \ - $(JVMACCESSLIB) \ - $(SALHELPERLIB) \ - $(VOSLIB) - +APP5STDLIBS = $(SALLIB) $(SOFFICELIB) .IF "$(OS)" == "LINUX" APP5STDLIBS+= -lXext #APP5STDLIBS+= -lXext -lSM -lICE diff --git a/editeng/inc/editeng/svxacorr.hxx b/editeng/inc/editeng/svxacorr.hxx index 72441fa901..333235bf70 100644 --- a/editeng/inc/editeng/svxacorr.hxx +++ b/editeng/inc/editeng/svxacorr.hxx @@ -209,6 +209,8 @@ class EDITENG_DLLPUBLIC SvxAutoCorrect SvxAutoCorrLastFileAskTable_Impl* pLastFileTable; CharClass* pCharClass; + bool bRunNext; + LanguageType eCharClassLang; long nFlags; @@ -374,6 +376,8 @@ public: xub_StrLen nSttPos, xub_StrLen nEndPos, LanguageType eLang = LANGUAGE_SYSTEM); + bool HasRunNext() { return bRunNext; } + static long GetDefaultFlags(); // returns TRUE for charcters where the function diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx index 89917d77a8..1ead09ce47 100644 --- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx +++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -1129,6 +1129,26 @@ namespace accessibility return aPoint; } + // --> OD 2009-12-16 #i88070# + // fallback to parent's <XAccessibleContext> instance + else + { + uno::Reference< XAccessibleContext > xParentContext = xParent->getAccessibleContext(); + if ( xParentContext.is() ) + { + uno::Reference< XAccessibleComponent > xParentContextComponent( xParentContext, uno::UNO_QUERY ); + if( xParentContextComponent.is() ) + { + awt::Point aRefPoint = xParentContextComponent->getLocationOnScreen(); + awt::Point aPoint = getLocation(); + aPoint.X += aRefPoint.X; + aPoint.Y += aRefPoint.Y; + + return aPoint; + } + } + } + // <-- } throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Cannot access parent")), @@ -1223,7 +1243,7 @@ namespace accessibility { DBG_CHKTHIS( AccessibleEditableTextPara, NULL ); ::vos::OGuard aGuard( Application::GetSolarMutex() ); - + CheckIndex(nIndex); // may throw IndexOutOfBoundsException // get default attribues... @@ -1254,7 +1274,7 @@ namespace accessibility aAny >>= f1; } int i = 3; - } + } #endif // get resulting sequence @@ -1890,8 +1910,8 @@ namespace accessibility } // XAccessibleTextAttributes - uno::Sequence< beans::PropertyValue > SAL_CALL AccessibleEditableTextPara::getDefaultAttributes( - const uno::Sequence< ::rtl::OUString >& rRequestedAttributes ) + uno::Sequence< beans::PropertyValue > SAL_CALL AccessibleEditableTextPara::getDefaultAttributes( + const uno::Sequence< ::rtl::OUString >& rRequestedAttributes ) throw (uno::RuntimeException) { DBG_CHKTHIS( AccessibleEditableTextPara, NULL ); @@ -1909,8 +1929,8 @@ namespace accessibility DBG_ASSERT(GetParagraphIndex() >= 0 && GetParagraphIndex() <= USHRT_MAX, "AccessibleEditableTextPara::getCharacterAttributes: index value overflow"); - // get XPropertySetInfo for paragraph attributes and - // character attributes that span all the paragraphs text. + // get XPropertySetInfo for paragraph attributes and + // character attributes that span all the paragraphs text. SvxAccessibleTextPropertySet aPropSet( &GetEditSource(), ImplGetSvxCharAndParaPropertiesSet() ); aPropSet.SetSelection( MakeSelection( 0, GetTextLen() ) ); @@ -1957,8 +1977,8 @@ namespace accessibility sal_Int32 nOutLen = 0; for (sal_Int32 i = 0; i < nLength; ++i) { - // calling implementation functions: - // _getPropertyState and _getPropertyValue (see below) to provide + // calling implementation functions: + // _getPropertyState and _getPropertyValue (see below) to provide // the proper paragraph number when retrieving paragraph attributes PropertyState eState = aPropSet._getPropertyState( pProperties->Name, mnParagraphIndex ); if ( eState == PropertyState_AMBIGUOUS_VALUE ) @@ -1967,7 +1987,7 @@ namespace accessibility } //if (eState == PropertyState_DIRECT_VALUE) - // per definition all paragraph properties and all character + // per definition all paragraph properties and all character // properties spanning the whole paragraph should be returned // and declared as default value { @@ -1987,9 +2007,9 @@ namespace accessibility } - uno::Sequence< beans::PropertyValue > SAL_CALL AccessibleEditableTextPara::getRunAttributes( - sal_Int32 nIndex, - const uno::Sequence< ::rtl::OUString >& rRequestedAttributes ) + uno::Sequence< beans::PropertyValue > SAL_CALL AccessibleEditableTextPara::getRunAttributes( + sal_Int32 nIndex, + const uno::Sequence< ::rtl::OUString >& rRequestedAttributes ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException) { DBG_CHKTHIS( AccessibleEditableTextPara, NULL ); @@ -2046,7 +2066,7 @@ namespace accessibility } else aProperties = xPropSetInfo->getProperties(); - + sal_Int32 nLength = aProperties.getLength(); const beans::Property *pProperties = aProperties.getConstArray(); @@ -2056,7 +2076,7 @@ namespace accessibility sal_Int32 nOutLen = 0; for (sal_Int32 i = 0; i < nLength; ++i) { - // calling 'regular' functions that will operate on the selection + // calling 'regular' functions that will operate on the selection PropertyState eState = aPropSet.getPropertyState( pProperties->Name ); if (eState == PropertyState_DIRECT_VALUE) { @@ -2160,7 +2180,7 @@ namespace accessibility sal_Int32 nRes = -1; sal_Int32 nPara = GetParagraphIndex(); - + SvxTextForwarder &rCacheTF = GetTextForwarder(); const bool bValidPara = 0 <= nPara && nPara < rCacheTF.GetParagraphCount(); DBG_ASSERT( bValidPara, "getLineNumberAtIndex: current paragraph index out of range" ); @@ -2168,7 +2188,7 @@ namespace accessibility { // we explicitly allow for the index to point at the character right behind the text if (0 <= nIndex && nIndex <= rCacheTF.GetTextLen( static_cast< USHORT >(nPara) )) - nRes = rCacheTF.GetLineNumberAtIndex( static_cast< USHORT >(nPara), static_cast< USHORT >(nIndex) ); + nRes = rCacheTF.GetLineNumberAtIndex( static_cast< USHORT >(nPara), static_cast< USHORT >(nIndex) ); else throw lang::IndexOutOfBoundsException(); } @@ -2179,7 +2199,7 @@ namespace accessibility ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleEditableTextPara::getTextAtLineNumber( sal_Int32 nLineNo ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException) { DBG_CHKTHIS( AccessibleEditableTextPara, NULL ); - + ::com::sun::star::accessibility::TextSegment aResult; sal_Int32 nPara = GetParagraphIndex(); SvxTextForwarder &rCacheTF = GetTextForwarder(); @@ -2203,8 +2223,8 @@ namespace accessibility { // this is not the exception that should be raised in this function ... DBG_ASSERT( 0, "unexpected exception" ); - } - } + } + } } else throw lang::IndexOutOfBoundsException(); @@ -2216,7 +2236,7 @@ namespace accessibility ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleEditableTextPara::getTextAtLineWithCaret( ) throw (uno::RuntimeException) { DBG_CHKTHIS( AccessibleEditableTextPara, NULL ); - + ::com::sun::star::accessibility::TextSegment aResult; try { @@ -2225,7 +2245,7 @@ namespace accessibility catch (lang::IndexOutOfBoundsException &) { // this one needs to be catched since this interface does not allow for it. - } + } return aResult; } @@ -2233,7 +2253,7 @@ namespace accessibility sal_Int32 SAL_CALL AccessibleEditableTextPara::getNumberOfLineWithCaret( ) throw (uno::RuntimeException) { DBG_CHKTHIS( AccessibleEditableTextPara, NULL ); - + sal_Int32 nRes = -1; try { @@ -2242,7 +2262,7 @@ namespace accessibility catch (lang::IndexOutOfBoundsException &) { // this one needs to be catched since this interface does not allow for it. - } + } return nRes; } diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index ef1b0c1db9..fd06f8b68c 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -49,6 +49,7 @@ #include <eerdll2.hxx> #include <editeng/eerdll.hxx> #include <editeng.hrc> +#include <editeng/acorrcfg.hxx> #include <editeng/flditem.hxx> #include <editeng/txtrange.hxx> #include <vcl/graph.hxx> @@ -1144,8 +1145,10 @@ sal_Bool EditEngine::PostKeyEvent( const KeyEvent& rKeyEvent, EditView* pEditVie xub_Unicode nCharCode = rKeyEvent.GetCharCode(); pEditView->pImpEditView->DrawSelection(); // Autokorrektur ? + SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); if ( ( pImpEditEngine->GetStatus().DoAutoCorrect() ) && - SvxAutoCorrect::IsAutoCorrectChar( nCharCode ) ) + ( SvxAutoCorrect::IsAutoCorrectChar( nCharCode ) || + pAutoCorrect->HasRunNext() ) ) { aCurSel = pImpEditEngine->AutoCorrect( aCurSel, nCharCode, !pEditView->IsInsertMode() ); } diff --git a/editeng/source/editeng/eehtml.cxx b/editeng/source/editeng/eehtml.cxx index a6d5096be7..87bf077bb2 100644 --- a/editeng/source/editeng/eehtml.cxx +++ b/editeng/source/editeng/eehtml.cxx @@ -60,6 +60,7 @@ EditHTMLParser::EditHTMLParser( SvStream& rIn, const String& rBaseURL, SvKeyValu bWasInPara = FALSE; nInTable = 0; nInCell = 0; + bInTitle = FALSE; nDefListLevel = 0; nBulletLevel = 0; nNumberingLevel = 0; @@ -179,11 +180,14 @@ void EditHTMLParser::NextToken( int nToken ) break; case HTML_TEXTTOKEN: { - if ( !bInPara ) - StartPara( FALSE ); - -// if ( bInPara || pCurAnchor ) + // #i110937# for <title> content, call aImportHdl (no SkipGroup), but don't insert the text into the EditEngine + if (!bInTitle) { + if ( !bInPara ) + StartPara( FALSE ); + + // if ( bInPara || pCurAnchor ) + String aText = aToken; if ( aText.Len() && ( aText.GetChar( 0 ) == ' ' ) && ThrowAwayBlank() && !IsReadPRE() ) @@ -342,6 +346,13 @@ void EditHTMLParser::NextToken( int nToken ) // #58335# kein SkipGroup on/off auf inline markup etc. + case HTML_TITLE_ON: + bInTitle = TRUE; + break; + case HTML_TITLE_OFF: + bInTitle = FALSE; + break; + // globals case HTML_HTML_ON: case HTML_HTML_OFF: @@ -355,8 +366,6 @@ void EditHTMLParser::NextToken( int nToken ) case HTML_THEAD_OFF: case HTML_TBODY_ON: case HTML_TBODY_OFF: - case HTML_TITLE_ON: - case HTML_TITLE_OFF: // inline elements, structural markup // HTML 3.0 case HTML_BANNER_ON: diff --git a/editeng/source/editeng/eehtml.hxx b/editeng/source/editeng/eehtml.hxx index 6314db6161..4035cb1598 100644 --- a/editeng/source/editeng/eehtml.hxx +++ b/editeng/source/editeng/eehtml.hxx @@ -57,6 +57,7 @@ private: BOOL bFieldsInserted; BYTE nInTable; BYTE nInCell; + BOOL bInTitle; BYTE nDefListLevel; BYTE nBulletLevel; diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index ebc025fea7..78edae142d 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -363,7 +363,7 @@ SvxAutoCorrect::SvxAutoCorrect( const String& rShareAutocorrFile, sUserAutoCorrFile( rUserAutocorrFile ), pLangTable( new SvxAutoCorrLanguageTable_Impl ), pLastFileTable( new SvxAutoCorrLastFileAskTable_Impl ), - pCharClass( 0 ), + pCharClass( 0 ), bRunNext( false ), cStartDQuote( 0 ), cEndDQuote( 0 ), cStartSQuote( 0 ), cEndSQuote( 0 ) { nFlags = SvxAutoCorrect::GetDefaultFlags(); @@ -380,7 +380,7 @@ SvxAutoCorrect::SvxAutoCorrect( const SvxAutoCorrect& rCpy ) pLangTable( new SvxAutoCorrLanguageTable_Impl ), pLastFileTable( new SvxAutoCorrLastFileAskTable_Impl ), - pCharClass( 0 ), + pCharClass( 0 ), bRunNext( false ), nFlags( rCpy.nFlags & ~(ChgWordLstLoad|CplSttLstLoad|WrdSttLstLoad)), cStartDQuote( rCpy.cStartDQuote ), cEndDQuote( rCpy.cEndDQuote ), @@ -669,7 +669,7 @@ BOOL SvxAutoCorrect::FnAddNonBrkSpace( // Check the presence of "://" in the word xub_StrLen nStrPos = rTxt.Search( String::CreateFromAscii( "://" ), nSttWdPos + 1 ); - if ( STRING_NOTFOUND == nStrPos ) + if ( STRING_NOTFOUND == nStrPos && nEndPos > 0 ) { // Check the previous char sal_Unicode cPrevChar = rTxt.GetChar( nEndPos - 1 ); @@ -693,9 +693,12 @@ BOOL SvxAutoCorrect::FnAddNonBrkSpace( // Add the non-breaking space at the end pos if ( bHasSpace ) rDoc.Insert( nPos, CHAR_HARDBLANK ); + bRunNext = true; bRet = true; } } + else if ( chars.indexOf( sal_Unicode( cPrevChar ) ) != -1 ) + bRunNext = true; } } else if ( cChar == '/' ) @@ -1189,6 +1192,9 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt, BOOL bInsert ) { ULONG nRet = 0; + bool bIsNextRun = bRunNext; + bRunNext = false; // if it was set, then it has to be turned off + do{ // only for middle check loop !! if( cChar ) { @@ -1227,10 +1233,39 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt, rDoc.Replace( nInsPos, cChar ); // Hardspaces autocorrection - if ( NeedsHardspaceAutocorr( cChar ) && IsAutoCorrFlag( AddNonBrkSpace ) && - FnAddNonBrkSpace( rDoc, rTxt, 0, nInsPos, rDoc.GetLanguage( nInsPos, FALSE ) ) ) + if ( IsAutoCorrFlag( AddNonBrkSpace ) ) { - nRet = AddNonBrkSpace; + if ( NeedsHardspaceAutocorr( cChar ) && + FnAddNonBrkSpace( rDoc, rTxt, 0, nInsPos, rDoc.GetLanguage( nInsPos, FALSE ) ) ) + { + nRet = AddNonBrkSpace; + } + else if ( bIsNextRun && !IsAutoCorrectChar( cChar ) ) + { + // Remove the NBSP if it wasn't an autocorrection + if ( NeedsHardspaceAutocorr( rTxt.GetChar( nInsPos - 1 ) ) && + cChar != ' ' && cChar != '\t' && cChar != CHAR_HARDBLANK ) + { + // Look for the last HARD_SPACE + xub_StrLen nPos = nInsPos - 1; + bool bFound = false; + while ( nPos != STRING_NOTFOUND && !bFound ) + { + sal_Unicode cTmpChar = rTxt.GetChar( nPos ); + if ( cTmpChar == CHAR_HARDBLANK ) + bFound = true; + else if ( !NeedsHardspaceAutocorr( cTmpChar ) ) + nPos = STRING_NOTFOUND; + nPos--; + } + + if ( bFound && nPos != STRING_NOTFOUND ) + { + rDoc.Delete( nPos + 1, nPos + 2 ); + nRet = AddNonBrkSpace; + } + } + } } } diff --git a/formula/inc/formula/compiler.hrc b/formula/inc/formula/compiler.hrc index 2df2a8ee78..c1a8117ab0 100644 --- a/formula/inc/formula/compiler.hrc +++ b/formula/inc/formula/compiler.hrc @@ -393,12 +393,8 @@ #define SC_OPCODE_LAST_OPCODE_ID 394 /* last OpCode */ /*** Interna ***/ -#define SC_OPCODE_INTERNAL_BEGIN 9995 -#define SC_OPCODE_GAME 9995 -#define SC_OPCODE_SPEW 9996 -#define SC_OPCODE_TTT 9997 -#define SC_OPCODE_TEAM 9998 -#define SC_OPCODE_ANSWER 9999 +#define SC_OPCODE_INTERNAL_BEGIN 9999 +#define SC_OPCODE_TTT 9999 #define SC_OPCODE_INTERNAL_END 9999 /*** from here on ExtraData contained ***/ diff --git a/formula/inc/formula/opcode.hxx b/formula/inc/formula/opcode.hxx index 12061917d6..53f387ae76 100644 --- a/formula/inc/formula/opcode.hxx +++ b/formula/inc/formula/opcode.hxx @@ -386,11 +386,7 @@ enum OpCodeEnum ocNumberValue = SC_OPCODE_NUMBERVALUE, // internal stuff ocInternalBegin = SC_OPCODE_INTERNAL_BEGIN, - ocGame = SC_OPCODE_GAME, - ocSpew = SC_OPCODE_SPEW, ocTTT = SC_OPCODE_TTT, - ocTeam = SC_OPCODE_TEAM, - ocAnswer = SC_OPCODE_ANSWER, ocInternalEnd = SC_OPCODE_INTERNAL_END, // from here on ExtraData ocDataToken1 = SC_OPCODE_DATA_TOKEN_1, diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx index bdc6e4f0d3..5bac848086 100644 --- a/formula/source/core/api/FormulaCompiler.cxx +++ b/formula/source/core/api/FormulaCompiler.cxx @@ -46,7 +46,7 @@ namespace formula // ============================================================================= using namespace ::com::sun::star; - static const sal_Char* pInternal[ 5 ] = { "GAME", "SPEW", "TTT", "STARCALCTEAM", "ANTWORT" }; + static const sal_Char* pInternal[ 1 ] = { "TTT" }; // ============================================================================= namespace diff --git a/framework/inc/classes/xmlnamespaces.hxx b/framework/inc/classes/xmlnamespaces.hxx deleted file mode 100644 index 23ca22cf93..0000000000 --- a/framework/inc/classes/xmlnamespaces.hxx +++ /dev/null @@ -1,65 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef __FRAMEWORK_CLASSES_XMLNAMESPACES_HXX_ -#define __FRAMEWORK_CLASSES_XMLNAMESPACES_HXX_ - -#include <com/sun/star/xml/sax/SAXException.hpp> - -#include <map> - -namespace framework -{ - -class XMLNamespaces -{ - public: - XMLNamespaces(); - XMLNamespaces( const XMLNamespaces& ); - virtual ~XMLNamespaces(); - - void addNamespace( const ::rtl::OUString& aName, const ::rtl::OUString& aValue ) - throw( ::com::sun::star::xml::sax::SAXException ); - - ::rtl::OUString applyNSToAttributeName( const ::rtl::OUString& ) const - throw( ::com::sun::star::xml::sax::SAXException ); - ::rtl::OUString applyNSToElementName( const ::rtl::OUString& ) const - throw( ::com::sun::star::xml::sax::SAXException ); - - private: - typedef ::std::map< ::rtl::OUString, ::rtl::OUString > NamespaceMap; - - ::rtl::OUString getNamespaceValue( const ::rtl::OUString& aNamespace ) const - throw( ::com::sun::star::xml::sax::SAXException ); - - ::rtl::OUString m_aDefaultNamespace; - NamespaceMap m_aNamespaceMap; -}; - -} - -#endif // __FRAMEWORK_XMLNAMESPACES_HXX_ diff --git a/framework/inc/framework.hrc b/framework/inc/framework.hrc index bea7dede55..b1abc91cab 100644 --- a/framework/inc/framework.hrc +++ b/framework/inc/framework.hrc @@ -51,19 +51,10 @@ #define STR_BACKING_CREATE 3 #define STR_BACKING_TEMPLATE 4 #define STR_BACKING_FILE 5 -#define BMP_BACKING_WRITER 6 -#define BMP_BACKING_CALC 7 -#define BMP_BACKING_IMPRESS 8 -#define BMP_BACKING_DRAW 9 -#define BMP_BACKING_DATABASE 10 -#define BMP_BACKING_FORMULA 11 -#define BMP_BACKING_OPENFILE 12 -#define BMP_BACKING_OPENTEMPLATE 13 -#define STR_BACKING_EXTHELP 15 -#define STR_BACKING_REGHELP 17 -#define STR_BACKING_INFOHELP 19 -#define STR_BACKING_TPLREP 21 -#define BMP_BACKING_FOLDER 22 +#define STR_BACKING_EXTHELP 6 +#define STR_BACKING_REGHELP 7 +#define STR_BACKING_INFOHELP 8 +#define STR_BACKING_TPLREP 9 #define RES_BACKING_IMAGES (DLG_BACKING+1) #define RES_BACKING_IMAGES_HC (DLG_BACKING+2) @@ -77,6 +68,14 @@ #define BMP_BACKING_REG 7 #define BMP_BACKING_INFO 8 #define BMP_BACKING_TPLREP 9 +#define BMP_BACKING_WRITER 10 +#define BMP_BACKING_CALC 11 +#define BMP_BACKING_IMPRESS 12 +#define BMP_BACKING_DRAW 13 +#define BMP_BACKING_DATABASE 14 +#define BMP_BACKING_FORMULA 15 +#define BMP_BACKING_OPENFILE 16 +#define BMP_BACKING_OPENTEMPLATE 17 // Ids of TabWindow #define WIN_TABWINDOW (RID_FWK_DIALOG_START+101) diff --git a/framework/inc/properties.h b/framework/inc/properties.h index f4cf65a7cf..84d7370af6 100644 --- a/framework/inc/properties.h +++ b/framework/inc/properties.h @@ -217,6 +217,14 @@ namespace framework{ #define UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDROTATEIMAGELIST "private:resource/image/commandrotateimagelist" #define UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDMIRRORIMAGELIST "private:resource/image/commandmirrorimagelist" +#define UICOMMANDDESCRIPTION_PROPNAME_PROPERTIES "Properties" +#define UICOMMANDDESCRIPTION_PROPNAME_POPUP "Popup" + +#define UICOMMANDDESCRIPTION_PROPERTIES_IMAGE 1 +#define UICOMMANDDESCRIPTION_PROPERTIES_IMAGE_MIRRORED 2 +#define UICOMMANDDESCRIPTION_PROPERTIES_IMAGE_ROTATED 4 +#define UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON 8 + //_______________________________________________ /** properties for "AutoRecovery" class */ diff --git a/framework/inc/uielement/toolbarmanager.hxx b/framework/inc/uielement/toolbarmanager.hxx index f8f4715ef1..3544d9649a 100644 --- a/framework/inc/uielement/toolbarmanager.hxx +++ b/framework/inc/uielement/toolbarmanager.hxx @@ -179,6 +179,8 @@ class ToolBarManager : public ::com::sun::star::frame::XFrameActionListener void RemoveControllers(); rtl::OUString RetrieveLabelFromCommand( const rtl::OUString& aCmdURL ); + sal_Int32 RetrievePropertiesFromCommand( const rtl::OUString& aCmdURL ); + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > GetPropsForCommand( const ::rtl::OUString& rCmdURL ); void CreateControllers(); void UpdateControllers(); void AddFrameActionListener(); diff --git a/framework/inc/uielement/uicommanddescription.hxx b/framework/inc/uielement/uicommanddescription.hxx index cdb883b995..c0f3d5d48a 100644 --- a/framework/inc/uielement/uicommanddescription.hxx +++ b/framework/inc/uielement/uicommanddescription.hxx @@ -109,7 +109,7 @@ public: ModuleToCommandFileMap m_aModuleToCommandFileMap; UICommandsHashMap m_aUICommandsHashMap; ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xGenericUICommands; - ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModuleManager > m_xModuleManager; + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModuleManager > m_xModuleManager; }; } // namespace framework diff --git a/framework/inc/xml/toolboxlayoutdocumenthandler.hxx b/framework/inc/xml/toolboxlayoutdocumenthandler.hxx deleted file mode 100644 index ff4c668ede..0000000000 --- a/framework/inc/xml/toolboxlayoutdocumenthandler.hxx +++ /dev/null @@ -1,59 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef __FRAMEWORK_XML_TOOLBOXLAYOUTDOCUMENTHANDLER_HXX_ -#define __FRAMEWORK_XML_TOOLBOXLAYOUTDOCUMENTHANDLER_HXX_ - -#include <xml/toolboxconfiguration.hxx> - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ - -#ifndef __COM_SUN_STAR_XML_SAX_XDOCUMENTHANDLER_HPP_ -#include <com/sun/star/xml/sax/XDocumentHandler.hpp> -#endif - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ -#include <threadhelp/threadhelpbase.hxx> -#include <rtl/ustring.hxx> -#include <cppuhelper/weak.hxx> - -#include <hash_map> -#include <stdtypes.h> - -//_________________________________________________________________________________________________________________ -// namespace -//_________________________________________________________________________________________________________________ - -namespace framework{ - -} // namespace framework - -#endif diff --git a/framework/qa/unoapi/knownissues.xcl b/framework/qa/unoapi/knownissues.xcl index f939efcca4..40f1965de6 100755 --- a/framework/qa/unoapi/knownissues.xcl +++ b/framework/qa/unoapi/knownissues.xcl @@ -54,3 +54,6 @@ fwk.Frame ### i90345 ### fwk.URLTransformer::com::sun::star::util::XURLTransformer + +### i111180 ### +fwk.Desktop::com::sun::star::frame::XComponentLoader diff --git a/framework/source/services/backingwindow.cxx b/framework/source/services/backingwindow.cxx index e9938aecf0..fb28da5774 100644 --- a/framework/source/services/backingwindow.cxx +++ b/framework/source/services/backingwindow.cxx @@ -133,7 +133,8 @@ BackingWindow::BackingWindow( Window* i_pParent ) : mbInitControls( false ), mnLayoutStyle( 0 ), mpAccExec( NULL ), - mnBtnPos( 120 ) + mnBtnPos( 120 ), + mnBtnTop( 150 ) { mnColumnWidth[0] = mnColumnWidth[1] = 0; mnTextColumnWidth[0] = mnTextColumnWidth[1] = 0; @@ -163,16 +164,6 @@ BackingWindow::BackingWindow( Window* i_pParent ) : { } - // get icon images from vcl resource and set them on the appropriate buttons - loadImage( FwkResId( BMP_BACKING_WRITER ), maWriterButton ); - loadImage( FwkResId( BMP_BACKING_CALC ), maCalcButton ); - loadImage( FwkResId( BMP_BACKING_IMPRESS ), maImpressButton ); - loadImage( FwkResId( BMP_BACKING_DRAW ), maDrawButton ); - loadImage( FwkResId( BMP_BACKING_DATABASE ), maDBButton ); - loadImage( FwkResId( BMP_BACKING_FORMULA ), maMathButton ); - loadImage( FwkResId( BMP_BACKING_FOLDER ), maOpenButton ); - loadImage( FwkResId( BMP_BACKING_FOLDER ), maTemplateButton ); - String aExtHelpText( FwkResId( STR_BACKING_EXTHELP ) ); String aRegHelpText( FwkResId( STR_BACKING_REGHELP ) ); String aInfoHelpText( FwkResId( STR_BACKING_INFOHELP ) ); @@ -187,10 +178,6 @@ BackingWindow::BackingWindow( Window* i_pParent ) : SetStyle( GetStyle() | WB_DIALOGCONTROL ); - // add some breathing space for the images - maButtonImageSize.Width() += 12; - maButtonImageSize.Height() += 12; - // force tab cycling in toolbox maToolbox.SetStyle( maToolbox.GetStyle() | WB_FORCETABCYCLE ); @@ -236,6 +223,11 @@ BackingWindow::BackingWindow( Window* i_pParent ) : // init background initBackground(); + + // add some breathing space for the images + maButtonImageSize.Width() += 12; + maButtonImageSize.Height() += 12; + } @@ -324,6 +316,17 @@ void BackingWindow::initBackground() else mnBtnPos = maBackgroundLeft.GetSizePixel().Width() + 40; } + + // get icon images from fwk resource and set them on the appropriate buttons + loadImage( FwkResId( BMP_BACKING_WRITER ), maWriterButton ); + loadImage( FwkResId( BMP_BACKING_CALC ), maCalcButton ); + loadImage( FwkResId( BMP_BACKING_IMPRESS ), maImpressButton ); + loadImage( FwkResId( BMP_BACKING_DRAW ), maDrawButton ); + loadImage( FwkResId( BMP_BACKING_DATABASE ), maDBButton ); + loadImage( FwkResId( BMP_BACKING_FORMULA ), maMathButton ); + loadImage( FwkResId( BMP_BACKING_OPENFILE ), maOpenButton ); + loadImage( FwkResId( BMP_BACKING_OPENTEMPLATE ), maTemplateButton ); + } void BackingWindow::initControls() @@ -550,7 +553,7 @@ void BackingWindow::layoutButton( long nTextWidth = i_rBtn.GetTextWidth( i_rBtn.GetText() ); - nTextWidth += maButtonImageSize.Width(); + nTextWidth += maButtonImageSize.Width() + 8; // add some fuzz to be on the safe side if( nColumn >= 0 && nColumn < static_cast<int>(sizeof(mnColumnWidth)/sizeof(mnColumnWidth[0])) ) { if( nTextWidth > mnColumnWidth[nColumn] ) @@ -732,6 +735,9 @@ void BackingWindow::Resize() nYPos += nPDelta - nDiff; nYPos += nWDelta/2 - nDiff; + + if( mnLayoutStyle != 1 ) + nYPos = maControlRect.Top() + mnBtnTop; maWriterButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos, nYPos ), Size( mnTextColumnWidth[0], maButtonImageSize.Height() ) ); maDrawButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos + mnColumnWidth[0], nYPos ), Size( mnTextColumnWidth[1], maButtonImageSize.Height() ) ); diff --git a/framework/source/services/backingwindow.hxx b/framework/source/services/backingwindow.hxx index 45fe60f67f..e1ad2ca457 100644 --- a/framework/source/services/backingwindow.hxx +++ b/framework/source/services/backingwindow.hxx @@ -121,7 +121,8 @@ namespace framework sal_Int32 mnLayoutStyle; svt::AcceleratorExecute* mpAccExec; long mnBtnPos; - + long mnBtnTop; + static const int nItemId_Extensions = 1; static const int nItemId_Reg = 2; static const int nItemId_Info = 3; diff --git a/framework/source/services/fwk_services.src b/framework/source/services/fwk_services.src index 7329b381c1..fbc83db937 100644 --- a/framework/source/services/fwk_services.src +++ b/framework/source/services/fwk_services.src @@ -53,34 +53,6 @@ Window DLG_BACKING { Text [ en-US ] = "~Open a document..."; }; - Bitmap BMP_BACKING_WRITER - { - File = "odt_32.png"; - }; - Bitmap BMP_BACKING_CALC - { - File = "ods_32.png"; - }; - Bitmap BMP_BACKING_IMPRESS - { - File = "odp_32.png"; - }; - Bitmap BMP_BACKING_DRAW - { - File = "odg_32.png"; - }; - Bitmap BMP_BACKING_DATABASE - { - File = "odb_32.png"; - }; - Bitmap BMP_BACKING_FORMULA - { - File = "odf_32.png"; - }; - Bitmap BMP_BACKING_FOLDER - { - File = "folder_32.png"; - }; String STR_BACKING_EXTHELP { Text [ en-US ] = "Add new features to %PRODUCTNAME"; @@ -137,6 +109,38 @@ Resource RES_BACKING_IMAGES { File = "addtemplate_32.png"; }; + Bitmap BMP_BACKING_WRITER + { + File = "odt_32.png"; + }; + Bitmap BMP_BACKING_CALC + { + File = "ods_32.png"; + }; + Bitmap BMP_BACKING_IMPRESS + { + File = "odp_32.png"; + }; + Bitmap BMP_BACKING_DRAW + { + File = "odg_32.png"; + }; + Bitmap BMP_BACKING_DATABASE + { + File = "odb_32.png"; + }; + Bitmap BMP_BACKING_FORMULA + { + File = "odf_32.png"; + }; + Bitmap BMP_BACKING_OPENFILE + { + File = "folder_32.png"; + }; + Bitmap BMP_BACKING_OPENTEMPLATE + { + File = "templates_32.png"; + }; }; Resource RES_BACKING_IMAGES_HC @@ -177,6 +181,38 @@ Resource RES_BACKING_IMAGES_HC { File = "template_hc.png"; }; + Bitmap BMP_BACKING_WRITER + { + File = "odt_32_hc.png"; + }; + Bitmap BMP_BACKING_CALC + { + File = "ods_32_hc.png"; + }; + Bitmap BMP_BACKING_IMPRESS + { + File = "odp_32_hc.png"; + }; + Bitmap BMP_BACKING_DRAW + { + File = "odg_32_hc.png"; + }; + Bitmap BMP_BACKING_DATABASE + { + File = "odb_32_hc.png"; + }; + Bitmap BMP_BACKING_FORMULA + { + File = "odf_32_hc.png"; + }; + Bitmap BMP_BACKING_OPENFILE + { + File = "folder_32_hc.png"; + }; + Bitmap BMP_BACKING_OPENTEMPLATE + { + File = "templates_32_hc.png"; + }; }; Window WIN_TABWINDOW diff --git a/framework/source/uielement/langselectionmenucontroller.cxx b/framework/source/uielement/langselectionmenucontroller.cxx index 4b140cc17e..11e8882b0a 100644 --- a/framework/source/uielement/langselectionmenucontroller.cxx +++ b/framework/source/uielement/langselectionmenucontroller.cxx @@ -344,6 +344,9 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup std::map< sal_Int16, ::rtl::OUString > LangTable; const ::rtl::OUString sAsterix(RTL_CONSTASCII_USTRINGPARAM("*")); + bool bMultipleLanguages = (eMode != MODE_SetLanguageSelectionMenu) || m_aCurLang.compareToAscii( "*" ) == 0; + bool bNothingSelected = true; + MenuItemBits nItemBits = !bMultipleLanguages ? MIB_RADIOCHECK : 0; for(std::map< ::rtl::OUString, ::rtl::OUString >::const_iterator it = LangItems.begin(); it != LangItems.end(); ++it) { if(it->first != ::rtl::OUString( aLangTable.GetString( LANGUAGE_NONE ) )&& @@ -351,12 +354,13 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup it->first.getLength()) { ++nItemId; - pPopupMenu->InsertItem( nItemId,it->first); + pPopupMenu->InsertItem( nItemId,it->first,nItemBits ); LangTable[nItemId] = it->first; if(it->first == m_aCurLang && eMode == MODE_SetLanguageSelectionMenu ) { //make a sign for the current language pPopupMenu->CheckItem(nItemId,TRUE); + bNothingSelected = false; } aCmd=aCmd_Language; aCmd+=(String)it->first; @@ -366,7 +370,9 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup //7--none nItemId++; - pPopupMenu->InsertItem( nItemId, String(FwlResId( STR_LANGSTATUS_NONE )) ); + pPopupMenu->InsertItem( nItemId, String(FwlResId( STR_LANGSTATUS_NONE )), nItemBits ); + if (bNothingSelected && !bMultipleLanguages) + pPopupMenu->CheckItem(nItemId,TRUE); aCmd=aCmd_Language; aCmd+=String::CreateFromAscii("LANGUAGE_NONE"); pPopupMenu->SetItemCommand(nItemId,aCmd); diff --git a/framework/source/uielement/langselectionstatusbarcontroller.cxx b/framework/source/uielement/langselectionstatusbarcontroller.cxx index 85def9b632..7c086f2d4a 100644 --- a/framework/source/uielement/langselectionstatusbarcontroller.cxx +++ b/framework/source/uielement/langselectionstatusbarcontroller.cxx @@ -272,6 +272,9 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R } } std::map< sal_Int16, ::rtl::OUString > LangTable; + bool bMultipleLanguages = m_aCurLang.compareToAscii( "*" ) == 0; + bool bNothingSelected = true; + sal_Int16 nMenuItemStyle = !bMultipleLanguages ? css::awt::MenuItemStyle::RADIOCHECK : 0; for( std::set< ::rtl::OUString >::const_iterator it = LangItems.begin(); it != LangItems.end(); ++it ) { @@ -281,22 +284,26 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R { //nItemId = xPopupMenu->getItemCount()+1; nItemId++; - xPopupMenu->insertItem( nItemId, *it, css::awt::MenuItemStyle::RADIOCHECK, nItemId ); + xPopupMenu->insertItem( nItemId, *it, nMenuItemStyle, nItemId ); LangTable[nItemId]=*it; if( *it == m_aCurLang ) { //make a sign for the current language xPopupMenu->checkItem( nItemId, TRUE ); + bNothingSelected = false; } } } //7--none nItemId++; - xPopupMenu->insertItem( nItemId, String( FwkResId( STR_LANGSTATUS_NONE )), css::awt::MenuItemStyle::RADIOCHECK, nItemId ); + xPopupMenu->insertItem( nItemId, String( FwkResId( STR_LANGSTATUS_NONE )), nMenuItemStyle, nItemId ); + if (bNothingSelected && !bMultipleLanguages) + xPopupMenu->checkItem( nItemId, TRUE ); + //More... nItemId++; - xPopupMenu->insertItem( nItemId, String( FwkResId( STR_LANGSTATUS_MORE )), css::awt::MenuItemStyle::RADIOCHECK, nItemId ); + xPopupMenu->insertItem( nItemId, String( FwkResId( STR_LANGSTATUS_MORE )), 0, nItemId ); for( ::std::set< ::rtl::OUString >::const_iterator it = LangItems.begin(); it != LangItems.end(); ++it ) { @@ -305,22 +312,22 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R *it != ::rtl::OUString::createFromAscii( "" )) { nItemId++; - subPopupMenu->insertItem( nItemId, *it, css::awt::MenuItemStyle::RADIOCHECK, nItemId ); + subPopupMenu->insertItem( nItemId, *it, 0, nItemId ); LangTable[nItemId]=*it; } } //7--none nItemId++; - subPopupMenu->insertItem( nItemId, String( FwkResId( STR_LANGSTATUS_NONE )), css::awt::MenuItemStyle::RADIOCHECK, nItemId ); + subPopupMenu->insertItem( nItemId, String( FwkResId( STR_LANGSTATUS_NONE )), 0, nItemId ); //More nItemId++; - subPopupMenu->insertItem( nItemId, String( FwkResId( STR_LANGSTATUS_MORE )), css::awt::MenuItemStyle::RADIOCHECK, nItemId ); + subPopupMenu->insertItem( nItemId, String( FwkResId( STR_LANGSTATUS_MORE )), 0, nItemId ); nItemId++; xPopupMenu->insertSeparator(nItemId); nItemId++; - xPopupMenu->insertItem( nItemId, String( FwkResId( STR_SET_LANGUAGE_FOR_PARAGRAPH )), css::awt::MenuItemStyle::RADIOCHECK, nItemId ); + xPopupMenu->insertItem( nItemId, String( FwkResId( STR_SET_LANGUAGE_FOR_PARAGRAPH )), 0, nItemId ); xPopupMenu->setPopupMenu( nItemId, subPopupMenu ); //display the popup menu and execute every command diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index 4f3ba2917e..b76ab6f697 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -548,11 +548,14 @@ throw ( RuntimeException ) if ( Event.State >>= bCheckmark ) { - // Checkmark + // Checkmark or RadioButton m_pVCLMenu->ShowItem( pMenuItemHandler->nItemId, TRUE ); m_pVCLMenu->CheckItem( pMenuItemHandler->nItemId, bCheckmark ); - m_pVCLMenu->SetItemBits( pMenuItemHandler->nItemId, - m_pVCLMenu->GetItemBits( pMenuItemHandler->nItemId ) | MIB_CHECKABLE ); + + MenuItemBits nBits = m_pVCLMenu->GetItemBits( pMenuItemHandler->nItemId ); + //If not already designated RadioButton set as CheckMark + if (!(nBits & MIB_RADIOCHECK)) + m_pVCLMenu->SetItemBits( pMenuItemHandler->nItemId, nBits | MIB_CHECKABLE ); } else if ( Event.State >>= aItemText ) { @@ -1805,6 +1808,8 @@ void MenuBarManager::FillMenu( nBits |= MIB_ICON; if ( nStyle & ::com::sun::star::ui::ItemStyle::TEXT ) nBits |= MIB_TEXT; + if ( nStyle & ::com::sun::star::ui::ItemStyle::RADIO_CHECK ) + nBits |= MIB_RADIOCHECK; pMenu->SetItemBits( nId, nBits ); } if ( xIndexContainer.is() ) diff --git a/framework/source/uielement/rootitemcontainer.cxx b/framework/source/uielement/rootitemcontainer.cxx index c0d79b6f8b..eeeb621613 100644 --- a/framework/source/uielement/rootitemcontainer.cxx +++ b/framework/source/uielement/rootitemcontainer.cxx @@ -127,7 +127,6 @@ RootItemContainer::RootItemContainer( const Reference< XIndexAccess >& rSourceCo Reference< XPropertySet > xPropSet( rSourceContainer, UNO_QUERY ); if ( xPropSet.is() ) { - rtl::OUString aUIName; xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UIName" ))) >>= m_aUIName; } } diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index 5698ee6352..e786293658 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -112,6 +112,7 @@ using namespace ::com::sun::star::util; using namespace ::com::sun::star::container; using namespace ::com::sun::star::frame; using namespace ::com::sun::star::ui; +using namespace ::com::sun::star; namespace framework { @@ -803,17 +804,18 @@ void ToolBarManager::RemoveControllers() m_aControllerMap.clear(); } -::rtl::OUString ToolBarManager::RetrieveLabelFromCommand( const ::rtl::OUString& aCmdURL ) +uno::Sequence< beans::PropertyValue > ToolBarManager::GetPropsForCommand( const ::rtl::OUString& rCmdURL ) { - ::rtl::OUString aLabel; - - // Retrieve popup menu labels - if ( !m_bModuleIdentified ) + Sequence< PropertyValue > aPropSeq; + + // Retrieve properties for command + try { - Reference< XModuleManager > xModuleManager( m_xServiceManager->createInstance( SERVICENAME_MODULEMANAGER ), UNO_QUERY_THROW ); - Reference< XInterface > xIfac( m_xFrame, UNO_QUERY ); - try + if ( !m_bModuleIdentified ) { + Reference< XModuleManager > xModuleManager( m_xServiceManager->createInstance( SERVICENAME_MODULEMANAGER ), UNO_QUERY_THROW ); + Reference< XInterface > xIfac( m_xFrame, UNO_QUERY ); + m_bModuleIdentified = sal_True; m_aModuleIdentifier = xModuleManager->identify( xIfac ); @@ -821,44 +823,57 @@ void ToolBarManager::RemoveControllers() { Reference< XNameAccess > xNameAccess( m_xServiceManager->createInstance( SERVICENAME_UICOMMANDDESCRIPTION ), UNO_QUERY ); if ( xNameAccess.is() ) - { xNameAccess->getByName( m_aModuleIdentifier ) >>= m_xUICommandLabels; - } } } - catch ( Exception& ) + + if ( m_xUICommandLabels.is() ) { + if ( rCmdURL.getLength() > 0 ) + m_xUICommandLabels->getByName( rCmdURL ) >>= aPropSeq; } } + catch ( Exception& ) + { + } - if ( m_xUICommandLabels.is() ) + return aPropSeq; +} + +::rtl::OUString ToolBarManager::RetrieveLabelFromCommand( const ::rtl::OUString& aCmdURL ) +{ + ::rtl::OUString aLabel; + Sequence< PropertyValue > aPropSeq; + + // Retrieve popup menu labels + aPropSeq = GetPropsForCommand( aCmdURL ); + for ( sal_Int32 i = 0; i < aPropSeq.getLength(); i++ ) { - try + if ( aPropSeq[i].Name.equalsAscii( "Name" )) { - if ( aCmdURL.getLength() > 0 ) - { - rtl::OUString aStr; - Sequence< PropertyValue > aPropSeq; - if ( m_xUICommandLabels->getByName( aCmdURL ) >>= aPropSeq ) - { - for ( sal_Int32 i = 0; i < aPropSeq.getLength(); i++ ) - { - if ( aPropSeq[i].Name.equalsAscii( "Name" )) - { - aPropSeq[i].Value >>= aStr; - break; - } - } - } - aLabel = aStr; - } + aPropSeq[i].Value >>= aLabel; + break; } - catch ( com::sun::star::uno::Exception& ) + } + return aLabel; +} + +sal_Int32 ToolBarManager::RetrievePropertiesFromCommand( const ::rtl::OUString& aCmdURL ) +{ + sal_Int32 nProperties(0); + Sequence< PropertyValue > aPropSeq; + + // Retrieve popup menu labels + aPropSeq = GetPropsForCommand( aCmdURL ); + for ( sal_Int32 i = 0; i < aPropSeq.getLength(); i++ ) + { + if ( aPropSeq[i].Name.equalsAscii( "Properties" )) { + aPropSeq[i].Value >>= nProperties; + break; } } - - return aLabel; + return nProperties; } void ToolBarManager::CreateControllers() @@ -969,8 +984,15 @@ void ToolBarManager::CreateControllers() { MenuDescriptionMap::iterator it = m_aMenuMap.find( nId ); if ( it == m_aMenuMap.end() ) - xController = Reference< XStatusListener >( - new GenericToolbarController( m_xServiceManager, m_xFrame, m_pToolBar, nId, aCommandURL )); + { + xController = Reference< XStatusListener >( + new GenericToolbarController( m_xServiceManager, m_xFrame, m_pToolBar, nId, aCommandURL )); + + // Accessibility support: Set toggle button role for specific commands + sal_Int32 nProps = RetrievePropertiesFromCommand( aCommandURL ); + if ( nProps & UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON ) + m_pToolBar->SetItemBits( nId, m_pToolBar->GetItemBits( nId ) | TIB_CHECKABLE ); + } else xController = Reference< XStatusListener >( new MenuToolbarController( m_xServiceManager, m_xFrame, m_pToolBar, nId, aCommandURL, m_aModuleIdentifier, m_aMenuMap[ nId ] )); @@ -1530,7 +1552,11 @@ IMPL_LINK( ToolBarManager, DropdownClick, ToolBox*, EMPTYARG ) Reference< XToolbarController > xController( pIter->second, UNO_QUERY ); if ( xController.is() ) - xController->createPopupWindow(); + { + Reference< XWindow > xWin = xController->createPopupWindow(); + if ( xWin.is() ) + xWin->setFocus(); + } } return 1; } diff --git a/framework/source/uielement/uicommanddescription.cxx b/framework/source/uielement/uicommanddescription.cxx index 51aff86787..a6fedb6624 100644 --- a/framework/source/uielement/uicommanddescription.cxx +++ b/framework/source/uielement/uicommanddescription.cxx @@ -340,7 +340,7 @@ Any ConfigurationAccess_UICommand::getSequenceFromCache( const ::rtl::OUString& if ( !pIter->second.bCommandNameCreated ) fillInfoFromResult( pIter->second, pIter->second.aLabel ); - Sequence< PropertyValue > aPropSeq( 3 ); + Sequence< PropertyValue > aPropSeq( 4 ); aPropSeq[0].Name = m_aPropLabel; aPropSeq[0].Value = pIter->second.aContextLabel.getLength() ? makeAny( pIter->second.aContextLabel ): makeAny( pIter->second.aLabel ); @@ -348,6 +348,8 @@ Any ConfigurationAccess_UICommand::getSequenceFromCache( const ::rtl::OUString& aPropSeq[1].Value <<= pIter->second.aCommandName; aPropSeq[2].Name = m_aPropPopup; aPropSeq[2].Value <<= pIter->second.bPopup; + aPropSeq[3].Name = m_aPropProperties; + aPropSeq[3].Value <<= pIter->second.nProperties; return makeAny( aPropSeq ); } diff --git a/framework/source/xml/makefile.mk b/framework/source/xml/makefile.mk index dd40af0cbe..a4f18a555a 100644 --- a/framework/source/xml/makefile.mk +++ b/framework/source/xml/makefile.mk @@ -47,7 +47,6 @@ SLOFILES= \ $(SLO)$/statusbardocumenthandler.obj \ $(SLO)$/toolboxconfiguration.obj \ $(SLO)$/toolboxdocumenthandler.obj \ - $(SLO)$/toolboxlayoutdocumenthandler.obj \ $(SLO)$/saxnamespacefilter.obj \ $(SLO)$/xmlnamespaces.obj \ $(SLO)$/acceleratorconfigurationreader.obj \ diff --git a/framework/source/xml/menudocumenthandler.cxx b/framework/source/xml/menudocumenthandler.cxx index 958d663379..054fbb1460 100644 --- a/framework/source/xml/menudocumenthandler.cxx +++ b/framework/source/xml/menudocumenthandler.cxx @@ -94,6 +94,7 @@ #define ATTRIBUTE_ITEMSTYLE_TEXT "text" #define ATTRIBUTE_ITEMSTYLE_IMAGE "image" +#define ATTRIBUTE_ITEMSTYLE_RADIO "radio" // Property names of a menu/menu item ItemDescriptor static const char ITEM_DESCRIPTOR_COMMANDURL[] = "CommandURL"; @@ -134,6 +135,7 @@ struct MenuStyleItem MenuStyleItem MenuItemStyles[ ] = { { ::com::sun::star::ui::ItemStyle::ICON, ATTRIBUTE_ITEMSTYLE_IMAGE }, { ::com::sun::star::ui::ItemStyle::TEXT, ATTRIBUTE_ITEMSTYLE_TEXT }, + { ::com::sun::star::ui::ItemStyle::RADIO_CHECK, ATTRIBUTE_ITEMSTYLE_RADIO } }; @@ -437,8 +439,10 @@ throw( SAXException, RuntimeException ) { if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_TEXT ) ) ) nItemBits |= ::com::sun::star::ui::ItemStyle::TEXT; - if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_IMAGE ) ) ) + else if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_IMAGE ) ) ) nItemBits |= ::com::sun::star::ui::ItemStyle::ICON; + else if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_RADIO ) ) ) + nItemBits |= ::com::sun::star::ui::ItemStyle::RADIO_CHECK; } } while ( nIndex >= 0 ); @@ -670,8 +674,10 @@ throw( SAXException, RuntimeException ) { if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_TEXT ) ) ) nItemBits |= ::com::sun::star::ui::ItemStyle::TEXT; - if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_IMAGE ) ) ) + else if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_IMAGE ) ) ) nItemBits |= ::com::sun::star::ui::ItemStyle::ICON; + else if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_RADIO ) ) ) + nItemBits |= ::com::sun::star::ui::ItemStyle::RADIO_CHECK; } } while ( nIndex >= 0 ); @@ -725,8 +731,10 @@ throw( SAXException, RuntimeException ) { if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_TEXT ) ) ) nItemBits |= ::com::sun::star::ui::ItemStyle::TEXT; - if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_IMAGE ) ) ) + else if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_IMAGE ) ) ) nItemBits |= ::com::sun::star::ui::ItemStyle::ICON; + else if ( aToken.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ITEMSTYLE_RADIO ) ) ) + nItemBits |= ::com::sun::star::ui::ItemStyle::RADIO_CHECK; } } while ( nIndex >= 0 ); diff --git a/framework/source/xml/toolboxconfiguration.cxx b/framework/source/xml/toolboxconfiguration.cxx index 6ef6d36b94..4ed368af21 100644 --- a/framework/source/xml/toolboxconfiguration.cxx +++ b/framework/source/xml/toolboxconfiguration.cxx @@ -30,7 +30,6 @@ #include "precompiled_framework.hxx" #include <xml/toolboxconfiguration.hxx> #include <xml/toolboxdocumenthandler.hxx> -#include <xml/toolboxlayoutdocumenthandler.hxx> #include <xml/saxnamespacefilter.hxx> #include <services.h> diff --git a/framework/source/xml/toolboxlayoutdocumenthandler.cxx b/framework/source/xml/toolboxlayoutdocumenthandler.cxx deleted file mode 100644 index 039eaffad2..0000000000 --- a/framework/source/xml/toolboxlayoutdocumenthandler.cxx +++ /dev/null @@ -1,58 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_framework.hxx" - -#include <stdio.h> - -//_________________________________________________________________________________________________________________ -// my own includes -//_________________________________________________________________________________________________________________ - -#include <threadhelp/resetableguard.hxx> -#include <xml/toolboxlayoutdocumenthandler.hxx> -#include <macros/debug.hxx> -#include <xml/toolboxconfigurationdefines.hxx> - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ - -#ifndef __COM_SUN_STAR_XML_SAX_XEXTENDEDDOCUMENTHANDLER_HPP_ -#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp> -#endif - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ -#include <vcl/svapp.hxx> -#include <vcl/toolbox.hxx> - -//_________________________________________________________________________________________________________________ -// namespace -//_________________________________________________________________________________________________________________ diff --git a/framework/util/makefile.mk b/framework/util/makefile.mk index 82dfaf502a..afca19eef9 100644 --- a/framework/util/makefile.mk +++ b/framework/util/makefile.mk @@ -79,7 +79,6 @@ LIB2OBJFILES= \ $(SLO)$/statusbardocumenthandler.obj \ $(SLO)$/toolboxconfiguration.obj \ $(SLO)$/toolboxdocumenthandler.obj \ - $(SLO)$/toolboxlayoutdocumenthandler.obj \ $(SLO)$/imagesconfiguration.obj \ $(SLO)$/imagesdocumenthandler.obj \ $(SLO)$/xmlnamespaces.obj \ diff --git a/officecfg/registry/component-update.dtd b/officecfg/registry/component-update.dtd index 51623f40ba..81acc5e35e 100644 --- a/officecfg/registry/component-update.dtd +++ b/officecfg/registry/component-update.dtd @@ -113,7 +113,8 @@ <!ELEMENT oor:items (item*)> <!ATTLIST oor:items> -<!ELEMENT item ((prop | node)*)> +<!ELEMENT item ((node | prop | value)*)> <!ATTLIST item oor:path CDATA #REQUIRED> - <!-- the absolute path representation of a set or group node --> + <!-- the absolute path representation of a localized property or a group + or set node --> diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu b/officecfg/registry/data/org/openoffice/Office/Common.xcu index 722ed4df10..bb3c7795a4 100644 --- a/officecfg/registry/data/org/openoffice/Office/Common.xcu +++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu @@ -134,7 +134,7 @@ <prop oor:name="TemplateRepositoryURL" oor:type="xs:string"> <value>${STARTCENTER_TEMPLREP_URL}</value> </prop> - <prop oor:name="StartCenterLayoutStyle" oor:type="xs:int"> + <prop oor:name="StartCenterLayoutStyle" oor:type="xs:int" install:module="brand"> <value>${STARTCENTER_LAYOUT_STYLE}</value> </prop> </node> diff --git a/officecfg/registry/data/org/openoffice/Office/SFX.xcu b/officecfg/registry/data/org/openoffice/Office/SFX.xcu index f9429c3899..322ba63c8a 100644 --- a/officecfg/registry/data/org/openoffice/Office/SFX.xcu +++ b/officecfg/registry/data/org/openoffice/Office/SFX.xcu @@ -30,27 +30,27 @@ <node oor:name="Help"> <prop oor:name="HelpAgentStarterList"> <value xml:lang="x-no-translate"></value> - <value xml:lang="de">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="en-US">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="zh-CN">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="ja">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="zh-TW">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="el">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="es">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="pl">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="pt">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="ko">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="fr">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="ar">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="ru">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="nl">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="da">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="it">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="tr">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="sv">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="fi">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="pt-BR">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> - <value xml:lang="ca">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34119,34120,33368,10296,54946</value> + <value xml:lang="de">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="en-US">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="zh-CN">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="ja">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="zh-TW">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="el">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="es">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="pl">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="pt">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="ko">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="fr">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="ar">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="ru">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="nl">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="da">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="it">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="tr">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="sv">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="fi">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="pt-BR">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> + <value xml:lang="ca">956368385,956368385,26220,26235,2567291937,2567291938,26272,26273,26063,957028378,26153,26312,958170133,958186547,958202951,26320,26321,956419588,956433419,26323,26324,20309,20308,20226,10371,27015,10087,10156,10350,27002,700810288,700810324,700730881,703778354,700777567,701124116,701124158,541248011,541249030,541249032,700763681,34023,957235721,3388501505,3388501506,3388501507,3388501508,3388501509,3388501510,10416,10297,5573,5573,5573,34099,34100,34101,34102,34104,34106,34107,34108,34109,34110,34112,34114,34115,34116,34117,34118,34120,33368,10296,54946</value> </prop> </node> </oor:component-data> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu index 8c76a2dadd..d3db05206a 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu @@ -134,7 +134,7 @@ <value xml:lang="en-US">~Hyphenation...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ObjectTitleDescription" oor:op="replace"> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu index 2397810ed2..3d3c89ab15 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu @@ -73,6 +73,90 @@ <value>true</value> </prop> </node> + <node oor:name="private:resource/toolbar/basicshapes" oor:op="replace"> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Basic Shapes</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + <node oor:name="private:resource/toolbar/symbolshapes" oor:op="replace"> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Symbol Shapes</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + <node oor:name="private:resource/toolbar/arrowshapes" oor:op="replace"> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Block Arrows</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + <node oor:name="private:resource/toolbar/flowchartshapes" oor:op="replace"> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Flowchart</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + <node oor:name="private:resource/toolbar/calloutshapes" oor:op="replace"> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Callouts</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + <node oor:name="private:resource/toolbar/starshapes" oor:op="replace"> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Stars and Banners</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> </node> </node> </oor:component-data> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu index d57d1b3b4d..38bfc08b2e 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu @@ -229,7 +229,7 @@ <value>com.sun.star.comp.chart.ElementSelectorToolbarController</value> </prop> </node> - <node oor:name="c4" oor:op="replace"> + <node oor:name="com.sun.star.chart2.BasicShapesToolbarController" oor:op="replace"> <prop oor:name="Command"> <value>.uno:BasicShapes</value> </prop> @@ -237,10 +237,10 @@ <value>com.sun.star.chart2.ChartDocument</value> </prop> <prop oor:name="Controller"> - <value>com.sun.star.chart2.comp.ShapeToolbarController</value> + <value>com.sun.star.comp.chart2.ShapeToolbarController</value> </prop> </node> - <node oor:name="c5" oor:op="replace"> + <node oor:name="com.sun.star.chart2.SymbolShapesToolbarController" oor:op="replace"> <prop oor:name="Command"> <value>.uno:SymbolShapes</value> </prop> @@ -248,10 +248,10 @@ <value>com.sun.star.chart2.ChartDocument</value> </prop> <prop oor:name="Controller"> - <value>com.sun.star.chart2.comp.ShapeToolbarController</value> + <value>com.sun.star.comp.chart2.ShapeToolbarController</value> </prop> </node> - <node oor:name="c6" oor:op="replace"> + <node oor:name="com.sun.star.chart2.ArrowShapesToolbarController" oor:op="replace"> <prop oor:name="Command"> <value>.uno:ArrowShapes</value> </prop> @@ -259,10 +259,10 @@ <value>com.sun.star.chart2.ChartDocument</value> </prop> <prop oor:name="Controller"> - <value>com.sun.star.chart2.comp.ShapeToolbarController</value> + <value>com.sun.star.comp.chart2.ShapeToolbarController</value> </prop> </node> - <node oor:name="c7" oor:op="replace"> + <node oor:name="com.sun.star.chart2.FlowChartShapesToolbarController" oor:op="replace"> <prop oor:name="Command"> <value>.uno:FlowChartShapes</value> </prop> @@ -270,10 +270,10 @@ <value>com.sun.star.chart2.ChartDocument</value> </prop> <prop oor:name="Controller"> - <value>com.sun.star.chart2.comp.ShapeToolbarController</value> + <value>com.sun.star.comp.chart2.ShapeToolbarController</value> </prop> </node> - <node oor:name="c8" oor:op="replace"> + <node oor:name="com.sun.star.chart2.CalloutShapesToolbarController" oor:op="replace"> <prop oor:name="Command"> <value>.uno:CalloutShapes</value> </prop> @@ -281,10 +281,10 @@ <value>com.sun.star.chart2.ChartDocument</value> </prop> <prop oor:name="Controller"> - <value>com.sun.star.chart2.comp.ShapeToolbarController</value> + <value>com.sun.star.comp.chart2.ShapeToolbarController</value> </prop> </node> - <node oor:name="c9" oor:op="replace"> + <node oor:name="com.sun.star.chart2.StarShapesToolbarController" oor:op="replace"> <prop oor:name="Command"> <value>.uno:StarShapes</value> </prop> @@ -292,7 +292,7 @@ <value>com.sun.star.chart2.ChartDocument</value> </prop> <prop oor:name="Controller"> - <value>com.sun.star.chart2.comp.ShapeToolbarController</value> + <value>com.sun.star.comp.chart2.ShapeToolbarController</value> </prop> </node> </node> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu index 2925c2a978..b4a2fab23f 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu @@ -5,7 +5,6 @@ <node oor:name="Commands"> <node oor:name=".uno:Polygon" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Polygon, filled</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -14,7 +13,6 @@ </node> <node oor:name=".uno:ColorView" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Black & White View</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -23,19 +21,16 @@ </node> <node oor:name=".uno:RenamePage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Rename Slide</value> </prop> </node> <node oor:name=".uno:RenameLayer" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Rename</value> </prop> </node> <node oor:name=".uno:Presentation" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Slide Show</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -44,7 +39,6 @@ </node> <node oor:name=".uno:RehearseTimings" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Rehearse Timings</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -53,7 +47,6 @@ </node> <node oor:name=".uno:Dia" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">SlideTransition</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -62,7 +55,6 @@ </node> <node oor:name=".uno:ShowSlide" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Sho~w Slide</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -71,7 +63,6 @@ </node> <node oor:name=".uno:HideSlide" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Hide Slide</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -80,19 +71,16 @@ </node> <node oor:name=".uno:TextAttributes" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Te~xt...</value> </prop> </node> <node oor:name=".uno:PagesPerRow" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Slides Per Row</value> </prop> </node> <node oor:name=".uno:TextFitToSizeTool" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Fit Text to Frame</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -101,7 +89,6 @@ </node> <node oor:name=".uno:VerticalTextFitToSizeTool" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Fit Vertical Text to Frame</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -110,7 +97,6 @@ </node> <node oor:name=".uno:Objects3DToolbox" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">3D Objects</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -119,7 +105,6 @@ </node> <node oor:name=".uno:Cube" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cube</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -128,7 +113,6 @@ </node> <node oor:name=".uno:Sphere" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Sphere</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -137,7 +121,6 @@ </node> <node oor:name=".uno:Cylinder" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cylinder</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -146,7 +129,6 @@ </node> <node oor:name=".uno:Cone" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cone</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -155,7 +137,6 @@ </node> <node oor:name=".uno:Cyramid" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Pyramid</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -164,7 +145,6 @@ </node> <node oor:name=".uno:GlueEditMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Glue Points</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -173,7 +153,6 @@ </node> <node oor:name=".uno:GlueInsertPoint" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Insert Glue Point</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -182,22 +161,19 @@ </node> <node oor:name=".uno:GluePercent" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Glue Point Relative</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:GlueEscapeDirection" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Exit Direction</value> </prop> </node> <node oor:name=".uno:GlueHorzAlignCenter" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Glue Point Horizontal Center</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -206,7 +182,6 @@ </node> <node oor:name=".uno:GlueHorzAlignLeft" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Glue Point Horizontal Left</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -215,7 +190,6 @@ </node> <node oor:name=".uno:GlueHorzAlignRight" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Glue Point Horizontal Right</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -224,7 +198,6 @@ </node> <node oor:name=".uno:GlueVertAlignCenter" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Glue Point Vertical Center</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -233,7 +206,6 @@ </node> <node oor:name=".uno:GlueVertAlignTop" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Glue Point Vertical Top</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -242,7 +214,6 @@ </node> <node oor:name=".uno:GlueVertAlignBottom" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Glue Point Vertical Bottom</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -251,7 +222,6 @@ </node> <node oor:name=".uno:Shell3D" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Shell</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -260,7 +230,6 @@ </node> <node oor:name=".uno:Torus" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Torus</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -269,7 +238,6 @@ </node> <node oor:name=".uno:HalfSphere" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Half-Sphere</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -278,7 +246,6 @@ </node> <node oor:name=".uno:GlueEscapeDirectionLeft" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Exit Direction Left</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -287,7 +254,6 @@ </node> <node oor:name=".uno:GlueEscapeDirectionRight" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Exit Direction Right</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -296,7 +262,6 @@ </node> <node oor:name=".uno:GlueEscapeDirectionTop" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Exit Direction Top</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -305,7 +270,6 @@ </node> <node oor:name=".uno:GlueEscapeDirectionBottom" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Exit Direction Bottom</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -314,7 +278,6 @@ </node> <node oor:name=".uno:InsertToolbox" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Insert</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -323,25 +286,21 @@ </node> <node oor:name=".uno:Morphing" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Cross-fading...</value> </prop> </node> <node oor:name=".uno:MeasureAttributes" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Dimen~sions...</value> </prop> </node> <node oor:name=".uno:GridFront" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Grid to ~Front</value> </prop> </node> <node oor:name=".uno:HelplinesVisible" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Display Guides</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -350,13 +309,11 @@ </node> <node oor:name=".uno:HelplinesFront" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Guides to ~Front</value> </prop> </node> <node oor:name=".uno:BeforeObject" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">In Front of ~Object</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -365,13 +322,11 @@ </node> <node oor:name=".uno:PreviewWindow" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Pre~view</value> </prop> </node> <node oor:name=".uno:CustomAnimation" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Custom Animation...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -380,46 +335,39 @@ </node> <node oor:name=".uno:CustomAnimationSchemes" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Animation Schemes...</value> </prop> </node> <node oor:name=".uno:SlideChangeWindow" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Slide Transition...</value> </prop> </node> <node oor:name=".uno:ConnectorAttributes" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Connector...</value> </prop> </node> <node oor:name=".uno:PresentationDialog" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">S~lide Show Settings...</value> </prop> </node> <node oor:name=".uno:Hyphenation" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Hyphenation</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:NewRouting" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Reset Routing</value> </prop> </node> <node oor:name=".uno:DuplicatePage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">D~uplicate Slide</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -428,7 +376,6 @@ </node> <node oor:name=".uno:ExpandPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">E~xpand Slide</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -437,13 +384,11 @@ </node> <node oor:name=".uno:SummaryPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Su~mmary Slide</value> </prop> </node> <node oor:name=".uno:LeaveAllGroups" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Exit All Groups</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -452,7 +397,6 @@ </node> <node oor:name=".uno:ParaspaceIncrease" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Increase Spacing</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -461,7 +405,6 @@ </node> <node oor:name=".uno:ParaspaceDecrease" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Decrease Spacing</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -470,85 +413,71 @@ </node> <node oor:name=".uno:SlideMasterPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Slide Master</value> </prop> </node> <node oor:name=".uno:HandoutMasterPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Handout Master</value> </prop> </node> <node oor:name=".uno:NotesMasterPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Notes Master</value> </prop> </node> <node oor:name=".uno:TitleMasterPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Title Slide Master</value> </prop> </node> <node oor:name=".uno:InsertPageQuick" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Insert Slide Direct</value> </prop> </node> <node oor:name=".uno:InsertDateFieldVar" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Dat~e (variable)</value> </prop> </node> <node oor:name=".uno:InsertDateFieldFix" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Date (fixed)</value> </prop> </node> <node oor:name=".uno:InsertTimeFieldVar" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">T~ime (variable)</value> </prop> </node> <node oor:name=".uno:InsertTimeFieldFix" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Time (fixed)</value> </prop> </node> <node oor:name=".uno:InsertPageField" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Page Number</value> </prop> </node> <node oor:name=".uno:InsertPagesField" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Page ~Count</value> </prop> </node> <node oor:name=".uno:ModifyField" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">F~ields...</value> </prop> </node> <node oor:name=".uno:InsertFileField" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~File Name</value> </prop> </node> <node oor:name=".uno:InsertAuthorField" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Author</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -557,49 +486,41 @@ </node> <node oor:name=".uno:CustomShowDialog" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Custom Slide Show...</value> </prop> </node> <node oor:name=".uno:OutputQualityColor" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Color</value> </prop> </node> <node oor:name=".uno:OutputQualityGrayscale" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Grayscale</value> </prop> </node> <node oor:name=".uno:OutputQualityBlackWhite" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Black and White</value> </prop> </node> <node oor:name=".uno:PreviewQualityColor" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Color</value> </prop> </node> <node oor:name=".uno:PreviewQualityGrayscale" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Grayscale</value> </prop> </node> <node oor:name=".uno:PreviewQualityBlackWhite" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Black and White</value> </prop> </node> <node oor:name=".uno:ConvertInto3D" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">To 3~D</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -608,7 +529,6 @@ </node> <node oor:name=".uno:ConvertInto3DLatheFast" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">To 3D ~Rotation Object</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -617,61 +537,51 @@ </node> <node oor:name=".uno:ConvertIntoBitmap" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">To ~Bitmap</value> </prop> </node> <node oor:name=".uno:ConvertIntoMetaFile" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">To ~Metafile</value> </prop> </node> <node oor:name=".uno:PackAndGo" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Pack</value> </prop> </node> <node oor:name=".uno:convert_to_contour" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">To C~ontour</value> </prop> </node> <node oor:name=".uno:EditHyperlink" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">H~yperlink...</value> </prop> </node> <node oor:name=".uno:PageSetup" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Page...</value> </prop> </node> - <node oor:name=".uno:PasteSpecial" oor:op="replace"> + <node oor:name=".uno:PasteSpecial" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Paste ~Special...</value> </prop> </node> <node oor:name=".uno:CopyObjects" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Duplicat~e...</value> </prop> </node> <node oor:name=".uno:ManageLinks" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Lin~ks...</value> </prop> </node> <node oor:name=".uno:ConvertInto3DLathe" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">In 3D Rotation Object</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -680,37 +590,31 @@ </node> <node oor:name=".uno:DrawingMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Drawing View</value> </prop> </node> <node oor:name=".uno:OutlineMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Outline</value> </prop> </node> <node oor:name=".uno:OutputQualityContrast" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~High Contrast</value> </prop> </node> <node oor:name=".uno:DiaMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Sli~de Sorter</value> </prop> </node> <node oor:name=".uno:PreviewQualityContrast" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~High Contrast</value> </prop> </node> <node oor:name=".uno:InsertPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Slid~e</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -719,7 +623,6 @@ </node> <node oor:name=".uno:ImportFromFile" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~File...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -728,7 +631,6 @@ </node> <node oor:name=".uno:ZoomPanning" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Shift</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -737,13 +639,11 @@ </node> <node oor:name=".uno:PixelMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Pixel Mode</value> </prop> </node> <node oor:name=".uno:ObjectPosition" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Arrange</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -752,25 +652,21 @@ </node> <node oor:name=".uno:Combine" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Comb~ine</value> </prop> </node> <node oor:name=".uno:ObjectTitleDescription" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Description...</value> </prop> </node> <node oor:name=".uno:NameGroup" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Name...</value> </prop> </node> <node oor:name=".uno:ConnectorToolbox" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Connector</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -779,7 +675,6 @@ </node> <node oor:name=".uno:Forward" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Bring ~Forward</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -788,7 +683,6 @@ </node> <node oor:name=".uno:Backward" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Send Back~ward</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -797,19 +691,16 @@ </node> <node oor:name=".uno:MirrorVert" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Vertically</value> </prop> </node> <node oor:name=".uno:MirrorHorz" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Horizontally</value> </prop> </node> <node oor:name=".uno:ChangeBezier" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">To ~Curve</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -818,7 +709,6 @@ </node> <node oor:name=".uno:ChangePolygon" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">To ~Polygon</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -827,25 +717,21 @@ </node> <node oor:name=".uno:CapturePoint" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Insert Snap Point/Line...</value> </prop> </node> <node oor:name=".uno:ShowRuler" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Ruler</value> </prop> </node> <node oor:name=".uno:InsertLayer" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Layer...</value> </prop> </node> <node oor:name=".uno:ModifyPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Slide ~Layout...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -854,25 +740,21 @@ </node> <node oor:name=".uno:ModifyLayer" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Layer...</value> </prop> </node> <node oor:name=".uno:PageMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Normal</value> </prop> </node> <node oor:name=".uno:LayerMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Layer</value> </prop> </node> <node oor:name=".uno:MeasureLine" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Dimension Line</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -881,13 +763,11 @@ </node> <node oor:name=".uno:MasterPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Master</value> </prop> </node> <node oor:name=".uno:DiaEffect" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Slide Effects</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -896,7 +776,6 @@ </node> <node oor:name=".uno:DiaSpeed" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Transition Speed</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -905,7 +784,6 @@ </node> <node oor:name=".uno:DiaAuto" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">AutoTransition</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -914,7 +792,6 @@ </node> <node oor:name=".uno:DiaTime" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Time</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -923,7 +800,6 @@ </node> <node oor:name=".uno:Connector" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Connector</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -932,7 +808,6 @@ </node> <node oor:name=".uno:ActionMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Allow Interaction</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -941,7 +816,6 @@ </node> <node oor:name=".uno:AnimationObjects" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Animated Image...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -950,7 +824,6 @@ </node> <node oor:name=".uno:AnimationEffects" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Interaction...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -959,7 +832,6 @@ </node> <node oor:name=".uno:PresentationLayout" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Slide D~esign...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -968,49 +840,41 @@ </node> <node oor:name=".uno:NotesMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Notes ~Page</value> </prop> </node> <node oor:name=".uno:HandoutMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">H~andout Page</value> </prop> </node> <node oor:name=".uno:DeletePage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">D~elete Slide</value> </prop> </node> <node oor:name=".uno:DeleteLayer" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Delete</value> </prop> </node> <node oor:name=".uno:Dismantle" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Split</value> </prop> </node> <node oor:name=".uno:PageStatus" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Slide/Layer</value> </prop> </node> <node oor:name=".uno:LayoutStatus" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Layout</value> </prop> </node> <node oor:name=".uno:CrookRotate" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Set in Circle (perspective)</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1019,7 +883,6 @@ </node> <node oor:name=".uno:CrookSlant" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Set to circle (slant)</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1028,25 +891,21 @@ </node> <node oor:name=".uno:CrookStretch" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Set in Circle (distort)</value> </prop> </node> <node oor:name=".uno:Connect" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">C~onnect</value> </prop> </node> <node oor:name=".uno:Break" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Break</value> </prop> </node> <node oor:name=".uno:AdvancedMode" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Effects</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1055,7 +914,6 @@ </node> <node oor:name=".uno:InteractiveTransparence" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Transparency</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1064,7 +922,6 @@ </node> <node oor:name=".uno:InteractiveGradient" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Gradient</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1073,7 +930,6 @@ </node> <node oor:name=".uno:Shear" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Distort</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1082,7 +938,6 @@ </node> <node oor:name=".uno:BehindObject" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Be~hind Object</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1091,7 +946,6 @@ </node> <node oor:name=".uno:ReverseOrder" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Reverse</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1100,7 +954,6 @@ </node> <node oor:name=".uno:ConnectorArrowStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Connector Starts with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1109,7 +962,6 @@ </node> <node oor:name=".uno:ConnectorArrowEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Connector Ends with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1118,7 +970,6 @@ </node> <node oor:name=".uno:ConnectorArrows" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Connector with Arrows</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1127,7 +978,6 @@ </node> <node oor:name=".uno:ConnectorCircleStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Connector Starts with Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1136,7 +986,6 @@ </node> <node oor:name=".uno:ConnectorCircleEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Connector Ends with Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1145,7 +994,6 @@ </node> <node oor:name=".uno:ConnectorCircles" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Connector with Circles</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1154,7 +1002,6 @@ </node> <node oor:name=".uno:TextToolbox" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Text</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1163,7 +1010,6 @@ </node> <node oor:name=".uno:ConnectorLine" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Straight Connector</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1172,7 +1018,6 @@ </node> <node oor:name=".uno:RectangleToolbox" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Rectangle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1181,7 +1026,6 @@ </node> <node oor:name=".uno:ConnectorLineArrowStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Straight Connector starts with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1190,7 +1034,6 @@ </node> <node oor:name=".uno:EllipseToolbox" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Ellipse</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1199,7 +1042,6 @@ </node> <node oor:name=".uno:ConnectorLineArrowEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Straight Connector ends with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1208,7 +1050,6 @@ </node> <node oor:name=".uno:LineToolbox" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Curve</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1217,7 +1058,6 @@ </node> <node oor:name=".uno:ConnectorLineArrows" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Straight Connector with Arrows</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1226,7 +1066,6 @@ </node> <node oor:name=".uno:ConnectorLineCircleStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Straight Connector starts with Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1235,7 +1074,6 @@ </node> <node oor:name=".uno:ConnectorLineCircleEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Straight Connector ends with Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1244,7 +1082,6 @@ </node> <node oor:name=".uno:ConnectorLineCircles" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Straight Connector with Circles</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1253,7 +1090,6 @@ </node> <node oor:name=".uno:ConnectorCurve" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Curved Connector</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1262,7 +1098,6 @@ </node> <node oor:name=".uno:ConnectorCurveArrowStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Curved Connector Starts with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1271,7 +1106,6 @@ </node> <node oor:name=".uno:ConnectorCurveArrowEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Curved Connector Ends with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1280,7 +1114,6 @@ </node> <node oor:name=".uno:ConnectorCurveArrows" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Curved Connector with Arrows</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1289,7 +1122,6 @@ </node> <node oor:name=".uno:ConnectorCurveCircleStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Curved Connector Starts with Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1298,7 +1130,6 @@ </node> <node oor:name=".uno:ConnectorCurveCircleEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Curved Connector Ends with Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1307,7 +1138,6 @@ </node> <node oor:name=".uno:ConnectorCurveCircles" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Curved Connector with Circles</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1316,7 +1146,6 @@ </node> <node oor:name=".uno:ConnectorLines" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Connector</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1325,7 +1154,6 @@ </node> <node oor:name=".uno:ConnectorLinesArrowStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Connector Starts with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1334,7 +1162,6 @@ </node> <node oor:name=".uno:ConnectorLinesArrowEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Connector Ends with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1343,7 +1170,6 @@ </node> <node oor:name=".uno:ConnectorLinesArrows" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Connector with Arrows</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1352,7 +1178,6 @@ </node> <node oor:name=".uno:ConnectorLinesCircleStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Connector Starts with Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1361,7 +1186,6 @@ </node> <node oor:name=".uno:ConnectorLinesCircleEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Connector Ends with Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1370,7 +1194,6 @@ </node> <node oor:name=".uno:ConnectorLinesCircles" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Connector with Circles</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1379,7 +1202,6 @@ </node> <node oor:name=".uno:GraphicDraft" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Picture Placeholders</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1388,7 +1210,6 @@ </node> <node oor:name=".uno:FillDraft" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Contour Mode</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1397,7 +1218,6 @@ </node> <node oor:name=".uno:TextDraft" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Text Placeholders</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1406,7 +1226,6 @@ </node> <node oor:name=".uno:LineDraft" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Contour Only</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1415,7 +1234,6 @@ </node> <node oor:name=".uno:HandlesDraft" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Simple Handles</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1424,7 +1242,6 @@ </node> <node oor:name=".uno:SolidCreate" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Modify Object with Attributes</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1433,7 +1250,6 @@ </node> <node oor:name=".uno:HelplinesUse" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Snap to Guides</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1442,7 +1258,6 @@ </node> <node oor:name=".uno:SnapBorder" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Snap to Page Margins</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1451,7 +1266,6 @@ </node> <node oor:name=".uno:SnapFrame" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Snap to Object Border</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1460,7 +1274,6 @@ </node> <node oor:name=".uno:SnapPoints" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Snap to Object Points</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1469,7 +1282,6 @@ </node> <node oor:name=".uno:QuickEdit" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Allow Quick Editing</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1478,7 +1290,6 @@ </node> <node oor:name=".uno:PickThrough" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Select Text Area Only</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1487,49 +1298,41 @@ </node> <node oor:name=".uno:ConvertTo1BitThreshold" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">1 Bit Threshold</value> </prop> </node> <node oor:name=".uno:ConvertTo1BitMatrix" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">1 Bit Dithered</value> </prop> </node> <node oor:name=".uno:ConvertTo4BitGrays" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">4 Bit grayscales</value> </prop> </node> <node oor:name=".uno:ConvertTo4BitColors" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">4 Bit color palette</value> </prop> </node> <node oor:name=".uno:ConvertTo8BitGrays" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">8 Bit Grayscales</value> </prop> </node> <node oor:name=".uno:ConvertTo8BitColors" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">8 Bit color palette</value> </prop> </node> <node oor:name=".uno:ConvertToTrueColor" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">24 Bit True Color</value> </prop> </node> <node oor:name=".uno:BigHandles" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Large Handles</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1538,7 +1341,6 @@ </node> <node oor:name=".uno:DoubleClickTextEdit" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Double-click to edit Text</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1547,7 +1349,6 @@ </node> <node oor:name=".uno:ClickChangeRotation" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Rotation Mode after Clicking Object</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1556,7 +1357,6 @@ </node> <node oor:name=".uno:ArrowsToolbox" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Lines and Arrows</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1565,7 +1365,6 @@ </node> <node oor:name=".uno:LineArrowStart" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Starts with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1574,7 +1373,6 @@ </node> <node oor:name=".uno:LineArrowEnd" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line Ends with Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1583,7 +1381,6 @@ </node> <node oor:name=".uno:LineArrows" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line with Arrows</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1592,7 +1389,6 @@ </node> <node oor:name=".uno:LineArrowCircle" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line with Arrow/Circle</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1601,7 +1397,6 @@ </node> <node oor:name=".uno:LineCircleArrow" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line with Circle/Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1610,7 +1405,6 @@ </node> <node oor:name=".uno:LineArrowSquare" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line with Arrow/Square</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1619,7 +1413,6 @@ </node> <node oor:name=".uno:LineSquareArrow" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Line with Square/Arrow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1628,17 +1421,14 @@ </node> <node oor:name=".uno:Mirror" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Flip</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> <value>1</value> </prop> </node> - <node oor:name=".uno:InsertMasterPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">New Master</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1647,7 +1437,6 @@ </node> <node oor:name=".uno:DeleteMasterPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Delete Master</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1656,7 +1445,6 @@ </node> <node oor:name=".uno:RenameMasterPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Rename Master</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> @@ -1665,19 +1453,16 @@ </node> <node oor:name=".uno:CloseMasterView" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Close Master View</value> </prop> </node> <node oor:name=".uno:SendMailDocAsMS" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">E-mail as ~Microsoft PowerPoint Presentation...</value> </prop> </node> <node oor:name=".uno:SendMailDocAsOOo" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">E-mail as ~OpenDocument Presentation...</value> </prop> </node> @@ -1685,61 +1470,51 @@ <node oor:name="Popups"> <node oor:name=".uno:ModifyMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Modify</value> </prop> </node> <node oor:name=".uno:WorkspaceMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Wor~kspace</value> </prop> </node> <node oor:name=".uno:MirrorMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Flip</value> </prop> </node> <node oor:name=".uno:PreviewDisplayQualityMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Pre~view Mode</value> </prop> </node> <node oor:name=".uno:LayerMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">La~yer</value> </prop> </node> <node oor:name=".uno:GridMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Gr~id</value> </prop> </node> <node oor:name=".uno:ConvertMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Convert</value> </prop> </node> <node oor:name=".uno:ArrangeMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Arrange</value> </prop> </node> <node oor:name=".uno:DisplayQualityMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Color/Grayscale</value> </prop> </node> <node oor:name=".uno:SlideShowMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Slide Show</value> </prop> </node> @@ -1750,107 +1525,89 @@ </node--> <node oor:name=".uno:GroupMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Group</value> </prop> </node> <node oor:name=".uno:SendMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Sen~d</value> </prop> </node> <node oor:name=".uno:TemplatesMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Styl~es</value> </prop> </node> <node oor:name=".uno:SnapLinesMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Guides</value> </prop> </node> <node oor:name=".uno:MasterPageMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Master</value> </prop> </node> <node oor:name=".uno:MasterLayoutsMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Master Lay~outs</value> </prop> </node> <node oor:name=".uno:MasterLayouts" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Master ~Elements...</value> </prop> </node> <node oor:name=".uno:MasterLayoutsNotes" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Notes Master Layout...</value> </prop> </node> <node oor:name=".uno:MasterLayoutsHandouts" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Handout Master Layout...</value> </prop> </node> <node oor:name=".uno:HeaderAndFooter" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Header and Footer...</value> </prop> </node> <node oor:name=".uno:InsertPageNumber" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">P~age Number...</value> </prop> </node> <node oor:name=".uno:InsertDateAndTime" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Date and ~Time...</value> </prop> </node> <node oor:name=".uno:NormalMultiPaneGUI" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Normal</value> </prop> </node> <node oor:name=".uno:SlideSorterMultiPaneGUI" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Sli~de Sorter</value> </prop> </node> <node oor:name=".uno:LeftPaneImpress" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">S~lide Pane</value> </prop> </node> <node oor:name=".uno:LeftPaneDraw" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Page Pane</value> </prop> </node> <node oor:name=".uno:RightPane" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Tas~k Pane</value> </prop> </node> - <node oor:name=".uno:MergeCells" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="de">Zellen verbinden</value> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu index 385617f693..4a316a7c32 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu @@ -705,7 +705,21 @@ <prop oor:name="ContextSensitive" oor:type="xs:boolean"> <value>true</value> </prop> - </node> - </node> + </node> + <node oor:name="private:resource/toolbar/optimizetablebar" oor:op="replace"> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Optimize</value> + </prop> + <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + </node> </node> </oor:component-data> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index ab40f205c3..b103e9016c 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -45,7 +45,7 @@ <value xml:lang="en-US">Fontwork Gallery</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:FontworkShapeType" oor:op="replace"> @@ -1287,7 +1287,7 @@ <value xml:lang="en-US">Scrollbar</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Zoom" oor:op="replace"> @@ -1303,7 +1303,7 @@ <value xml:lang="en-US">Spin Button</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ConvertToScrollBar" oor:op="replace"> @@ -1371,7 +1371,7 @@ <value xml:lang="en-US">Italic</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Bold" oor:op="replace"> @@ -1379,7 +1379,7 @@ <value xml:lang="en-US">Bold</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ModuleDialog" oor:op="replace"> @@ -1395,7 +1395,7 @@ <value xml:lang="en-US">Shadow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ObjectCatalog" oor:op="replace"> @@ -1411,7 +1411,7 @@ <value xml:lang="en-US">Outline</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Strikeout" oor:op="replace"> @@ -1419,7 +1419,7 @@ <value xml:lang="en-US">Strikethrough</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:HelpOnHelp" oor:op="replace"> @@ -1432,7 +1432,7 @@ <value xml:lang="en-US">Underline</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Overline" oor:op="replace"> @@ -1440,7 +1440,7 @@ <value xml:lang="en-US">Overline</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:HelpIndex" oor:op="replace"> @@ -1505,7 +1505,7 @@ <value xml:lang="en-US">Align Left</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>3</value> + <value>11</value> </prop> </node> <node oor:name=".uno:RightPara" oor:op="replace"> @@ -1513,7 +1513,7 @@ <value xml:lang="en-US">Align Right</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>3</value> + <value>11</value> </prop> </node> <node oor:name=".uno:CenterPara" oor:op="replace"> @@ -1521,7 +1521,7 @@ <value xml:lang="en-US">Centered</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>3</value> + <value>11</value> </prop> </node> <node oor:name=".uno:SendFax" oor:op="replace"> @@ -1537,7 +1537,7 @@ <value xml:lang="en-US">Justified</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>7</value> + <value>15</value> </prop> </node> <node oor:name=".uno:HelpChooseFile" oor:op="replace"> @@ -1550,7 +1550,7 @@ <value xml:lang="en-US">Line Spacing: 1</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>7</value> + <value>15</value> </prop> </node> <node oor:name=".uno:SpacePara15" oor:op="replace"> @@ -1558,7 +1558,7 @@ <value xml:lang="en-US">Line Spacing : 1.5</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>7</value> + <value>15</value> </prop> </node> <node oor:name=".uno:SpacePara2" oor:op="replace"> @@ -1566,7 +1566,7 @@ <value xml:lang="en-US">Line Spacing : 2</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>7</value> + <value>15</value> </prop> </node> <node oor:name=".uno:StatusGetPosition" oor:op="replace"> @@ -1717,7 +1717,7 @@ <value xml:lang="en-US">Invert</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Line" oor:op="replace"> @@ -2071,7 +2071,7 @@ <value xml:lang="en-US">Bullets On/Off</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>7</value> + <value>15</value> </prop> </node> <node oor:name=".uno:FormatArea" oor:op="replace"> @@ -2150,7 +2150,7 @@ <value xml:lang="en-US">Numbering On/Off</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>7</value> + <value>15</value> </prop> </node> <node oor:name=".uno:BezierConvert" oor:op="replace"> @@ -2195,7 +2195,7 @@ <value xml:lang="en-US">Check Box</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ChangeCaseToKatakana" oor:op="replace"> @@ -2309,7 +2309,7 @@ <value xml:lang="en-US">Edit File</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:InsertImageControl" oor:op="replace"> @@ -2423,7 +2423,7 @@ <value xml:lang="en-US">Time Field</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:StyleNewByExample" oor:op="replace"> @@ -2590,7 +2590,7 @@ <value xml:lang="en-US">Left-To-Right</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>3</value> + <value>11</value> </prop> </node> <node oor:name=".uno:Group" oor:op="replace"> @@ -2606,7 +2606,7 @@ <value xml:lang="en-US">Right-To-Left</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>3</value> + <value>11</value> </prop> </node> <node oor:name=".uno:Ungroup" oor:op="replace"> @@ -2726,7 +2726,7 @@ <value xml:lang="en-US">Combo Box</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Spinbutton" oor:op="replace"> @@ -2891,7 +2891,7 @@ <value xml:lang="en-US">Guides When Moving</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:CloseWin" oor:op="replace"> @@ -2907,7 +2907,7 @@ <value xml:lang="en-US">Snap to Grid</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:InsertTextFrame" oor:op="replace"> @@ -3144,7 +3144,7 @@ <value xml:lang="en-US">HT~ML Source</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:InsertSound" oor:op="replace"> @@ -3168,7 +3168,7 @@ <value xml:lang="en-US">~Hyperlink</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Merge" oor:op="replace"> @@ -3186,7 +3186,7 @@ <value xml:lang="en-US">Superscript</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Intersect" oor:op="replace"> @@ -3199,7 +3199,7 @@ <value xml:lang="en-US">Subscript</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:FontDialog" oor:op="replace"> @@ -3228,7 +3228,7 @@ <value xml:lang="en-US">Shadow</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:LineEndStyle" oor:op="replace"> @@ -3260,7 +3260,7 @@ <value xml:lang="en-US">Format Paintbrush</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Repeat" oor:op="replace"> @@ -3328,7 +3328,7 @@ <value xml:lang="en-US">~Edit Contour...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:SelectAll" oor:op="replace"> @@ -3417,7 +3417,7 @@ <value xml:lang="en-US">Na~vigator</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:RestoreEditingView" oor:op="replace"> @@ -3434,13 +3434,16 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Fit to Frame</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:ImageMapDialog" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">ImageMap</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:GoDownSel" oor:op="replace"> @@ -3684,14 +3687,17 @@ <value xml:lang="en-US">~Display Grid</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Flash" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Flash</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:ToolsMacroEdit" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Edit Macros</value> @@ -3980,7 +3986,7 @@ <value xml:lang="en-US">~AutoSpellcheck</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:HideSpellMark" oor:op="replace"> @@ -3995,9 +4001,12 @@ </node> <node oor:name=".uno:RubyDialog" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">As~ian phonetic guide...</value> + <value xml:lang="en-US">As~ian phonetic guide...</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:InsertSymbol" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">S~pecial Character...</value> @@ -4011,7 +4020,7 @@ <value xml:lang="en-US">~Data Sources</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:MenuBarVisible" oor:op="replace"> @@ -4094,7 +4103,10 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Status ~Bar</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:MacroBarVisible" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Macro Toolbar On/Off</value> @@ -4220,7 +4232,7 @@ <value xml:lang="en-US">~Gallery</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:SearchDialog" oor:op="replace"> @@ -4228,7 +4240,7 @@ <value xml:lang="en-US">~Find & Replace...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:HelperDialog" oor:op="replace"> @@ -4260,7 +4272,7 @@ <value xml:lang="en-US">More Controls</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:FormDesignTools" oor:op="replace"> @@ -4268,7 +4280,7 @@ <value xml:lang="en-US">Form Design</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Pushbutton" oor:op="replace"> @@ -4276,7 +4288,7 @@ <value xml:lang="en-US">Push Button</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:RadioButton" oor:op="replace"> @@ -4284,7 +4296,7 @@ <value xml:lang="en-US">Option Button</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:CheckBox" oor:op="replace"> @@ -4300,7 +4312,7 @@ <value xml:lang="en-US">Label Field</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:GroupBox" oor:op="replace"> @@ -4308,7 +4320,7 @@ <value xml:lang="en-US">Group Box</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Edit" oor:op="replace"> @@ -4316,7 +4328,7 @@ <value xml:lang="en-US">Text Box</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ListBox" oor:op="replace"> @@ -4324,7 +4336,7 @@ <value xml:lang="en-US">List Box</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ComboBox" oor:op="replace"> @@ -4340,7 +4352,7 @@ <value xml:lang="en-US">Table Control</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Imagebutton" oor:op="replace"> @@ -4348,7 +4360,7 @@ <value xml:lang="en-US">Image Button</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:FileControl" oor:op="replace"> @@ -4356,7 +4368,7 @@ <value xml:lang="en-US">File Selection</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ControlProperties" oor:op="replace"> @@ -4364,7 +4376,7 @@ <value xml:lang="en-US">Con~trol...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:FormProperties" oor:op="replace"> @@ -4372,7 +4384,7 @@ <value xml:lang="en-US">For~m...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:TabDialog" oor:op="replace"> @@ -4475,7 +4487,7 @@ <value xml:lang="en-US">Design Mode On/Off</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:SwitchXFormsDesignMode" oor:op="replace"> @@ -4508,7 +4520,7 @@ <value xml:lang="pt">Modo Esboço</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:RecUndo" oor:op="replace"> @@ -4529,7 +4541,7 @@ <value xml:lang="en-US">Form Navigator...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ShowDataNavigator" oor:op="replace"> @@ -4537,7 +4549,7 @@ <value xml:lang="en-US">Data Navigator...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Window3D" oor:op="replace"> @@ -4604,7 +4616,7 @@ <value xml:lang="en-US">Date Field</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:TimeField" oor:op="replace"> @@ -4612,7 +4624,7 @@ <value xml:lang="en-US">Time Field</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:NumericField" oor:op="replace"> @@ -4620,7 +4632,7 @@ <value xml:lang="en-US">Numerical Field</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:CurrencyField" oor:op="replace"> @@ -4628,7 +4640,7 @@ <value xml:lang="en-US">Currency Field</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:PrintPreview" oor:op="replace"> @@ -4636,7 +4648,7 @@ <value xml:lang="en-US">Pa~ge Preview</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:PatternField" oor:op="replace"> @@ -4644,7 +4656,7 @@ <value xml:lang="en-US">Pattern Field</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:OpenReadOnly" oor:op="replace"> @@ -4652,7 +4664,7 @@ <value xml:lang="en-US">Open in Design Mode</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ImageControl" oor:op="replace"> @@ -4660,7 +4672,7 @@ <value xml:lang="en-US">Image Control</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:RemoveFilterSort" oor:op="replace"> @@ -4732,7 +4744,7 @@ <value xml:lang="en-US">Run SQL command directly</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:SbaExecuteSql" oor:op="replace"> @@ -4756,7 +4768,7 @@ <value xml:lang="en-US">Apply Filter</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:Refresh" oor:op="replace"> @@ -4788,7 +4800,7 @@ <value xml:lang="en-US">Wizards On/Off</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:FormattedField" oor:op="replace"> @@ -4796,7 +4808,7 @@ <value xml:lang="en-US">Formatted Field</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:FormFilter" oor:op="replace"> @@ -4934,7 +4946,7 @@ <value xml:lang="en-US">Automatic Control Focus</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:DSBrowserExplorer" oor:op="replace"> @@ -4942,7 +4954,7 @@ <value xml:lang="en-US">Explorer On/Off</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:ExtrusionToggle" oor:op="replace"> @@ -5292,7 +5304,7 @@ <value xml:lang="en-US">Media Pla~yer</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:InsertAVMedia" oor:op="replace"> @@ -5316,7 +5328,7 @@ <value xml:lang="en-US">~Color</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:InsertHardHyphen" oor:op="replace"> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu index af45c79cdf..f887055161 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu @@ -800,7 +800,21 @@ <prop oor:name="ContextSensitive" oor:type="xs:boolean"> <value>true</value> </prop> - </node> - </node> + </node> + <node oor:name="private:resource/toolbar/optimizetablebar" oor:op="replace"> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>false</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Optimize</value> + </prop> + <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + </node> </node> </oor:component-data> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/MathCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/MathCommands.xcu index e69558fc4e..1a3db34f6e 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/MathCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/MathCommands.xcu @@ -164,7 +164,7 @@ <value xml:lang="en-US">Formula Cursor</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> </node> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu index fa0611e070..4fa236666b 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu @@ -38,12 +38,18 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Hidden Paragraphs</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:ShowAnnotations" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Comments</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:InsertScript" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">S~cript...</value> @@ -115,13 +121,16 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Bibliography Entry...</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:ShadowCursor" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Direct Cursor On/Off</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:StartAutoCorrect" oor:op="replace"> @@ -166,12 +175,18 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Record</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:ShowTrackedChanges" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Show</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:GotoPage" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">To Page</value> @@ -460,7 +475,7 @@ <value xml:lang="en-US">Insert Fields</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:InsertDateField" oor:op="replace"> @@ -539,9 +554,12 @@ </node> <node oor:name=".uno:OnlineAutoFormat" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~While Typing</value> + <value xml:lang="en-US">~While Typing</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:StatePageNumber" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Page Number</value> @@ -573,7 +591,7 @@ <value xml:lang="en-US">Double Underline </value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:AutoFormatRedlineApply" oor:op="replace"> @@ -596,7 +614,7 @@ <value xml:lang="en-US">Superscript</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:SubScript" oor:op="replace"> @@ -604,7 +622,7 @@ <value xml:lang="en-US">Subscript</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:CharLeftSel" oor:op="replace"> @@ -866,7 +884,7 @@ <value xml:lang="en-US">Wrap Off</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>7</value> + <value>15</value> </prop> </node> <node oor:name=".uno:WrapOn" oor:op="replace"> @@ -1723,7 +1741,7 @@ <value xml:lang="en-US">Link Frames</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:AlignCharBottom" oor:op="replace"> @@ -1754,7 +1772,7 @@ <value xml:lang="en-US">Restart Numbering</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>7</value> + <value>15</value> </prop> </node> <node oor:name=".uno:JumpToHeader" oor:op="replace"> @@ -1875,7 +1893,10 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Allow Row to Break Across Pages and Columns</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:SelectText" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Select Paragraph</value> @@ -2024,7 +2045,10 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Font Color Fill</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:ViewBounds" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Te~xt Boundaries</value> @@ -2058,7 +2082,10 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Highlight Fill</value> </prop> - </node> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> + </node> <node oor:name=".uno:VRuler" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Vertical Ruler</value> @@ -2069,7 +2096,7 @@ <value xml:lang="en-US">~Hyphenation...</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:VScroll" oor:op="replace"> @@ -2097,7 +2124,7 @@ <value xml:lang="en-US">~Nonprinting Characters</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:SortDialog" oor:op="replace"> @@ -2136,7 +2163,7 @@ <value xml:lang="en-US">Book Preview</value> </prop> <prop oor:name="Properties" oor:type="xs:int"> - <value>1</value> + <value>9</value> </prop> </node> <node oor:name=".uno:RemoveDirectCharFormats" oor:op="replace"> @@ -2158,11 +2185,17 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Standard</value> </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> </node> <node oor:name=".uno:SelectionModeBlock" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Block Area</value> </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>8</value> + </prop> </node> </node> <node oor:name="Popups"> diff --git a/officecfg/registry/data/org/openoffice/Office/Writer.xcu b/officecfg/registry/data/org/openoffice/Office/Writer.xcu index d19e9e5d78..8add2a0aa1 100644 --- a/officecfg/registry/data/org/openoffice/Office/Writer.xcu +++ b/officecfg/registry/data/org/openoffice/Office/Writer.xcu @@ -40,7 +40,7 @@ <prop oor:name="IsHideEmptyParagraphs" > <value>true</value> </prop> - <prop oor:name="EMailSupported" install:module="javamail"> + <prop oor:name="EMailSupported"> <value>true</value> </prop> </node> diff --git a/officecfg/registry/data/org/openoffice/Office/makefile.mk b/officecfg/registry/data/org/openoffice/Office/makefile.mk index 5cd876f75b..e65b03371d 100644 --- a/officecfg/registry/data/org/openoffice/Office/makefile.mk +++ b/officecfg/registry/data/org/openoffice/Office/makefile.mk @@ -88,7 +88,6 @@ MODULEFILES= \ Paths-unxwnt.xcu \ Paths-unixdesktop.xcu \ Writer-cjk.xcu \ - Writer-javamail.xcu \ Impress-ogltrans.xcu \ Embedding-calc.xcu \ Embedding-chart.xcu \ diff --git a/officecfg/registry/data/org/openoffice/Setup.xcu b/officecfg/registry/data/org/openoffice/Setup.xcu index 087e2cf6c5..5afb19f394 100755 --- a/officecfg/registry/data/org/openoffice/Setup.xcu +++ b/officecfg/registry/data/org/openoffice/Setup.xcu @@ -767,14 +767,14 @@ <prop oor:name="ExcludedFiles"> </prop> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.DataAccess</value> + <value>/org.openoffice.Office.DataAccess</value> </prop> <prop oor:name="ExcludedNodes"> <value> - org.openoffice.Office.DataAccess/Bibliography - org.openoffice.Office.DataAccess/ConnectionPool - org.openoffice.Office.DataAccess/DataSources - org.openoffice.Office.DataAccess/DriverManager + <it>/org.openoffice.Office.DataAccess/Bibliography</it> + <it>/org.openoffice.Office.DataAccess/ConnectionPool</it> + <it>/org.openoffice.Office.DataAccess/DataSources</it> + <it>/org.openoffice.Office.DataAccess/DriverManager</it> </value> </prop> </node> @@ -785,9 +785,7 @@ </node> <node oor:name="Inet" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value> - org.openoffice.Inet - </value> + <value>/org.openoffice.Inet</value> </prop> </node> <node oor:name="Basic" oor:op="replace"> @@ -797,7 +795,7 @@ </node> <node oor:name="UserProfile" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.UserProfile</value> + <value>/org.openoffice.UserProfile</value> </prop> </node> <node oor:name="Common" oor:op="replace"> @@ -814,77 +812,77 @@ </prop> <prop oor:name="IncludedNodes"> <value> - org.openoffice.Office.Compatibility - org.openoffice.Office.Custom - org.openoffice.Office.Embedding - org.openoffice.Office.Events - org.openoffice.Office.ExtendedColorScheme - org.openoffice.Office.Common/Accessibility - org.openoffice.Office.Common/Accessibility/AutoDetectSystemHC - org.openoffice.Office.Common/AsianLayout - org.openoffice.Office.Common/AutoCorrect - org.openoffice.Office.Common/Cache - org.openoffice.Office.Common/DateFormat - org.openoffice.Office.Common/ExternalMailer/Program - org.openoffice.Office.Common/Filter - org.openoffice.Office.Common/Font - org.openoffice.Office.Common/Forms - org.openoffice.Office.Common/Gallery - org.openoffice.Office.Common/Help - org.openoffice.Office.Common/History - org.openoffice.Office.Common/I18N - org.openoffice.Office.Common/InternalMSExport - org.openoffice.Office.Common/Load - org.openoffice.Office.Common/Misc/FormControlPilotsEnabled - org.openoffice.Office.Common/Misc/PluginsEnabled - org.openoffice.Office.Common/Misc/SymbolSet - org.openoffice.Office.Common/Misc/UseSystemFileDialog - org.openoffice.Office.Common/Misc/UseSystemPrintDialog - org.openoffice.Office.Common/Misc/SymbolStyle - org.openoffice.Office.Common/Passwords - org.openoffice.Office.Common/Print/PrintingModifiesDocument - org.openoffice.Office.Common/Print/Warning - org.openoffice.Office.Common/Vectorize - org.openoffice.Office.Common/Save - org.openoffice.Office.Common/SearchOptions - org.openoffice.Office.Common/Undo - org.openoffice.Office.Common/View/Dialog/Dialog/MiddleMouseButton - org.openoffice.Office.Common/View/Dialog/MousePositioning - org.openoffice.Office.Common/View/Localization - org.openoffice.Office.Common/View/Menu - org.openoffice.Office.Common/_3D_Engine + <it>/org.openoffice.Office.Compatibility</it> + <it>/org.openoffice.Office.Custom</it> + <it>/org.openoffice.Office.Embedding</it> + <it>/org.openoffice.Office.Events</it> + <it>/org.openoffice.Office.ExtendedColorScheme</it> + <it>/org.openoffice.Office.Common/Accessibility</it> + <it>/org.openoffice.Office.Common/Accessibility/AutoDetectSystemHC</it> + <it>/org.openoffice.Office.Common/AsianLayout</it> + <it>/org.openoffice.Office.Common/AutoCorrect</it> + <it>/org.openoffice.Office.Common/Cache</it> + <it>/org.openoffice.Office.Common/DateFormat</it> + <it>/org.openoffice.Office.Common/ExternalMailer/Program</it> + <it>/org.openoffice.Office.Common/Filter</it> + <it>/org.openoffice.Office.Common/Font</it> + <it>/org.openoffice.Office.Common/Forms</it> + <it>/org.openoffice.Office.Common/Gallery</it> + <it>/org.openoffice.Office.Common/Help</it> + <it>/org.openoffice.Office.Common/History</it> + <it>/org.openoffice.Office.Common/I18N</it> + <it>/org.openoffice.Office.Common/InternalMSExport</it> + <it>/org.openoffice.Office.Common/Load</it> + <it>/org.openoffice.Office.Common/Misc/FormControlPilotsEnabled</it> + <it>/org.openoffice.Office.Common/Misc/PluginsEnabled</it> + <it>/org.openoffice.Office.Common/Misc/SymbolSet</it> + <it>/org.openoffice.Office.Common/Misc/UseSystemFileDialog</it> + <it>/org.openoffice.Office.Common/Misc/UseSystemPrintDialog</it> + <it>/org.openoffice.Office.Common/Misc/SymbolStyle</it> + <it>/org.openoffice.Office.Common/Passwords</it> + <it>/org.openoffice.Office.Common/Print/PrintingModifiesDocument</it> + <it>/org.openoffice.Office.Common/Print/Warning</it> + <it>/org.openoffice.Office.Common/Vectorize</it> + <it>/org.openoffice.Office.Common/Save</it> + <it>/org.openoffice.Office.Common/SearchOptions</it> + <it>/org.openoffice.Office.Common/Undo</it> + <it>/org.openoffice.Office.Common/View/Dialog/Dialog/MiddleMouseButton</it> + <it>/org.openoffice.Office.Common/View/Dialog/MousePositioning</it> + <it>/org.openoffice.Office.Common/View/Localization</it> + <it>/org.openoffice.Office.Common/View/Menu</it> + <it>/org.openoffice.Office.Common/_3D_Engine</it> </value> </prop> <prop oor:name="ExcludedNodes"> <value> - org.openoffice.Office.Common/_3D_Engine/OpenGL - org.openoffice.Office.Common/Help/Registration + <it>/org.openoffice.Office.Common/_3D_Engine/OpenGL</it> + <it>/org.openoffice.Office.Common/Help/Registration</it> </value> </prop> </node> <node oor:name="Calc" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.Calc</value> + <value>/org.openoffice.Office.Calc</value> </prop> </node> <node oor:name="Chart" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.Chart</value> + <value>/org.openoffice.Office.Chart</value> </prop> </node> <node oor:name="Draw" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.Draw</value> + <value>/org.openoffice.Office.Draw</value> </prop> </node> <node oor:name="Impress" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.Impress</value> + <value>/org.openoffice.Office.Impress</value> </prop> </node> <node oor:name="Labels" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.Labels</value> + <value>/org.openoffice.Office.Labels</value> </prop> </node> <node oor:name="Linguistic" oor:op="replace"> @@ -892,36 +890,36 @@ <value>com.sun.star.migration.Wordbooks</value> </prop> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.Linguistic</value> + <value>/org.openoffice.Office.Linguistic</value> </prop> <prop oor:name="ExcludedNodes"> - <value>org.openoffice.Office.Linguistic/ServiceManager</value> + <value>/org.openoffice.Office.Linguistic/ServiceManager</value> </prop> </node> <node oor:name="Math" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.Math</value> + <value>/org.openoffice.Office.Math</value> </prop> </node> <node oor:name="Security" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.Security</value> + <value>/org.openoffice.Office.Security</value> </prop> </node> <node oor:name="UI" oor:op="replace"> <prop oor:name="IncludedNodes"> - <value>org.openoffice.Office.UI/ColorScheme</value> + <value>/org.openoffice.Office.UI/ColorScheme</value> </prop> </node> <node oor:name="Writer" oor:op="replace"> <prop oor:name="IncludedNodes"> <value> - org.openoffice.Office.Writer - org.openoffice.Office.WriterWeb + <it>/org.openoffice.Office.Writer</it> + <it>/org.openoffice.Office.WriterWeb</it> </value> </prop> <prop oor:name="ExcludedNodes"> - <value>org.openoffice.Office.Writer/Wizard</value> + <value>/org.openoffice.Office.Writer/Wizard</value> </prop> </node> </node> diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs index b5232c21eb..913902731f 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs @@ -782,13 +782,13 @@ <desc>MAX</desc> </info> </enumeration> - <enumeration oor:value="5"> + <enumeration oor:value="6"> <info> <desc>IF</desc> </info> </enumeration> </constraints> - <value>224 226 222 223 5</value> + <value>224 226 222 223 6</value> </prop> <prop oor:name="AutoInput" oor:type="xs:boolean"> <!-- OldPath: Calc/Input --> @@ -1206,7 +1206,7 @@ <desc>Specifies the number of decimals to be displayed for the Standard number format.</desc> <label>Decimal places</label> </info> - <value>2</value> + <value>-1</value> </prop> <prop oor:name="RegularExpressions" oor:type="xs:boolean"> <!-- UIHints: Tools - Options Spreadsheet Calculate [Check box] Enable regular expressions in formulas --> diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index a1e203a293..cb19bb01e1 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -5338,6 +5338,13 @@ </info> <value>true</value> </prop> + <prop oor:name="EmbedStandardFonts" oor:type="xs:boolean"> + <info> + <author>pl</author> + <desc>Specifies whether to embed the 14 standard PDF fonts or not.</desc> + </info> + <value>false</value> + </prop> <prop oor:name="FormsType" oor:type="xs:int"> <info> <desc>Specifies the submitted format of a PDF form.</desc> diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/Commands.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/Commands.xcs index 38ee3a2e4c..71efdab1b6 100644 --- a/officecfg/registry/schema/org/openoffice/Office/UI/Commands.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/UI/Commands.xcs @@ -52,6 +52,7 @@ Bit 0 = Command has an image. Bit 1 = Image must be mirrored (CTL/vertical text). Bit 2 = Image must be rotated (CTL/vertical text). + Bit 3 = Command supports a toggle state (Accessibility). </desc> </info> <value>0</value> diff --git a/officecfg/registry/schema/org/openoffice/Setup.xcs b/officecfg/registry/schema/org/openoffice/Setup.xcs index de8a64e2b0..a3d5ba6e5d 100644 --- a/officecfg/registry/schema/org/openoffice/Setup.xcs +++ b/officecfg/registry/schema/org/openoffice/Setup.xcs @@ -53,11 +53,6 @@ <desc>an optional uno service that is called after files and nodes have been copied in order to perform custom migration actions. The service needs to support XInitializable and XJob interfaces according do http://specs.openoffice.org/appwide/migration/spec_migration.sxw</desc> </info> </prop> - <prop oor:name="ServiceConfigComponents" oor:type="oor:string-list"> - <info> - <desc>a list of config components that are to be passed to service</desc> - </info> - </prop> <prop oor:name="IncludedFiles" oor:type="oor:string-list"> <info> <desc>a list of wildcards relative to the old userdata origin that are to be copied</desc> diff --git a/officecfg/util/alllang.xsl b/officecfg/util/alllang.xsl index 339c6685fa..dafb45c85c 100644 --- a/officecfg/util/alllang.xsl +++ b/officecfg/util/alllang.xsl @@ -100,7 +100,7 @@ <xsl:if test="@xml:lang=$locale and not(@install:module)"> <xsl:copy> <xsl:apply-templates select = "@*" mode="locale"/> - <xsl:value-of select="."/> + <xsl:copy-of select="node()"/> </xsl:copy> </xsl:if> </xsl:template> @@ -275,7 +275,7 @@ <xsl:otherwise> <xsl:copy> <xsl:apply-templates select = "@*"/> - <xsl:value-of select="."/> + <xsl:copy-of select="node()"/> </xsl:copy> </xsl:otherwise> </xsl:choose> @@ -285,7 +285,7 @@ <xsl:if test="@xml:lang=$fallback-locale and not(@install:module)"> <xsl:copy> <xsl:apply-templates select = "@*"/> - <xsl:value-of select="."/> + <xsl:copy-of select="node()"/> </xsl:copy> </xsl:if> </xsl:template> diff --git a/oovbaapi/genconstidl/makefile.mk b/oovbaapi/genconstidl/makefile.mk index be9fc931f3..078f4d0904 100644 --- a/oovbaapi/genconstidl/makefile.mk +++ b/oovbaapi/genconstidl/makefile.mk @@ -34,11 +34,6 @@ PRJNAME=oovbaapi .IF "$(L10N_framework)"=="" -.IF "$(ENABLE_VBA)"!="YES" -dummy: - @echo "not building vba..." -.ENDIF - # symbol files of Microsoft API MYSYMFILES = access.api vba.api adodb.api msforms.api word.api dao.api powerpoint.api excel.api stdole.api diff --git a/oovbaapi/ooo/vba/constants/makefile.mk b/oovbaapi/ooo/vba/constants/makefile.mk index a41f6e98a2..a731574363 100644 --- a/oovbaapi/ooo/vba/constants/makefile.mk +++ b/oovbaapi/ooo/vba/constants/makefile.mk @@ -35,11 +35,6 @@ PACKAGE=org$/vba$/constants .INCLUDE : $(PRJ)$/util$/makefile.pmk -.IF "$(ENABLE_VBA)"!="YES" -dummy: - @echo "not building vba..." -.ELSE - .IF "$(L10N_framework)"=="" # ------------------------------------------------------------------------ # I tried to use the IDLFILES target but it failed dismally @@ -64,4 +59,3 @@ $(MYDBTARGET) : $(MYURDFILES) $(MYIDLFILES) $(REGMERGE) $(OUT)$/ucr/constants.db /UCR @$(mktmp $(MYURDFILES)) .ENDIF -.ENDIF diff --git a/oovbaapi/ooo/vba/excel/XApplication.idl b/oovbaapi/ooo/vba/excel/XApplication.idl index 8cbebe6b7e..cae978d917 100644 --- a/oovbaapi/ooo/vba/excel/XApplication.idl +++ b/oovbaapi/ooo/vba/excel/XApplication.idl @@ -61,10 +61,6 @@ interface XApplication : com::sun::star::uno::XInterface [attribute, readonly] XWorksheet ActiveSheet; [attribute, readonly] ooo::vba::XAssistant Assistant; [attribute] long Calculation; - //#TODO #FIXME this is more of a placeholder, will return - // the value of activeworkbook, in xl 'ThisWorkbook' should return the - // workbook in which the 'calling' macro is running. Should be possible - // to determine this [attribute, readonly] XWorkbook ThisWorkbook; [attribute, readonly] string Name; [attribute] boolean DisplayAlerts; diff --git a/oovbaapi/ooo/vba/excel/XWorksheet.idl b/oovbaapi/ooo/vba/excel/XWorksheet.idl index c592858bd1..fb133abaf3 100644 --- a/oovbaapi/ooo/vba/excel/XWorksheet.idl +++ b/oovbaapi/ooo/vba/excel/XWorksheet.idl @@ -38,7 +38,10 @@ #ifndef __com_sun_star_script_XInvocation_idl__ #include <com/sun/star/script/XInvocation.idl> #endif - + +#ifndef __com_sun_star_container_XNamed_idl__ +#include <com/sun/star/container/XNamed.idl> +#endif //============================================================================= module ooo { module vba { module excel { @@ -55,8 +58,8 @@ interface XWorksheet { interface ::ooo::vba::XHelperInterface; interface ::com::sun::star::script::XInvocation; + interface ::com::sun::star::container::XNamed; - [attribute] string Name; [attribute] boolean Visible; [attribute, readonly] long StandardHeight; [attribute, readonly] long StandardWidth; diff --git a/oovbaapi/ooo/vba/excel/makefile.mk b/oovbaapi/ooo/vba/excel/makefile.mk index c31531af83..01e26d4cb1 100644 --- a/oovbaapi/ooo/vba/excel/makefile.mk +++ b/oovbaapi/ooo/vba/excel/makefile.mk @@ -34,11 +34,6 @@ PACKAGE=ooo$/vba$/Excel # --- Settings ----------------------------------------------------- .INCLUDE : $(PRJ)$/util$/makefile.pmk -.IF "$(ENABLE_VBA)"!="YES" -dummy: - @echo "not building vba..." -.ENDIF - # ------------------------------------------------------------------------ diff --git a/oovbaapi/ooo/vba/makefile.mk b/oovbaapi/ooo/vba/makefile.mk index e79d348116..7fc70303d9 100644 --- a/oovbaapi/ooo/vba/makefile.mk +++ b/oovbaapi/ooo/vba/makefile.mk @@ -34,11 +34,6 @@ PACKAGE=ooo$/vba # --- Settings ----------------------------------------------------- .INCLUDE : $(PRJ)$/util$/makefile.pmk -.IF "$(ENABLE_VBA)"!="YES" -dummy: - @echo "not building vba..." -.ELSE - # ------------------------------------------------------------------------ .IF "$(L10N_framework)"="" IDLFILES=\ @@ -71,4 +66,3 @@ IDLFILES=\ # ------------------------------------------------------------------ .ENDIF .INCLUDE : target.mk -.ENDIF diff --git a/oovbaapi/ooo/vba/msforms/makefile.mk b/oovbaapi/ooo/vba/msforms/makefile.mk index 61d2675af7..56ac4caf87 100644 --- a/oovbaapi/ooo/vba/msforms/makefile.mk +++ b/oovbaapi/ooo/vba/msforms/makefile.mk @@ -34,11 +34,6 @@ PACKAGE=ooo$/vba$/msforms # --- Settings ----------------------------------------------------- .INCLUDE : $(PRJ)$/util$/makefile.pmk -.IF "$(ENABLE_VBA)"!="YES" -dummy: - @echo "not building vba..." -.ENDIF - # ------------------------------------------------------------------------ IDLFILES=\ diff --git a/oovbaapi/util/makefile.mk b/oovbaapi/util/makefile.mk index 9c33577abf..5100327b4b 100644 --- a/oovbaapi/util/makefile.mk +++ b/oovbaapi/util/makefile.mk @@ -36,11 +36,6 @@ TARGET=oovbaapi_db .INCLUDE : makefile.pmk -.IF "$(ENABLE_VBA)"!="YES" -dummy: - @echo "not building vba..." -.ENDIF - .IF "$(L10N_framework)"=="" # ------------------------------------------------------------------ UNOIDLDBFILES= \ diff --git a/scripting/prj/build.lst b/scripting/prj/build.lst index fc332384e0..7d5162173e 100644..100755 --- a/scripting/prj/build.lst +++ b/scripting/prj/build.lst @@ -1,4 +1,4 @@ -tc scripting : oovbaapi bridges rdbmaker vcl xmlscript basic sfx2 rhino BSH:beanshell javaunohelper NULL +tc scripting : oovbaapi vbahelper bridges rdbmaker vcl xmlscript basic sfx2 rhino BSH:beanshell javaunohelper NULL tc scripting usr1 - all tc1_mkout NULL tc scripting\inc nmake - all tc1_inc NULL tc scripting\source\provider nmake - all tc1_scriptingprovider tc1_inc NULL diff --git a/scripting/source/dlgprov/dlgevtatt.cxx b/scripting/source/dlgprov/dlgevtatt.cxx index 992e670e8d..11a101454e 100644 --- a/scripting/source/dlgprov/dlgevtatt.cxx +++ b/scripting/source/dlgprov/dlgevtatt.cxx @@ -50,9 +50,9 @@ #include <com/sun/star/beans/MethodConcept.hpp> #include <com/sun/star/beans/XMaterialHolder.hpp> -#ifdef FAKE_VBA_EVENT_SUPPORT #include <ooo/vba/XVBAToOOEventDescGen.hpp> -#endif +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <vbahelper/vbaaccesshelper.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::awt; @@ -104,7 +104,6 @@ namespace dlgprov }; -#ifdef FAKE_VBA_EVENT_SUPPORT class DialogVBAScriptListenerImpl : public DialogScriptListenerImpl { protected: @@ -157,7 +156,6 @@ namespace dlgprov } } } -#endif //......................................................................... @@ -166,7 +164,7 @@ namespace dlgprov // ============================================================================= DialogEventsAttacherImpl::DialogEventsAttacherImpl( const Reference< XComponentContext >& rxContext, const Reference< frame::XModel >& rxModel, const Reference< awt::XControl >& rxControl, const Reference< XInterface >& rxHandler, const Reference< beans::XIntrospectionAccess >& rxIntrospect, bool bProviderMode, const Reference< script::XScriptListener >& rxRTLListener ) - :m_xContext( rxContext ) + :mbUseFakeVBAEvents( false ), m_xContext( rxContext ) { // key listeners by protocol when ScriptType = 'Script' // otherwise key is the ScriptType e.g. StarBasic @@ -177,9 +175,22 @@ namespace dlgprov // handler for Script & ::rtl::OUString::createFromAscii( "vnd.sun.star.UNO:" ) listernersForTypes[ rtl::OUString::createFromAscii("vnd.sun.star.UNO") ] = new DialogUnoScriptListenerImpl( rxContext, rxModel, rxControl, rxHandler, rxIntrospect, bProviderMode ); listernersForTypes[ rtl::OUString::createFromAscii("vnd.sun.star.script") ] = new DialogSFScriptListenerImpl( rxContext, rxModel ); -#ifdef FAKE_VBA_EVENT_SUPPORT - listernersForTypes[ rtl::OUString::createFromAscii("VBAInterop") ] = new DialogVBAScriptListenerImpl( rxContext, rxControl, rxModel ); -#endif + // Note: in a future cws ( npower13_ObjectModule ) it will be possible + // to determine the vba mode from the basiclibrary container, the tunnel hack + // below can then be replaced + SfxObjectShell* pFoundShell = NULL; + if ( rxModel.is() ) + { + uno::Reference< lang::XUnoTunnel > xObjShellTunnel( rxModel, uno::UNO_QUERY ); + if ( xObjShellTunnel.is() ) + { + pFoundShell = reinterpret_cast<SfxObjectShell*>( xObjShellTunnel->getSomething(SfxObjectShell::getUnoTunnelId())); + if ( pFoundShell ) + mbUseFakeVBAEvents = ooo::vba::isAlienExcelDoc( *pFoundShell ); + } + } + if ( mbUseFakeVBAEvents ) + listernersForTypes[ rtl::OUString::createFromAscii("VBAInterop") ] = new DialogVBAScriptListenerImpl( rxContext, rxControl, rxModel ); } // ----------------------------------------------------------------------------- @@ -197,7 +208,6 @@ namespace dlgprov throw RuntimeException(); // more text info here please return it->second; } -#ifdef FAKE_VBA_EVENT_SUPPORT Reference< XScriptEventsSupplier > DialogEventsAttacherImpl::getFakeVbaEventsSupplier( const Reference< XControl >& xControl, rtl::OUString& sControlName ) { Reference< XScriptEventsSupplier > xEventsSupplier; @@ -210,7 +220,6 @@ namespace dlgprov } return xEventsSupplier; } -#endif // ----------------------------------------------------------------------------- void SAL_CALL DialogEventsAttacherImpl::attachEventsToControl( const Reference< XControl>& xControl, const Reference< XScriptEventsSupplier >& xEventsSupplier, const Any& Helper ) @@ -312,7 +321,6 @@ namespace dlgprov // go over all objects const Reference< XInterface >* pObjects = Objects.getConstArray(); sal_Int32 nObjCount = Objects.getLength(); -#ifdef FAKE_VBA_EVENT_SUPPORT Reference< awt::XControl > xDlgControl( Objects[ nObjCount - 1 ], uno::UNO_QUERY ); // last object is the dialog rtl::OUString sDialogCodeName; if ( xDlgControl.is() ) @@ -324,7 +332,6 @@ namespace dlgprov } catch( Exception& ){} } -#endif for ( sal_Int32 i = 0; i < nObjCount; ++i ) { @@ -339,10 +346,11 @@ namespace dlgprov Reference< XControlModel > xControlModel = xControl->getModel(); Reference< XScriptEventsSupplier > xEventsSupplier( xControlModel, UNO_QUERY ); attachEventsToControl( xControl, xEventsSupplier, Helper ); -#ifdef FAKE_VBA_EVENT_SUPPORT - xEventsSupplier.set( getFakeVbaEventsSupplier( xControl, sDialogCodeName ) ); - attachEventsToControl( xControl, xEventsSupplier, Helper ); -#endif + if ( mbUseFakeVBAEvents ) + { + xEventsSupplier.set( getFakeVbaEventsSupplier( xControl, sDialogCodeName ) ); + attachEventsToControl( xControl, xEventsSupplier, Helper ); + } } } diff --git a/scripting/source/dlgprov/dlgevtatt.hxx b/scripting/source/dlgprov/dlgevtatt.hxx index 7e7e23f747..c76ee093da 100644 --- a/scripting/source/dlgprov/dlgevtatt.hxx +++ b/scripting/source/dlgprov/dlgevtatt.hxx @@ -44,8 +44,6 @@ #include <hash_map> -#define FAKE_VBA_EVENT_SUPPORT 1 - //......................................................................... namespace dlgprov { @@ -66,13 +64,12 @@ namespace dlgprov class DialogEventsAttacherImpl : public DialogEventsAttacherImpl_BASE { private: + bool mbUseFakeVBAEvents; ListenerHash listernersForTypes; ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext; ::com::sun::star::uno::Reference< ::com::sun::star::script::XEventAttacher > m_xEventAttacher; ::com::sun::star::uno::Reference< ::com::sun::star::script::XScriptListener > getScriptListenerForKey( const rtl::OUString& sScriptName ) throw ( ::com::sun::star::uno::RuntimeException ); -#ifdef FAKE_VBA_EVENT_SUPPORT ::com::sun::star::uno::Reference< ::com::sun::star::script::XScriptEventsSupplier > getFakeVbaEventsSupplier( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl, rtl::OUString& sCodeName ); -#endif void SAL_CALL attachEventsToControl( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl, const ::com::sun::star::uno::Reference< ::com::sun::star::script::XScriptEventsSupplier >& events, const ::com::sun::star::uno::Any& Helper ); public: DialogEventsAttacherImpl( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext, diff --git a/scripting/source/dlgprov/makefile.mk b/scripting/source/dlgprov/makefile.mk index 4554234127..6c8ec298c7 100644 --- a/scripting/source/dlgprov/makefile.mk +++ b/scripting/source/dlgprov/makefile.mk @@ -59,6 +59,7 @@ SHL1STDLIBS= \ $(COMPHELPERLIB) \ $(UCBHELPERLIB) \ $(CPPULIB) \ + $(BASICLIB) \ $(SALLIB) SHL1DEPN= diff --git a/scripting/source/vbaevents/eventhelper.cxx b/scripting/source/vbaevents/eventhelper.cxx index 589aec94c2..6975fba08e 100755..100644 --- a/scripting/source/vbaevents/eventhelper.cxx +++ b/scripting/source/vbaevents/eventhelper.cxx @@ -349,8 +349,8 @@ static TranslatePropMap aTranslatePropMap_Impl[] = { MAP_CHAR_LEN("mouseDragged"), { MAP_CHAR_LEN("_MouseMove"), ooMouseEvtToVBAMouseEvt, DenyMouseDrag, NULL } }, //liuchen, add to support VBA MouseMove event when the "Shift" key is pressed // keyPressed ooo event - { MAP_CHAR_LEN("keyPressed"), { MAP_CHAR_LEN("_KeyDown"), ooKeyPressedToVBAKeyUpDown, ApproveAll, NULL } }, - { MAP_CHAR_LEN("keyPressed"), { MAP_CHAR_LEN("_KeyPress"), ooKeyPressedToVBAKeyUpDown, ApproveAll, NULL } } + { MAP_CHAR_LEN("keyPressed"), { MAP_CHAR_LEN("_KeyDown"), ooKeyPressedToVBAKeyPressed, ApproveAll, NULL } }, + { MAP_CHAR_LEN("keyPressed"), { MAP_CHAR_LEN("_KeyPress"), ooKeyPressedToVBAKeyPressed, ApproveAll, NULL } } }; EventInfoHash& getEventTransInfo() @@ -929,9 +929,12 @@ EventListener::firing_Impl(const ScriptEvent& evt, Any* /*pRet*/ ) throw(Runtime Sequence< Any > aOutArgs; try { - uno::Reference< script::provider::XScript > xScript = xScriptProvider->getScript( url ); - if ( xScript.is() ) - xScript->invoke( aArguments, aOutArgsIndex, aOutArgs ); + if ( mpShell ) + { + uno::Any aRet; + mpShell->CallXScript( url, + aArguments, aRet, aOutArgsIndex, aOutArgs, false ); + } } catch ( uno::Exception& e ) { diff --git a/sfx2/inc/sfx2/Metadatable.hxx b/sfx2/inc/sfx2/Metadatable.hxx index fb5c2cce13..6896fd689f 100644 --- a/sfx2/inc/sfx2/Metadatable.hxx +++ b/sfx2/inc/sfx2/Metadatable.hxx @@ -98,8 +98,8 @@ public: const bool i_bCopyPrecedesSource = false); /** create an Undo Metadatable, which remembers this' reference */ - ::boost::shared_ptr<MetadatableUndo> CreateUndo( - const bool i_isDelete = false); + ::boost::shared_ptr<MetadatableUndo> CreateUndo() const; + ::boost::shared_ptr<MetadatableUndo> CreateUndoForDelete(); /** restore this from Undo Metadatable */ void RestoreMetadata(::boost::shared_ptr<MetadatableUndo> const& i_pUndo); diff --git a/sfx2/inc/sfx2/app.hxx b/sfx2/inc/sfx2/app.hxx index 18c3735d1c..9811bf838b 100644 --- a/sfx2/inc/sfx2/app.hxx +++ b/sfx2/inc/sfx2/app.hxx @@ -33,6 +33,7 @@ #include <tools/solar.h> #include <svl/smplhint.hxx> #include <svl/poolitem.hxx> +#include <vcl/image.hxx> #include <tools/ref.hxx> #include <com/sun/star/uno/Reference.hxx> #include <com/sun/star/script/XLibraryContainer.hpp> @@ -316,6 +317,9 @@ public: SAL_DLLPRIVATE SfxModule* GetModule_Impl(); SAL_DLLPRIVATE ResMgr* GetOffResManager_Impl(); //#endif + + /** loads the application logo as used in the about dialog and impress slideshow pause screen */ + static Image GetApplicationLogo(); }; #define SFX_APP() SfxGetpApp() diff --git a/sfx2/inc/sfx2/objsh.hxx b/sfx2/inc/sfx2/objsh.hxx index 4c133689cd..e1a0dca272 100644 --- a/sfx2/inc/sfx2/objsh.hxx +++ b/sfx2/inc/sfx2/objsh.hxx @@ -399,7 +399,8 @@ public: const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams, ::com::sun::star::uno::Any& aRet, ::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex, - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam, + bool bRaiseError = true ); static ErrCode CallXScript( @@ -408,7 +409,8 @@ public: const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams, ::com::sun::star::uno::Any& aRet, ::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex, - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam, + bool bRaiseError = true ); /** adjusts the internal macro mode, according to the current security settings diff --git a/sfx2/qa/complex/DocumentMetadataAccessTest.java b/sfx2/qa/complex/DocumentMetadataAccessTest.java index 767d74dd23..da9cfd6cf7 100644 --- a/sfx2/qa/complex/DocumentMetadataAccessTest.java +++ b/sfx2/qa/complex/DocumentMetadataAccessTest.java @@ -42,6 +42,7 @@ import com.sun.star.lang.WrappedTargetException; import com.sun.star.lang.WrappedTargetRuntimeException; import com.sun.star.beans.XPropertySet; import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.Pair; import com.sun.star.beans.StringPair; import com.sun.star.container.XEnumerationAccess; import com.sun.star.container.XEnumeration; @@ -689,23 +690,25 @@ public class DocumentMetadataAccessTest extends ComplexTestCase log.println("Checking RDFa in loaded test document..."); XMetadatable xPara; - Statement[] stmts; + Pair<Statement[], Boolean> result; Statement x_FooBarLit1 = new Statement(foo, bar, mkLit("1"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 1", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_FooBarLit1 })); Statement x_FooBarLit2 = new Statement(foo, bar, mkLit("2"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 2", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_FooBarLit2 })); @@ -713,37 +716,40 @@ public class DocumentMetadataAccessTest extends ComplexTestCase new Statement(blank1, bar, mkLit("3"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 3", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_BlankBarLit3 })); XBlankNode b3 = (XBlankNode) UnoRuntime.queryInterface( - XBlankNode.class, stmts[0].Subject); + XBlankNode.class, result.First[0].Subject); Statement x_BlankBarLit4 = new Statement(blank2, bar, mkLit("4"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 4", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_BlankBarLit4 })); XBlankNode b4 = (XBlankNode) UnoRuntime.queryInterface( - XBlankNode.class, stmts[0].Subject); + XBlankNode.class, result.First[0].Subject); Statement x_BlankBarLit5 = new Statement(blank1, bar, mkLit("5"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 5", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_BlankBarLit5 })); XBlankNode b5 = (XBlankNode) UnoRuntime.queryInterface( - XBlankNode.class, stmts[0].Subject); + XBlankNode.class, result.First[0].Subject); assure("RDFa: 3 != 4", !b3.getStringValue().equals(b4.getStringValue())); @@ -754,9 +760,10 @@ public class DocumentMetadataAccessTest extends ComplexTestCase Statement x_FooBazLit6 = new Statement(foo, baz, mkLit("6"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 6", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_FooBarLit6, x_FooBazLit6 })); @@ -765,9 +772,10 @@ public class DocumentMetadataAccessTest extends ComplexTestCase Statement x_FooFooLit7 = new Statement(foo, foo, mkLit("7"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 7", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_FooBarLit7, x_FooBazLit7, x_FooFooLit7 })); @@ -776,43 +784,41 @@ public class DocumentMetadataAccessTest extends ComplexTestCase Statement x_FooBarLit = new Statement(foo, bar, lit, null); Statement x_FooBarLittype = new Statement(foo, bar, lit_type, null); - Statement x_FooLabelLit8 = - new Statement(foo, rdfs_label, mkLit("8"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 8", - eq(stmts, new Statement[] { - x_FooBarLit, x_FooLabelLit8 + result.Second && + eq(result.First, new Statement[] { + x_FooBarLit })); - Statement x_FooLabelLit9 = - new Statement(foo, rdfs_label, mkLit("9"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 9", - eq(stmts, new Statement[] { - x_FooBarLit, x_FooLabelLit9 + result.Second && + eq(result.First, new Statement[] { + x_FooBarLit })); - Statement x_FooLabelLit10 = - new Statement(foo, rdfs_label, mkLit("10"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 10", - eq(stmts, new Statement[] { - x_FooBarLittype, x_FooLabelLit10 + result.Second && + eq(result.First, new Statement[] { + x_FooBarLittype })); Statement x_FooBarLit11 = new Statement(foo, bar, mkLit("11", bar), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 11", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_FooBarLit11 })); @@ -821,66 +827,67 @@ public class DocumentMetadataAccessTest extends ComplexTestCase new Statement(xFile, bar, mkLit("12"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 12", - eq(stmts, new Statement[] { + !result.Second && + eq(result.First, new Statement[] { x_FileBarLit12 })); - Statement x_FooLabelLit13 = - new Statement(foo, rdfs_label, mkLit("13"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 13", - eq(stmts, new Statement[] { - x_FooBarLit, x_FooLabelLit13 + result.Second && + eq(result.First, new Statement[] { + x_FooBarLit })); Statement x_FooLabelLit14 = new Statement(foo, rdfs_label, mkLit("14"), null); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); + result = xRep.getStatementRDFa(xPara); assure("RDFa: 14", - eq(stmts, new Statement[] { - x_FooBarLit, x_FooLabelLit14 + result.Second && + eq(result.First, new Statement[] { + x_FooBarLit })); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); - assure("RDFa: 15", eq(stmts, new Statement[] { } )); + result = xRep.getStatementRDFa(xPara); + assure("RDFa: 15", eq(result.First, new Statement[] { } )); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); - assure("RDFa: 16", eq(stmts, new Statement[] { } )); + result = xRep.getStatementRDFa(xPara); + assure("RDFa: 16", eq(result.First, new Statement[] { } )); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); - assure("RDFa: 17", eq(stmts, new Statement[] { } )); + result = xRep.getStatementRDFa(xPara); + assure("RDFa: 17", eq(result.First, new Statement[] { } )); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); - assure("RDFa: 18", eq(stmts, new Statement[] { } )); + result = xRep.getStatementRDFa(xPara); + assure("RDFa: 18", eq(result.First, new Statement[] { } )); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); - assure("RDFa: 19", eq(stmts, new Statement[] { } )); + result = xRep.getStatementRDFa(xPara); + assure("RDFa: 19", eq(result.First, new Statement[] { } )); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); - assure("RDFa: 20", eq(stmts, new Statement[] { } )); + result = xRep.getStatementRDFa(xPara); + assure("RDFa: 20", eq(result.First, new Statement[] { } )); xPara = (XMetadatable) UnoRuntime.queryInterface( XMetadatable.class, xEnum.nextElement()); - stmts = xRep.getStatementRDFa(xPara); - assure("RDFa: 21", eq(stmts, new Statement[] { } )); + result = xRep.getStatementRDFa(xPara); + assure("RDFa: 21", eq(result.First, new Statement[] { } )); log.println("...done"); diff --git a/sfx2/qa/unoapi/sfx.sce b/sfx2/qa/unoapi/sfx.sce index 2aaf12c259..6176c06687 100644 --- a/sfx2/qa/unoapi/sfx.sce +++ b/sfx2/qa/unoapi/sfx.sce @@ -2,4 +2,4 @@ -o sfx.DocumentTemplates -o sfx.FrameLoader -o sfx.SfxMacroLoader --o sfx.StandaloneDocumentInfo +#i111283 -o sfx.StandaloneDocumentInfo diff --git a/sfx2/source/dialog/about.cxx b/sfx2/source/dialog/about.cxx index 0822d50f8b..77b60b7fe8 100644 --- a/sfx2/source/dialog/about.cxx +++ b/sfx2/source/dialog/about.cxx @@ -109,6 +109,48 @@ static bool impl_loadBitmap( return false; } +/** loads the application logo as used in the about dialog and impress slideshow pause screen */ +Image SfxApplication::GetApplicationLogo() +{ + Image aAppLogo; + + rtl::OUString aAbouts( RTL_CONSTASCII_USTRINGPARAM( ABOUT_BITMAP_STRINGLIST ) ); + bool bLoaded = false; + sal_Int32 nIndex = 0; + do + { + bLoaded = impl_loadBitmap( + rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ), + aAbouts.getToken( 0, ',', nIndex ), aAppLogo ); + } + while ( !bLoaded && ( nIndex >= 0 ) ); + + // fallback to "about.bmp" + if ( !bLoaded ) + { + bLoaded = impl_loadBitmap( + rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ), + rtl::OUString::createFromAscii( "about.png" ), aAppLogo ); + if ( !bLoaded ) + bLoaded = impl_loadBitmap( + rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ), + rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo ); + } + + if ( !bLoaded ) + { + bLoaded = impl_loadBitmap( + rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ), + rtl::OUString::createFromAscii( "about.png" ), aAppLogo ); + if ( !bLoaded ) + bLoaded = impl_loadBitmap( + rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ), + rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo ); + } + + return aAppLogo; +} + AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerStr ) : SfxModalDialog ( pParent, rId ), @@ -145,39 +187,7 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerS } // load image from module path - rtl::OUString aAbouts( RTL_CONSTASCII_USTRINGPARAM( ABOUT_BITMAP_STRINGLIST ) ); - bool bLoaded = false; - sal_Int32 nIndex = 0; - do - { - bLoaded = impl_loadBitmap( - rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ), - aAbouts.getToken( 0, ',', nIndex ), aAppLogo ); - } - while ( !bLoaded && ( nIndex >= 0 ) ); - - // fallback to "about.bmp" - if ( !bLoaded ) - { - bLoaded = impl_loadBitmap( - rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ), - rtl::OUString::createFromAscii( "about.png" ), aAppLogo ); - if ( !bLoaded ) - bLoaded = impl_loadBitmap( - rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ), - rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo ); - } - - if ( !bLoaded ) - { - bLoaded = impl_loadBitmap( - rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ), - rtl::OUString::createFromAscii( "about.png" ), aAppLogo ); - if ( !bLoaded ) - bLoaded = impl_loadBitmap( - rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ), - rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo ); - } + aAppLogo = SfxApplication::GetApplicationLogo(); // Transparenter Font Font aFont = GetFont(); diff --git a/sfx2/source/doc/Metadatable.cxx b/sfx2/source/doc/Metadatable.cxx index f14be1db2c..b21e0c2a7e 100644 --- a/sfx2/source/doc/Metadatable.cxx +++ b/sfx2/source/doc/Metadatable.cxx @@ -33,6 +33,8 @@ #include <vos/mutex.hxx> #include <vcl/svapp.hxx> // solarmutex +#include <rtl/random.h> + #include <boost/bind.hpp> #include <memory> @@ -401,14 +403,16 @@ template< typename T > /*static*/ ::rtl::OUString create_id(const ::std::hash_map< ::rtl::OUString, T, ::rtl::OUStringHash > & i_rXmlIdMap) { + static rtlRandomPool s_Pool( rtl_random_createPool() ); const ::rtl::OUString prefix( ::rtl::OUString::createFromAscii(s_prefix) ); typename ::std::hash_map< ::rtl::OUString, T, ::rtl::OUStringHash > ::const_iterator iter; ::rtl::OUString id; do { - const int n( rand() ); - id = prefix + ::rtl::OUString::valueOf(static_cast<sal_Int64>(n)); + sal_Int32 n; + rtl_random_getBytes(s_Pool, & n, sizeof(n)); + id = prefix + ::rtl::OUString::valueOf(static_cast<sal_Int32>(abs(n))); iter = i_rXmlIdMap.find(id); } while (iter != i_rXmlIdMap.end()); @@ -1488,8 +1492,7 @@ Metadatable::RegisterAsCopyOf(Metadatable const & i_rSource, } } -::boost::shared_ptr<MetadatableUndo> Metadatable::CreateUndo( - const bool i_isDelete) +::boost::shared_ptr<MetadatableUndo> Metadatable::CreateUndo() const { OSL_ENSURE(!IsInUndo(), "CreateUndo called for object in undo?"); OSL_ENSURE(!IsInClipboard(), "CreateUndo called for object in clipboard?"); @@ -1503,11 +1506,6 @@ Metadatable::RegisterAsCopyOf(Metadatable const & i_rSource, pRegDoc->CreateUndo(*this) ); pRegDoc->RegisterCopy(*this, *pUndo, false); pUndo->m_pReg = pRegDoc; - - if (i_isDelete) - { - RemoveMetadataReference(); - } return pUndo; } } @@ -1518,6 +1516,13 @@ Metadatable::RegisterAsCopyOf(Metadatable const & i_rSource, return ::boost::shared_ptr<MetadatableUndo>(); } +::boost::shared_ptr<MetadatableUndo> Metadatable::CreateUndoForDelete() +{ + ::boost::shared_ptr<MetadatableUndo> const pUndo( CreateUndo() ); + RemoveMetadataReference(); + return pUndo; +} + void Metadatable::RestoreMetadata( ::boost::shared_ptr<MetadatableUndo> const& i_pUndo) { @@ -1624,15 +1629,16 @@ MetadatableMixin::getMetadataReference() throw (uno::RuntimeException) { ::vos::OGuard aGuard( Application::GetSolarMutex() ); - Metadatable* pObject( GetCoreObject() ); - if (pObject) - { - return pObject->GetMetadataReference(); - } - else + + Metadatable *const pObject( GetCoreObject() ); + if (!pObject) { - throw uno::RuntimeException(); + throw uno::RuntimeException( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "MetadatableMixin: cannot get core object; not inserted?")), + *this); } + return pObject->GetMetadataReference(); } void SAL_CALL @@ -1641,30 +1647,32 @@ MetadatableMixin::setMetadataReference( throw (uno::RuntimeException, lang::IllegalArgumentException) { ::vos::OGuard aGuard( Application::GetSolarMutex() ); - Metadatable* pObject( GetCoreObject() ); - if (pObject) - { - return pObject->SetMetadataReference(i_rReference); - } - else + + Metadatable *const pObject( GetCoreObject() ); + if (!pObject) { - throw uno::RuntimeException(); + throw uno::RuntimeException( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "MetadatableMixin: cannot get core object; not inserted?")), + *this); } + return pObject->SetMetadataReference(i_rReference); } void SAL_CALL MetadatableMixin::ensureMetadataReference() throw (uno::RuntimeException) { ::vos::OGuard aGuard( Application::GetSolarMutex() ); - Metadatable* pObject( GetCoreObject() ); - if (pObject) - { - return pObject->EnsureMetadataReference(); - } - else + + Metadatable *const pObject( GetCoreObject() ); + if (!pObject) { - throw uno::RuntimeException(); + throw uno::RuntimeException( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "MetadatableMixin: cannot get core object; not inserted?")), + *this); } + return pObject->EnsureMetadataReference(); } } // namespace sfx2 diff --git a/sfx2/source/doc/SfxDocumentMetaData.cxx b/sfx2/source/doc/SfxDocumentMetaData.cxx index 6f9c9d0bd5..95fe000709 100644 --- a/sfx2/source/doc/SfxDocumentMetaData.cxx +++ b/sfx2/source/doc/SfxDocumentMetaData.cxx @@ -38,7 +38,6 @@ #include "com/sun/star/util/XModifiable.hpp" #include "com/sun/star/xml/sax/XSAXSerializable.hpp" -#include "com/sun/star/lang/NullPointerException.hpp" #include "com/sun/star/lang/WrappedTargetRuntimeException.hpp" #include "com/sun/star/lang/EventObject.hpp" #include "com/sun/star/beans/XPropertySet.hpp" @@ -248,25 +247,21 @@ public: const css::uno::Sequence< css::beans::PropertyValue > & Medium) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::io::WrongFormatException, - css::lang::WrappedTargetException, css::io::IOException, - css::uno::Exception); + css::lang::WrappedTargetException, css::io::IOException); virtual void SAL_CALL loadFromMedium(const ::rtl::OUString & URL, const css::uno::Sequence< css::beans::PropertyValue > & Medium) throw (css::uno::RuntimeException, css::io::WrongFormatException, - css::lang::WrappedTargetException, css::io::IOException, - css::uno::Exception); + css::lang::WrappedTargetException, css::io::IOException); virtual void SAL_CALL storeToStorage( const css::uno::Reference< css::embed::XStorage > & Storage, const css::uno::Sequence< css::beans::PropertyValue > & Medium) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, - css::lang::WrappedTargetException, css::io::IOException, - css::uno::Exception); + css::lang::WrappedTargetException, css::io::IOException); virtual void SAL_CALL storeToMedium(const ::rtl::OUString & URL, const css::uno::Sequence< css::beans::PropertyValue > & Medium) throw (css::uno::RuntimeException, - css::lang::WrappedTargetException, css::io::IOException, - css::uno::Exception); + css::lang::WrappedTargetException, css::io::IOException); // ::com::sun::star::lang::XInitialization: virtual void SAL_CALL initialize( @@ -1869,8 +1864,7 @@ SfxDocumentMetaData::loadFromStorage( const css::uno::Sequence< css::beans::PropertyValue > & Medium) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::io::WrongFormatException, - css::lang::WrappedTargetException, css::io::IOException, - css::uno::Exception) + css::lang::WrappedTargetException, css::io::IOException) { if (!xStorage.is()) throw css::lang::IllegalArgumentException( ::rtl::OUString::createFromAscii("SfxDocumentMetaData::loadFromStorage:" @@ -1882,10 +1876,10 @@ SfxDocumentMetaData::loadFromStorage( xStorage->openStreamElement( ::rtl::OUString::createFromAscii(s_metaXml), css::embed::ElementModes::READ) ); - if (!xStream.is()) throw css::lang::NullPointerException(); + if (!xStream.is()) throw css::uno::RuntimeException(); css::uno::Reference<css::io::XInputStream> xInStream = xStream->getInputStream(); - if (!xInStream.is()) throw css::lang::NullPointerException(); + if (!xInStream.is()) throw css::uno::RuntimeException(); // create DOM parser service css::uno::Reference<css::lang::XMultiComponentFactory> xMsf ( @@ -1949,8 +1943,7 @@ SfxDocumentMetaData::storeToStorage( const css::uno::Reference< css::embed::XStorage > & xStorage, const css::uno::Sequence< css::beans::PropertyValue > & Medium) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, - css::lang::WrappedTargetException, css::io::IOException, - css::uno::Exception) + css::lang::WrappedTargetException, css::io::IOException) { if (!xStorage.is()) throw css::lang::IllegalArgumentException( ::rtl::OUString::createFromAscii("SfxDocumentMetaData::storeToStorage:" @@ -1966,7 +1959,7 @@ SfxDocumentMetaData::storeToStorage( xStorage->openStreamElement(::rtl::OUString::createFromAscii(s_metaXml), css::embed::ElementModes::WRITE | css::embed::ElementModes::TRUNCATE); - if (!xStream.is()) throw css::lang::NullPointerException(); + if (!xStream.is()) throw css::uno::RuntimeException(); css::uno::Reference< css::beans::XPropertySet > xStreamProps(xStream, css::uno::UNO_QUERY_THROW); xStreamProps->setPropertyValue( @@ -1980,7 +1973,7 @@ SfxDocumentMetaData::storeToStorage( css::uno::makeAny(static_cast<sal_Bool> (sal_False))); css::uno::Reference<css::io::XOutputStream> xOutStream = xStream->getOutputStream(); - if (!xOutStream.is()) throw css::lang::NullPointerException(); + if (!xOutStream.is()) throw css::uno::RuntimeException(); css::uno::Reference<css::lang::XMultiComponentFactory> xMsf ( m_xContext->getServiceManager()); css::uno::Reference<css::io::XActiveDataSource> xSaxWriter( @@ -2028,8 +2021,7 @@ void SAL_CALL SfxDocumentMetaData::loadFromMedium(const ::rtl::OUString & URL, const css::uno::Sequence< css::beans::PropertyValue > & Medium) throw (css::uno::RuntimeException, css::io::WrongFormatException, - css::lang::WrappedTargetException, css::io::IOException, - css::uno::Exception) + css::lang::WrappedTargetException, css::io::IOException) { css::uno::Reference<css::io::XInputStream> xIn; ::comphelper::MediaDescriptor md(Medium); @@ -2063,7 +2055,7 @@ SfxDocumentMetaData::loadFromMedium(const ::rtl::OUString & URL, css::uno::makeAny(e)); } if (!xStorage.is()) { - throw css::lang::NullPointerException(::rtl::OUString::createFromAscii( + throw css::uno::RuntimeException(::rtl::OUString::createFromAscii( "SfxDocumentMetaData::loadFromMedium: cannot get Storage"), *this); } @@ -2074,8 +2066,7 @@ void SAL_CALL SfxDocumentMetaData::storeToMedium(const ::rtl::OUString & URL, const css::uno::Sequence< css::beans::PropertyValue > & Medium) throw (css::uno::RuntimeException, - css::lang::WrappedTargetException, css::io::IOException, - css::uno::Exception) + css::lang::WrappedTargetException, css::io::IOException) { ::comphelper::MediaDescriptor md(Medium); if (!URL.equalsAscii("")) { @@ -2087,7 +2078,7 @@ SfxDocumentMetaData::storeToMedium(const ::rtl::OUString & URL, if (!xStorage.is()) { - throw css::lang::NullPointerException(::rtl::OUString::createFromAscii( + throw css::uno::RuntimeException(::rtl::OUString::createFromAscii( "SfxDocumentMetaData::storeToMedium: cannot get Storage"), *this); } diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx index 534cccdcd4..1e0093ea22 100644 --- a/sfx2/source/doc/guisaveas.cxx +++ b/sfx2/source/doc/guisaveas.cxx @@ -909,9 +909,16 @@ sal_Bool ModelData_Impl::OutputFileDialog( sal_Int8 nStoreMode, ::rtl::OUString aAdjustToType; - // bSetStandardName == true means that user agreed to store document in the default (default default ;-)) format - if ( !(( nStoreMode & EXPORT_REQUESTED ) && !( nStoreMode & WIDEEXPORT_REQUESTED )) && - ( bSetStandardName || GetStorable()->hasLocation() )) + if ( ( nStoreMode & EXPORT_REQUESTED ) && !( nStoreMode & WIDEEXPORT_REQUESTED ) ) + { + // it is export, set the preselected filter + ::rtl::OUString aFilterUIName = aPreselectedFilterPropsHM.getUnpackedValueOrDefault( + ::rtl::OUString::createFromAscii( "UIName" ), + ::rtl::OUString() ); + pFileDlg->SetCurrentFilter( aFilterUIName ); + } + // it is no export, bSetStandardName == true means that user agreed to store document in the default (default default ;-)) format + else if ( bSetStandardName || GetStorable()->hasLocation() ) { uno::Sequence< beans::PropertyValue > aOldFilterProps; ::rtl::OUString aOldFilterName = GetDocProps().getUnpackedValueOrDefault( @@ -1317,6 +1324,7 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& // parse the slot name sal_Int8 nStoreMode = getStoreModeFromSlotName( aSlotName ); + sal_Int8 nStatusSave = STATUS_NO_ACTION; // handle the special cases if ( nStoreMode & SAVEAS_REQUESTED ) @@ -1338,7 +1346,7 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& else if ( nStoreMode & SAVE_REQUESTED ) { // if saving is not acceptable by the configuration the warning must be shown - sal_Int8 nStatusSave = aModelData.CheckSaveAcceptable( STATUS_SAVE ); + nStatusSave = aModelData.CheckSaveAcceptable( STATUS_SAVE ); if ( nStatusSave == STATUS_NO_ACTION ) throw task::ErrorCodeIOException( ::rtl::OUString(), uno::Reference< uno::XInterface >(), ERRCODE_IO_ABORT ); @@ -1352,32 +1360,7 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& { throw task::ErrorCodeIOException( ::rtl::OUString(), uno::Reference< uno::XInterface >(), ERRCODE_IO_ABORT ); } - else if ( nStatusSave == STATUS_SAVE ) - { - // Document properties can contain streams that should be freed before storing - aModelData.FreeDocumentProps(); - - if ( aModelData.GetStorable2().is() ) - { - try - { - aModelData.GetStorable2()->storeSelf( aModelData.GetMediaDescr().getAsConstPropertyValueList() ); - } - catch( lang::IllegalArgumentException& ) - { - OSL_ENSURE( sal_False, "ModelData didn't handle illegal parameters, all the parameters are ignored!\n" ); - aModelData.GetStorable()->store(); - } - } - else - { - OSL_ENSURE( sal_False, "XStorable2 is not supported by the model!\n" ); - aModelData.GetStorable()->store(); - } - - return sal_False; - } - else + else if ( nStatusSave != STATUS_SAVE ) { // this should be a usual SaveAs operation nStoreMode = SAVEAS_REQUESTED; @@ -1404,6 +1387,32 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& } } + if ( nStoreMode & SAVE_REQUESTED && nStatusSave == STATUS_SAVE ) + { + // Document properties can contain streams that should be freed before storing + aModelData.FreeDocumentProps(); + + if ( aModelData.GetStorable2().is() ) + { + try + { + aModelData.GetStorable2()->storeSelf( aModelData.GetMediaDescr().getAsConstPropertyValueList() ); + } + catch( lang::IllegalArgumentException& ) + { + OSL_ENSURE( sal_False, "ModelData didn't handle illegal parameters, all the parameters are ignored!\n" ); + aModelData.GetStorable()->store(); + } + } + else + { + OSL_ENSURE( sal_False, "XStorable2 is not supported by the model!\n" ); + aModelData.GetStorable()->store(); + } + + return sal_False; + } + // preselect a filter for the storing process uno::Sequence< beans::PropertyValue > aFilterProps = aModelData.GetPreselectedFilter_Impl( nStoreMode ); @@ -1498,13 +1507,13 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& ::rtl::OUString aSelFilterName = aModelData.GetMediaDescr().getUnpackedValueOrDefault( aFilterNameString, ::rtl::OUString() ); - sal_Int8 nStatusSave = aModelData.CheckFilter( aSelFilterName ); - if ( nStatusSave == STATUS_SAVEAS_STANDARDNAME ) + sal_Int8 nStatusFilterSave = aModelData.CheckFilter( aSelFilterName ); + if ( nStatusFilterSave == STATUS_SAVEAS_STANDARDNAME ) { // switch to best filter bSetStandardName = sal_True; } - else if ( nStatusSave == STATUS_SAVE ) + else if ( nStatusFilterSave == STATUS_SAVE ) { // user confirmed alien filter or "good" filter is used bExit = sal_True; @@ -1651,8 +1660,10 @@ uno::Sequence< beans::PropertyValue > SfxStoringHelper::SearchForFilter( uno::Reference< container::XEnumeration > xFilterEnum = xFilterQuery->createSubSetEnumerationByProperties( aSearchRequest ); - // use the first filter that is found + // the first default filter will be taken, + // if there is no filter with flag default the first acceptable filter will be taken if ( xFilterEnum.is() ) + { while ( xFilterEnum->hasMoreElements() ) { uno::Sequence< beans::PropertyValue > aProps; @@ -1663,11 +1674,17 @@ uno::Sequence< beans::PropertyValue > SfxStoringHelper::SearchForFilter( (sal_Int32)0 ); if ( ( ( nFlags & nMustFlags ) == nMustFlags ) && !( nFlags & nDontFlags ) ) { - aFilterProps = aProps; - break; + if ( ( nFlags & SFX_FILTER_DEFAULT ) == SFX_FILTER_DEFAULT ) + { + aFilterProps = aProps; + break; + } + else if ( !aFilterProps.getLength() ) + aFilterProps = aProps; } } } + } return aFilterProps; } diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx index 1c3189c63a..df4a082b29 100644..100755 --- a/sfx2/source/doc/objmisc.cxx +++ b/sfx2/source/doc/objmisc.cxx @@ -1710,7 +1710,7 @@ namespace } ErrCode SfxObjectShell::CallXScript( const Reference< XInterface >& _rxScriptContext, const ::rtl::OUString& _rScriptURL, - const Sequence< Any >& aParams, Any& aRet, Sequence< sal_Int16 >& aOutParamIndex, Sequence< Any >& aOutParam ) + const Sequence< Any >& aParams, Any& aRet, Sequence< sal_Int16 >& aOutParamIndex, Sequence< Any >& aOutParam, bool bRaiseError ) { OSL_TRACE( "in CallXScript" ); ErrCode nErr = ERRCODE_NONE; @@ -1751,7 +1751,7 @@ ErrCode SfxObjectShell::CallXScript( const Reference< XInterface >& _rxScriptCon nErr = ERRCODE_BASIC_INTERNAL_ERROR; } - if ( bCaughtException ) + if ( bCaughtException && bRaiseError ) { ::std::auto_ptr< VclAbstractDialog > pScriptErrDlg; SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); @@ -1774,10 +1774,10 @@ ErrCode SfxObjectShell::CallXScript( const String& rScriptURL, aParams, ::com::sun::star::uno::Any& aRet, ::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex, - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& - aOutParam) + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam + , bool bRaiseError ) { - return CallXScript( GetModel(), rScriptURL, aParams, aRet, aOutParamIndex, aOutParam ); + return CallXScript( GetModel(), rScriptURL, aParams, aRet, aOutParamIndex, aOutParam, bRaiseError ); } //------------------------------------------------------------------------- diff --git a/shell/source/backends/gconfbe/gconfaccess.cxx b/shell/source/backends/gconfbe/gconfaccess.cxx index e2347572ee..cafa787a86 100644 --- a/shell/source/backends/gconfbe/gconfaccess.cxx +++ b/shell/source/backends/gconfbe/gconfaccess.cxx @@ -448,7 +448,6 @@ sal_Bool SAL_CALL isDependencySatisfied( GConfClient* aClient, const Configurati #ifdef ENABLE_LOCKDOWN case SETTING_AUTO_SAVE: { - GConfClient* aClient = GconfBackend::getGconfClient(); GConfValue* aGconfValue = gconf_client_get( aClient, GCONF_AUTO_SAVE_KEY, NULL ); if( ( aGconfValue != NULL ) ) diff --git a/shell/source/win32/shlxthandler/makefile.mk b/shell/source/win32/shlxthandler/makefile.mk index 4452cb1a90..b6c9a45a95 100644 --- a/shell/source/win32/shlxthandler/makefile.mk +++ b/shell/source/win32/shlxthandler/makefile.mk @@ -34,6 +34,9 @@ USE_DEFFILE=TRUE .IF "$(BUILD_X64)"!="" USE_DEFFILE_X64=TRUE .ENDIF +NO_DEFAULT_STL=TRUE +USE_STLP_DEBUG= + # --- Settings ----------------------------------------------------- .INCLUDE : settings.mk @@ -134,10 +137,6 @@ SHL1STDLIBS_X64+=\ $(OLDNAMESLIB_X64) \ msvcprt.lib -.IF "$(PRODUCT)"!="full" -SHL1STDLIBS+=msvcrt.lib -.ENDIF - SHL1LIBS_X64+=$(SLB_X64)$/util.lib\ $(SLB_X64)$/ooofilereader.lib SHL1OBJS_X64=$(SLOFILES_X64) diff --git a/svx/qa/unoapi/knownissues.xcl b/svx/qa/unoapi/knownissues.xcl index 6d59511b75..89369160bb 100644 --- a/svx/qa/unoapi/knownissues.xcl +++ b/svx/qa/unoapi/knownissues.xcl @@ -78,4 +78,10 @@ svx.GraphicExporter ### i98339 ### svx.AccessibleControlShape -# -> disbaled in svx.sce
\ No newline at end of file +# -> disbaled in svx.sce + +### i111114 ### +svx.AccessiblePresentationOLEShape::com::sun::star::accessibility::XAccessibleComponent + +### i111169 ### +svx.AccessiblePageShape::com::sun::star::accessibility::XAccessibleComponent diff --git a/svx/qa/unoapi/svx.sce b/svx/qa/unoapi/svx.sce index 84237f3c6f..82ee2ea6b1 100644 --- a/svx/qa/unoapi/svx.sce +++ b/svx/qa/unoapi/svx.sce @@ -1,11 +1,11 @@ #i98339 -o svx.AccessibleControlShape --o svx.AccessibleEditableTextPara --o svx.AccessibleGraphicShape +#i111278 -o svx.AccessibleEditableTextPara +#i111252 -o svx.AccessibleGraphicShape #i46736 -o svx.AccessibleImageBullet --o svx.AccessibleOLEShape --o svx.AccessiblePageShape --o svx.AccessiblePresentationGraphicShape --o svx.AccessiblePresentationOLEShape +#i111252 -o svx.AccessibleOLEShape +#i111252 -o svx.AccessiblePageShape +#i111216 -o svx.AccessiblePresentationGraphicShape +#i111216 -o svx.AccessiblePresentationOLEShape #i85539 -o svx.AccessiblePresentationShape -o svx.AccessibleShape #i90294 -o svx.GraphicExporter diff --git a/svx/source/dialog/srchdlg.cxx b/svx/source/dialog/srchdlg.cxx index b39f59010e..5a2824c24d 100644 --- a/svx/source/dialog/srchdlg.cxx +++ b/svx/source/dialog/srchdlg.cxx @@ -831,6 +831,18 @@ void SvxSearchDialog::CalculateDelta_Impl() pMoreBtn->AddWindow( &aNoFormatBtn ); } + if (bDrawApp || bImpressApp) + { + // "Find All" button is hidden--align "Find" vertically to the + // search listbox + Point aNewPt(aSearchBtn.GetPosPixel()); + const Size aBtnSz(aSearchBtn.GetSizePixel()); + const Size aLBSz(aSearchLB.GetSizePixel()); + const int nOff((aLBSz.Height() - aBtnSz.Height()) / 2); + aNewPt.Y() = aSearchLB.GetPosPixel().Y() + nOff; + aSearchBtn.SetPosPixel(aNewPt); + } + if ( bDrawApp ) { // Draw App: "Regular expressions" and "Search for Styles" check boxes are hidden @@ -1016,6 +1028,8 @@ void SvxSearchDialog::Init_Impl( int bSearchPattern ) if ( pSearchItem->GetAppFlag() == SVX_SEARCHAPP_DRAW ) { + aSearchAllBtn.Hide(); + aRegExpBtn.Hide(); aLayoutBtn.Hide(); diff --git a/svx/source/form/datanavi.cxx b/svx/source/form/datanavi.cxx index 6070adb015..af3cd66afc 100644 --- a/svx/source/form/datanavi.cxx +++ b/svx/source/form/datanavi.cxx @@ -3683,11 +3683,8 @@ namespace svxform m_aURLED.DisableHistory(); m_aFilePickerBtn.SetClickHdl( LINK( this, AddInstanceDialog, FilePickerHdl ) ); - // load the filter name from svtools resource - ByteString aResMgrName( "svt" ); - ResMgr* pSvtResMgr = ResMgr::CreateResMgr( - aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() ); - m_sAllFilterName = String( ResId( STR_FILTERNAME_ALL, *pSvtResMgr ) ); + // load the filter name from fps_office resource + m_sAllFilterName = String( ResId( STR_FILTERNAME_ALL, *CREATEVERSIONRESMGR(fps_office) ) ); } AddInstanceDialog::~AddInstanceDialog() diff --git a/svx/source/form/fmundo.cxx b/svx/source/form/fmundo.cxx index 3900c5b694..c674648e08 100644 --- a/svx/source/form/fmundo.cxx +++ b/svx/source/form/fmundo.cxx @@ -90,25 +90,7 @@ class ScriptEventListenerWrapper : public ScriptEventListener_BASE public: ScriptEventListenerWrapper( FmFormModel& _rModel) throw ( RuntimeException ) : pModel(&_rModel) { - Reference < XPropertySet > xProps( - ::comphelper::getProcessServiceFactory(), UNO_QUERY ); - if ( xProps.is() ) - { - Reference< XComponentContext > xCtx( xProps->getPropertyValue( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))), UNO_QUERY ); - if ( xCtx.is() ) - { - Reference< XMultiComponentFactory > xMFac( - xCtx->getServiceManager(), UNO_QUERY ); - if ( xMFac.is() ) - { - m_vbaListener.set( xMFac->createInstanceWithContext( - rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( - "ooo.vba.EventListener" ) ), xCtx ), - UNO_QUERY_THROW ); - } - } - } + } // XEventListener virtual void SAL_CALL disposing(const EventObject& ) throw( RuntimeException ){} @@ -136,6 +118,33 @@ public: private: void setModel() { + if ( !m_vbaListener.is() ) + { + Reference < XPropertySet > xProps( + ::comphelper::getProcessServiceFactory(), UNO_QUERY ); + if ( xProps.is() ) + { + Reference< XComponentContext > xCtx( xProps->getPropertyValue( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))), UNO_QUERY ); + if ( xCtx.is() ) + { + Reference< XMultiComponentFactory > xMFac( + xCtx->getServiceManager(), UNO_QUERY ); + SfxObjectShellRef xObjSh = pModel->GetObjectShell(); + Reference< XMultiServiceFactory > xDocFac; + if ( xObjSh.Is() ) + xDocFac.set( xObjSh->GetModel(), UNO_QUERY ); + + if ( xMFac.is() ) + { + m_vbaListener.set( xMFac->createInstanceWithContext( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( + "ooo.vba.EventListener" ) ), xCtx ), + UNO_QUERY_THROW ); + } + } + } + } Reference< XPropertySet > xProps( m_vbaListener, UNO_QUERY ); if ( xProps.is() ) { diff --git a/svx/source/sdr/properties/attributeproperties.cxx b/svx/source/sdr/properties/attributeproperties.cxx index 8c97ea69bd..1661c4d562 100644 --- a/svx/source/sdr/properties/attributeproperties.cxx +++ b/svx/source/sdr/properties/attributeproperties.cxx @@ -259,6 +259,8 @@ namespace sdr void AttributeProperties::MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel) { + OSL_ASSERT(pNewModel!=NULL); + if(pSrcPool && pDestPool && (pSrcPool != pDestPool)) { if(mpItemSet) @@ -291,8 +293,24 @@ namespace sdr } else { - // StyleSheet is NOT from the correct pool; use default - ImpAddStyleSheet(pNewModel->GetDefaultStyleSheet(), sal_True); + // StyleSheet is NOT from the correct pool. + // Look one up in the right pool with the same + // name or use the default. + + // Look up the style in the new document. + OSL_ASSERT(pNewModel->GetStyleSheetPool() != NULL); + SfxStyleSheet* pNewStyleSheet = dynamic_cast<SfxStyleSheet*>( + pNewModel->GetStyleSheetPool()->Find( + pStySheet->GetName(), + SFX_STYLE_FAMILY_ALL)); + if (pNewStyleSheet == NULL + || &pNewStyleSheet->GetPool().GetPool() != pDestPool) + { + // There is no copy of the style in the new + // document. Use the default as a fallback. + pNewStyleSheet = pNewModel->GetDefaultStyleSheet(); + } + ImpAddStyleSheet(pNewStyleSheet, sal_True); } } diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index 03a7d30e92..6beb3dba74 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -700,7 +700,10 @@ void SdrObjCustomShape::MergeDefaultAttributes( const rtl::OUString* pType ) for ( i = 0; i < nCount; i++ ) { if ( seqAdjustmentValues[ i ].State != com::sun::star::beans::PropertyState_DIRECT_VALUE ) + { seqAdjustmentValues[ i ].Value <<= pDefData[ i ]; + seqAdjustmentValues[ i ].State = com::sun::star::beans::PropertyState_DIRECT_VALUE; + } } } aPropVal.Name = sAdjustmentValues; @@ -2075,7 +2078,7 @@ void SdrObjCustomShape::ImpCheckCustomGluePointsAreAdded() sal_Int32 nXDiff = aBoundRect.Left() - aRect.Left(); sal_Int32 nYDiff = aBoundRect.Top() - aRect.Top(); - if (nShearWink&&(bMirroredX&&!bMirroredY)||(bMirroredY&&!bMirroredX)) + if (nShearWink&&((bMirroredX&&!bMirroredY)||(bMirroredY&&!bMirroredX))) { nShearWink = -nShearWink; fTan = -fTan; diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx index 396b3e45f4..a6a6ca22e8 100644 --- a/svx/source/unodraw/unoshape.cxx +++ b/svx/source/unodraw/unoshape.cxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -358,7 +358,7 @@ const ::com::sun::star::uno::Sequence< sal_Int8 > & SvxShape::getUnoTunnelId() t } //---------------------------------------------------------------------- -SvxShape* SvxShape::getImplementation( const uno::Reference< uno::XInterface >& xInt ) +SvxShape* SvxShape::getImplementation( const uno::Reference< uno::XInterface >& xInt ) { uno::Reference< lang::XUnoTunnel > xUT( xInt, ::com::sun::star::uno::UNO_QUERY ); if( xUT.is() ) @@ -577,6 +577,37 @@ void SvxShape::ForceMetricToItemPoolMetric(Pair& rPoint) const throw() } //---------------------------------------------------------------------- +// --> OD 2010-02-19 #i108851# - reintroduction of fix for issue i59051 +void SvxShape::ForceMetricToItemPoolMetric(basegfx::B2DPolyPolygon& rPolyPolygon) const throw() +{ + DBG_TESTSOLARMUTEX(); + if(mpModel) + { + SfxMapUnit eMapUnit = mpModel->GetItemPool().GetMetric(0); + if(eMapUnit != SFX_MAPUNIT_100TH_MM) + { + switch(eMapUnit) + { + case SFX_MAPUNIT_TWIP : + { + basegfx::B2DHomMatrix aTransform; + const double fMMToTWIPS(72.0 / 127.0); + + aTransform.scale(fMMToTWIPS, fMMToTWIPS); + rPolyPolygon.transform(aTransform); + break; + } + default: + { + DBG_ERROR("Missing unit translation to PoolMetric!"); + } + } + } + } +} +// <-- + +//---------------------------------------------------------------------- void SvxShape::ForceMetricTo100th_mm(Pair& rPoint) const throw() { DBG_TESTSOLARMUTEX(); @@ -604,6 +635,38 @@ void SvxShape::ForceMetricTo100th_mm(Pair& rPoint) const throw() } //---------------------------------------------------------------------- +// --> OD 2010-02-19 #i108851# - reintroduction of fix for issue i59051 +void SvxShape::ForceMetricTo100th_mm(basegfx::B2DPolyPolygon& rPolyPolygon) const throw() +{ + DBG_TESTSOLARMUTEX(); + SfxMapUnit eMapUnit = SFX_MAPUNIT_100TH_MM; + if(mpModel) + { + eMapUnit = mpModel->GetItemPool().GetMetric(0); + if(eMapUnit != SFX_MAPUNIT_100TH_MM) + { + switch(eMapUnit) + { + case SFX_MAPUNIT_TWIP : + { + basegfx::B2DHomMatrix aTransform; + const double fTWIPSToMM(127.0 / 72.0); + aTransform.scale(fTWIPSToMM, fTWIPSToMM); + rPolyPolygon.transform(aTransform); + break; + } + default: + { + DBG_ERROR("Missing unit translation to 100th mm!"); + } + } + } + } +} +// <-- +//---------------------------------------------------------------------- + + //---------------------------------------------------------------------- void SvxItemPropertySet_ObtainSettingsFromPropertySet(const SvxItemPropertySet& rPropSet, SfxItemSet& rSet, uno::Reference< beans::XPropertySet > xSet, const SfxItemPropertyMap* pMap ) @@ -635,7 +698,6 @@ void SvxItemPropertySet_ObtainSettingsFromPropertySet(const SvxItemPropertySet& { if(rSet.GetPool()->IsWhich(pEntry->nWID)) rSet.Put(rSet.GetPool()->GetDefaultItem(pEntry->nWID)); - // setzen SvxItemPropertySet_setPropertyValue(rPropSet, pEntry, *pUsrAny, rSet); } @@ -650,7 +712,6 @@ void SvxItemPropertySet_ObtainSettingsFromPropertySet(const SvxItemPropertySet& } - void SvxShape::ObtainSettingsFromPropertySet(const SvxItemPropertySet& rPropSet) { DBG_TESTSOLARMUTEX(); @@ -2505,10 +2566,15 @@ bool SvxShape::setPropertyValueImpl( const ::rtl::OUString&, const SfxItemProper if( rValue >>= aUnoPoint ) { Point aPoint( aUnoPoint.X, aUnoPoint.Y ); + + // --> OD 2010-02-19 #i108851# - reintroduction of fix for issue i59051 + // perform metric change before applying anchor position, + // because the anchor position is in pool metric. + ForceMetricToItemPoolMetric( aPoint ); + // <-- if( mpModel->IsWriter() ) aPoint += mpObj->GetAnchorPos(); - ForceMetricToItemPoolMetric( aPoint ); pEdgeObj->SetTailPoint( pProperty->nWID == OWN_ATTR_EDGE_START_POS, aPoint ); return true; } @@ -2532,6 +2598,9 @@ bool SvxShape::setPropertyValueImpl( const ::rtl::OUString&, const SfxItemProper if ( rValue >>= aPolyPoly ) { basegfx::B2DPolyPolygon aNewPolyPolygon( SvxConvertPolyPolygonBezierToB2DPolyPolygon( &aPolyPoly ) ); + // --> OD 2010-02-19 #i108851# - reintroduction of fix for issue i59051 + ForceMetricToItemPoolMetric( aNewPolyPolygon ); + // <-- if( mpModel->IsWriter() ) { Point aPoint( mpObj->GetAnchorPos() ); @@ -2554,6 +2623,9 @@ bool SvxShape::setPropertyValueImpl( const ::rtl::OUString&, const SfxItemProper { Point aPoint( aUnoPoint.X, aUnoPoint.Y ); + // --> OD 2010-02-19 #i108851# - reintroduction of fix for issue i59051 + ForceMetricToItemPoolMetric( aPoint ); + // <-- if( mpModel->IsWriter() ) aPoint += mpObj->GetAnchorPos(); @@ -2797,7 +2869,7 @@ bool SvxShape::getPropertyValueImpl( const ::rtl::OUString&, const SfxItemProper basegfx::B2DPolyPolygon aNewPolyPolygon; basegfx::B2DHomMatrix aNewHomogenMatrix; mpObj->TRGetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon); - + aVclPoint.X() -= basegfx::fround(aNewHomogenMatrix.get(0, 2)); aVclPoint.Y() -= basegfx::fround(aNewHomogenMatrix.get(1, 2)); @@ -2970,6 +3042,9 @@ bool SvxShape::getPropertyValueImpl( const ::rtl::OUString&, const SfxItemProper Point aPoint( mpObj->GetAnchorPos() ); aPolyPoly.transform(basegfx::tools::createTranslateB2DHomMatrix(-aPoint.X(), -aPoint.Y())); } + // --> OD 2010-02-19 #i108851# - reintroduction of fix for issue 59051 + ForceMetricTo100th_mm( aPolyPoly ); + // <-- drawing::PolyPolygonBezierCoords aRetval; SvxConvertB2DPolyPolygonToPolyPolygonBezier( aPolyPoly, aRetval); rValue <<= aRetval; @@ -2990,6 +3065,9 @@ bool SvxShape::getPropertyValueImpl( const ::rtl::OUString&, const SfxItemProper if( mpModel->IsWriter() ) aPoint -= mpObj->GetAnchorPos(); + // --> OD 2010-02-19 #i108851# - reintroduction of fix for issue 59051 + ForceMetricTo100th_mm( aPoint ); + // <-- awt::Point aUnoPoint( aPoint.X(), aPoint.Y() ); rValue <<= aUnoPoint; diff --git a/sysui/desktop/freedesktop/freedesktop-menus.spec b/sysui/desktop/freedesktop/freedesktop-menus.spec index 501f8432d9..1649971dad 100644 --- a/sysui/desktop/freedesktop/freedesktop-menus.spec +++ b/sysui/desktop/freedesktop/freedesktop-menus.spec @@ -14,6 +14,8 @@ Conflicts: %pkgprefix-redhat-menus Conflicts: %pkgprefix-mandriva-menus BuildArch: noarch AutoReqProv: no +%define _binary_filedigest_algorithm 1 +%define _binary_payload w9.gzdio %description %productname desktop integration for desktop-environments that implement diff --git a/sysui/desktop/macosx/Info.plist b/sysui/desktop/macosx/Info.plist index 029e479a3f..cf04e8086a 100644 --- a/sysui/desktop/macosx/Info.plist +++ b/sysui/desktop/macosx/Info.plist @@ -622,7 +622,7 @@ </dict> </dict> - <!--- Microsoft Excel XML --> + <!-- Microsoft Excel XML --> <dict> <key>UTTypeConformsTo</key> <array> @@ -1384,7 +1384,7 @@ <key>CFBundleExecutable</key> <string>%EXECUTABLE</string> <key>CFBundleGetInfoString</key> - <string>${PRODUCTNAME} ${ABOUTBOXPRODUCTVERSION} %SOURCE</string> + <string>${PRODUCTNAME} ${ABOUTBOXPRODUCTVERSION} ${BUILDIDCWS}</string> <key>CFBundleIconFile</key> <string>main.icns</string> <key>CFBundleShortVersionString</key> diff --git a/sysui/desktop/macosx/makefile.mk b/sysui/desktop/macosx/makefile.mk index 8a4a4705e9..059b3b87bb 100644 --- a/sysui/desktop/macosx/makefile.mk +++ b/sysui/desktop/macosx/makefile.mk @@ -54,12 +54,6 @@ CREATOR_TYPE=OOO2 EXECUTABLE=soffice .ENDIF -SOURCE=$(RSCREVISION) - -.IF "$(CWS_WORK_STAMP)" != "" -CWS=[CWS:$(CWS_WORK_STAMP)] -.ENDIF - .IF "$(WITH_LANG)"!="" ULFDIR:=$(COMMONMISC)$/desktopshare .ELSE # "$(WITH_LANG)"!="" @@ -79,7 +73,7 @@ $(COMMONMISC)$/PkgInfo : $(COMMONMISC)$/Info.plist : $$(@:f) - sed -e "s|\%EXECUTABLE|${EXECUTABLE}|g" -e "s|\%SOURCE|[$(SOURCE)$(CWS)]|g" $< > $@ + sed -e "s|\%EXECUTABLE|${EXECUTABLE}|g" $< > $@ $(COMMONBIN)$/InfoPlist_{$(alllangiso)}.zip : $(COMMONMISC)$/$$(@:b)/InfoPlist.strings cd $(<:d) && zip ../$(@:f).$(INPATH) $(<:f) diff --git a/sysui/desktop/mandriva/mandriva-menus.spec b/sysui/desktop/mandriva/mandriva-menus.spec index 5be889e392..4c02c70d90 100644 --- a/sysui/desktop/mandriva/mandriva-menus.spec +++ b/sysui/desktop/mandriva/mandriva-menus.spec @@ -16,6 +16,8 @@ Requires: mandrake-release Provides: openoffice.org3-desktop-integration %define _unpackaged_files_terminate_build 0 +%define _binary_filedigest_algorithm 1 +%define _binary_payload w9.gzdio %define menuversion %(echo %version|cut -d'.' -f 1-2) %{?!update_menus:%define update_menus if [ -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi} diff --git a/sysui/desktop/mimetypes/extension.desktop b/sysui/desktop/mimetypes/extension.desktop index 795e828714..80cadae7e9 100644 --- a/sysui/desktop/mimetypes/extension.desktop +++ b/sysui/desktop/mimetypes/extension.desktop @@ -6,4 +6,4 @@ Icon=extension Type=MimeType Patterns=*.oxt MimeType=application/vnd.openofficeorg.extension -Comment=Extension +Comment=%PRODUCTNAME Extension diff --git a/sysui/desktop/redhat/redhat-menus.spec b/sysui/desktop/redhat/redhat-menus.spec index e153b55c3f..85e0a6a5d7 100644 --- a/sysui/desktop/redhat/redhat-menus.spec +++ b/sysui/desktop/redhat/redhat-menus.spec @@ -11,6 +11,8 @@ BuildArch: noarch Requires: redhat-release Provides: openoffice.org3-desktop-integration %define _unpackaged_files_terminate_build 0 +%define _binary_filedigest_algorithm 1 +%define _binary_payload w9.gzdio %description %productname desktop integration diff --git a/sysui/desktop/suse/suse-menus.spec b/sysui/desktop/suse/suse-menus.spec index 7280d9dbae..14dbcde0f5 100644 --- a/sysui/desktop/suse/suse-menus.spec +++ b/sysui/desktop/suse/suse-menus.spec @@ -14,6 +14,8 @@ Requires: /etc/SuSE-release Conflicts: SunDesktopVersion Provides: openoffice.org3-desktop-integration %define _unpackaged_files_terminate_build 0 +%define _binary_filedigest_algorithm 1 +%define _binary_payload w9.gzdio %description %productname desktop integration diff --git a/ucb/source/core/ucb.cxx b/ucb/source/core/ucb.cxx index 171a989f8b..e44956b2a0 100644 --- a/ucb/source/core/ucb.cxx +++ b/ucb/source/core/ucb.cxx @@ -40,7 +40,11 @@ #include <com/sun/star/ucb/XCommandInfo.hpp> #include <com/sun/star/ucb/XContentProvider.hpp> #include <com/sun/star/ucb/XContentProviderSupplier.hpp> -#include <ucbhelper/configureucb.hxx> +#include <com/sun/star/ucb/XParameterizedContentProvider.hpp> +#include <com/sun/star/ucb/XContentProviderFactory.hpp> +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/uno/Any.hxx> #include <ucbhelper/cancelcommandexecution.hxx> #include "identify.hxx" #include "ucbcmds.hxx" @@ -59,6 +63,126 @@ using namespace com::sun::star::uno; using namespace com::sun::star::lang; using namespace com::sun::star::ucb; using namespace ucb_impl; +using namespace com::sun::star; +using namespace ucbhelper; + + +#define CONFIG_CONTENTPROVIDERS_KEY \ + "/org.openoffice.ucb.Configuration/ContentProviders" + + +namespace { + +bool fillPlaceholders(rtl::OUString const & rInput, + uno::Sequence< uno::Any > const & rReplacements, + rtl::OUString * pOutput) +{ + sal_Unicode const * p = rInput.getStr(); + sal_Unicode const * pEnd = p + rInput.getLength(); + sal_Unicode const * pCopy = p; + rtl::OUStringBuffer aBuffer; + while (p != pEnd) + switch (*p++) + { + case '&': + if (pEnd - p >= 4 + && p[0] == 'a' && p[1] == 'm' && p[2] == 'p' + && p[3] == ';') + { + aBuffer.append(pCopy, p - 1 - pCopy); + aBuffer.append(sal_Unicode('&')); + p += 4; + pCopy = p; + } + else if (pEnd - p >= 3 + && p[0] == 'l' && p[1] == 't' && p[2] == ';') + { + aBuffer.append(pCopy, p - 1 - pCopy); + aBuffer.append(sal_Unicode('<')); + p += 3; + pCopy = p; + } + else if (pEnd - p >= 3 + && p[0] == 'g' && p[1] == 't' && p[2] == ';') + { + aBuffer.append(pCopy, p - 1 - pCopy); + aBuffer.append(sal_Unicode('>')); + p += 3; + pCopy = p; + } + break; + + case '<': + sal_Unicode const * q = p; + while (q != pEnd && *q != '>') + ++q; + if (q == pEnd) + break; + rtl::OUString aKey(p, q - p); + rtl::OUString aValue; + bool bFound = false; + for (sal_Int32 i = 2; i + 1 < rReplacements.getLength(); + i += 2) + { + rtl::OUString aReplaceKey; + if ((rReplacements[i] >>= aReplaceKey) + && aReplaceKey == aKey + && (rReplacements[i + 1] >>= aValue)) + { + bFound = true; + break; + } + } + if (!bFound) + return false; + aBuffer.append(pCopy, p - 1 - pCopy); + aBuffer.append(aValue); + p = q + 1; + pCopy = p; + break; + } + aBuffer.append(pCopy, pEnd - pCopy); + *pOutput = aBuffer.makeStringAndClear(); + return true; +} + +void makeAndAppendXMLName( + rtl::OUStringBuffer & rBuffer, const rtl::OUString & rIn ) +{ + sal_Int32 nCount = rIn.getLength(); + for ( sal_Int32 n = 0; n < nCount; ++n ) + { + const sal_Unicode c = rIn.getStr()[ n ]; + switch ( c ) + { + case '&': + rBuffer.appendAscii( "&" ); + break; + + case '"': + rBuffer.appendAscii( """ ); + break; + + case '\'': + rBuffer.appendAscii( "'" ); + break; + + case '<': + rBuffer.appendAscii( "<" ); + break; + + case '>': + rBuffer.appendAscii( ">" ); + break; + + default: + rBuffer.append( c ); + break; + } + } +} + +} //========================================================================= // @@ -132,6 +256,9 @@ void SAL_CALL UniversalContentBroker::dispose() aEvt.Source = SAL_STATIC_CAST( XComponent*, this ); m_pDisposeEventListeners->disposeAndClear( aEvt ); } + + if ( m_xNotifier.is() ) + m_xNotifier->removeChangesListener( this ); } //========================================================================= @@ -193,9 +320,11 @@ void SAL_CALL UniversalContentBroker::initialize( //@@@ At the moment, there's a problem when one (non-one-instance) factory // 'wraps' another (one-instance) factory, causing this method to be // called several times: + m_aArguments = aArguments; + oslInterlockedCount nCount = osl_incrementInterlockedCount(&m_nInitCount); if (nCount == 1) - ::ucbhelper::configureUcb(this, m_xSMgr, aArguments, 0); + configureUcb(); else osl_decrementInterlockedCount(&m_nInitCount); // make the possibility of overflow less likely... @@ -508,6 +637,80 @@ void SAL_CALL UniversalContentBroker::abort( sal_Int32 ) //========================================================================= // +// XChangesListener methods +// +//========================================================================= +// virtual +void SAL_CALL UniversalContentBroker::changesOccurred( const util::ChangesEvent& Event ) + throw( uno::RuntimeException ) +{ + sal_Int32 nCount = Event.Changes.getLength(); + if ( nCount ) + { + + uno::Reference< lang::XMultiServiceFactory > xConfigProv( + m_xSMgr->createInstance( + rtl::OUString::createFromAscii( + "com.sun.star.configuration.ConfigurationProvider" ) ), + uno::UNO_QUERY_THROW ); + + uno::Sequence< uno::Any > aArguments( 1 ); + beans::PropertyValue aProperty; + aProperty.Name + = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ); + aProperty.Value <<= Event.Base; + aArguments[ 0 ] <<= aProperty; + + uno::Reference< uno::XInterface > xInterface( + xConfigProv->createInstanceWithArguments( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.configuration.ConfigurationAccess" ) ), + aArguments ) ); + + uno::Reference< container::XHierarchicalNameAccess > + xHierNameAccess( xInterface, uno::UNO_QUERY_THROW ); + + const util::ElementChange* pElementChanges + = Event.Changes.getConstArray(); + + ContentProviderDataList aData; + for ( sal_Int32 n = 0; n < nCount; ++n ) + { + const util::ElementChange& rElem = pElementChanges[ n ]; + rtl::OUString aKey; + rElem.Accessor >>= aKey; + + ContentProviderData aInfo; + + createContentProviderData(aKey, xHierNameAccess, aInfo); + + aData.push_back(aInfo); + } + + prepareAndRegister(aData); + } +} + +//========================================================================= +// +// XEventListener methods +// +//========================================================================= +// virtual +void SAL_CALL UniversalContentBroker::disposing(const lang::EventObject&) + throw( uno::RuntimeException ) +{ + if ( m_xNotifier.is() ) + { + osl::Guard< osl::Mutex > aGuard( m_aMutex ); + + if ( m_xNotifier.is() ) + m_xNotifier.clear(); + } +} + +//========================================================================= +// // Non-interface methods // //========================================================================= @@ -524,6 +727,212 @@ Reference< XContentProvider > UniversalContentBroker::queryContentProvider( : Reference< XContentProvider >(); } +bool UniversalContentBroker::configureUcb() + throw (uno::RuntimeException) +{ + rtl::OUString aKey1; + rtl::OUString aKey2; + if (m_aArguments.getLength() < 2 + || !(m_aArguments[0] >>= aKey1) || !(m_aArguments[1] >>= aKey2)) + { + OSL_ENSURE(false, "UniversalContentBroker::configureUcb(): Bad arguments"); + return false; + } + + ContentProviderDataList aData; + if (!getContentProviderData(aKey1, aKey2, aData)) + { + OSL_ENSURE(false, "UniversalContentBroker::configureUcb(): No configuration"); + return false; + } + + prepareAndRegister(aData); + + return true; +} + +void UniversalContentBroker::prepareAndRegister( + const ContentProviderDataList& rData) +{ + ContentProviderDataList::const_iterator aEnd(rData.end()); + for (ContentProviderDataList::const_iterator aIt(rData.begin()); + aIt != aEnd; ++aIt) + { + rtl::OUString aProviderArguments; + if (fillPlaceholders(aIt->Arguments, + m_aArguments, + &aProviderArguments)) + { + registerAtUcb(this, + m_xSMgr, + aIt->ServiceName, + aProviderArguments, + aIt->URLTemplate, + 0); + + } + else + OSL_ENSURE(false, + "UniversalContentBroker::prepareAndRegister(): Bad argument placeholders"); + } +} + +//========================================================================= +bool UniversalContentBroker::getContentProviderData( + const rtl::OUString & rKey1, + const rtl::OUString & rKey2, + ContentProviderDataList & rListToFill ) +{ + if ( !m_xSMgr.is() || !rKey1.getLength() || !rKey2.getLength() ) + { + OSL_ENSURE( false, + "UniversalContentBroker::getContentProviderData - Invalid argument!" ); + return false; + } + + try + { + uno::Reference< lang::XMultiServiceFactory > xConfigProv( + m_xSMgr->createInstance( + rtl::OUString::createFromAscii( + "com.sun.star.configuration.ConfigurationProvider" ) ), + uno::UNO_QUERY_THROW ); + + rtl::OUStringBuffer aFullPath; + aFullPath.appendAscii( CONFIG_CONTENTPROVIDERS_KEY "/['" ); + makeAndAppendXMLName( aFullPath, rKey1 ); + aFullPath.appendAscii( "']/SecondaryKeys/['" ); + makeAndAppendXMLName( aFullPath, rKey2 ); + aFullPath.appendAscii( "']/ProviderData" ); + + uno::Sequence< uno::Any > aArguments( 1 ); + beans::PropertyValue aProperty; + aProperty.Name + = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ); + aProperty.Value <<= aFullPath.makeStringAndClear(); + aArguments[ 0 ] <<= aProperty; + + uno::Reference< uno::XInterface > xInterface( + xConfigProv->createInstanceWithArguments( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.configuration.ConfigurationAccess" ) ), + aArguments ) ); + + if ( !m_xNotifier.is() ) + { + m_xNotifier = uno::Reference< util::XChangesNotifier >( + xInterface, uno::UNO_QUERY_THROW ); + + m_xNotifier->addChangesListener( this ); + } + + uno::Reference< container::XNameAccess > xNameAccess( + xInterface, uno::UNO_QUERY_THROW ); + + uno::Sequence< rtl::OUString > aElems = xNameAccess->getElementNames(); + const rtl::OUString* pElems = aElems.getConstArray(); + sal_Int32 nCount = aElems.getLength(); + + if ( nCount > 0 ) + { + uno::Reference< container::XHierarchicalNameAccess > + xHierNameAccess( xInterface, uno::UNO_QUERY_THROW ); + + // Iterate over children. + for ( sal_Int32 n = 0; n < nCount; ++n ) + { + + try + { + + ContentProviderData aInfo; + + rtl::OUStringBuffer aElemBuffer; + aElemBuffer.appendAscii( "['" ); + makeAndAppendXMLName( aElemBuffer, pElems[ n ] ); + aElemBuffer.appendAscii( "']" ); + + createContentProviderData(aElemBuffer.makeStringAndClear(), xHierNameAccess, aInfo); + + rListToFill.push_back( aInfo ); + } + catch ( container::NoSuchElementException& ) + { + // getByHierarchicalName + OSL_ENSURE( false, + "UniversalContentBroker::getContentProviderData - " + "caught NoSuchElementException!" ); + } + } + } + } + catch ( uno::RuntimeException& ) + { + OSL_ENSURE( false, + "UniversalContentBroker::getContentProviderData - caught RuntimeException!" ); + return false; + } + catch ( uno::Exception& ) + { + // createInstance, createInstanceWithArguments + + OSL_ENSURE( false, + "UniversalContentBroker::getContentProviderData - caught Exception!" ); + return false; + } + + return true; +} + +void UniversalContentBroker::createContentProviderData( + const rtl::OUString & rProvider, + const uno::Reference< container::XHierarchicalNameAccess >& rxHierNameAccess, + ContentProviderData & rInfo) +{ + // Obtain service name. + rtl::OUStringBuffer aKeyBuffer (rProvider); + aKeyBuffer.appendAscii( "/ServiceName" ); + + rtl::OUString aValue; + if ( !( rxHierNameAccess->getByHierarchicalName( + aKeyBuffer.makeStringAndClear() ) >>= aValue ) ) + { + OSL_ENSURE( false, + "UniversalContentBroker::getContentProviderData - " + "Error getting item value!" ); + } + + rInfo.ServiceName = aValue; + + // Obtain URL Template. + aKeyBuffer.append(rProvider); + aKeyBuffer.appendAscii( "/URLTemplate" ); + + if ( !( rxHierNameAccess->getByHierarchicalName( + aKeyBuffer.makeStringAndClear() ) >>= aValue ) ) + { + OSL_ENSURE( false, + "UniversalContentBroker::getContentProviderData - " + "Error getting item value!" ); + } + + rInfo.URLTemplate = aValue; + + // Obtain Arguments. + aKeyBuffer.append(rProvider); + aKeyBuffer.appendAscii( "/Arguments" ); + + if ( !( rxHierNameAccess->getByHierarchicalName( + aKeyBuffer.makeStringAndClear() ) >>= aValue ) ) + { + OSL_ENSURE( false, + "UniversalContentBroker::getContentProviderData - " + "Error getting item value!" ); + } + + rInfo.Arguments = aValue; +} + //========================================================================= // // ProviderListEntry_Impl implementation. @@ -545,4 +954,3 @@ Reference< XContentProvider > ProviderListEntry_Impl::resolveProvider() const return m_xResolvedProvider; } - diff --git a/ucb/source/core/ucb.hxx b/ucb/source/core/ucb.hxx index 0b52812d19..db54af4688 100644 --- a/ucb/source/core/ucb.hxx +++ b/ucb/source/core/ucb.hxx @@ -37,13 +37,20 @@ #include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/lang/XTypeProvider.hpp> +#include <com/sun/star/util/XChangesListener.hpp> +#include <com/sun/star/util/XChangesNotifier.hpp> +#include <com/sun/star/container/XContainer.hpp> +#include <com/sun/star/container/XHierarchicalNameAccess.hpp> + #include <rtl/ustrbuf.hxx> #include <cppuhelper/weak.hxx> #include <osl/mutex.hxx> #include <osl/interlck.h> #include <ucbhelper/macros.hxx> #include "providermap.hxx" +#include <ucbhelper/registerucb.hxx> +#include <vector> //========================================================================= #define UCB_SERVICE_NAME "com.sun.star.ucb.UniversalContentBroker" @@ -66,7 +73,8 @@ class UniversalContentBroker : public com::sun::star::ucb::XContentProviderManager, public com::sun::star::ucb::XContentProvider, public com::sun::star::ucb::XContentIdentifierFactory, - public com::sun::star::ucb::XCommandProcessor + public com::sun::star::ucb::XCommandProcessor, + public com::sun::star::util::XChangesListener { public: UniversalContentBroker( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rXSMgr ); @@ -162,6 +170,14 @@ public: abort( sal_Int32 CommandId ) throw( com::sun::star::uno::RuntimeException ); + // XChangesListener + virtual void SAL_CALL changesOccurred( const com::sun::star::util::ChangesEvent& Event ) + throw( com::sun::star::uno::RuntimeException ); + + // XEventListener ( base of XChangesLisetenr ) + virtual void SAL_CALL disposing( const com::sun::star::lang::EventObject& Source ) + throw( com::sun::star::uno::RuntimeException ); + private: com::sun::star::uno::Reference< com::sun::star::ucb::XContentProvider > queryContentProvider( const rtl::OUString& Identifier, @@ -177,8 +193,29 @@ private: com::sun::star::ucb::XCommandEnvironment >& xEnv ) throw( com::sun::star::uno::Exception ); + + bool configureUcb() + throw ( com::sun::star::uno::RuntimeException); + + bool getContentProviderData( + const rtl::OUString & rKey1, + const rtl::OUString & rKey2, + ucbhelper::ContentProviderDataList & rListToFill); + + void prepareAndRegister( const ucbhelper::ContentProviderDataList& rData); + + void createContentProviderData( + const rtl::OUString& rProvider, + const com::sun::star::uno::Reference< com::sun::star::container::XHierarchicalNameAccess >& rxHierNameAccess, + ucbhelper::ContentProviderData& rInfo); + com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xSMgr; + + com::sun::star::uno::Reference< + com::sun::star::util::XChangesNotifier > m_xNotifier; + + com::sun::star::uno::Sequence< com::sun::star::uno::Any > m_aArguments; ProviderMap_Impl m_aProviders; osl::Mutex m_aMutex; cppu::OInterfaceContainerHelper* m_pDisposeEventListeners; diff --git a/ucb/source/ucp/webdav/DAVAuthListener.hxx b/ucb/source/ucp/webdav/DAVAuthListener.hxx index fb5f0d0449..71bed1c0a1 100644 --- a/ucb/source/ucp/webdav/DAVAuthListener.hxx +++ b/ucb/source/ucp/webdav/DAVAuthListener.hxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -30,9 +30,7 @@ #include <salhelper/simplereferenceobject.hxx> #include <rtl/ustring.hxx> -#ifndef _COM_SUN_STAR_UCB_XREFERENCE_HPP_ #include <com/sun/star/uno/XReference.hpp> -#endif #include <com/sun/star/ucb/XCommandEnvironment.hpp> namespace webdav_ucp @@ -46,7 +44,6 @@ class DAVAuthListener : public salhelper::SimpleReferenceObject const ::rtl::OUString & inHostName, ::rtl::OUString & inoutUserName, ::rtl::OUString & outPassWord, - sal_Bool bAllowPersistentStoring, sal_Bool bCanUseSystemCredentials ) = 0; }; diff --git a/ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx b/ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx index 3ee5bf152c..c0c9968613 100644 --- a/ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx +++ b/ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -33,7 +33,7 @@ namespace webdav_ucp { - + //========================================================================= //========================================================================= @@ -43,28 +43,27 @@ namespace webdav_ucp // //========================================================================= //========================================================================= - - + + class DAVAuthListener_Impl : public DAVAuthListener { public: - + DAVAuthListener_Impl( const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment>& xEnv, const ::rtl::OUString & inURL ) - : m_xEnv( xEnv ), m_aURL( inURL ) + : m_xEnv( xEnv ), m_aURL( inURL ) { } - + virtual int authenticate( const ::rtl::OUString & inRealm, const ::rtl::OUString & inHostName, ::rtl::OUString & inoutUserName, ::rtl::OUString & outPassWord, - sal_Bool bAllowPersistentStoring, sal_Bool bCanUseSystemCredentials ); private: - + const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > m_xEnv; const rtl::OUString m_aURL; diff --git a/ucb/source/ucp/webdav/DAVResourceAccess.cxx b/ucb/source/ucp/webdav/DAVResourceAccess.cxx index 71d4eabdbf..872d454057 100644 --- a/ucb/source/ucp/webdav/DAVResourceAccess.cxx +++ b/ucb/source/ucp/webdav/DAVResourceAccess.cxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -57,7 +57,6 @@ int DAVAuthListener_Impl::authenticate( const ::rtl::OUString & inHostName, ::rtl::OUString & inoutUserName, ::rtl::OUString & outPassWord, - sal_Bool bAllowPersistentStoring, sal_Bool bCanUseSystemCredentials ) { if ( m_xEnv.is() ) @@ -79,7 +78,8 @@ int DAVAuthListener_Impl::authenticate( = new ucbhelper::SimpleAuthenticationRequest( m_aURL, inHostName, inRealm, inoutUserName, outPassWord, ::rtl::OUString(), - bAllowPersistentStoring, bCanUseSystemCredentials ); + true /*bAllowPersistentStoring*/, + bCanUseSystemCredentials ); xIH->handle( xRequest.get() ); rtl::Reference< ucbhelper::InteractionContinuation > xSelection diff --git a/ucb/source/ucp/webdav/NeonSession.cxx b/ucb/source/ucp/webdav/NeonSession.cxx index 6ab782b322..254fae5469 100644 --- a/ucb/source/ucp/webdav/NeonSession.cxx +++ b/ucb/source/ucp/webdav/NeonSession.cxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -60,7 +60,6 @@ #include <com/sun/star/security/CertificateContainerStatus.hpp> #include <com/sun/star/security/CertificateContainer.hpp> #include <com/sun/star/security/XCertificateContainer.hpp> -#include <com/sun/star/task/XMasterPasswordHandling.hpp> #include <com/sun/star/ucb/Lock.hpp> #include <com/sun/star/xml/crypto/XSEInitializer.hpp> @@ -330,31 +329,11 @@ extern "C" int NeonSession_NeonAuth( void * inUserData, ( ne_strcasecmp( inAuthProtocol, "Negotiate" ) == 0 ) ); #endif - // #i97003# (tkr): Ask XMasterPasswordHandling if we should store the - // credentials persistently and give this information to the auth listener - uno::Reference< task::XMasterPasswordHandling > xMasterPasswordHandling; - try - { - xMasterPasswordHandling = - uno::Reference< task::XMasterPasswordHandling >( - theSession->getMSF()->createInstance( - rtl::OUString::createFromAscii( - "com.sun.star.task.PasswordContainer" ) ), - uno::UNO_QUERY ); - } - catch ( uno::Exception const & ) - { - } - int theRetVal = pListener->authenticate( rtl::OUString::createFromAscii( inRealm ), theSession->getHostName(), theUserName, thePassWord, - xMasterPasswordHandling.is() - ? xMasterPasswordHandling-> - isPersistentStoringAllowed() - : sal_False, bCanUseSystemCreds); rtl::OString aUser( diff --git a/uui/source/iahndl-authentication.cxx b/uui/source/iahndl-authentication.cxx index ec514e03f9..659315e502 100755 --- a/uui/source/iahndl-authentication.cxx +++ b/uui/source/iahndl-authentication.cxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -73,7 +73,7 @@ executeLoginDialog( vos::OGuard aGuard(Application::GetSolarMutex()); bool bAccount = (rInfo.GetFlags() & LOGINERROR_FLAG_MODIFY_ACCOUNT) != 0; - bool bSavePassword = rInfo.GetIsPersistentPassword() || rInfo.GetIsSavePassword(); + bool bSavePassword = rInfo.GetCanRememberPassword(); bool bCanUseSysCreds = rInfo.GetCanUseSystemCredentials(); sal_uInt16 nFlags = 0; @@ -107,10 +107,13 @@ executeLoginDialog( if (bSavePassword) { - sal_uInt32 nResId = rInfo.GetIsPersistentPassword() ? - RID_SAVE_PASSWORD : RID_KEEP_PASSWORD; - xDialog->SetSavePasswordText( ResId( nResId, *xManager.get()) ); - xDialog->SetSavePassword(rInfo.GetIsSavePassword()); + xDialog->SetSavePasswordText( + ResId(rInfo.GetIsRememberPersistent() + ? RID_SAVE_PASSWORD + : RID_KEEP_PASSWORD, + *xManager.get())); + + xDialog->SetSavePassword(rInfo.GetIsRememberPassword()); } if ( bCanUseSysCreds ) @@ -121,7 +124,7 @@ executeLoginDialog( rInfo.SetUserName(xDialog->GetName()); rInfo.SetPassword(xDialog->GetPassword()); rInfo.SetAccount(xDialog->GetAccount()); - rInfo.SetSavePassword(xDialog->IsSavePassword()); + rInfo.SetIsRememberPassword(xDialog->IsSavePassword()); if ( bCanUseSysCreds ) rInfo.SetIsUseSystemCredentials( xDialog->IsUseSystemCredentials() ); @@ -134,6 +137,60 @@ executeLoginDialog( } } +void getRememberModes( + uno::Sequence< ucb::RememberAuthentication > const & rRememberModes, + ucb::RememberAuthentication & rPreferredMode, + ucb::RememberAuthentication & rAlternateMode ) +{ + sal_Int32 nCount = rRememberModes.getLength(); + OSL_ENSURE( (nCount > 0) && (nCount < 4), + "ucb::RememberAuthentication sequence size mismatch!" ); + if ( nCount == 1 ) + { + rPreferredMode = rAlternateMode = rRememberModes[ 0 ]; + return; + } + else + { + //bool bHasRememberModeNo = false; + bool bHasRememberModeSession = false; + bool bHasRememberModePersistent = false; + + for (sal_Int32 i = 0; i < nCount; ++i) + { + switch ( rRememberModes[i] ) + { + case ucb::RememberAuthentication_NO: + //bHasRememberModeNo = true; + break; + case ucb::RememberAuthentication_SESSION: + bHasRememberModeSession = true; + break; + case ucb::RememberAuthentication_PERSISTENT: + bHasRememberModePersistent = true; + break; + default: + OSL_TRACE( "Unsupported RememberAuthentication value" ); + break; + } + } + + if (bHasRememberModePersistent) + { + rPreferredMode = ucb::RememberAuthentication_PERSISTENT; + if (bHasRememberModeSession) + rAlternateMode = ucb::RememberAuthentication_SESSION; + else + rAlternateMode = ucb::RememberAuthentication_NO; + } + else + { + rPreferredMode = ucb::RememberAuthentication_SESSION; + rAlternateMode = ucb::RememberAuthentication_NO; + } + } +} + void handleAuthenticationRequest_( Window * pParent, @@ -156,7 +213,7 @@ handleAuthenticationRequest_( xSupplyAuthentication2.set(xSupplyAuthentication, uno::UNO_QUERY); ////////////////////////// - // First, try to obatin credentials from password container service. + // First, try to obtain credentials from password container service. uui::PasswordContainerHelper aPwContainerHelper(xServiceFactory); if (aPwContainerHelper.handleAuthenticationRequest(rRequest, xSupplyAuthentication, @@ -169,26 +226,20 @@ handleAuthenticationRequest_( ////////////////////////// // Second, try to obtain credentials from user via password dialog. - bool bRemember; - bool bRememberPersistent; + ucb::RememberAuthentication eDefaultRememberMode + = ucb::RememberAuthentication_SESSION; + ucb::RememberAuthentication ePreferredRememberMode + = eDefaultRememberMode; + ucb::RememberAuthentication eAlternateRememberMode + = ucb::RememberAuthentication_NO; + if (xSupplyAuthentication.is()) { - ucb::RememberAuthentication eDefault; - uno::Sequence< ucb::RememberAuthentication > - aModes(xSupplyAuthentication->getRememberPasswordModes(eDefault)); - bRemember = eDefault != ucb::RememberAuthentication_NO; - bRememberPersistent = false; - for (sal_Int32 i = 0; i < aModes.getLength(); ++i) - if (aModes[i] == ucb::RememberAuthentication_PERSISTENT) - { - bRememberPersistent = true; - break; - } - } - else - { - bRemember = false; - bRememberPersistent = false; + getRememberModes( + xSupplyAuthentication->getRememberPasswordModes( + eDefaultRememberMode), + ePreferredRememberMode, + eAlternateRememberMode); } sal_Bool bCanUseSystemCredentials; @@ -215,8 +266,14 @@ handleAuthenticationRequest_( if (rRequest.HasPassword) aInfo.SetPassword(rRequest.Password); aInfo.SetErrorText(rRequest.Diagnostic); - aInfo.SetPersistentPassword(bRememberPersistent); - aInfo.SetSavePassword(bRemember); + + aInfo.SetCanRememberPassword( + ePreferredRememberMode != eAlternateRememberMode); + aInfo.SetIsRememberPassword( + eDefaultRememberMode != ucb::RememberAuthentication_NO); + aInfo.SetIsRememberPersistent( + ePreferredRememberMode == ucb::RememberAuthentication_PERSISTENT); + aInfo.SetCanUseSystemCredentials(bCanUseSystemCredentials); aInfo.SetIsUseSystemCredentials( bDefaultUseSystemCredentials ); aInfo.SetModifyAccount(rRequest.HasAccount @@ -237,13 +294,24 @@ handleAuthenticationRequest_( xSupplyAuthentication->setUserName(aInfo.GetUserName()); if (xSupplyAuthentication->canSetPassword()) xSupplyAuthentication->setPassword(aInfo.GetPassword()); - xSupplyAuthentication-> - setRememberPassword( - aInfo.GetIsSavePassword() ? - bRememberPersistent ? - ucb::RememberAuthentication_PERSISTENT : - ucb::RememberAuthentication_SESSION : - ucb::RememberAuthentication_NO); + + if (ePreferredRememberMode != eAlternateRememberMode) + { + // user had te choice. + if (aInfo.GetIsRememberPassword()) + xSupplyAuthentication->setRememberPassword( + ePreferredRememberMode); + else + xSupplyAuthentication->setRememberPassword( + eAlternateRememberMode); + } + else + { + // user had no choice. + xSupplyAuthentication->setRememberPassword( + ePreferredRememberMode); + } + if (rRequest.HasRealm) { if (xSupplyAuthentication->canSetRealm()) @@ -262,38 +330,76 @@ handleAuthenticationRequest_( ////////////////////////// // Third, store credentials in password container. - if ( aInfo.GetIsUseSystemCredentials() ) - { - if (aInfo.GetIsSavePassword()) - { - aPwContainerHelper.addRecord( - rURL.getLength() ? rURL : rRequest.ServerName, - rtl::OUString(), // empty u/p -> sys creds - uno::Sequence< rtl::OUString >(), - xIH, - bRememberPersistent); - } - } - // Empty user name can not be valid: - else if (aInfo.GetUserName().Len() != 0) - { - if (aInfo.GetIsSavePassword()) - { - uno::Sequence< rtl::OUString > - aPassList(aInfo.GetAccount().Len() == 0 ? 1 : 2); - aPassList[0] = aInfo.GetPassword(); - if (aInfo.GetAccount().Len() != 0) - aPassList[1] = aInfo.GetAccount(); - - aPwContainerHelper.addRecord( - rURL.getLength() ? rURL : rRequest.ServerName, - aInfo.GetUserName(), - aPassList, - xIH, - bRememberPersistent); - } - } - break; + if ( aInfo.GetIsUseSystemCredentials() ) + { + if (aInfo.GetIsRememberPassword()) + { + if (!aPwContainerHelper.addRecord( + rURL.getLength() ? rURL : rRequest.ServerName, + rtl::OUString(), // empty u/p -> sys creds + uno::Sequence< rtl::OUString >(), + xIH, + ePreferredRememberMode + == ucb::RememberAuthentication_PERSISTENT)) + { + xSupplyAuthentication->setRememberPassword( + ucb::RememberAuthentication_NO); + } + } + else if (eAlternateRememberMode + == ucb::RememberAuthentication_SESSION) + { + if (!aPwContainerHelper.addRecord( + rURL.getLength() ? rURL : rRequest.ServerName, + rtl::OUString(), // empty u/p -> sys creds + uno::Sequence< rtl::OUString >(), + xIH, + false /* SESSION */)) + { + xSupplyAuthentication->setRememberPassword( + ucb::RememberAuthentication_NO); + } + } + } + // Empty user name can not be valid: + else if (aInfo.GetUserName().Len() != 0) + { + uno::Sequence< rtl::OUString > + aPassList(aInfo.GetAccount().Len() == 0 ? 1 : 2); + aPassList[0] = aInfo.GetPassword(); + if (aInfo.GetAccount().Len() != 0) + aPassList[1] = aInfo.GetAccount(); + + if (aInfo.GetIsRememberPassword()) + { + if (!aPwContainerHelper.addRecord( + rURL.getLength() ? rURL : rRequest.ServerName, + aInfo.GetUserName(), + aPassList, + xIH, + ePreferredRememberMode + == ucb::RememberAuthentication_PERSISTENT)) + { + xSupplyAuthentication->setRememberPassword( + ucb::RememberAuthentication_NO); + } + } + else if (eAlternateRememberMode + == ucb::RememberAuthentication_SESSION) + { + if (!aPwContainerHelper.addRecord( + rURL.getLength() ? rURL : rRequest.ServerName, + aInfo.GetUserName(), + aPassList, + xIH, + false /* SESSION */)) + { + xSupplyAuthentication->setRememberPassword( + ucb::RememberAuthentication_NO); + } + } + } + break; case ERRCODE_BUTTON_RETRY: if (xRetry.is()) diff --git a/uui/source/loginerr.hxx b/uui/source/loginerr.hxx index 1653c773dc..73d61bea35 100755 --- a/uui/source/loginerr.hxx +++ b/uui/source/loginerr.hxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -32,12 +32,13 @@ //========================================================================= -#define LOGINERROR_FLAG_SET_SAVE_PASSWORD 1 -#define LOGINERROR_FLAG_MODIFY_ACCOUNT 2 -#define LOGINERROR_FLAG_MODIFY_USER_NAME 4 -#define LOGINERROR_FLAG_PERSISTENT_PASSWORD 8 -#define LOGINERROR_FLAG_CAN_USE_SYSCREDS 16 -#define LOGINERROR_FLAG_IS_USE_SYSCREDS 32 +#define LOGINERROR_FLAG_MODIFY_ACCOUNT 1 +#define LOGINERROR_FLAG_MODIFY_USER_NAME 2 +#define LOGINERROR_FLAG_CAN_REMEMBER_PASSWORD 4 +#define LOGINERROR_FLAG_IS_REMEMBER_PASSWORD 8 +#define LOGINERROR_FLAG_CAN_USE_SYSCREDS 16 +#define LOGINERROR_FLAG_IS_USE_SYSCREDS 32 +#define LOGINERROR_FLAG_REMEMBER_PERSISTENT 64 class LoginErrorInfo { @@ -61,34 +62,34 @@ public: { } - const String& GetTitle() const { return m_aTitle; } - const String& GetServer() const { return m_aServer; } - const String& GetAccount() const { return m_aAccount; } - const String& GetUserName() const { return m_aUserName; } - const String& GetPassword() const { return m_aPassword; } - const String& GetPasswordToModify() const { return m_aPasswordToModify; } - const bool IsRecommendToOpenReadonly() const { return m_bRecommendToOpenReadonly; } - const String& GetPath() const { return m_aPath; } - const String& GetErrorText() const { return m_aErrorText; } - BOOL GetIsPersistentPassword() const - { return ( m_nFlags & LOGINERROR_FLAG_PERSISTENT_PASSWORD ); } - BOOL GetIsSavePassword() const - { return ( m_nFlags & LOGINERROR_FLAG_SET_SAVE_PASSWORD ); } + const String& GetTitle() const { return m_aTitle; } + const String& GetServer() const { return m_aServer; } + const String& GetAccount() const { return m_aAccount; } + const String& GetUserName() const { return m_aUserName; } + const String& GetPassword() const { return m_aPassword; } + const String& GetPasswordToModify() const { return m_aPasswordToModify; } + const bool IsRecommendToOpenReadonly() const { return m_bRecommendToOpenReadonly; } + const String& GetPath() const { return m_aPath; } + const String& GetErrorText() const { return m_aErrorText; } + BOOL GetCanRememberPassword() const { return ( m_nFlags & LOGINERROR_FLAG_CAN_REMEMBER_PASSWORD ); } + BOOL GetIsRememberPersistent() const { return ( m_nFlags & LOGINERROR_FLAG_REMEMBER_PERSISTENT ); } + BOOL GetIsRememberPassword() const { return ( m_nFlags & LOGINERROR_FLAG_IS_REMEMBER_PASSWORD ); } + BOOL GetCanUseSystemCredentials() const { return ( m_nFlags & LOGINERROR_FLAG_CAN_USE_SYSCREDS ); } BOOL GetIsUseSystemCredentials() const { return ( m_nFlags & LOGINERROR_FLAG_IS_USE_SYSCREDS ) == LOGINERROR_FLAG_IS_USE_SYSCREDS; } BYTE GetFlags() const { return m_nFlags; } - USHORT GetResult() const { return m_nRet; } + USHORT GetResult() const { return m_nRet; } - void SetTitle( const String& aTitle ) + void SetTitle( const String& aTitle ) { m_aTitle = aTitle; } - void SetServer( const String& aServer ) + void SetServer( const String& aServer ) { m_aServer = aServer; } - void SetAccount( const String& aAccount ) + void SetAccount( const String& aAccount ) { m_aAccount = aAccount; } - void SetUserName( const String& aUserName ) + void SetUserName( const String& aUserName ) { m_aUserName = aUserName; } void SetPassword( const String& aPassword ) { m_aPassword = aPassword; } @@ -96,36 +97,48 @@ public: { m_aPasswordToModify = aPassword; } void SetRecommendToOpenReadonly( bool bVal ) { m_bRecommendToOpenReadonly = bVal; } - void SetPath( const String& aPath ) + void SetPath( const String& aPath ) { m_aPath = aPath; } - void SetErrorText( const String& aErrorText ) + void SetErrorText( const String& aErrorText ) { m_aErrorText = aErrorText; } void SetFlags( BYTE nFlags ) { m_nFlags = nFlags; } - inline void SetSavePassword( BOOL bSet ); - inline void SetPersistentPassword( BOOL bSet ); + + inline void SetCanRememberPassword( BOOL bSet ); + inline void SetIsRememberPassword( BOOL bSet ); + inline void SetIsRememberPersistent( BOOL bSet ); + inline void SetCanUseSystemCredentials( BOOL bSet ); inline void SetIsUseSystemCredentials( BOOL bSet ); - inline void SetModifyAccount( BOOL bSet ); - inline void SetModifyUserName( BOOL bSet ); + inline void SetModifyAccount( BOOL bSet ); + inline void SetModifyUserName( BOOL bSet ); + void SetResult( USHORT nRet ) { m_nRet = nRet; } }; -inline void LoginErrorInfo::SetSavePassword( BOOL bSet ) +inline void LoginErrorInfo::SetCanRememberPassword( BOOL bSet ) +{ + if ( bSet ) + m_nFlags |= LOGINERROR_FLAG_CAN_REMEMBER_PASSWORD; + else + m_nFlags &= ~LOGINERROR_FLAG_CAN_REMEMBER_PASSWORD; +} + +inline void LoginErrorInfo::SetIsRememberPassword( BOOL bSet ) { if ( bSet ) - m_nFlags |= LOGINERROR_FLAG_SET_SAVE_PASSWORD; + m_nFlags |= LOGINERROR_FLAG_IS_REMEMBER_PASSWORD; else - m_nFlags &= ~LOGINERROR_FLAG_SET_SAVE_PASSWORD; + m_nFlags &= ~LOGINERROR_FLAG_IS_REMEMBER_PASSWORD; } -inline void LoginErrorInfo::SetPersistentPassword( BOOL bSet ) +inline void LoginErrorInfo::SetIsRememberPersistent( BOOL bSet ) { if ( bSet ) - m_nFlags |= LOGINERROR_FLAG_PERSISTENT_PASSWORD; + m_nFlags |= LOGINERROR_FLAG_REMEMBER_PERSISTENT; else - m_nFlags &= ~LOGINERROR_FLAG_PERSISTENT_PASSWORD; + m_nFlags &= ~LOGINERROR_FLAG_REMEMBER_PERSISTENT; } inline void LoginErrorInfo::SetCanUseSystemCredentials( BOOL bSet ) @@ -161,3 +174,5 @@ inline void LoginErrorInfo::SetModifyUserName( BOOL bSet ) } #endif + + diff --git a/uui/source/passwordcontainer.cxx b/uui/source/passwordcontainer.cxx index c9448bcf24..0a056289c2 100644 --- a/uui/source/passwordcontainer.cxx +++ b/uui/source/passwordcontainer.cxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -30,6 +30,7 @@ #include "com/sun/star/lang/XMultiServiceFactory.hpp" #include "com/sun/star/task/NoMasterException.hpp" #include "com/sun/star/task/XInteractionHandler.hpp" +#include "com/sun/star/task/XMasterPasswordHandling.hpp" #include "com/sun/star/task/XPasswordContainer.hpp" #include "com/sun/star/task/XUrlContainer.hpp" #include "com/sun/star/ucb/AuthenticationRequest.hpp" @@ -271,10 +272,20 @@ bool PasswordContainerHelper::addRecord( return false; if ( bPersist ) + { + uno::Reference< task::XMasterPasswordHandling > xMPH( + m_xPasswordContainer, uno::UNO_QUERY_THROW ); + + // If persistent storing of passwords is not yet + // allowed, enable it. + if ( !xMPH->isPersistentStoringAllowed() ) + xMPH->allowPersistentStoring( sal_True ); + m_xPasswordContainer->addPersistent( rURL, rUsername, rPasswords, xIH ); + } else m_xPasswordContainer->add( rURL, rUsername, @@ -429,7 +440,7 @@ PasswordContainerInteractionHandler::handle( // @@@ FIXME: this not able to // handle master pw request! // master pw request is never - // solvabe without UI! + // solvable without UI! this ) ) { // successfully handled diff --git a/vbahelper/inc/vbahelper/msvbahelper.hxx b/vbahelper/inc/vbahelper/msvbahelper.hxx deleted file mode 100644 index f6700f1c8c..0000000000 --- a/vbahelper/inc/vbahelper/msvbahelper.hxx +++ /dev/null @@ -1,55 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _MSVBAHELPER_HXX -#define _MSVBAHELPER_HXX - -#include <sfx2/objsh.hxx> -#include <vbahelper/vbadllapi.h> - -namespace ooo { namespace vba -{ - class VBAHELPER_DLLPUBLIC VBAMacroResolvedInfo - { - SfxObjectShell* mpDocContext; - bool mbFound; - String msResolvedMacro; - public: - VBAMacroResolvedInfo() : mpDocContext(NULL), mbFound( false ){} - void SetResolved( bool bRes ) { mbFound = bRes; } - bool IsResolved() { return mbFound; } - void SetMacroDocContext(SfxObjectShell* pShell ) { mpDocContext = pShell; } - SfxObjectShell* MacroDocContext() { return mpDocContext; } - String ResolvedMacro() { return msResolvedMacro; } - void SetResolvedMacro(const String& sMacro ) { msResolvedMacro = sMacro; } - }; - - VBAHELPER_DLLPUBLIC String makeMacroURL( const String& sMacroName ); - VBAHELPER_DLLPUBLIC VBAMacroResolvedInfo resolveVBAMacro( SfxObjectShell* pShell, const rtl::OUString& sMod, bool bSearchGlobalTemplates = false ); - VBAHELPER_DLLPUBLIC sal_Bool executeMacro( SfxObjectShell* pShell, const String& sMacroName, com::sun::star::uno::Sequence< com::sun::star::uno::Any >& aArgs, com::sun::star::uno::Any& aRet, const com::sun::star::uno::Any& aCaller ); -} } - -#endif diff --git a/vbahelper/inc/vbahelper/vbaaccesshelper.hxx b/vbahelper/inc/vbahelper/vbaaccesshelper.hxx new file mode 100644 index 0000000000..cfbe9e761e --- /dev/null +++ b/vbahelper/inc/vbahelper/vbaaccesshelper.hxx @@ -0,0 +1,79 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbahelper.hxx,v $ + * $Revision: 1.5.32.1 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef OOVBAAPI_VBA_ACCESS_HELPER_HXX +#define OOVBAAPI_VBA_ACCESS_HELPER_HXX + +#include <com/sun/star/beans/XPropertySet.hpp> +#include <basic/basmgr.hxx> +#include <sfx2/objsh.hxx> +#include <sfx2/docfilt.hxx> +#include <sfx2/docfile.hxx> +#define VBAHELPER_DLLIMPLEMENTATION +#include <vbahelper/vbadllapi.h> +#include <memory> +namespace css = ::com::sun::star; +namespace ooo +{ + namespace vba + { + + VBAHELPER_DLLPRIVATE inline css::uno::Reference< css::lang::XMultiServiceFactory > getVBAServiceFactory( SfxObjectShell* pShell ) + { + css::uno::Any aUnoVar; + if ( !pShell || ! pShell->GetBasicManager()->GetGlobalUNOConstant( "VBAGlobals", aUnoVar ) ) + throw css::lang::IllegalArgumentException(); + css::uno::Reference< css::lang::XMultiServiceFactory > xVBAFactory( aUnoVar, css::uno::UNO_QUERY_THROW ); + return xVBAFactory; + } + + VBAHELPER_DLLPUBLIC inline css::uno::Reference< css::uno::XInterface > createVBAUnoAPIServiceWithArgs( SfxObjectShell* pShell, const sal_Char* _pAsciiName, const css::uno::Sequence< css::uno::Any >& aArgs ) throw (css::uno::RuntimeException) + { + OSL_PRECOND( pShell, "createVBAUnoAPIService: no shell!" ); + ::rtl::OUString sVarName( ::rtl::OUString::createFromAscii( _pAsciiName ) ); + css::uno::Reference< css::uno::XInterface > xIf = getVBAServiceFactory( pShell )->createInstanceWithArguments( sVarName, aArgs ); + return xIf; + } + + + VBAHELPER_DLLPRIVATE inline bool isAlienDoc( SfxObjectShell& rDocShell, const char* pMimeType ) + { + bool bRes( false ); + const SfxFilter *pFilt = rDocShell.GetMedium()->GetFilter(); + if ( pFilt && pFilt->IsAlienFormat() ) + bRes = ( pFilt->GetMimeType().CompareToAscii( pMimeType ) == 0 ); + return bRes; + } + VBAHELPER_DLLPUBLIC inline bool isAlienExcelDoc( SfxObjectShell& rDocShell ) { return isAlienDoc( rDocShell, "application/vnd.ms-excel" ); } + VBAHELPER_DLLPUBLIC inline bool isAlienWordDoc( SfxObjectShell& rDocShell ) { return isAlienDoc( rDocShell, "application/vnd.ms-word" ); } + + } // openoffice +} // org + +#endif diff --git a/vbahelper/inc/vbahelper/vbahelper.hxx b/vbahelper/inc/vbahelper/vbahelper.hxx index 81a823be56..dad98b977e 100644 --- a/vbahelper/inc/vbahelper/vbahelper.hxx +++ b/vbahelper/inc/vbahelper/vbahelper.hxx @@ -35,17 +35,19 @@ #include <com/sun/star/lang/IllegalArgumentException.hpp> #include <com/sun/star/awt/XControl.hpp> #include <com/sun/star/awt/XDevice.hpp> +#include <basic/basmgr.hxx> #include <basic/sberrors.hxx> #include <cppuhelper/implbase1.hxx> #include <com/sun/star/frame/XModel.hpp> #include <sfx2/dispatch.hxx> -//#include <ooo/vba/msforms/XShape.hpp> +#include <sfx2/objsh.hxx> +#include <sfx2/docfilt.hxx> +#include <sfx2/docfile.hxx> #include <vcl/pointr.hxx> -#define VBAHELPER_DLLIMPLEMENTATION -#include <vbahelper/vbadllapi.h> #include <memory> -namespace css = ::com::sun::star; +#include "vbaaccesshelper.hxx" +namespace css = ::com::sun::star; namespace ooo { namespace vba @@ -62,8 +64,10 @@ namespace ooo } VBAHELPER_DLLPUBLIC SfxObjectShell* getSfxObjShell( const css::uno::Reference< css::frame::XModel >& xModel ) throw ( css::uno::RuntimeException); VBAHELPER_DLLPUBLIC css::uno::Reference< css::uno::XInterface > createVBAUnoAPIService( SfxObjectShell* pShell, const sal_Char* _pAsciiName ) throw (css::uno::RuntimeException); - VBAHELPER_DLLPUBLIC css::uno::Reference< css::uno::XInterface > createVBAUnoAPIServiceWithArgs( SfxObjectShell* pShell, const sal_Char* _pAsciiName, const css::uno::Sequence< css::uno::Any >& aArgs ) throw (css::uno::RuntimeException); + css::uno::Reference< css::frame::XModel > getCurrentDoc( const rtl::OUString& sKey ) throw (css::uno::RuntimeException); + VBAHELPER_DLLPUBLIC css::uno::Reference< css::frame::XModel > getThisExcelDoc( const css::uno::Reference< css::uno::XComponentContext >& xContext ) throw (css::uno::RuntimeException); + VBAHELPER_DLLPUBLIC css::uno::Reference< css::frame::XModel > getThisWordDoc( const css::uno::Reference< css::uno::XComponentContext >& xContext ) throw (css::uno::RuntimeException); VBAHELPER_DLLPUBLIC css::uno::Reference< css::frame::XModel > getCurrentExcelDoc( const css::uno::Reference< css::uno::XComponentContext >& xContext ) throw (css::uno::RuntimeException); VBAHELPER_DLLPUBLIC css::uno::Reference< css::frame::XModel > getCurrentWordDoc( const css::uno::Reference< css::uno::XComponentContext >& xContext ) throw (css::uno::RuntimeException); diff --git a/vbahelper/prj/build.lst b/vbahelper/prj/build.lst index 0db5274b7a..20001db859 100644 --- a/vbahelper/prj/build.lst +++ b/vbahelper/prj/build.lst @@ -1,4 +1,4 @@ -vba vbahelper : oovbaapi basic sfx2 svx cppuhelper vcl comphelper svtools tools sal NULL +vba vbahelper : oovbaapi basic sfx2 svx filter cppuhelper vcl comphelper svtools tools sal NULL vba vbahelper usr1 - all vba_mkout NULL #vba vbahelper\inc nmake - all vba_inc NULL vba vbahelper\source\vbahelper nmake - all vba_vbahelper NULL diff --git a/vbahelper/prj/d.lst b/vbahelper/prj/d.lst index d7b61d1e5a..d683e97c8b 100644 --- a/vbahelper/prj/d.lst +++ b/vbahelper/prj/d.lst @@ -8,6 +8,7 @@ mkdir: %_DEST%\inc%_EXT%\basic ..\inc\vbahelper\vbacollectionimpl.hxx %_DEST%\inc%_EXT%\vbahelper\vbacollectionimpl.hxx ..\inc\vbahelper\vbahelper.hxx %_DEST%\inc%_EXT%\vbahelper\vbahelper.hxx +..\inc\vbahelper\vbaaccesshelper.hxx %_DEST%\inc%_EXT%\vbahelper\vbaaccesshelper.hxx ..\inc\vbahelper\helperdecl.hxx %_DEST%\inc%_EXT%\vbahelper\helperdecl.hxx ..\inc\vbahelper\vbahelperinterface.hxx %_DEST%\inc%_EXT%\vbahelper\vbahelperinterface.hxx ..\inc\vbahelper\vbaapplicationbase.hxx %_DEST%\inc%_EXT%\vbahelper\vbaapplicationbase.hxx diff --git a/vbahelper/source/msforms/makefile.mk b/vbahelper/source/msforms/makefile.mk index 9c24c77f80..7c61e4302b 100644 --- a/vbahelper/source/msforms/makefile.mk +++ b/vbahelper/source/msforms/makefile.mk @@ -34,6 +34,11 @@ VISIBILITY_HIDDEN=TRUE # --- Settings ----------------------------------------------------- +.IF "$(ENABLE_VBA)" == "NO" +dummy: + @echo "Nothing to build" +.ENDIF + .INCLUDE : settings.mk SLOFILES=\ diff --git a/vbahelper/source/msforms/vbacontrol.cxx b/vbahelper/source/msforms/vbacontrol.cxx index b4c94691b5..077e7626f2 100644 --- a/vbahelper/source/msforms/vbacontrol.cxx +++ b/vbahelper/source/msforms/vbacontrol.cxx @@ -374,10 +374,6 @@ ScVbaControlFactory::ScVbaControlFactory( const uno::Reference< uno::XComponentC { } -ScVbaControl* ScVbaControlFactory::createControl() throw (uno::RuntimeException) -{ - return createControl( m_xModel ); -} ScVbaControl* ScVbaControlFactory::createControl( const uno::Reference< uno::XInterface >& xParent ) throw (uno::RuntimeException) { uno::Reference< drawing::XControlShape > xControlShape( m_xControl, uno::UNO_QUERY ); diff --git a/vbahelper/source/msforms/vbacontrol.hxx b/vbahelper/source/msforms/vbacontrol.hxx index 897b38f159..c9c3964268 100644 --- a/vbahelper/source/msforms/vbacontrol.hxx +++ b/vbahelper/source/msforms/vbacontrol.hxx @@ -98,7 +98,6 @@ class ScVbaControlFactory public: ScVbaControlFactory( const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::uno::XInterface >& xControl, const css::uno::Reference< css::frame::XModel >& xModel ); - ScVbaControl* createControl() throw ( css::uno::RuntimeException ); ScVbaControl* createControl( const css::uno::Reference< css::uno::XInterface >& xParent ) throw ( css::uno::RuntimeException ); private: ScVbaControl* createControl( const css::uno::Reference< css::awt::XControl >&, const css::uno::Reference< css::uno::XInterface >& ) throw ( css::uno::RuntimeException ); diff --git a/vbahelper/source/vbahelper/makefile.mk b/vbahelper/source/vbahelper/makefile.mk index 88f8f53bd5..b11b4ffa0a 100644 --- a/vbahelper/source/vbahelper/makefile.mk +++ b/vbahelper/source/vbahelper/makefile.mk @@ -33,10 +33,14 @@ ENABLE_EXCEPTIONS := TRUE VISIBILITY_HIDDEN=TRUE # --- Settings ----------------------------------------------------- +.IF "$(ENABLE_VBA)" == "NO" +dummy: + @echo "Nothing to build" +.ENDIF + .INCLUDE : settings.mk SLOFILES=\ - $(SLO)$/msvbahelper.obj \ $(SLO)$/vbahelper.obj \ $(SLO)$/vbapropvalue.obj \ $(SLO)$/vbacommandbars.obj \ diff --git a/vbahelper/source/vbahelper/msvbahelper.cxx b/vbahelper/source/vbahelper/msvbahelper.cxx deleted file mode 100644 index 49b514f012..0000000000 --- a/vbahelper/source/vbahelper/msvbahelper.cxx +++ /dev/null @@ -1,381 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#define VBAHELPER_DLLIMPLEMENTATION -#include <vbahelper/msvbahelper.hxx> -#include <basic/sbx.hxx> -#include <basic/sbstar.hxx> -#include <basic/basmgr.hxx> -#include <basic/sbmod.hxx> -#include <basic/sbmeth.hxx> -#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> -#include <com/sun/star/document/XDocumentProperties.hpp> -#include <com/sun/star/document/XDocumentInfoSupplier.hpp> -#include <tools/urlobj.hxx> -#include <osl/file.hxx> - -using namespace ::com::sun::star; - -const static rtl::OUString sUrlPart0 = rtl::OUString::createFromAscii( "vnd.sun.star.script:"); -const static rtl::OUString sUrlPart1 = rtl::OUString::createFromAscii( "?language=Basic&location=document"); - -namespace ooo { namespace vba { - -String makeMacroURL( const String& sMacroName ) -{ - return sUrlPart0.concat( sMacroName ).concat( sUrlPart1 ) ; -} - -SfxObjectShell* findShellForUrl( const rtl::OUString& sMacroURLOrPath ) -{ - SfxObjectShell* pFoundShell=NULL; - SfxObjectShell* pShell = SfxObjectShell::GetFirst(); - INetURLObject aObj; - aObj.SetURL( sMacroURLOrPath ); - bool bIsURL = aObj.GetProtocol() != INET_PROT_NOT_VALID; - rtl::OUString aURL; - if ( bIsURL ) - aURL = sMacroURLOrPath; - else - { - osl::FileBase::getFileURLFromSystemPath( sMacroURLOrPath, aURL ); - aObj.SetURL( aURL ); - } - OSL_TRACE("Trying to find shell for url %s", rtl::OUStringToOString( aURL, RTL_TEXTENCODING_UTF8 ).getStr() ); - while ( pShell ) - { - - uno::Reference< frame::XModel > xModel = pShell->GetModel(); - // are we searching for a template? if so we have to cater for the - // fact that in openoffice a document opened from a template is always - // a new document :/ - if ( xModel.is() ) - { - OSL_TRACE("shell 0x%x has model with url %s and we look for %s", pShell - , rtl::OUStringToOString( xModel->getURL(), RTL_TEXTENCODING_UTF8 ).getStr() - , rtl::OUStringToOString( aURL, RTL_TEXTENCODING_UTF8 ).getStr() - ); - if ( sMacroURLOrPath.endsWithIgnoreAsciiCaseAsciiL( ".dot", 4 ) ) - { - uno::Reference< document::XDocumentInfoSupplier > xDocInfoSupp( xModel, uno::UNO_QUERY ); - if( xDocInfoSupp.is() ) - { - uno::Reference< document::XDocumentPropertiesSupplier > xDocPropSupp( xDocInfoSupp->getDocumentInfo(), uno::UNO_QUERY_THROW ); - uno::Reference< document::XDocumentProperties > xDocProps( xDocPropSupp->getDocumentProperties(), uno::UNO_QUERY_THROW ); - rtl::OUString sCurrName = xDocProps->getTemplateName(); - if( sMacroURLOrPath.lastIndexOf( sCurrName ) >= 0 ) - { - pFoundShell = pShell; - break; - } - } - } - else - { - if ( aURL.equals( xModel->getURL() ) ) - { - pFoundShell = pShell; - break; - } - } - } - pShell = SfxObjectShell::GetNext( *pShell ); - } - return pFoundShell; -} - -// sMod can be empty ( but we really need the library to search in ) -// if sMod is empty and a macro is found then sMod is updated -bool hasMacro( SfxObjectShell* pShell, const String& sLibrary, String& sMod, const String& sMacro ) -{ - bool bFound = false; - if ( sLibrary.Len() && sMacro.Len() ) - { - OSL_TRACE("** Searching for %s.%s in library %s" - ,rtl::OUStringToOString( sMod, RTL_TEXTENCODING_UTF8 ).getStr() - ,rtl::OUStringToOString( sMacro, RTL_TEXTENCODING_UTF8 ).getStr() - ,rtl::OUStringToOString( sLibrary, RTL_TEXTENCODING_UTF8 ).getStr() ); - BasicManager* pBasicMgr = pShell-> GetBasicManager(); - if ( pBasicMgr ) - { - StarBASIC* pBasic = pBasicMgr->GetLib( sLibrary ); - if ( !pBasic ) - { - USHORT nId = pBasicMgr->GetLibId( sLibrary ); - pBasicMgr->LoadLib( nId ); - pBasic = pBasicMgr->GetLib( sLibrary ); - } - if ( pBasic ) - { - if ( sMod.Len() ) // we wish to find the macro is a specific module - { - SbModule* pModule = pBasic->FindModule( sMod ); - if ( pModule ) - { - SbxArray* pMethods = pModule->GetMethods(); - if ( pMethods ) - { - SbMethod* pMethod = static_cast< SbMethod* >( pMethods->Find( sMacro, SbxCLASS_METHOD ) ); - if ( pMethod ) - bFound = true; - } - } - } - else if( SbMethod* pMethod = dynamic_cast< SbMethod* >( pBasic->Find( sMacro, SbxCLASS_METHOD ) ) ) - { - if( SbModule* pModule = pMethod->GetModule() ) - { - sMod = pModule->GetName(); - bFound = true; - } - } - } - } - } - return bFound; -} -void parseMacro( const rtl::OUString& sMacro, String& sContainer, String& sModule, String& sProcedure ) -{ - sal_Int32 nMacroDot = sMacro.lastIndexOf( '.' ); - - if ( nMacroDot != -1 ) - { - sProcedure = sMacro.copy( nMacroDot + 1 ); - - sal_Int32 nContainerDot = sMacro.lastIndexOf( '.', nMacroDot - 1 ); - if ( nContainerDot != -1 ) - { - sModule = sMacro.copy( nContainerDot + 1, nMacroDot - nContainerDot - 1 ); - sContainer = sMacro.copy( 0, nContainerDot ); - } - else - sModule = sMacro.copy( 0, nMacroDot ); - } - else - sProcedure = sMacro; -} - -VBAMacroResolvedInfo resolveVBAMacro( SfxObjectShell* pShell, const rtl::OUString& MacroName, bool bSearchGlobalTemplates ) -{ - VBAMacroResolvedInfo aRes; - if ( !pShell ) - return aRes; - aRes.SetMacroDocContext( pShell ); - // parse the macro name - sal_Int32 nDocSepIndex = MacroName.indexOfAsciiL( "!", 1 ); - String sMacroUrl = MacroName; - - String sContainer; - String sModule; - String sProcedure; - - if( nDocSepIndex > 0 ) - { - // macro specified by document name - // find document shell for document name and call ourselves - // recursively - - // assume for now that the document name is *this* document - String sDocUrlOrPath = MacroName.copy( 0, nDocSepIndex ); - sMacroUrl = MacroName.copy( nDocSepIndex + 1 ); - OSL_TRACE("doc search, current shell is 0x%x", pShell ); - SfxObjectShell* pFoundShell = findShellForUrl( sDocUrlOrPath ); - OSL_TRACE("doc search, after find, found shell is 0x%x", pFoundShell ); - aRes = resolveVBAMacro( pFoundShell, sMacroUrl ); - } - else - { - // macro is contained in 'this' document ( or code imported from a template - // where that template is a global template or perhaps the template this - // document is created from ) - - // macro format = Container.Module.Procedure - parseMacro( MacroName, sContainer, sModule, sProcedure ); - uno::Reference< lang::XMultiServiceFactory> xSF( pShell->GetModel(), uno::UNO_QUERY); - uno::Reference< container::XNameContainer > xPrjNameCache; - if ( xSF.is() ) - xPrjNameCache.set( xSF->createInstance( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.VBAProjectNameProvider" ) ) ), uno::UNO_QUERY ); - - std::vector< rtl::OUString > sSearchList; - - if ( sContainer.Len() > 0 ) - { - // get the Project associated with the Container - if ( xPrjNameCache.is() ) - { - if ( xPrjNameCache->hasByName( sContainer ) ) - { - rtl::OUString sProject; - xPrjNameCache->getByName( sContainer ) >>= sProject; - sContainer = sProject; - } - } - sSearchList.push_back( sContainer ); // First Lib to search - } - else - { - // Ok, if we have no Container specified then we need to search them in order, this document, template this document created from, global templates, - // get the name of Project/Library for 'this' document - rtl::OUString sThisProject; - BasicManager* pBasicMgr = pShell-> GetBasicManager(); - if ( pBasicMgr ) - { - if ( pBasicMgr->GetName().Len() ) - sThisProject = pBasicMgr->GetName(); - else // cater for the case where VBA is not enabled - sThisProject = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Standard") ); - } - sSearchList.push_back( sThisProject ); // First Lib to search - if ( xPrjNameCache.is() ) - { - // is this document created from a template? - uno::Reference< document::XDocumentInfoSupplier > xDocInfoSupp( pShell->GetModel(), uno::UNO_QUERY_THROW ); - uno::Reference< document::XDocumentPropertiesSupplier > xDocPropSupp( xDocInfoSupp->getDocumentInfo(), uno::UNO_QUERY_THROW ); - uno::Reference< document::XDocumentProperties > xDocProps( xDocPropSupp->getDocumentProperties(), uno::UNO_QUERY_THROW ); - - rtl::OUString sCreatedFrom = xDocProps->getTemplateURL(); - if ( sCreatedFrom.getLength() ) - { - INetURLObject aObj; - aObj.SetURL( sCreatedFrom ); - bool bIsURL = aObj.GetProtocol() != INET_PROT_NOT_VALID; - rtl::OUString aURL; - if ( bIsURL ) - aURL = sCreatedFrom; - else - { - osl::FileBase::getFileURLFromSystemPath( sCreatedFrom, aURL ); - aObj.SetURL( aURL ); - } - sCreatedFrom = aObj.GetLastName(); - } - - sal_Int32 nIndex = sCreatedFrom.lastIndexOf( '.' ); - if ( nIndex != -1 ) - sCreatedFrom = sCreatedFrom.copy( 0, nIndex ); - - rtl::OUString sPrj; - if ( sCreatedFrom.getLength() && xPrjNameCache->hasByName( sCreatedFrom ) ) - { - xPrjNameCache->getByName( sCreatedFrom ) >>= sPrj; - // Make sure we don't double up with this project - if ( !sPrj.equals( sThisProject ) ) - sSearchList.push_back( sPrj ); - } - - // get list of global template Names - uno::Sequence< rtl::OUString > sTemplateNames = xPrjNameCache->getElementNames(); - sal_Int32 nLen = sTemplateNames.getLength(); - for ( sal_Int32 index = 0; ( bSearchGlobalTemplates && index < nLen ); ++index ) - { - - if ( !sCreatedFrom.equals( sTemplateNames[ index ] ) ) - { - if ( xPrjNameCache->hasByName( sTemplateNames[ index ] ) ) - { - xPrjNameCache->getByName( sTemplateNames[ index ] ) >>= sPrj; - // Make sure we don't double up with this project - if ( !sPrj.equals( sThisProject ) ) - sSearchList.push_back( sPrj ); - } - } - - } - } - } - std::vector< rtl::OUString >::iterator it_end = sSearchList.end(); - for ( std::vector< rtl::OUString >::iterator it = sSearchList.begin(); it != it_end; ++it ) - { - bool bRes = hasMacro( pShell, *it, sModule, sProcedure ); - if ( bRes ) - { - aRes.SetResolved( true ); - aRes.SetMacroDocContext( pShell ); - sContainer = *it; - break; - } - } - } - aRes.SetResolvedMacro( sProcedure.Insert( '.', 0 ).Insert( sModule, 0).Insert( '.', 0 ).Insert( sContainer, 0 ) ); - - return aRes; -} - -// Treat the args as possible inouts ( convertion at bottom of method ) -sal_Bool executeMacro( SfxObjectShell* pShell, const String& sMacroName, uno::Sequence< uno::Any >& aArgs, uno::Any& /*aRet*/, const uno::Any& aCaller ) -{ - sal_Bool bRes = sal_False; - if ( !pShell ) - return bRes; - rtl::OUString sUrl = makeMacroURL( sMacroName ); - - uno::Sequence< sal_Int16 > aOutArgsIndex; - uno::Sequence< uno::Any > aOutArgs; - - try - { - uno::Reference< script::provider::XScriptProvider > xScriptProvider; - uno::Reference< script::provider::XScriptProviderSupplier > xSPS( pShell->GetModel(), uno::UNO_QUERY_THROW ); - - xScriptProvider.set( xSPS->getScriptProvider(), uno::UNO_QUERY_THROW ); - - uno::Reference< script::provider::XScript > xScript( xScriptProvider->getScript( sUrl ), uno::UNO_QUERY_THROW ); - - if ( aCaller.hasValue() ) - { - uno::Reference< beans::XPropertySet > xProps( xScript, uno::UNO_QUERY ); - if ( xProps.is() ) - { - uno::Sequence< uno::Any > aCallerHack(1); - aCallerHack[ 0 ] = aCaller; - xProps->setPropertyValue( rtl::OUString::createFromAscii( "Caller" ), uno::makeAny( aCallerHack ) ); - } - } - - - xScript->invoke( aArgs, aOutArgsIndex, aOutArgs ); - - sal_Int32 nLen = aOutArgs.getLength(); - // convert any out params to seem like they were inouts - if ( nLen ) - { - for ( sal_Int32 index=0; index < nLen; ++index ) - { - sal_Int32 nOutIndex = aOutArgsIndex[ index ]; - aArgs[ nOutIndex ] = aOutArgs[ index ]; - } - } - - bRes = sal_True; - } - catch ( uno::Exception& e ) - { - bRes = sal_False; - } - return bRes; -} -} } // vba // ooo diff --git a/vbahelper/source/vbahelper/vbaapplicationbase.cxx b/vbahelper/source/vbahelper/vbaapplicationbase.cxx index 732c5124bb..d9db387139 100644 --- a/vbahelper/source/vbahelper/vbaapplicationbase.cxx +++ b/vbahelper/source/vbahelper/vbaapplicationbase.cxx @@ -34,7 +34,7 @@ #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> #include "vbacommandbars.hxx" -#include <vbahelper/msvbahelper.hxx> +#include <filter/msfilter/msvbahelper.hxx> // start basic includes #include <basic/sbx.hxx> diff --git a/vbahelper/source/vbahelper/vbacommandbarcontrol.cxx b/vbahelper/source/vbahelper/vbacommandbarcontrol.cxx index 8bd826fae1..8cb9f4985a 100644 --- a/vbahelper/source/vbahelper/vbacommandbarcontrol.cxx +++ b/vbahelper/source/vbahelper/vbacommandbarcontrol.cxx @@ -27,7 +27,7 @@ #include "vbacommandbarcontrol.hxx" #include "vbacommandbarcontrols.hxx" #include <vbahelper/vbahelper.hxx> -#include <vbahelper/msvbahelper.hxx> +#include <filter/msfilter/msvbahelper.hxx> using namespace com::sun::star; using namespace ooo::vba; diff --git a/vbahelper/source/vbahelper/vbaglobalbase.cxx b/vbahelper/source/vbahelper/vbaglobalbase.cxx index 39a8c81661..adb0738a13 100644 --- a/vbahelper/source/vbahelper/vbaglobalbase.cxx +++ b/vbahelper/source/vbahelper/vbaglobalbase.cxx @@ -85,7 +85,6 @@ VbaGlobalsBase::createInstanceWithArguments( const ::rtl::OUString& ServiceSpeci { uno::Reference< uno::XInterface > xReturn; - if ( hasServiceName( ServiceSpecifier ) ) xReturn = mxContext->getServiceManager()->createInstanceWithArgumentsAndContext( ServiceSpecifier, Arguments, mxContext ); return xReturn; diff --git a/vbahelper/source/vbahelper/vbahelper.cxx b/vbahelper/source/vbahelper/vbahelper.cxx index 004d9eeb17..ed56394312 100644 --- a/vbahelper/source/vbahelper/vbahelper.cxx +++ b/vbahelper/source/vbahelper/vbahelper.cxx @@ -98,15 +98,6 @@ namespace ooo namespace vba { -uno::Reference< lang::XMultiServiceFactory > getVBAServiceFactory( SfxObjectShell* pShell ) -{ - uno::Any aUnoVar; - if ( !pShell || ! pShell->GetBasicManager()->GetGlobalUNOConstant( "VBAGlobals", aUnoVar ) ) - throw lang::IllegalArgumentException(); - uno::Reference< lang::XMultiServiceFactory > xVBAFactory( aUnoVar, uno::UNO_QUERY_THROW ); - return xVBAFactory; -} - css::uno::Reference< css::uno::XInterface > createVBAUnoAPIService( SfxObjectShell* pShell, const sal_Char* _pAsciiName ) throw (css::uno::RuntimeException) { OSL_PRECOND( pShell, "createVBAUnoAPIService: no shell!" ); @@ -114,13 +105,6 @@ css::uno::Reference< css::uno::XInterface > createVBAUnoAPIService( SfxObjectShe return getVBAServiceFactory( pShell )->createInstance( sVarName ); } -css::uno::Reference< css::uno::XInterface > createVBAUnoAPIServiceWithArgs( SfxObjectShell* pShell, const sal_Char* _pAsciiName, const uno::Sequence< uno::Any >& aArgs ) throw ( css::uno::RuntimeException ) -{ - OSL_PRECOND( pShell, "createVBAUnoAPIService: no shell!" ); - ::rtl::OUString sVarName( ::rtl::OUString::createFromAscii( _pAsciiName ) ); - uno::Reference< uno::XInterface > xIf = getVBAServiceFactory( pShell )->createInstanceWithArguments( sVarName, aArgs ); - return xIf; -} // helper method to determine if the view ( calc ) is in print-preview mode bool isInPrintPreview( SfxViewFrame* pView ) { @@ -464,18 +448,30 @@ getCurrentDocCtx( const rtl::OUString& ctxName, const uno::Reference< uno::XComp return xModel; } - uno::Reference< frame::XModel > +uno::Reference< frame::XModel > +getThisExcelDoc( const uno::Reference< uno::XComponentContext >& xContext ) throw (uno::RuntimeException) +{ + return getCurrentDocCtx( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ExcelDocumentContext" ) ), xContext ); +} + +uno::Reference< frame::XModel > +getThisWordDoc( const uno::Reference< uno::XComponentContext >& xContext ) throw (uno::RuntimeException) +{ + return getCurrentDocCtx( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("WordDocumentContext" ) ), xContext ); +} + + uno::Reference< frame::XModel > getCurrentExcelDoc( const uno::Reference< uno::XComponentContext >& xContext ) throw (uno::RuntimeException) { static const rtl::OUString sThisExcelDoc( RTL_CONSTASCII_USTRINGPARAM("ThisExcelDoc" ) ); uno::Reference< frame::XModel > xModel; try { - xModel = getCurrentDoc( sThisExcelDoc ); + xModel = getCurrentDoc( sThisExcelDoc ); } catch( uno::Exception& e ) { - xModel = getCurrentDocCtx( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ExcelDocumentContext" ) ), xContext ); + xModel = getThisExcelDoc( xContext ); } return xModel; } @@ -491,12 +487,12 @@ getCurrentWordDoc( const uno::Reference< uno::XComponentContext >& xContext ) th } catch( uno::Exception& e ) { - xModel = getCurrentDocCtx( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("WordDocumentContext" ) ), xContext ); + xModel = getThisWordDoc( xContext ); } return xModel; } -sal_Int32 +sal_Int32 OORGBToXLRGB( sal_Int32 nCol ) { sal_Int32 nAutoBits = nCol; diff --git a/vbahelper/util/makefile.mk b/vbahelper/util/makefile.mk index 98adae420e..dda4be0cbc 100644 --- a/vbahelper/util/makefile.mk +++ b/vbahelper/util/makefile.mk @@ -34,6 +34,10 @@ TARGET=vbahelper .INCLUDE : settings.mk +.IF "$(ENABLE_VBA)" == "NO" +dummy: + @echo "Nothing to build" +.ENDIF TARGET_HELPER=vbahelper @@ -56,6 +60,7 @@ SHL1STDLIBS= \ $(SVLLIB) \ $(VCLLIB) \ $(SVTOOLLIB) \ + $(MSFILTERLIB) \ $(TKLIB) SHL1DEPN= diff --git a/xmloff/inc/RDFaExportHelper.hxx b/xmloff/inc/RDFaExportHelper.hxx index 3079dd1d85..751bc2ec14 100644 --- a/xmloff/inc/RDFaExportHelper.hxx +++ b/xmloff/inc/RDFaExportHelper.hxx @@ -53,8 +53,6 @@ private: ::com::sun::star::uno::Reference< ::com::sun::star::rdf::XDocumentRepository> m_xRepository; - ::rtl::OUString m_RDFsLabel; - typedef ::std::map< ::rtl::OUString, ::rtl::OUString > BlankNodeMap_t; diff --git a/xmloff/inc/RDFaImportHelper.hxx b/xmloff/inc/RDFaImportHelper.hxx index fff29ad5d9..980d529a5d 100644 --- a/xmloff/inc/RDFaImportHelper.hxx +++ b/xmloff/inc/RDFaImportHelper.hxx @@ -28,10 +28,12 @@ #ifndef RDFAIMPORTHELPER_HXX #define RDFAIMPORTHELPER_HXX -#include <com/sun/star/uno/Reference.h> - #include <vector> +#include <boost/shared_ptr.hpp> + +#include <com/sun/star/uno/Reference.h> + namespace rtl { class OUString; } @@ -46,6 +48,7 @@ class SvXMLImport; namespace xmloff { struct RDFaEntry; +struct ParsedRDFaAttributes; class SAL_DLLPRIVATE RDFaImportHelper { @@ -65,10 +68,23 @@ public: ~RDFaImportHelper(); - /** Add a RDFa statement; parameters are XML attribute values */ + /** Parse RDFa attributes */ + ::boost::shared_ptr<ParsedRDFaAttributes> ParseRDFa( + ::rtl::OUString const & i_rAbout, + ::rtl::OUString const & i_rProperty, + ::rtl::OUString const & i_rContent, + ::rtl::OUString const & i_rDatatype); + + /** Add a RDFa statement; must have been parsed with ParseRDFa */ void AddRDFa( ::com::sun::star::uno::Reference< ::com::sun::star::rdf::XMetadatable> - i_xObject, + const & i_xObject, + ::boost::shared_ptr<ParsedRDFaAttributes> & i_pRDFaAttributes); + + /** Parse and add a RDFa statement; parameters are XML attribute values */ + void ParseAndAddRDFa( + ::com::sun::star::uno::Reference< ::com::sun::star::rdf::XMetadatable> + const & i_xObject, ::rtl::OUString const & i_rAbout, ::rtl::OUString const & i_rProperty, ::rtl::OUString const & i_rContent, diff --git a/xmloff/inc/xmlkywd.hxx b/xmloff/inc/xmlkywd.hxx deleted file mode 100644 index ff40e7daab..0000000000 --- a/xmloff/inc/xmlkywd.hxx +++ /dev/null @@ -1,1998 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _XMLOFF_XMLKYWD_HXX -#define _XMLOFF_XMLKYWD_HXX - -#include <tools/string.hxx> - -/* - * THIS FILE IS DEPRECATED. IT IS SUPERSEDED BY XMLTOKEN.HXX. - * - * Please use xmltoken.hxx / xmltoken.cxx from now on. - */ - - -/* if XML_DEFINE_KEYWORDS is defined the variables are - defined rather than declared. So this file MUST be included - WITHOUT this define. - - (Except the xmlkywd.cxx file that actually defines the - variables which sets this define.) - */ - -#ifndef XML_DEFINE_KEYWORDS -#define XML_CONSTASCII_ACTION( n, s ) extern sal_Char __FAR_DATA n[sizeof(s)] -#else -#define XML_CONSTASCII_ACTION( n, s ) sal_Char __FAR_DATA n[sizeof(s)] = s -#endif - -// common XML -XML_CONSTASCII_ACTION( sXML_CDATA, "CDATA" ); -XML_CONSTASCII_ACTION( sXML_WS, " " ); -XML_CONSTASCII_ACTION( sXML_xml, "xml" ); -XML_CONSTASCII_ACTION( sXML_xmlns, "xmlns" ); -XML_CONSTASCII_ACTION( sXML_xml_pi, "version=\"1.0\" encoding=\"UTF-8\"" ); -XML_CONSTASCII_ACTION( sXML_xml_doctype_prefix, "<!DOCTYPE " ); -XML_CONSTASCII_ACTION( sXML_xml_doctype_suffix, " PUBLIC \"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\" \"office.dtd\">" ); - -// namespace prefixes and names -XML_CONSTASCII_ACTION( sXML_np_office, "office" ); -XML_CONSTASCII_ACTION( sXML_n_office, "http://openoffice.org/2000/office" ); -XML_CONSTASCII_ACTION( sXML_n_office_old, "http://sun.com/xmlns/staroffice/office" ); -XML_CONSTASCII_ACTION( sXML_np_meta, "meta" ); -XML_CONSTASCII_ACTION( sXML_n_meta, "http://openoffice.org/2000/meta" ); -XML_CONSTASCII_ACTION( sXML_n_meta_old, "http://sun.com/xmlns/staroffice/meta" ); -XML_CONSTASCII_ACTION( sXML_np_style, "style" ); -XML_CONSTASCII_ACTION( sXML_n_style, "http://openoffice.org/2000/style" ); -XML_CONSTASCII_ACTION( sXML_n_style_old, "http://sun.com/xmlns/staroffice/style" ); -XML_CONSTASCII_ACTION( sXML_np_number, "number" ); -XML_CONSTASCII_ACTION( sXML_n_number, "http://openoffice.org/2000/datastyle" ); -XML_CONSTASCII_ACTION( sXML_n_number_old, "http://sun.com/xmlns/staroffice/number" ); -XML_CONSTASCII_ACTION( sXML_np_text, "text" ); -XML_CONSTASCII_ACTION( sXML_n_text, "http://openoffice.org/2000/text" ); -XML_CONSTASCII_ACTION( sXML_n_text_old, "http://sun.com/xmlns/staroffice/text" ); -XML_CONSTASCII_ACTION( sXML_np_table, "table" ); -XML_CONSTASCII_ACTION( sXML_n_table, "http://openoffice.org/2000/table" ); -XML_CONSTASCII_ACTION( sXML_n_table_old, "http://sun.com/xmlns/staroffice/table" ); -XML_CONSTASCII_ACTION( sXML_np_draw, "draw" ); -XML_CONSTASCII_ACTION( sXML_n_draw, "http://openoffice.org/2000/drawing" ); -XML_CONSTASCII_ACTION( sXML_np_dr3d, "dr3d" ); -XML_CONSTASCII_ACTION( sXML_n_dr3d, "http://openoffice.org/2000/dr3d" ); -XML_CONSTASCII_ACTION( sXML_n_draw_old, "http://sun.com/xmlns/staroffice/draw" ); -XML_CONSTASCII_ACTION( sXML_np_presentation, "presentation" ); -XML_CONSTASCII_ACTION( sXML_n_presentation, "http://openoffice.org/2000/presentation" ); -XML_CONSTASCII_ACTION( sXML_n_presentation_old, "http://sun.com/xmlns/staroffice/presentation" ); -XML_CONSTASCII_ACTION( sXML_np_chart, "chart" ); -XML_CONSTASCII_ACTION( sXML_n_chart, "http://openoffice.org/2000/chart" ); -XML_CONSTASCII_ACTION( sXML_np_config, "config" ); -XML_CONSTASCII_ACTION( sXML_n_config, "http://openoffice.org/2001/config" ); -XML_CONSTASCII_ACTION( sXML_n_chart_old, "http://sun.com/xmlns/staroffice/chart" ); -XML_CONSTASCII_ACTION( sXML_np_fo, "fo" ); -XML_CONSTASCII_ACTION( sXML_n_fo_old, "http://www.w3.org/1999/XSL/Format/" ); -XML_CONSTASCII_ACTION( sXML_n_fo, "http://www.w3.org/1999/XSL/Format" ); -XML_CONSTASCII_ACTION( sXML_np_xlink, "xlink" ); -XML_CONSTASCII_ACTION( sXML_n_xlink, "http://www.w3.org/1999/xlink" ); -XML_CONSTASCII_ACTION( sXML_n_xlink_old, "http://www.w3.org/1999/xlink/namespace" ); -XML_CONSTASCII_ACTION( sXML_np_dc, "dc" ); -XML_CONSTASCII_ACTION( sXML_n_dc, "http://purl.org/dc/elements/1.1/" ); -XML_CONSTASCII_ACTION( sXML_np_svg, "svg" ); -XML_CONSTASCII_ACTION( sXML_n_svg, "http://www.w3.org/2000/svg" ); -XML_CONSTASCII_ACTION( sXML_namespace_form, "form" ); -XML_CONSTASCII_ACTION( sXML_url_form, "http://openoffice.org/2000/form" ); -XML_CONSTASCII_ACTION( sXML_namespace_script, "script" ); -XML_CONSTASCII_ACTION( sXML_url_script, "http://openoffice.org/2000/script" ); - -XML_CONSTASCII_ACTION( sXML_np_block_list, "block-list"); -XML_CONSTASCII_ACTION( sXML_n_block_list, "http://openoffice.org/2001/block-list" ); - -XML_CONSTASCII_ACTION( sXML_np_math, "math"); -XML_CONSTASCII_ACTION( sXML_n_math, "http://www.w3.org/1998/Math/MathML" ); - -XML_CONSTASCII_ACTION( sXML_np_versions_list, "VL"); -XML_CONSTASCII_ACTION( sXML_n_versions_list, "http://openoffice.org/2001/versions-list" ); - -// units -XML_CONSTASCII_ACTION( sXML_unit_mm, "mm" ); -XML_CONSTASCII_ACTION( sXML_unit_m, "m" ); -XML_CONSTASCII_ACTION( sXML_unit_km, "km" ); -XML_CONSTASCII_ACTION( sXML_unit_cm, "cm" ); -XML_CONSTASCII_ACTION( sXML_unit_pt, "pt" ); -XML_CONSTASCII_ACTION( sXML_unit_pc, "pc" ); -XML_CONSTASCII_ACTION( sXML_unit_foot, "ft" ); -XML_CONSTASCII_ACTION( sXML_unit_miles, "mi" ); -XML_CONSTASCII_ACTION( sXML_unit_inch, "inch" ); - -// any other -XML_CONSTASCII_ACTION( sXML_1, "1" ); -XML_CONSTASCII_ACTION( sXML_10, "10" ); -XML_CONSTASCII_ACTION( sXML_2, "2" ); -XML_CONSTASCII_ACTION( sXML_3, "3" ); -XML_CONSTASCII_ACTION( sXML_4, "4" ); -XML_CONSTASCII_ACTION( sXML_5, "5" ); -XML_CONSTASCII_ACTION( sXML_6, "6" ); -XML_CONSTASCII_ACTION( sXML_7, "7" ); -XML_CONSTASCII_ACTION( sXML_8, "8" ); -XML_CONSTASCII_ACTION( sXML_9, "9" ); -XML_CONSTASCII_ACTION( sXML_A, "A" ); -XML_CONSTASCII_ACTION( sXML_I, "I" ); -XML_CONSTASCII_ACTION( sXML_IBM437, "IBM437" ); -XML_CONSTASCII_ACTION( sXML_IBM850, "IBM850" ); -XML_CONSTASCII_ACTION( sXML_IBM860, "IBM860" ); -XML_CONSTASCII_ACTION( sXML_IBM861, "IBM861" ); -XML_CONSTASCII_ACTION( sXML_IBM863, "IBM863" ); -XML_CONSTASCII_ACTION( sXML_IBM865, "IBM865" ); -XML_CONSTASCII_ACTION( sXML_ISO_8859_1, "ISO-8859-1" ); -XML_CONSTASCII_ACTION( sXML_OLE2, "ole2" ); -XML_CONSTASCII_ACTION( sXML__colon, ":" ); -XML_CONSTASCII_ACTION( sXML__empty, "" ); -XML_CONSTASCII_ACTION( sXML__unknown_, "_unknown_" ); -XML_CONSTASCII_ACTION( sXML_a, "a" ); -XML_CONSTASCII_ACTION( sXML_abbreviated_name, "abbreviated-name" ); -XML_CONSTASCII_ACTION( sXML_above, "above" ); -XML_CONSTASCII_ACTION( sXML_abs, "abs" ); -XML_CONSTASCII_ACTION( sXML_accent, "accent" ); -XML_CONSTASCII_ACTION( sXML_accentunder, "accentunder" ); -XML_CONSTASCII_ACTION( sXML_acceptance_state, "acceptance-state" ); -XML_CONSTASCII_ACTION( sXML_accepted, "accepted" ); -XML_CONSTASCII_ACTION( sXML_action, "action" ); -XML_CONSTASCII_ACTION( sXML_active, "active" ); -XML_CONSTASCII_ACTION( sXML_active_split_range, "active-split-range" ); -XML_CONSTASCII_ACTION( sXML_active_table, "active-table" ); -XML_CONSTASCII_ACTION( sXML_actuate, "actuate" ); -XML_CONSTASCII_ACTION( sXML_add_in, "add-in" ); -XML_CONSTASCII_ACTION( sXML_add_in_name, "add-in-name" ); -XML_CONSTASCII_ACTION( sXML_address, "address" ); -XML_CONSTASCII_ACTION( sXML_adjustment, "adjustment" ); -XML_CONSTASCII_ACTION( sXML_algorithm, "algorithm" ); -XML_CONSTASCII_ACTION( sXML_align, "align" ); -XML_CONSTASCII_ACTION( sXML_all, "all" ); -XML_CONSTASCII_ACTION( sXML_allow_empty_cell, "allow-empty-cell" ); -XML_CONSTASCII_ACTION( sXML_alphabetical_index, "alphabetical-index" ); -XML_CONSTASCII_ACTION( sXML_alphabetical_index_auto_mark_file, "alphabetical-index-auto-mark-file" ); -XML_CONSTASCII_ACTION( sXML_alphabetical_index_entry_template, "alphabetical-index-entry-template" ); -XML_CONSTASCII_ACTION( sXML_alphabetical_index_mark, "alphabetical-index-mark" ); -XML_CONSTASCII_ACTION( sXML_alphabetical_index_mark_end, "alphabetical-index-mark-end" ); -XML_CONSTASCII_ACTION( sXML_alphabetical_index_mark_start, "alphabetical-index-mark-start" ); -XML_CONSTASCII_ACTION( sXML_alphabetical_index_source, "alphabetical-index-source" ); -XML_CONSTASCII_ACTION( sXML_alphabetical_separators, "alphabetical-separators" ); -XML_CONSTASCII_ACTION( sXML_alternate, "alternate" ); -XML_CONSTASCII_ACTION( sXML_am_pm, "am-pm" ); -XML_CONSTASCII_ACTION( sXML_ambient_color, "ambient-color"); -XML_CONSTASCII_ACTION( sXML_anchor_page_number, "anchor-page-number" ); -XML_CONSTASCII_ACTION( sXML_anchor_type, "anchor-type" ); -XML_CONSTASCII_ACTION( sXML_and, "and" ); -XML_CONSTASCII_ACTION( sXML_animation, "animation" ); -XML_CONSTASCII_ACTION( sXML_animation_direction, "animation-direction" ); -XML_CONSTASCII_ACTION( sXML_animation_start_inside, "animation-start-inside" ); -XML_CONSTASCII_ACTION( sXML_animation_stop_inside, "animation-stop-inside" ); -XML_CONSTASCII_ACTION( sXML_animation_repeat, "animation-repeat" ); -XML_CONSTASCII_ACTION( sXML_animation_delay, "animation-delay" ); -XML_CONSTASCII_ACTION( sXML_animation_steps, "animation-steps" ); -XML_CONSTASCII_ACTION( sXML_annotation, "annotation" ); -XML_CONSTASCII_ACTION( sXML_annotations, "annotations" ); -XML_CONSTASCII_ACTION( sXML_annote, "annote" ); -XML_CONSTASCII_ACTION( sXML_applet, "applet"); -XML_CONSTASCII_ACTION( sXML_applet_name, "applet-name"); -XML_CONSTASCII_ACTION( sXML_application_data, "application-data"); -XML_CONSTASCII_ACTION( sXML_application_xml, "application-xml"); -XML_CONSTASCII_ACTION( sXML_apply, "apply" ); -XML_CONSTASCII_ACTION( sXML_apply_style_name, "apply-style-name" ); -XML_CONSTASCII_ACTION( sXML_aqua, "aqua" ); -XML_CONSTASCII_ACTION( sXML_arccos, "arccos" ); -XML_CONSTASCII_ACTION( sXML_archive, "archive" ); -XML_CONSTASCII_ACTION( sXML_arcsin, "arcsin" ); -XML_CONSTASCII_ACTION( sXML_arctan, "arctan" ); -XML_CONSTASCII_ACTION( sXML_area, "area" ); -XML_CONSTASCII_ACTION( sXML_area_circle, "area-circle" ); -XML_CONSTASCII_ACTION( sXML_area_polygon, "area-polygon" ); -XML_CONSTASCII_ACTION( sXML_area_rectangle, "area-rectangle" ); -XML_CONSTASCII_ACTION( sXML_article, "article" ); -XML_CONSTASCII_ACTION( sXML_as_char, "as-char" ); -XML_CONSTASCII_ACTION( sXML_ascending, "ascending"); -XML_CONSTASCII_ACTION( sXML_attached_axis, "attached-axis" ); -XML_CONSTASCII_ACTION( sXML_attractive, "attractive"); -XML_CONSTASCII_ACTION( sXML_author, "author" ); -XML_CONSTASCII_ACTION( sXML_author_initials, "author-initials" ); -XML_CONSTASCII_ACTION( sXML_author_name, "author-name" ); -XML_CONSTASCII_ACTION( sXML_auto, "auto" ); -XML_CONSTASCII_ACTION( sXML_auto_grow_height, "auto-grow-height" ); -XML_CONSTASCII_ACTION( sXML_auto_grow_width, "auto-grow-width" ); -XML_CONSTASCII_ACTION( sXML_auto_reload, "auto-reload" ); -XML_CONSTASCII_ACTION( sXML_auto_text, "auto-text" ); -XML_CONSTASCII_ACTION( sXML_auto_text_events, "auto-text-events" ); -XML_CONSTASCII_ACTION( sXML_auto_text_group, "auto-text-group" ); -XML_CONSTASCII_ACTION( sXML_auto_text_indent, "auto-text-indent" ); -XML_CONSTASCII_ACTION( sXML_up, "up" ); -XML_CONSTASCII_ACTION( sXML_auto_update, "auto-update" ); -XML_CONSTASCII_ACTION( sXML_automatic, "automatic"); -XML_CONSTASCII_ACTION( sXML_automatic_find_labels, "automatic-find-labels" ); -XML_CONSTASCII_ACTION( sXML_automatic_order, "automatic-order" ); -XML_CONSTASCII_ACTION( sXML_automatic_styles, "automatic-styles" ); -XML_CONSTASCII_ACTION( sXML_automatic_update, "automatic-update" ); -XML_CONSTASCII_ACTION( sXML_average, "average" ); -XML_CONSTASCII_ACTION( sXML_axis, "axis" ); -XML_CONSTASCII_ACTION( sXML_back_scale, "back-scale" ); -XML_CONSTASCII_ACTION( sXML_backface_culling, "backface-culling" ); -XML_CONSTASCII_ACTION( sXML_background, "background" ); -XML_CONSTASCII_ACTION( sXML_background_color, "background-color" ); -XML_CONSTASCII_ACTION( sXML_background_image, "background-image" ); -XML_CONSTASCII_ACTION( sXML_background_no_repeat, "no-repeat" ); -XML_CONSTASCII_ACTION( sXML_background_objects_visible, "background-objects-visible" ); -XML_CONSTASCII_ACTION( sXML_background_repeat, "repeat" ); -XML_CONSTASCII_ACTION( sXML_background_stretch, "stretch" ); -XML_CONSTASCII_ACTION( sXML_background_visible, "background-visible" ); -XML_CONSTASCII_ACTION( sXML_bar, "bar" ); -XML_CONSTASCII_ACTION( sXML_base64Binary, "base64Binary"); -XML_CONSTASCII_ACTION( sXML_base_cell_address, "base-cell-address"); -XML_CONSTASCII_ACTION( sXML_baseline, "baseline" ); -XML_CONSTASCII_ACTION( sXML_before_date_time, "before-date-time" ); -XML_CONSTASCII_ACTION( sXML_below , "below" ); -XML_CONSTASCII_ACTION( sXML_between_date_times, "between-date-times" ); -XML_CONSTASCII_ACTION( sXML_bevel , "bevel" ); -XML_CONSTASCII_ACTION( sXML_bibiliographic_type, "bibiliographic-type" ); -XML_CONSTASCII_ACTION( sXML_bibliography, "bibliography" ); -XML_CONSTASCII_ACTION( sXML_bibliography_configuration, "bibliography-configuration" ); -XML_CONSTASCII_ACTION( sXML_bibliography_data_field, "bibliography-data-field" ); -XML_CONSTASCII_ACTION( sXML_bibliography_entry_template, "bibliography-entry-template" ); -XML_CONSTASCII_ACTION( sXML_bibliography_mark, "bibliography-mark" ); -XML_CONSTASCII_ACTION( sXML_bibliography_source, "bibliography-source" ); -XML_CONSTASCII_ACTION( sXML_bibliography_type, "bibliography-type" ); -XML_CONSTASCII_ACTION( sXML_bind_styles_to_content, "bind-styles-to-content"); -XML_CONSTASCII_ACTION( sXML_bitmap , "bitmap" ); -XML_CONSTASCII_ACTION( sXML_black, "black" ); -XML_CONSTASCII_ACTION( sXML_blend, "blend" ); -XML_CONSTASCII_ACTION( sXML_blinking, "blinking" ); -XML_CONSTASCII_ACTION( sXML_block, "block" ); -XML_CONSTASCII_ACTION( sXML_block_list, "block-list" ); -XML_CONSTASCII_ACTION( sXML_blue , "blue" ); -XML_CONSTASCII_ACTION( sXML_body, "body" ); -XML_CONSTASCII_ACTION( sXML_bold, "bold" ); -XML_CONSTASCII_ACTION( sXML_book, "book" ); -XML_CONSTASCII_ACTION( sXML_booklet, "booklet" ); -XML_CONSTASCII_ACTION( sXML_bookmark, "bookmark" ); -XML_CONSTASCII_ACTION( sXML_bookmark_end, "bookmark-end" ); -XML_CONSTASCII_ACTION( sXML_bookmark_ref, "bookmark-ref" ); -XML_CONSTASCII_ACTION( sXML_bookmark_start, "bookmark-start" ); -XML_CONSTASCII_ACTION( sXML_booktitle, "booktitle" ); -XML_CONSTASCII_ACTION( sXML_boolean, "boolean"); -XML_CONSTASCII_ACTION( sXML_boolean_style, "boolean-style" ); -XML_CONSTASCII_ACTION( sXML_boolean_value, "boolean-value"); -XML_CONSTASCII_ACTION( sXML_border, "border" ); -XML_CONSTASCII_ACTION( sXML_border_bottom, "border-bottom" ); -XML_CONSTASCII_ACTION( sXML_border_color, "border-color" ); -XML_CONSTASCII_ACTION( sXML_border_left, "border-left" ); -XML_CONSTASCII_ACTION( sXML_border_line_width, "border-line-width" ); -XML_CONSTASCII_ACTION( sXML_border_line_width_bottom, "border-line-width-bottom" ); -XML_CONSTASCII_ACTION( sXML_border_line_width_left, "border-line-width-left" ); -XML_CONSTASCII_ACTION( sXML_border_line_width_right, "border-line-width-right" ); -XML_CONSTASCII_ACTION( sXML_border_line_width_top, "border-line-width-top" ); -XML_CONSTASCII_ACTION( sXML_border_right, "border-right" ); -XML_CONSTASCII_ACTION( sXML_border_top, "border-top" ); -XML_CONSTASCII_ACTION( sXML_both, "both"); -XML_CONSTASCII_ACTION( sXML_bottom, "bottom" ); -XML_CONSTASCII_ACTION( sXML_bottom_percent, "bottom percent"); -XML_CONSTASCII_ACTION( sXML_bottom_values, "bottom values"); -XML_CONSTASCII_ACTION( sXML_break_after, "break-after" ); -XML_CONSTASCII_ACTION( sXML_break_before, "break-before" ); -XML_CONSTASCII_ACTION( sXML_break_inside, "break-inside" ); -XML_CONSTASCII_ACTION( sXML_bubble, "bubble" ); -XML_CONSTASCII_ACTION( sXML_bullet_char, "bullet-char" ); -XML_CONSTASCII_ACTION( sXML_bullet_relative_size, "bullet-relative-size" ); -XML_CONSTASCII_ACTION( sXML_buttons, "buttons"); -XML_CONSTASCII_ACTION( sXML_bvar, "bvar"); -XML_CONSTASCII_ACTION( sXML_c, "c" ); -XML_CONSTASCII_ACTION( sXML_cm, "cm" ); -XML_CONSTASCII_ACTION( sXML_calculation_settings, "calculation-settings" ); -XML_CONSTASCII_ACTION( sXML_calendar, "calendar" ); -XML_CONSTASCII_ACTION( sXML_capitalize_entries, "capitalize-entries" ); -XML_CONSTASCII_ACTION( sXML_caption, "caption" ); -XML_CONSTASCII_ACTION( sXML_caption_point_x, "caption-point-x" ); -XML_CONSTASCII_ACTION( sXML_caption_point_y, "caption-point-y" ); -XML_CONSTASCII_ACTION( sXML_caption_sequence_format, "caption-sequence-format" ); -XML_CONSTASCII_ACTION( sXML_caption_sequence_name, "caption-sequence-name" ); -XML_CONSTASCII_ACTION( sXML_case_sensitive, "case-sensitive"); -XML_CONSTASCII_ACTION( sXML_casemap_capitalize, "capitalize" ); -XML_CONSTASCII_ACTION( sXML_casemap_lowercase, "lowercase" ); -XML_CONSTASCII_ACTION( sXML_casemap_normal, "normal" ); -XML_CONSTASCII_ACTION( sXML_casemap_small_caps, "small-caps" ); -XML_CONSTASCII_ACTION( sXML_casemap_uppercase, "uppercase" ); -XML_CONSTASCII_ACTION( sXML_categories, "categories" ); -XML_CONSTASCII_ACTION( sXML_category, "category" ); -XML_CONSTASCII_ACTION( sXML_category_and_value, "category-and-value" ); -XML_CONSTASCII_ACTION( sXML_cell_address, "cell-address"); -XML_CONSTASCII_ACTION( sXML_cell_content_change, "cell-content-change"); -XML_CONSTASCII_ACTION( sXML_cell_content_deletion, "cell-content-deletion"); -XML_CONSTASCII_ACTION( sXML_cell_count, "cell-count"); -XML_CONSTASCII_ACTION( sXML_cell_protect, "cell-protect"); -XML_CONSTASCII_ACTION( sXML_cell_range_address, "cell-range-address"); -XML_CONSTASCII_ACTION( sXML_cell_range_address_list, "cell-range-address-list"); -XML_CONSTASCII_ACTION( sXML_cell_range_source, "cell-range-source"); -XML_CONSTASCII_ACTION( sXML_center, "center" ); -XML_CONSTASCII_ACTION( sXML_chain_next_name, "chain-next-name" ); -XML_CONSTASCII_ACTION( sXML_change, "change" ); -XML_CONSTASCII_ACTION( sXML_change_deletion, "change-deletion" ); -XML_CONSTASCII_ACTION( sXML_change_end, "change-end" ); -XML_CONSTASCII_ACTION( sXML_change_id, "change-id" ); -XML_CONSTASCII_ACTION( sXML_change_info, "change-info" ); -XML_CONSTASCII_ACTION( sXML_change_start, "change-start" ); -XML_CONSTASCII_ACTION( sXML_change_track_table_cell, "change-track-table-cell" ); -XML_CONSTASCII_ACTION( sXML_change_view_conditions, "change-view-conditions" ); -XML_CONSTASCII_ACTION( sXML_change_view_settings, "change-view-settings" ); -XML_CONSTASCII_ACTION( sXML_changed_region, "changed-region" ); -XML_CONSTASCII_ACTION( sXML_chapter, "chapter"); -XML_CONSTASCII_ACTION( sXML_char, "char" ); -XML_CONSTASCII_ACTION( sXML_character_count, "character-count" ); -XML_CONSTASCII_ACTION( sXML_chart, "chart" ); -XML_CONSTASCII_ACTION( sXML_charts, "charts" ); -XML_CONSTASCII_ACTION( sXML_chg_author, "chg-author" ); -XML_CONSTASCII_ACTION( sXML_chg_comment, "chg-comment" ); -XML_CONSTASCII_ACTION( sXML_chg_date_time, "chg-date-time" ); -XML_CONSTASCII_ACTION( sXML_ci, "ci" ); -XML_CONSTASCII_ACTION( sXML_circle, "circle" ); -XML_CONSTASCII_ACTION( sXML_citation_body_style_name, "citation-body-style-name" ); -XML_CONSTASCII_ACTION( sXML_citation_style_name, "citation-style-name" ); -XML_CONSTASCII_ACTION( sXML_class, "class" ); -XML_CONSTASCII_ACTION( sXML_class_id, "class-id" ); -XML_CONSTASCII_ACTION( sXML_clip, "clip" ); -XML_CONSTASCII_ACTION( sXML_clockwise, "clockwise" ); -XML_CONSTASCII_ACTION( sXML_close, "close" ); -XML_CONSTASCII_ACTION( sXML_close_horizontal, "close-horizontal" ); -XML_CONSTASCII_ACTION( sXML_close_vertical, "close-vertical" ); -XML_CONSTASCII_ACTION( sXML_cn, "cn" ); -XML_CONSTASCII_ACTION( sXML_code, "code" ); -XML_CONSTASCII_ACTION( sXML_codebase, "codebase" ); -XML_CONSTASCII_ACTION( sXML_collapse, "collapse" ); -XML_CONSTASCII_ACTION( sXML_color, "color" ); -XML_CONSTASCII_ACTION( sXML_color_inversion , "color-inversion" ); -XML_CONSTASCII_ACTION( sXML_color_mode , "color-mode" ); -XML_CONSTASCII_ACTION( sXML_column, "column" ); -XML_CONSTASCII_ACTION( sXML_column_count, "column-count" ); -XML_CONSTASCII_ACTION( sXML_column_gap, "column-gap" ); -XML_CONSTASCII_ACTION( sXML_column_name, "column-name" ); -XML_CONSTASCII_ACTION( sXML_column_sep, "column-sep" ); -XML_CONSTASCII_ACTION( sXML_column_width, "column-width" ); -XML_CONSTASCII_ACTION( sXML_columns, "columns" ); -XML_CONSTASCII_ACTION( sXML_columnsplit_auto, "auto" ); -XML_CONSTASCII_ACTION( sXML_columnsplit_avoid, "avoid" ); -XML_CONSTASCII_ACTION( sXML_combine_entries, "combine-entries" ); -XML_CONSTASCII_ACTION( sXML_combine_entries_with_dash, "combine-entries-with-dash" ); -XML_CONSTASCII_ACTION( sXML_combine_entries_with_pp, "combine-entries-with-pp" ); -XML_CONSTASCII_ACTION( sXML_comma_separated, "comma-separated" ); -XML_CONSTASCII_ACTION( sXML_command, "command" ); -XML_CONSTASCII_ACTION( sXML_comment, "comment" ); -XML_CONSTASCII_ACTION( sXML_compose, "compose" ); -XML_CONSTASCII_ACTION( sXML_cond_style_name, "cond-style-name" ); -XML_CONSTASCII_ACTION( sXML_condition, "condition" ); -XML_CONSTASCII_ACTION( sXML_condition_source, "condition-source"); -XML_CONSTASCII_ACTION( sXML_condition_source_range_address, "condition-source-range-address"); -XML_CONSTASCII_ACTION( sXML_conditional_text, "conditional-text" ); -XML_CONSTASCII_ACTION( sXML_cone, "cone" ); -XML_CONSTASCII_ACTION( sXML_conference, "conference" ); -XML_CONSTASCII_ACTION( sXML_config_item, "config-item" ); -XML_CONSTASCII_ACTION( sXML_config_item_map_indexed, "config-item-map-indexed" ); -XML_CONSTASCII_ACTION( sXML_config_item_map_named, "config-item-map-named" ); -XML_CONSTASCII_ACTION( sXML_config_item_map_entry, "config-item-map-entry" ); -XML_CONSTASCII_ACTION( sXML_config_item_set, "config-item-set" ); -XML_CONSTASCII_ACTION( sXML_configuration_settings, "configuration-settings" ); -XML_CONSTASCII_ACTION( sXML_conjugate, "conjugate" ); -XML_CONSTASCII_ACTION( sXML_connect_bars, "connect-bars" ); -XML_CONSTASCII_ACTION( sXML_connection_name, "connection-name" ); -XML_CONSTASCII_ACTION( sXML_connector, "connector" ); -XML_CONSTASCII_ACTION( sXML_consecutive_numbering, "consecutive-numbering" ); -XML_CONSTASCII_ACTION( sXML_consolidation, "consolidation" ); -XML_CONSTASCII_ACTION( sXML_constant, "constant" ); -XML_CONSTASCII_ACTION( sXML_contains_error, "contains-error"); -XML_CONSTASCII_ACTION( sXML_contains_header, "contains-header"); -XML_CONSTASCII_ACTION( sXML_content, "content" ); -XML_CONSTASCII_ACTION( sXML_content_validation, "content-validation"); -XML_CONSTASCII_ACTION( sXML_content_validation_name, "validation-name"); -XML_CONSTASCII_ACTION( sXML_content_validations, "content-validations"); -XML_CONSTASCII_ACTION( sXML_continue, "continue" ); -XML_CONSTASCII_ACTION( sXML_continue_numbering, "continue-numbering" ); -XML_CONSTASCII_ACTION( sXML_contour_path, "contour-path" ); -XML_CONSTASCII_ACTION( sXML_contour_polygon, "contour-polygon" ); -XML_CONSTASCII_ACTION( sXML_contrast , "contrast" ); -XML_CONSTASCII_ACTION( sXML_control, "control" ); -XML_CONSTASCII_ACTION( sXML_conversion_mode, "conversion-mode" ); -XML_CONSTASCII_ACTION( sXML_copy_back, "copy-back" ); -XML_CONSTASCII_ACTION( sXML_copy_formulas, "copy-formulas" ); -XML_CONSTASCII_ACTION( sXML_copy_outline_levels, "copy-outline-levels" ); -XML_CONSTASCII_ACTION( sXML_copy_results_only, "copy-results-only" ); -XML_CONSTASCII_ACTION( sXML_copy_styles, "copy-styles" ); -XML_CONSTASCII_ACTION( sXML_corner_radius , "corner-radius" ); -XML_CONSTASCII_ACTION( sXML_correct, "correct"); -XML_CONSTASCII_ACTION( sXML_cos, "cos" ); -XML_CONSTASCII_ACTION( sXML_cosh, "cosh" ); -XML_CONSTASCII_ACTION( sXML_cot, "cot" ); -XML_CONSTASCII_ACTION( sXML_coth, "coth" ); -XML_CONSTASCII_ACTION( sXML_count, "count" ); -XML_CONSTASCII_ACTION( sXML_count_empty_lines, "count-empty-lines" ); -XML_CONSTASCII_ACTION( sXML_count_in_floating_frames, "count-in-floating-frames" ); -XML_CONSTASCII_ACTION( sXML_counterclockwise, "counterclockwise" ); -XML_CONSTASCII_ACTION( sXML_countnums, "countnums" ); -XML_CONSTASCII_ACTION( sXML_country, "country" ); -XML_CONSTASCII_ACTION( sXML_country_asian, "country-asian" ); -XML_CONSTASCII_ACTION( sXML_country_complex, "country-complex" ); -XML_CONSTASCII_ACTION( sXML_covered_table_cell, "covered-table-cell" ); -XML_CONSTASCII_ACTION( sXML_create_date, "create-date" ); -XML_CONSTASCII_ACTION( sXML_create_date_string, "create-date-string" ); -XML_CONSTASCII_ACTION( sXML_creation_date, "creation-date" ); -XML_CONSTASCII_ACTION( sXML_creation_time, "creation-time" ); -XML_CONSTASCII_ACTION( sXML_creator, "creator" ); -XML_CONSTASCII_ACTION( sXML_crossedout_cross, "X" ); -XML_CONSTASCII_ACTION( sXML_crossedout_double, "double-line" ); -XML_CONSTASCII_ACTION( sXML_crossedout_none, "none" ); -XML_CONSTASCII_ACTION( sXML_crossedout_single, "single-line" ); -XML_CONSTASCII_ACTION( sXML_crossedout_slash, "slash" ); -XML_CONSTASCII_ACTION( sXML_crossedout_thick, "thick-line" ); -XML_CONSTASCII_ACTION( sXML_csc, "csc" ); -XML_CONSTASCII_ACTION( sXML_csch, "csch" ); -XML_CONSTASCII_ACTION( sXML_cube, "cube" ); -XML_CONSTASCII_ACTION( sXML_cuboid, "cuboid" ); -XML_CONSTASCII_ACTION( sXML_currency, "currency"); -XML_CONSTASCII_ACTION( sXML_currency_style, "currency-style" ); -XML_CONSTASCII_ACTION( sXML_currency_symbol, "currency-symbol" ); -XML_CONSTASCII_ACTION( sXML_current, "current" ); -XML_CONSTASCII_ACTION( sXML_current_value, "current-value" ); -XML_CONSTASCII_ACTION( sXML_cursor_position, "cursor-position" ); -XML_CONSTASCII_ACTION( sXML_cursor_position_x, "cursor-position-x" ); -XML_CONSTASCII_ACTION( sXML_cursor_position_y, "cursor-position-y" ); -XML_CONSTASCII_ACTION( sXML_custom1, "custom1" ); -XML_CONSTASCII_ACTION( sXML_custom2, "custom2" ); -XML_CONSTASCII_ACTION( sXML_custom3, "custom3" ); -XML_CONSTASCII_ACTION( sXML_custom4, "custom4" ); -XML_CONSTASCII_ACTION( sXML_custom5, "custom5" ); -XML_CONSTASCII_ACTION( sXML_cut_offs, "cut_offs" ); -XML_CONSTASCII_ACTION( sXML_cx, "cx" ); -XML_CONSTASCII_ACTION( sXML_cy, "cy" ); -XML_CONSTASCII_ACTION( sXML_cylinder, "cylinder" ); -XML_CONSTASCII_ACTION( sXML_d, "d" ); -XML_CONSTASCII_ACTION( sXML_dash, "dash" ); -XML_CONSTASCII_ACTION( sXML_dashed, "dashed" ); -XML_CONSTASCII_ACTION( sXML_data, "data"); -XML_CONSTASCII_ACTION( sXML_data_cell_range_address, "data-cell-range-address" ); -XML_CONSTASCII_ACTION( sXML_data_label_number, "data-label-number" ); -XML_CONSTASCII_ACTION( sXML_data_label_symbol, "data-label-symbol" ); -XML_CONSTASCII_ACTION( sXML_data_label_text, "data-label-text" ); -XML_CONSTASCII_ACTION( sXML_data_pilot_field, "data-pilot-field"); -XML_CONSTASCII_ACTION( sXML_data_pilot_level, "data-pilot-level"); -XML_CONSTASCII_ACTION( sXML_data_pilot_member, "data-pilot-member"); -XML_CONSTASCII_ACTION( sXML_data_pilot_members, "data-pilot-members"); -XML_CONSTASCII_ACTION( sXML_data_pilot_subtotal, "data-pilot-subtotal"); -XML_CONSTASCII_ACTION( sXML_data_pilot_subtotals, "data-pilot-subtotals"); -XML_CONSTASCII_ACTION( sXML_data_pilot_table, "data-pilot-table"); -XML_CONSTASCII_ACTION( sXML_data_pilot_tables, "data-pilot-tables"); -XML_CONSTASCII_ACTION( sXML_data_point, "data-point" ); -XML_CONSTASCII_ACTION( sXML_data_style, "data-style" ); -XML_CONSTASCII_ACTION( sXML_data_style_name, "data-style-name" ); -XML_CONSTASCII_ACTION( sXML_data_type, "data-type"); -XML_CONSTASCII_ACTION( sXML_database_display, "database-display" ); -XML_CONSTASCII_ACTION( sXML_database_name, "database-name"); -XML_CONSTASCII_ACTION( sXML_database_next, "database-next" ); -XML_CONSTASCII_ACTION( sXML_database_range, "database-range"); -XML_CONSTASCII_ACTION( sXML_database_ranges, "database-ranges"); -XML_CONSTASCII_ACTION( sXML_database_row_number, "database-row-number" ); -XML_CONSTASCII_ACTION( sXML_database_select, "database-select" ); -XML_CONSTASCII_ACTION( sXML_database_source_query, "database-source-query"); -XML_CONSTASCII_ACTION( sXML_database_source_sql, "database-source-sql"); -XML_CONSTASCII_ACTION( sXML_database_source_table, "database-source-table"); -XML_CONSTASCII_ACTION( sXML_date, "date" ); -XML_CONSTASCII_ACTION( sXML_datetime, "datetime" ); -XML_CONSTASCII_ACTION( sXML_date_adjust, "date-adjust" ); -XML_CONSTASCII_ACTION( sXML_date_style, "date-style" ); -XML_CONSTASCII_ACTION( sXML_date_time, "date-time" ); -XML_CONSTASCII_ACTION( sXML_date_value, "date-value"); -XML_CONSTASCII_ACTION( sXML_day, "day" ); -XML_CONSTASCII_ACTION( sXML_day_of_week, "day-of-week" ); -XML_CONSTASCII_ACTION( sXML_dde_application, "dde-application" ); -XML_CONSTASCII_ACTION( sXML_dde_connection, "dde-connection" ); -XML_CONSTASCII_ACTION( sXML_dde_connection_decl, "dde-connection-decl" ); -XML_CONSTASCII_ACTION( sXML_dde_connection_decls, "dde-connection-decls" ); -XML_CONSTASCII_ACTION( sXML_dde_item, "dde-item" ); -XML_CONSTASCII_ACTION( sXML_dde_link, "dde-link" ); -XML_CONSTASCII_ACTION( sXML_dde_links, "dde-links" ); -XML_CONSTASCII_ACTION( sXML_dde_source, "dde-source" ); -XML_CONSTASCII_ACTION( sXML_dde_topic, "dde-topic" ); -XML_CONSTASCII_ACTION( sXML_decimal_places, "decimal-places" ); -XML_CONSTASCII_ACTION( sXML_decimal_replacement, "decimal-replacement" ); -XML_CONSTASCII_ACTION( sXML_declare, "declare" ); -XML_CONSTASCII_ACTION( sXML_decorate_words_only, "decorate-words-only" ); -XML_CONSTASCII_ACTION( sXML_decorative, "decorative" ); -XML_CONSTASCII_ACTION( sXML_deep, "deep" ); -XML_CONSTASCII_ACTION( sXML_default, "default" ); -XML_CONSTASCII_ACTION( sXML_default_cell_style_name, "default-cell-style-name" ); -XML_CONSTASCII_ACTION( sXML_default_style, "default-style" ); -XML_CONSTASCII_ACTION( sXML_default_style_name, "default-style-name" ); -XML_CONSTASCII_ACTION( sXML_degree, "degree" ); -XML_CONSTASCII_ACTION( sXML_delay, "delay" ); -XML_CONSTASCII_ACTION( sXML_deletion, "deletion" ); -XML_CONSTASCII_ACTION( sXML_deletions, "deletions" ); -XML_CONSTASCII_ACTION( sXML_depth, "depth" ); -XML_CONSTASCII_ACTION( sXML_desc, "desc" ); -XML_CONSTASCII_ACTION( sXML_descending, "descending"); -XML_CONSTASCII_ACTION( sXML_description, "description" ); -XML_CONSTASCII_ACTION( sXML_detective, "detective" ); -XML_CONSTASCII_ACTION( sXML_determinant, "determinant" ); -XML_CONSTASCII_ACTION( sXML_diff, "diff"); -XML_CONSTASCII_ACTION( sXML_diffuse_color, "diffuse-color" ); -XML_CONSTASCII_ACTION( sXML_dependences, "dependences"); -XML_CONSTASCII_ACTION( sXML_dependence, "dependence"); -XML_CONSTASCII_ACTION( sXML_direction, "direction"); -XML_CONSTASCII_ACTION( sXML_disabled, "disabled" ); -XML_CONSTASCII_ACTION( sXML_disc, "disc" ); -XML_CONSTASCII_ACTION( sXML_display, "display" ); -XML_CONSTASCII_ACTION( sXML_display_border, "display-border"); -XML_CONSTASCII_ACTION( sXML_display_details, "display-details"); -XML_CONSTASCII_ACTION( sXML_display_duplicates, "display-duplicates"); -XML_CONSTASCII_ACTION( sXML_display_empty, "display-empty"); -XML_CONSTASCII_ACTION( sXML_display_filter_buttons, "display-filter-buttons"); -XML_CONSTASCII_ACTION( sXML_display_formula, "display-formula" ); -XML_CONSTASCII_ACTION( sXML_display_label, "display-label" ); -XML_CONSTASCII_ACTION( sXML_display_levels, "display-levels" ); -XML_CONSTASCII_ACTION( sXML_display_name, "display-name" ); -XML_CONSTASCII_ACTION( sXML_display_outline_level, "display-outline-level" ); -XML_CONSTASCII_ACTION( sXML_dissolve, "dissolve" ); -XML_CONSTASCII_ACTION( sXML_distance, "distance" ); -XML_CONSTASCII_ACTION( sXML_distribute_letter, "distribute-letter" ); -XML_CONSTASCII_ACTION( sXML_distribute_space, "distribute-space" ); -XML_CONSTASCII_ACTION( sXML_divide, "divide" ); -XML_CONSTASCII_ACTION( sXML_document, "document" ); -XML_CONSTASCII_ACTION( sXML_document_content, "document-content" ); -XML_CONSTASCII_ACTION( sXML_document_meta, "document-meta" ); -XML_CONSTASCII_ACTION( sXML_document_settings, "document-settings" ); -XML_CONSTASCII_ACTION( sXML_document_styles, "document-styles" ); -XML_CONSTASCII_ACTION( sXML_document_statistic, "document-statistic" ); -XML_CONSTASCII_ACTION( sXML_domain, "domain" ); -XML_CONSTASCII_ACTION( sXML_dot, "dot" ); -XML_CONSTASCII_ACTION( sXML_dotted, "dotted" ); -XML_CONSTASCII_ACTION( sXML_double, "double" ); -XML_CONSTASCII_ACTION( sXML_double_sided, "double-sided" ); -XML_CONSTASCII_ACTION( sXML_down, "down" ); -XML_CONSTASCII_ACTION( sXML_draft, "draft"); -XML_CONSTASCII_ACTION( sXML_draw, "draw" ); -XML_CONSTASCII_ACTION( sXML_draw_aspect, "ole-draw-aspect" ); -XML_CONSTASCII_ACTION( sXML_drawing, "drawing" ); -XML_CONSTASCII_ACTION( sXML_drawings, "drawings" ); -XML_CONSTASCII_ACTION( sXML_drawpool , "drawpool" ); -XML_CONSTASCII_ACTION( sXML_drop_cap, "drop-cap" ); -XML_CONSTASCII_ACTION( sXML_dynamic, "dynamic" ); -XML_CONSTASCII_ACTION( sXML_edge_rounding, "edge-rounding" ); -XML_CONSTASCII_ACTION( sXML_editable, "editable" ); -XML_CONSTASCII_ACTION( sXML_editing_cycles, "editing-cycles" ); -XML_CONSTASCII_ACTION( sXML_editing_duration, "editing-duration" ); -XML_CONSTASCII_ACTION( sXML_edition, "edition" ); -XML_CONSTASCII_ACTION( sXML_editor, "editor" ); -XML_CONSTASCII_ACTION( sXML_ellipse , "ellipse" ); -XML_CONSTASCII_ACTION( sXML_email, "email" ); -XML_CONSTASCII_ACTION( sXML_embed, "embed" ); -XML_CONSTASCII_ACTION( sXML_embedded_visible_area, "embedded-visible-area" ); -XML_CONSTASCII_ACTION( sXML_embossed, "embossed" ); -XML_CONSTASCII_ACTION( sXML_emissive_color, "emissive-color" ); -XML_CONSTASCII_ACTION( sXML_empty, "empty"); -XML_CONSTASCII_ACTION( sXML_enabled, "enabled" ); -XML_CONSTASCII_ACTION( sXML_encoding, "encoding" ); -XML_CONSTASCII_ACTION( sXML_end, "end" ); -XML_CONSTASCII_ACTION( sXML_end_angle, "end-angle" ); -XML_CONSTASCII_ACTION( sXML_end_cell_address, "end-cell-address" ); -XML_CONSTASCII_ACTION( sXML_end_color, "end-color" ); -XML_CONSTASCII_ACTION( sXML_end_column, "end-column" ); -XML_CONSTASCII_ACTION( sXML_end_intensity, "end-intensity" ); -XML_CONSTASCII_ACTION( sXML_end_position, "end-position" ); -XML_CONSTASCII_ACTION( sXML_end_row, "end-row" ); -XML_CONSTASCII_ACTION( sXML_end_table, "end-table" ); -XML_CONSTASCII_ACTION( sXML_end_x, "end-x" ); -XML_CONSTASCII_ACTION( sXML_end_y, "end-y" ); -XML_CONSTASCII_ACTION( sXML_endless, "endless" ); -XML_CONSTASCII_ACTION( sXML_endnote, "endnote" ); -XML_CONSTASCII_ACTION( sXML_endnote_body, "endnote-body" ); -XML_CONSTASCII_ACTION( sXML_endnote_citation, "endnote-citation" ); -XML_CONSTASCII_ACTION( sXML_endnote_ref, "endnote-ref" ); -XML_CONSTASCII_ACTION( sXML_endnotes_configuration, "endnotes-configuration"); -XML_CONSTASCII_ACTION( sXML_engraved, "engraved" ); -XML_CONSTASCII_ACTION( sXML_eq, "eq"); -XML_CONSTASCII_ACTION( sXML_equal_author, "equal-author"); -XML_CONSTASCII_ACTION( sXML_equal_comment, "equal-comment"); -XML_CONSTASCII_ACTION( sXML_equal_date, "equal-date"); -XML_CONSTASCII_ACTION( sXML_era, "era" ); -XML_CONSTASCII_ACTION( sXML_ergo_sum, "ergo-sum" ); -XML_CONSTASCII_ACTION( sXML_error_category, "error-category" ); -XML_CONSTASCII_ACTION( sXML_error_lower_indicator, "error-lower-indicator" ); -XML_CONSTASCII_ACTION( sXML_error_lower_limit, "error-lower-limit" ); -XML_CONSTASCII_ACTION( sXML_error_macro, "error-macro" ); -XML_CONSTASCII_ACTION( sXML_error_margin, "error-margin" ); -XML_CONSTASCII_ACTION( sXML_error_message, "error-message" ); -XML_CONSTASCII_ACTION( sXML_error_percentage, "error-percentage" ); -XML_CONSTASCII_ACTION( sXML_error_upper_indicator, "error-upper-indicator" ); -XML_CONSTASCII_ACTION( sXML_error_upper_limit, "error-upper-limit" ); -XML_CONSTASCII_ACTION( sXML_escapement_sub, "sub" ); -XML_CONSTASCII_ACTION( sXML_escapement_super, "super" ); -XML_CONSTASCII_ACTION( sXML_even_page, "even-page" ); -XML_CONSTASCII_ACTION( sXML_event, "event" ); -XML_CONSTASCII_ACTION( sXML_event_name, "event-name" ); -XML_CONSTASCII_ACTION( sXML_events, "events" ); -XML_CONSTASCII_ACTION( sXML_execute, "execute" ); -XML_CONSTASCII_ACTION( sXML_execute_macro, "execute-macro" ); -XML_CONSTASCII_ACTION( sXML_exists, "exists" ); -XML_CONSTASCII_ACTION( sXML_exp, "exp" ); -XML_CONSTASCII_ACTION( sXML_exponential, "exponential" ); -XML_CONSTASCII_ACTION( sXML_expression, "expression"); -XML_CONSTASCII_ACTION( sXML_extra, "extra"); -XML_CONSTASCII_ACTION( sXML_extrude, "extrude" ); -XML_CONSTASCII_ACTION( sXML_factorial, "factorial" ); -XML_CONSTASCII_ACTION( sXML_fade_from_bottom, "fade-from-bottom" ); -XML_CONSTASCII_ACTION( sXML_fade_from_center, "fade-from-center" ); -XML_CONSTASCII_ACTION( sXML_fade_from_left, "fade-from-left" ); -XML_CONSTASCII_ACTION( sXML_fade_from_lowerleft, "fade-from-lowerleft" ); -XML_CONSTASCII_ACTION( sXML_fade_from_lowerright, "fade-from-lowerright" ); -XML_CONSTASCII_ACTION( sXML_fade_from_right, "fade-from-right" ); -XML_CONSTASCII_ACTION( sXML_fade_from_top, "fade-from-top" ); -XML_CONSTASCII_ACTION( sXML_fade_from_upperleft, "fade-from-upperleft" ); -XML_CONSTASCII_ACTION( sXML_fade_from_upperright, "fade-from-upperright" ); -XML_CONSTASCII_ACTION( sXML_fade_to_center, "fade-to-center" ); -XML_CONSTASCII_ACTION( sXML_fade_out, "fade-out" ); -XML_CONSTASCII_ACTION( sXML_false, "false" ); -XML_CONSTASCII_ACTION( sXML_family, "family" ); -XML_CONSTASCII_ACTION( sXML_fast, "fast" ); -XML_CONSTASCII_ACTION( sXML_field_number, "field-number"); -XML_CONSTASCII_ACTION( sXML_file_name, "file-name" ); -XML_CONSTASCII_ACTION( sXML_fill, "fill" ); -XML_CONSTASCII_ACTION( sXML_fill_color , "fill-color" ); -XML_CONSTASCII_ACTION( sXML_fill_gradient_name, "fill-gradient-name" ); -XML_CONSTASCII_ACTION( sXML_fill_hatch_name, "fill-hatch-name" ); -XML_CONSTASCII_ACTION( sXML_fill_hatch_solid, "fill-hatch-solid" ); -XML_CONSTASCII_ACTION( sXML_fill_image, "fill-image" ); -XML_CONSTASCII_ACTION( sXML_fill_image_height, "fill-image-height" ); -XML_CONSTASCII_ACTION( sXML_fill_image_name, "fill-image-name" ); -XML_CONSTASCII_ACTION( sXML_fill_image_width, "fill-image-width" ); -XML_CONSTASCII_ACTION( sXML_filter, "filter"); -XML_CONSTASCII_ACTION( sXML_filter_and, "filter-and"); -XML_CONSTASCII_ACTION( sXML_filter_condition, "filter-condition"); -XML_CONSTASCII_ACTION( sXML_filter_name, "filter-name" ); -XML_CONSTASCII_ACTION( sXML_filter_options, "filter-options" ); -XML_CONSTASCII_ACTION( sXML_filter_or, "filter-or"); -XML_CONSTASCII_ACTION( sXML_first_date_time, "first-date-time"); -XML_CONSTASCII_ACTION( sXML_first_page, "first-page"); -XML_CONSTASCII_ACTION( sXML_first_page_number, "first-page-number"); -XML_CONSTASCII_ACTION( sXML_fit_to_contour, "fit-to-contour"); -XML_CONSTASCII_ACTION( sXML_fit_to_size, "fit-to-size" ); -XML_CONSTASCII_ACTION( sXML_fix, "fix" ); -XML_CONSTASCII_ACTION( sXML_fixed, "fixed" ); -XML_CONSTASCII_ACTION( sXML_flat, "flat" ); -XML_CONSTASCII_ACTION( sXML_float, "float"); -XML_CONSTASCII_ACTION( sXML_floating_frame, "floating-frame"); -XML_CONSTASCII_ACTION( sXML_floor, "floor" ); -XML_CONSTASCII_ACTION( sXML_fn, "fn" ); -XML_CONSTASCII_ACTION( sXML_focal_length, "focal-length"); -XML_CONSTASCII_ACTION( sXML_font_char_width, "font-char-width" ); -XML_CONSTASCII_ACTION( sXML_font_charset, "font-charset" ); -XML_CONSTASCII_ACTION( sXML_font_charset_asian, "font-charset-asian" ); -XML_CONSTASCII_ACTION( sXML_font_charset_complex, "font-charset-complex" ); -XML_CONSTASCII_ACTION( sXML_font_color, "font-color" ); -XML_CONSTASCII_ACTION( sXML_font_decl, "font-decl" ); -XML_CONSTASCII_ACTION( sXML_font_decls, "font-decls" ); -XML_CONSTASCII_ACTION( sXML_font_family, "font-family" ); -XML_CONSTASCII_ACTION( sXML_font_family_asian, "font-family-asian" ); -XML_CONSTASCII_ACTION( sXML_font_family_complex, "font-family-complex" ); -XML_CONSTASCII_ACTION( sXML_font_family_generic, "font-family-generic" ); -XML_CONSTASCII_ACTION( sXML_font_family_generic_asian, "font-family-generic-asian" ); -XML_CONSTASCII_ACTION( sXML_font_family_generic_complex, "font-family-generic-complex" ); -XML_CONSTASCII_ACTION( sXML_font_kerning, "font-kerning" ); -XML_CONSTASCII_ACTION( sXML_font_name, "font-name" ); -XML_CONSTASCII_ACTION( sXML_font_name_asian, "font-name-asian" ); -XML_CONSTASCII_ACTION( sXML_font_name_complex, "font-name-complex" ); -XML_CONSTASCII_ACTION( sXML_font_pitch, "font-pitch" ); -XML_CONSTASCII_ACTION( sXML_font_pitch_asian, "font-pitch-asian" ); -XML_CONSTASCII_ACTION( sXML_font_pitch_complex, "font-pitch-complex" ); -XML_CONSTASCII_ACTION( sXML_font_relief, "font-relief" ); -XML_CONSTASCII_ACTION( sXML_font_size, "font-size" ); -XML_CONSTASCII_ACTION( sXML_font_size_asian, "font-size-asian" ); -XML_CONSTASCII_ACTION( sXML_font_size_complex, "font-size-complex" ); -XML_CONSTASCII_ACTION( sXML_font_size_rel, "font-size-rel" ); -XML_CONSTASCII_ACTION( sXML_font_size_rel_asian, "font-size-rel-asian" ); -XML_CONSTASCII_ACTION( sXML_font_size_rel_complex, "font-size-rel-complex" ); -XML_CONSTASCII_ACTION( sXML_font_style, "font-style" ); -XML_CONSTASCII_ACTION( sXML_font_style_asian, "font-style-asian" ); -XML_CONSTASCII_ACTION( sXML_font_style_complex, "font-style-complex" ); -XML_CONSTASCII_ACTION( sXML_font_style_name, "font-style-name" ); -XML_CONSTASCII_ACTION( sXML_font_style_name_asian, "font-style-name-asian" ); -XML_CONSTASCII_ACTION( sXML_font_style_name_complex, "font-style-name-complex" ); -XML_CONSTASCII_ACTION( sXML_font_variant, "font-variant" ); -XML_CONSTASCII_ACTION( sXML_font_weight, "font-weight" ); -XML_CONSTASCII_ACTION( sXML_font_weight_asian, "font-weight-asian" ); -XML_CONSTASCII_ACTION( sXML_font_weight_complex, "font-weight-complex" ); -XML_CONSTASCII_ACTION( sXML_font_width, "font-width" ); -XML_CONSTASCII_ACTION( sXML_font_word_line_mode, "font-word-line-mode" ); -XML_CONSTASCII_ACTION( sXML_fontfamily, "fontfamily" ); -XML_CONSTASCII_ACTION( sXML_fontsize, "fontsize" ); -XML_CONSTASCII_ACTION( sXML_fontstyle, "fontstyle" ); -XML_CONSTASCII_ACTION( sXML_fontweight, "fontweight" ); -XML_CONSTASCII_ACTION( sXML_fontwork_adjust, "fontwork-adjust" ); -XML_CONSTASCII_ACTION( sXML_fontwork_distance, "fontwork-distance" ); -XML_CONSTASCII_ACTION( sXML_fontwork_form, "fontwork-form" ); -XML_CONSTASCII_ACTION( sXML_fontwork_hide_form, "fontwork-hide-form" ); -XML_CONSTASCII_ACTION( sXML_fontwork_mirror, "fontwork-mirror" ); -XML_CONSTASCII_ACTION( sXML_fontwork_outline, "fontwork-outline" ); -XML_CONSTASCII_ACTION( sXML_fontwork_shadow, "fontwork-shadow" ); -XML_CONSTASCII_ACTION( sXML_fontwork_shadow_color, "fontwork-shadow-color" ); -XML_CONSTASCII_ACTION( sXML_fontwork_shadow_offset_x, "fontwork-shadow-offset-x" ); -XML_CONSTASCII_ACTION( sXML_fontwork_shadow_offset_y, "fontwork-shadow-offset-y" ); -XML_CONSTASCII_ACTION( sXML_fontwork_shadow_transparence, "fontwork-shadow-transparence" ); -XML_CONSTASCII_ACTION( sXML_fontwork_start, "fontwork-start" ); -XML_CONSTASCII_ACTION( sXML_fontwork_style, "fontwork-style" ); -XML_CONSTASCII_ACTION( sXML_footer, "footer" ); -XML_CONSTASCII_ACTION( sXML_footer_left, "footer-left" ); -XML_CONSTASCII_ACTION( sXML_footer_style, "footer-style" ); -XML_CONSTASCII_ACTION( sXML_footnote, "footnote" ); -XML_CONSTASCII_ACTION( sXML_footnote_body, "footnote-body" ); -XML_CONSTASCII_ACTION( sXML_footnote_citation, "footnote-citation" ); -XML_CONSTASCII_ACTION( sXML_footnote_continuation_notice_backward, "footnote-continuation-notice-backward" ); -XML_CONSTASCII_ACTION( sXML_footnote_continuation_notice_forward, "footnote-continuation-notice-forward" ); -XML_CONSTASCII_ACTION( sXML_footnote_max_height, "footnote-max-height" ); -XML_CONSTASCII_ACTION( sXML_distance_after_sep, "distance-after-sep" ); -XML_CONSTASCII_ACTION( sXML_distance_before_sep, "distance-before-sep" ); -XML_CONSTASCII_ACTION( sXML_footnote_ref, "footnote-ref" ); -XML_CONSTASCII_ACTION( sXML_footnote_sep, "footnote-sep" ); -XML_CONSTASCII_ACTION( sXML_footnotes_configuration, "footnotes-configuration"); -XML_CONSTASCII_ACTION( sXML_footnotes_position, "footnotes-position" ); -XML_CONSTASCII_ACTION( sXML_forall, "forall" ); -XML_CONSTASCII_ACTION( sXML_force_manual, "force-manual" ); -XML_CONSTASCII_ACTION( sXML_foreground, "foreground" ); -XML_CONSTASCII_ACTION( sXML_foreign_object, "foreign-object" ); -XML_CONSTASCII_ACTION( sXML_format_change, "format-change" ); -XML_CONSTASCII_ACTION( sXML_format_source, "format-source" ); -XML_CONSTASCII_ACTION( sXML_forms, "forms" ); -XML_CONSTASCII_ACTION( sXML_formula, "formula"); -XML_CONSTASCII_ACTION( sXML_formula_hidden, "formula-hidden"); -XML_CONSTASCII_ACTION( sXML_formulas, "formulas"); -XML_CONSTASCII_ACTION( sXML_fraction, "fraction" ); -XML_CONSTASCII_ACTION( sXML_frame, "frame" ); -XML_CONSTASCII_ACTION( sXML_frame_content, "frame-content" ); -XML_CONSTASCII_ACTION( sXML_frame_display_scrollbar, "frame-display-scrollbar" ); -XML_CONSTASCII_ACTION( sXML_frame_display_border, "frame-display-border" ); -XML_CONSTASCII_ACTION( sXML_frame_margin_horizontal, "frame-margin-horizontal" ); -XML_CONSTASCII_ACTION( sXML_frame_margin_vertical, "frame-margin-vertical" ); -XML_CONSTASCII_ACTION( sXML_frame_end_margin, "frame-end-margin" ); -XML_CONSTASCII_ACTION( sXML_frame_name, "frame-name" ); -XML_CONSTASCII_ACTION( sXML_frame_start_margin, "frame-start-margin" ); -XML_CONSTASCII_ACTION( sXML_freeze, "freeze" ); -XML_CONSTASCII_ACTION( sXML_freeze_position, "freeze-position" ); -XML_CONSTASCII_ACTION( sXML_from_another_table, "from-another-table" ); -XML_CONSTASCII_ACTION( sXML_from_inside, "from-inside" ); -XML_CONSTASCII_ACTION( sXML_from_left, "from-left" ); -XML_CONSTASCII_ACTION( sXML_from_same_table, "from-same-table" ); -XML_CONSTASCII_ACTION( sXML_from_top, "from-top" ); -XML_CONSTASCII_ACTION( sXML_fuchsia, "fuchsia"); -XML_CONSTASCII_ACTION( sXML_full, "full" ); -XML_CONSTASCII_ACTION( sXML_full_screen, "full-screen" ); -XML_CONSTASCII_ACTION( sXML_function, "function"); -XML_CONSTASCII_ACTION( sXML_g , "g" ); -XML_CONSTASCII_ACTION( sXML_gamma , "gamma" ); -XML_CONSTASCII_ACTION( sXML_gap, "gap" ); -XML_CONSTASCII_ACTION( sXML_gap_width, "gap-width" ); -XML_CONSTASCII_ACTION( sXML_gcd, "gcd" ); -XML_CONSTASCII_ACTION( sXML_generator, "generator" ); -XML_CONSTASCII_ACTION( sXML_geq, "geq" ); -XML_CONSTASCII_ACTION( sXML_gouraud, "gouraud"); -XML_CONSTASCII_ACTION( sXML_gradient , "gradient" ); -XML_CONSTASCII_ACTION( sXML_gradient_angle, "angle" ); -XML_CONSTASCII_ACTION( sXML_gradient_border, "border" ); -XML_CONSTASCII_ACTION( sXML_gradient_step_count , "gradient-step-count" ); -XML_CONSTASCII_ACTION( sXML_gradient_style, "gradient-style" ); -XML_CONSTASCII_ACTION( sXML_gradientstyle_axial, "axial" ); -XML_CONSTASCII_ACTION( sXML_gradientstyle_ellipsoid, "ellipsoid" ); -XML_CONSTASCII_ACTION( sXML_gradientstyle_linear, "linear" ); -XML_CONSTASCII_ACTION( sXML_gradientstyle_radial, "radial" ); -XML_CONSTASCII_ACTION( sXML_gradientstyle_rectangular, "rectangular" ); -XML_CONSTASCII_ACTION( sXML_gradientstyle_square, "square" ); -XML_CONSTASCII_ACTION( sXML_grand_total, "grand-total"); -XML_CONSTASCII_ACTION( sXML_graphic , "graphic" ); -XML_CONSTASCII_ACTION( sXML_gray, "gray" ); -XML_CONSTASCII_ACTION( sXML_green , "green" ); -XML_CONSTASCII_ACTION( sXML_greyscale, "greyscale" ); -XML_CONSTASCII_ACTION( sXML_grid, "grid" ); -XML_CONSTASCII_ACTION( sXML_groove, "groove" ); -XML_CONSTASCII_ACTION( sXML_group_by_field_number, "group-by-field-number"); -XML_CONSTASCII_ACTION( sXML_group_name, "group-name" ); -XML_CONSTASCII_ACTION( sXML_grouping, "grouping" ); -XML_CONSTASCII_ACTION( sXML_gt, "gt" ); -XML_CONSTASCII_ACTION( sXML_h, "h" ); -XML_CONSTASCII_ACTION( sXML_hanging, "hanging" ); -XML_CONSTASCII_ACTION( sXML_has_persistent_data, "has-persistent-data"); -XML_CONSTASCII_ACTION( sXML_hatch , "hatch" ); -XML_CONSTASCII_ACTION( sXML_hatch_distance, "distance" ); -XML_CONSTASCII_ACTION( sXML_hatch_style, "style" ); -XML_CONSTASCII_ACTION( sXML_hatchstyle_double, "double" ); -XML_CONSTASCII_ACTION( sXML_hatchstyle_single, "single" ); -XML_CONSTASCII_ACTION( sXML_hatchstyle_triple, "triple" ); -XML_CONSTASCII_ACTION( sXML_header, "header" ); -XML_CONSTASCII_ACTION( sXML_header_left, "header-left" ); -XML_CONSTASCII_ACTION( sXML_header_style, "header-style" ); -XML_CONSTASCII_ACTION( sXML_headers, "headers" ); -XML_CONSTASCII_ACTION( sXML_height, "height" ); -XML_CONSTASCII_ACTION( sXML_help_file_name, "help-file-name" ); -XML_CONSTASCII_ACTION( sXML_help_id, "help-id" ); -XML_CONSTASCII_ACTION( sXML_help_message, "help-message" ); -XML_CONSTASCII_ACTION( sXML_hidden, "hidden" ); -XML_CONSTASCII_ACTION( sXML_hidden_and_protected, "hidden-and-protected"); -XML_CONSTASCII_ACTION( sXML_hidden_paragraph, "hidden-paragraph" ); -XML_CONSTASCII_ACTION( sXML_hidden_text, "hidden-text" ); -XML_CONSTASCII_ACTION( sXML_highlighted_range, "highlighted-range" ); -XML_CONSTASCII_ACTION( sXML_horizontal, "horizontal" ); -XML_CONSTASCII_ACTION( sXML_horizontal_lines, "horizontal-lines" ); -XML_CONSTASCII_ACTION( sXML_horizontal_on_left_pages, "horizontal-on-left-pages" ); -XML_CONSTASCII_ACTION( sXML_horizontal_on_right_pages, "horizontal-on-right-pages" ); -XML_CONSTASCII_ACTION( sXML_horizontal_pos, "horizontal-pos" ); -XML_CONSTASCII_ACTION( sXML_horizontal_rel, "horizontal-rel" ); -XML_CONSTASCII_ACTION( sXML_horizontal_scrollbar_width, "horizontal-scrollbar-width" ); -XML_CONSTASCII_ACTION( sXML_horizontal_segments, "horizontal-segments" ); -XML_CONSTASCII_ACTION( sXML_horizontal_split_mode, "horizontal-split-mode" ); -XML_CONSTASCII_ACTION( sXML_horizontal_split_position, "horizontal-split-position" ); -XML_CONSTASCII_ACTION( sXML_horizontal_stripes, "horizontal-stripes" ); -XML_CONSTASCII_ACTION( sXML_hours, "hours" ); -XML_CONSTASCII_ACTION( sXML_howpublished, "howpublished" ); -XML_CONSTASCII_ACTION( sXML_href, "href" ); -XML_CONSTASCII_ACTION( sXML_html, "html"); -XML_CONSTASCII_ACTION( sXML_hyperlink_behaviour, "hyperlink-behaviour" ); -XML_CONSTASCII_ACTION( sXML_hyphenate, "hyphenate" ); -XML_CONSTASCII_ACTION( sXML_hyphenation_keep, "hyphenation-keep" ); -XML_CONSTASCII_ACTION( sXML_hyphenation_ladder_count, "hyphenation-ladder-count" ); -XML_CONSTASCII_ACTION( sXML_hyphenation_push_char_count, "hyphenation-push-char-count" ); -XML_CONSTASCII_ACTION( sXML_hyphenation_remain_char_count, "hyphenation-remain-char-count" ); -XML_CONSTASCII_ACTION( sXML_i, "i" ); -XML_CONSTASCII_ACTION( sXML_icon, "icon" ); -XML_CONSTASCII_ACTION( sXML_id, "id" ); -XML_CONSTASCII_ACTION( sXML_ident, "ident"); -XML_CONSTASCII_ACTION( sXML_identifier, "identifier" ); -XML_CONSTASCII_ACTION( sXML_identify_categories, "identify-categories"); -XML_CONSTASCII_ACTION( sXML_ideograph_alpha, "ideograph-alpha"); -XML_CONSTASCII_ACTION( sXML_ignore_case, "ignore-case" ); -XML_CONSTASCII_ACTION( sXML_ignore_empty_rows, "ignore-empty-rows"); -XML_CONSTASCII_ACTION( sXML_illustration_index, "illustration-index" ); -XML_CONSTASCII_ACTION( sXML_illustration_index_entry_template, "illustration-index-entry-template" ); -XML_CONSTASCII_ACTION( sXML_illustration_index_source, "illustration-index-source" ); -XML_CONSTASCII_ACTION( sXML_image, "image" ); -XML_CONSTASCII_ACTION( sXML_image_count, "image-count" ); -XML_CONSTASCII_ACTION( sXML_image_map, "image-map" ); -XML_CONSTASCII_ACTION( sXML_implies, "implies" ); -XML_CONSTASCII_ACTION( sXML_in, "in"); -XML_CONSTASCII_ACTION( sXML_in_range, "in-range"); -XML_CONSTASCII_ACTION( sXML_inbook, "inbook" ); -XML_CONSTASCII_ACTION( sXML_incollection, "incollection" ); -XML_CONSTASCII_ACTION( sXML_increment, "increment" ); -XML_CONSTASCII_ACTION( sXML_index, "index"); -XML_CONSTASCII_ACTION( sXML_index_body, "index-body"); -XML_CONSTASCII_ACTION( sXML_index_entry_bibliography, "index-entry-bibliography" ); -XML_CONSTASCII_ACTION( sXML_index_entry_chapter, "index-entry-chapter" ); -XML_CONSTASCII_ACTION( sXML_index_entry_chapter_number, "index-entry-chapter-number" ); -XML_CONSTASCII_ACTION( sXML_index_entry_link_end, "index-entry-link-end" ); -XML_CONSTASCII_ACTION( sXML_index_entry_link_start, "index-entry-link-start" ); -XML_CONSTASCII_ACTION( sXML_index_entry_page_number, "index-entry-page-number" ); -XML_CONSTASCII_ACTION( sXML_index_entry_span, "index-entry-span" ); -XML_CONSTASCII_ACTION( sXML_index_entry_tab_stop, "index-entry-tab-stop" ); -XML_CONSTASCII_ACTION( sXML_index_entry_template, "index-entry-template" ); -XML_CONSTASCII_ACTION( sXML_index_entry_text, "index-entry-text" ); -XML_CONSTASCII_ACTION( sXML_index_name, "index-name" ); -XML_CONSTASCII_ACTION( sXML_index_scope, "index-scope" ); -XML_CONSTASCII_ACTION( sXML_index_source_style, "index-source-style" ); -XML_CONSTASCII_ACTION( sXML_index_source_styles, "index-source-styles" ); -XML_CONSTASCII_ACTION( sXML_index_title, "index-title" ); -XML_CONSTASCII_ACTION( sXML_index_title_template, "index-title-template" ); -XML_CONSTASCII_ACTION( sXML_information, "information" ); -XML_CONSTASCII_ACTION( sXML_initial_creator, "initial-creator" ); -XML_CONSTASCII_ACTION( sXML_inproceedings, "inproceedings" ); -XML_CONSTASCII_ACTION( sXML_insertion, "insertion" ); -XML_CONSTASCII_ACTION( sXML_insertion_cut_off, "insertion-cut-off" ); -XML_CONSTASCII_ACTION( sXML_inset, "inset" ); -XML_CONSTASCII_ACTION( sXML_inside, "inside" ); -XML_CONSTASCII_ACTION( sXML_institution, "institution" ); -XML_CONSTASCII_ACTION( sXML_int, "int" ); -XML_CONSTASCII_ACTION( sXML_intensity, "intensity" ); -XML_CONSTASCII_ACTION( sXML_intersect, "intersect" ); -XML_CONSTASCII_ACTION( sXML_interval, "interval" ); -XML_CONSTASCII_ACTION( sXML_interval_major, "interval-major" ); -XML_CONSTASCII_ACTION( sXML_interval_minor, "interval-minor" ); -XML_CONSTASCII_ACTION( sXML_into_english_number, "into-english-number" ); -XML_CONSTASCII_ACTION( sXML_inverse, "inverse" ); -XML_CONSTASCII_ACTION( sXML_is_active, "is-active"); -XML_CONSTASCII_ACTION( sXML_is_data_layout_field, "is-data-layout-field"); -XML_CONSTASCII_ACTION( sXML_is_hidden, "is-hidden" ); -XML_CONSTASCII_ACTION( sXML_is_selection, "is-selection"); -XML_CONSTASCII_ACTION( sXML_isbn, "isbn" ); -XML_CONSTASCII_ACTION( sXML_italic, "italic" ); -XML_CONSTASCII_ACTION( sXML_iteration, "iteration" ); -XML_CONSTASCII_ACTION( sXML_journal, "journal" ); -XML_CONSTASCII_ACTION( sXML_justified, "justified" ); -XML_CONSTASCII_ACTION( sXML_justify, "justify" ); -XML_CONSTASCII_ACTION( sXML_justify_single_word, "justify-single-word" ); -XML_CONSTASCII_ACTION( sXML_keep_with_next, "keep-with-next" ); -XML_CONSTASCII_ACTION( sXML_kerning_normal, "normal" ); -XML_CONSTASCII_ACTION( sXML_key, "key" ); -XML_CONSTASCII_ACTION( sXML_key1, "key1" ); -XML_CONSTASCII_ACTION( sXML_key2, "key2" ); -XML_CONSTASCII_ACTION( sXML_keyword, "keyword" ); -XML_CONSTASCII_ACTION( sXML_keywords, "keywords" ); -XML_CONSTASCII_ACTION( sXML_km, "km" ); -XML_CONSTASCII_ACTION( sXML_label, "label" ); -XML_CONSTASCII_ACTION( sXML_label_arrangement, "label-arrangement" ); -XML_CONSTASCII_ACTION( sXML_label_cell_address, "label-cell-address" ); -XML_CONSTASCII_ACTION( sXML_label_cell_range_address, "label-cell-range-address" ); -XML_CONSTASCII_ACTION( sXML_label_range, "label-range" ); -XML_CONSTASCII_ACTION( sXML_label_ranges, "label-ranges" ); -XML_CONSTASCII_ACTION( sXML_layer, "layer" ); -XML_CONSTASCII_ACTION( sXML_layer_set, "layer-set" ); -XML_CONSTASCII_ACTION( sXML_lambda, "lambda" ); -XML_CONSTASCII_ACTION( sXML_landscape, "landscape" ); -XML_CONSTASCII_ACTION( sXML_language, "language" ); -XML_CONSTASCII_ACTION( sXML_language_asian, "language-asian" ); -XML_CONSTASCII_ACTION( sXML_language_complex, "language-complex" ); -XML_CONSTASCII_ACTION( sXML_last_column_spanned, "last-column-spanned" ); -XML_CONSTASCII_ACTION( sXML_last_page, "last-page" ); -XML_CONSTASCII_ACTION( sXML_last_row_spanned, "last-row-spanned" ); -XML_CONSTASCII_ACTION( sXML_leader_char, "leader-char" ); -XML_CONSTASCII_ACTION( sXML_left, "left" ); -XML_CONSTASCII_ACTION( sXML_left_outside, "left-outside" ); -XML_CONSTASCII_ACTION( sXML_left_top_position, "left-top-position" ); -XML_CONSTASCII_ACTION( sXML_legend, "legend" ); -XML_CONSTASCII_ACTION( sXML_legend_position, "legend-position" ); -XML_CONSTASCII_ACTION( sXML_length, "length" ); -XML_CONSTASCII_ACTION( sXML_leq, "leq" ); -XML_CONSTASCII_ACTION( sXML_let_text, "let-text" ); -XML_CONSTASCII_ACTION( sXML_letter_kerning, "letter-kerning" ); -XML_CONSTASCII_ACTION( sXML_letter_spacing, "letter-spacing" ); -XML_CONSTASCII_ACTION( sXML_letters, "letters" ); -XML_CONSTASCII_ACTION( sXML_level, "level" ); -XML_CONSTASCII_ACTION( sXML_library, "library" ); -XML_CONSTASCII_ACTION( sXML_library_embedded, "library-embedded" ); -XML_CONSTASCII_ACTION( sXML_library_linked, "library-linked" ); -XML_CONSTASCII_ACTION( sXML_light, "light"); -XML_CONSTASCII_ACTION( sXML_lighting_mode, "lighting-mode"); -XML_CONSTASCII_ACTION( sXML_lime, "lime" ); -XML_CONSTASCII_ACTION( sXML_limit, "limit" ); -XML_CONSTASCII_ACTION( sXML_line, "line" ); -XML_CONSTASCII_ACTION( sXML_line_break, "line-break" ); -XML_CONSTASCII_ACTION( sXML_line_height, "line-height" ); -XML_CONSTASCII_ACTION( sXML_line_height_at_least, "line-height-at-least" ); -XML_CONSTASCII_ACTION( sXML_line_spacing, "line-spacing" ); -XML_CONSTASCII_ACTION( sXML_linear, "linear" ); -XML_CONSTASCII_ACTION( sXML_linenumbering_configuration, "linenumbering-configuration" ); -XML_CONSTASCII_ACTION( sXML_linenumbering_separator, "linenumbering-separator" ); -XML_CONSTASCII_ACTION( sXML_lines, "lines" ); -XML_CONSTASCII_ACTION( sXML_lines_used, "lines-used" ); -XML_CONSTASCII_ACTION( sXML_link_data_style_to_source, "link-data-style-to-source" ); -XML_CONSTASCII_ACTION( sXML_link_to_source_data, "link-to-source-data" ); -XML_CONSTASCII_ACTION( sXML_list, "list"); -XML_CONSTASCII_ACTION( sXML_list_block, "list-block" ); -XML_CONSTASCII_ACTION( sXML_list_header, "list-header" ); -XML_CONSTASCII_ACTION( sXML_list_info, "list-info" ); -XML_CONSTASCII_ACTION( sXML_list_item, "list-item" ); -XML_CONSTASCII_ACTION( sXML_list_level, "list-level" ); -XML_CONSTASCII_ACTION( sXML_list_level_style_bullet, "list-level-style-bullet" ); -XML_CONSTASCII_ACTION( sXML_list_level_style_image, "list-level-style-image" ); -XML_CONSTASCII_ACTION( sXML_list_level_style_number, "list-level-style-number" ); -XML_CONSTASCII_ACTION( sXML_list_name, "list-name" ); -XML_CONSTASCII_ACTION( sXML_list_style, "list-style" ); -XML_CONSTASCII_ACTION( sXML_list_style_name, "list-style-name" ); -XML_CONSTASCII_ACTION( sXML_ln, "ln" ); -XML_CONSTASCII_ACTION( sXML_locked, "locked" ); -XML_CONSTASCII_ACTION( sXML_log, "log" ); -XML_CONSTASCII_ACTION( sXML_logarithmic, "logarithmic" ); -XML_CONSTASCII_ACTION( sXML_logbase, "logbase" ); -XML_CONSTASCII_ACTION( sXML_long, "long" ); -XML_CONSTASCII_ACTION( sXML_lowlimit, "lowlimit" ); -XML_CONSTASCII_ACTION( sXML_lr_tb, "lr-tb" ); -XML_CONSTASCII_ACTION( sXML_lt, "lt"); -XML_CONSTASCII_ACTION( sXML_ltr, "ltr"); -XML_CONSTASCII_ACTION( sXML_luminance , "luminance" ); -XML_CONSTASCII_ACTION( sXML_macro_name, "macro-name"); -XML_CONSTASCII_ACTION( sXML_maction, "maction"); -XML_CONSTASCII_ACTION( sXML_main_entry_style_name, "main-entry-style-name" ); -XML_CONSTASCII_ACTION( sXML_major, "major" ); -XML_CONSTASCII_ACTION( sXML_maligngroup, "maligngroup"); -XML_CONSTASCII_ACTION( sXML_malignmark, "malignmark"); -XML_CONSTASCII_ACTION( sXML_manual, "manual" ); -XML_CONSTASCII_ACTION( sXML_map, "map" ); -XML_CONSTASCII_ACTION( sXML_margin_bottom, "margin-bottom" ); -XML_CONSTASCII_ACTION( sXML_margin_left, "margin-left" ); -XML_CONSTASCII_ACTION( sXML_margin_right, "margin-right" ); -XML_CONSTASCII_ACTION( sXML_margin_top, "margin-top" ); -XML_CONSTASCII_ACTION( sXML_margins, "margins" ); -XML_CONSTASCII_ACTION( sXML_marker, "marker" ); -XML_CONSTASCII_ACTION( sXML_marker_end , "marker-end" ); -XML_CONSTASCII_ACTION( sXML_marker_end_center , "marker-end-center" ); -XML_CONSTASCII_ACTION( sXML_marker_end_width , "marker-end-width" ); -XML_CONSTASCII_ACTION( sXML_marker_start , "marker-start" ); -XML_CONSTASCII_ACTION( sXML_marker_start_center , "marker-start-center" ); -XML_CONSTASCII_ACTION( sXML_marker_start_width , "marker-start-width" ); -XML_CONSTASCII_ACTION( sXML_maroon, "maroon" ); -XML_CONSTASCII_ACTION( sXML_master_page, "master-page" ); -XML_CONSTASCII_ACTION( sXML_master_page_name , "master-page-name" ); -XML_CONSTASCII_ACTION( sXML_master_styles, "master-styles" ); -XML_CONSTASCII_ACTION( sXML_mastersthesis, "mastersthesis" ); -XML_CONSTASCII_ACTION( sXML_match, "match"); -XML_CONSTASCII_ACTION( sXML_math, "math"); -XML_CONSTASCII_ACTION( sXML_matrix, "matrix"); -XML_CONSTASCII_ACTION( sXML_matrix_covered, "matrix-covered"); -XML_CONSTASCII_ACTION( sXML_matrixrow, "matrixrow"); -XML_CONSTASCII_ACTION( sXML_max, "max" ); -XML_CONSTASCII_ACTION( sXML_max_edge, "max-edge"); -XML_CONSTASCII_ACTION( sXML_max_height, "max-height"); -XML_CONSTASCII_ACTION( sXML_max_width, "max-width"); -XML_CONSTASCII_ACTION( sXML_maximum, "maximum" ); -XML_CONSTASCII_ACTION( sXML_maximum_difference, "maximum-difference" ); -XML_CONSTASCII_ACTION( sXML_may_break_between_rows, "may-break-between-rows" ); -XML_CONSTASCII_ACTION( sXML_may_script, "may-script" ); -XML_CONSTASCII_ACTION( sXML_mean, "mean" ); -XML_CONSTASCII_ACTION( sXML_mean_value, "mean-value" ); -XML_CONSTASCII_ACTION( sXML_measure, "measure" ); -XML_CONSTASCII_ACTION( sXML_measure_align, "measure-align" ); -XML_CONSTASCII_ACTION( sXML_measure_vertical_align, "measure-vertical-align" ); -XML_CONSTASCII_ACTION( sXML_median, "median" ); -XML_CONSTASCII_ACTION( sXML_medium, "medium" ); -XML_CONSTASCII_ACTION( sXML_merror, "merror" ); -XML_CONSTASCII_ACTION( sXML_message_type, "message-type" ); -XML_CONSTASCII_ACTION( sXML_meta, "meta" ); -XML_CONSTASCII_ACTION( sXML_mfenced, "mfenced" ); -XML_CONSTASCII_ACTION( sXML_mfrac, "mfrac" ); -XML_CONSTASCII_ACTION( sXML_mi, "mi" ); //MathML Math Identifier -XML_CONSTASCII_ACTION( sXML_middle, "middle" ); -XML_CONSTASCII_ACTION( sXML_mime_type, "mime-type" ); -XML_CONSTASCII_ACTION( sXML_min, "min" ); -XML_CONSTASCII_ACTION( sXML_min_denominator_digits, "min-denominator-digits" ); -XML_CONSTASCII_ACTION( sXML_min_edge, "min-edge"); -XML_CONSTASCII_ACTION( sXML_min_exponent_digits, "min-exponent-digits" ); -XML_CONSTASCII_ACTION( sXML_min_height, "min-height" ); -XML_CONSTASCII_ACTION( sXML_min_width, "min-width" ); -XML_CONSTASCII_ACTION( sXML_min_integer_digits, "min-integer-digits" ); -XML_CONSTASCII_ACTION( sXML_min_label_distance, "min-label-distance" ); -XML_CONSTASCII_ACTION( sXML_min_label_width, "min-label-width" ); -XML_CONSTASCII_ACTION( sXML_min_line_height, "min-line-height" ); -XML_CONSTASCII_ACTION( sXML_min_numerator_digits, "min-numerator-digits" ); -XML_CONSTASCII_ACTION( sXML_min_row_height, "min-row-height" ); -XML_CONSTASCII_ACTION( sXML_minimum, "minimum" ); -XML_CONSTASCII_ACTION( sXML_minor, "minor" ); -XML_CONSTASCII_ACTION( sXML_minus, "minus" ); -XML_CONSTASCII_ACTION( sXML_minutes, "minutes" ); -XML_CONSTASCII_ACTION( sXML_mirror, "mirror" ); -XML_CONSTASCII_ACTION( sXML_mirrored, "mirrored" ); -XML_CONSTASCII_ACTION( sXML_misc, "misc" ); -XML_CONSTASCII_ACTION( sXML_miter , "miter" ); -XML_CONSTASCII_ACTION( sXML_mmultiscripts, "mmultiscripts" ); -XML_CONSTASCII_ACTION( sXML_mm, "mm" ); -XML_CONSTASCII_ACTION( sXML_mn, "mn" ); -XML_CONSTASCII_ACTION( sXML_mo, "mo" ); -XML_CONSTASCII_ACTION( sXML_mode, "mode" ); -XML_CONSTASCII_ACTION( sXML_modern, "modern" ); -XML_CONSTASCII_ACTION( sXML_modification_date, "modification-date" ); -XML_CONSTASCII_ACTION( sXML_modification_time, "modification-time" ); -XML_CONSTASCII_ACTION( sXML_modulate, "modulate" ); -XML_CONSTASCII_ACTION( sXML_module, "module" ); -XML_CONSTASCII_ACTION( sXML_moment, "moment" ); -XML_CONSTASCII_ACTION( sXML_mono, "mono" ); -XML_CONSTASCII_ACTION( sXML_month, "month" ); -XML_CONSTASCII_ACTION( sXML_move_from_bottom, "move-from-bottom" ); -XML_CONSTASCII_ACTION( sXML_move_from_left, "move-from-left" ); -XML_CONSTASCII_ACTION( sXML_move_from_right, "move-from-right" ); -XML_CONSTASCII_ACTION( sXML_move_from_top, "move-from-top" ); -XML_CONSTASCII_ACTION( sXML_move_protect, "move-protect" ); -XML_CONSTASCII_ACTION( sXML_mover, "mover" ); -XML_CONSTASCII_ACTION( sXML_movement, "movement" ); -XML_CONSTASCII_ACTION( sXML_movement_cut_off, "movement-cut-off" ); -XML_CONSTASCII_ACTION( sXML_mouse_as_pen, "mouse-as-pen" ); -XML_CONSTASCII_ACTION( sXML_mouse_visible, "mouse-visible" ); -XML_CONSTASCII_ACTION( sXML_mpadded, "mpadded"); -XML_CONSTASCII_ACTION( sXML_mphantom, "mphantom"); -XML_CONSTASCII_ACTION( sXML_mprescripts, "mprescripts"); -XML_CONSTASCII_ACTION( sXML_mroot, "mroot"); -XML_CONSTASCII_ACTION( sXML_mrow, "mrow"); -XML_CONSTASCII_ACTION( sXML_ms, "ms"); -XML_CONSTASCII_ACTION( sXML_mspace, "mspace"); -XML_CONSTASCII_ACTION( sXML_msqrt, "msqrt"); -XML_CONSTASCII_ACTION( sXML_mstyle, "mstyle"); -XML_CONSTASCII_ACTION( sXML_msub, "msub"); -XML_CONSTASCII_ACTION( sXML_msubsup, "msubsup"); -XML_CONSTASCII_ACTION( sXML_msup, "msup"); -XML_CONSTASCII_ACTION( sXML_mtable, "mtable"); -XML_CONSTASCII_ACTION( sXML_mtd, "mtd"); -XML_CONSTASCII_ACTION( sXML_mtext, "mtext"); -XML_CONSTASCII_ACTION( sXML_mtr, "mtr"); -XML_CONSTASCII_ACTION( sXML_multi_deletion_spanned, "multi-deletion-spanned"); -XML_CONSTASCII_ACTION( sXML_munder, "munder"); -XML_CONSTASCII_ACTION( sXML_munderover, "munderover"); -XML_CONSTASCII_ACTION( sXML_name, "name" ); -XML_CONSTASCII_ACTION( sXML_name_and_extension, "name-and-extension" ); -XML_CONSTASCII_ACTION( sXML_named_expression, "named-expression"); -XML_CONSTASCII_ACTION( sXML_named_expressions, "named-expressions"); -XML_CONSTASCII_ACTION( sXML_named_range, "named-range"); -XML_CONSTASCII_ACTION( sXML_navy, "navy"); -XML_CONSTASCII_ACTION( sXML_neq, "neq" ); -XML_CONSTASCII_ACTION( sXML_new, "new" ); -XML_CONSTASCII_ACTION( sXML_next, "next" ); -XML_CONSTASCII_ACTION( sXML_next_page, "next-page" ); -XML_CONSTASCII_ACTION( sXML_next_style_name, "next-style-name" ); -XML_CONSTASCII_ACTION( sXML_nohref, "nohref" ); -XML_CONSTASCII_ACTION( sXML_no_limit, "no-limit" ); -XML_CONSTASCII_ACTION( sXML_no_wrap, "no-wrap" ); -XML_CONSTASCII_ACTION( sXML_noempty, "!empty"); -XML_CONSTASCII_ACTION( sXML_nomatch, "!match"); -XML_CONSTASCII_ACTION( sXML_none, "none" ); -XML_CONSTASCII_ACTION( sXML_noprtsubset, "notprsubset" ); -XML_CONSTASCII_ACTION( sXML_normal, "normal" ); -XML_CONSTASCII_ACTION( sXML_normals_direction, "normals-direction" ); -XML_CONSTASCII_ACTION( sXML_normals_kind, "normals-kind" ); -XML_CONSTASCII_ACTION( sXML_not, "not" ); -XML_CONSTASCII_ACTION( sXML_not_equal_date, "not-equal-date" ); -XML_CONSTASCII_ACTION( sXML_note, "note" ); -XML_CONSTASCII_ACTION( sXML_notes, "notes" ); -XML_CONSTASCII_ACTION( sXML_notin, "notin" ); -XML_CONSTASCII_ACTION( sXML_notsubset, "notsubset" ); -XML_CONSTASCII_ACTION( sXML_null_date, "null-date" ); -XML_CONSTASCII_ACTION( sXML_null_year, "null-year" ); -XML_CONSTASCII_ACTION( sXML_num_format, "num-format" ); -XML_CONSTASCII_ACTION( sXML_num_letter_sync, "num-letter-sync" ); -XML_CONSTASCII_ACTION( sXML_num_prefix, "num-prefix" ); -XML_CONSTASCII_ACTION( sXML_num_suffix, "num-suffix" ); -XML_CONSTASCII_ACTION( sXML_number, "number" ); -XML_CONSTASCII_ACTION( sXML_number_and_name, "number-and-name" ); -XML_CONSTASCII_ACTION( sXML_number_columns_repeated, "number-columns-repeated" ); -XML_CONSTASCII_ACTION( sXML_number_columns_spanned, "number-columns-spanned" ); -XML_CONSTASCII_ACTION( sXML_number_lines, "number-lines" ); -XML_CONSTASCII_ACTION( sXML_number_matrix_columns_spanned, "number-matrix-columns-spanned" ); -XML_CONSTASCII_ACTION( sXML_number_matrix_rows_spanned, "number-matrix-rows-spanned" ); -XML_CONSTASCII_ACTION( sXML_number_position, "number-position" ); -XML_CONSTASCII_ACTION( sXML_number_rows_repeated, "number-rows-repeated" ); -XML_CONSTASCII_ACTION( sXML_number_rows_spanned, "number-rows-spanned" ); -XML_CONSTASCII_ACTION( sXML_number_style, "number-style" ); -XML_CONSTASCII_ACTION( sXML_number_wrapped_paragraphs, "number-wrapped-paragraphs" ); -XML_CONSTASCII_ACTION( sXML_numbered_entries, "numbered-entries" ); -XML_CONSTASCII_ACTION( sXML_object, "object" ); -XML_CONSTASCII_ACTION( sXML_object_count, "object-count" ); -XML_CONSTASCII_ACTION( sXML_object_index, "object-index" ); -XML_CONSTASCII_ACTION( sXML_object_index_entry_template, "object-index-entry-template" ); -XML_CONSTASCII_ACTION( sXML_object_index_source, "object-index-source" ); -XML_CONSTASCII_ACTION( sXML_object_name, "object-name"); -XML_CONSTASCII_ACTION( sXML_object_ole, "object-ole" ); -XML_CONSTASCII_ACTION( sXML_objects, "objects" ); -XML_CONSTASCII_ACTION( sXML_odd_page, "odd-page" ); -XML_CONSTASCII_ACTION( sXML_offset, "offset" ); -XML_CONSTASCII_ACTION( sXML_olive, "olive" ); -XML_CONSTASCII_ACTION( sXML_online, "online" ); -XML_CONSTASCII_ACTION( sXML_online_text, "online-text" ); -XML_CONSTASCII_ACTION( sXML_onLoad, "onLoad" ); -XML_CONSTASCII_ACTION( sXML_onRequest, "onRequest" ); -XML_CONSTASCII_ACTION( sXML_on_update_keep_size, "on-update-keep-size"); -XML_CONSTASCII_ACTION( sXML_on_update_keep_styles, "on-update-keep-styles"); -XML_CONSTASCII_ACTION( sXML_opaque_background, "background" ); -XML_CONSTASCII_ACTION( sXML_opaque_foreground, "foreground" ); -XML_CONSTASCII_ACTION( sXML_open, "open" ); -XML_CONSTASCII_ACTION( sXML_open_horizontal, "open-horizontal" ); -XML_CONSTASCII_ACTION( sXML_open_vertical, "open-vertical" ); -XML_CONSTASCII_ACTION( sXML_operation, "operation"); -XML_CONSTASCII_ACTION( sXML_operator, "operator"); -XML_CONSTASCII_ACTION( sXML_optimal, "optimal"); -XML_CONSTASCII_ACTION( sXML_or, "or"); -XML_CONSTASCII_ACTION( sXML_order, "order"); -XML_CONSTASCII_ACTION( sXML_ordered_list, "ordered-list" ); -XML_CONSTASCII_ACTION( sXML_organizations, "organizations" ); -XML_CONSTASCII_ACTION( sXML_orientation, "orientation"); -XML_CONSTASCII_ACTION( sXML_orientation_landscape, "orientation-landscape" ); -XML_CONSTASCII_ACTION( sXML_orientation_portrait, "orientation-portrait" ); -XML_CONSTASCII_ACTION( sXML_origin, "origin" ); -XML_CONSTASCII_ACTION( sXML_orphans, "orphans" ); -XML_CONSTASCII_ACTION( sXML_outline_level, "outline-level" ); -XML_CONSTASCII_ACTION( sXML_outline_level_style, "outline-level-style" ); -XML_CONSTASCII_ACTION( sXML_outline_style, "outline-style" ); -XML_CONSTASCII_ACTION( sXML_outset, "outset" ); -XML_CONSTASCII_ACTION( sXML_outside, "outside" ); -XML_CONSTASCII_ACTION( sXML_overlap, "overlap" ); -XML_CONSTASCII_ACTION( sXML_p, "p" ); -XML_CONSTASCII_ACTION( sXML_package_name, "package-name" ); -XML_CONSTASCII_ACTION( sXML_padding, "padding" ); -XML_CONSTASCII_ACTION( sXML_padding_bottom, "padding-bottom" ); -XML_CONSTASCII_ACTION( sXML_padding_left, "padding-left" ); -XML_CONSTASCII_ACTION( sXML_padding_right, "padding-right" ); -XML_CONSTASCII_ACTION( sXML_padding_top, "padding-top" ); -XML_CONSTASCII_ACTION( sXML_page, "page" ); -XML_CONSTASCII_ACTION( sXML_page_adjust, "page-adjust" ); -XML_CONSTASCII_ACTION( sXML_page_breaks_on_group_change, "page-breaks-on-group-change"); -XML_CONSTASCII_ACTION( sXML_page_content, "page-content" ); -XML_CONSTASCII_ACTION( sXML_page_continuation_string, "page-continuation-string" ); -XML_CONSTASCII_ACTION( sXML_page_count, "page-count" ); -XML_CONSTASCII_ACTION( sXML_page_end_margin, "page-end-margin" ); -XML_CONSTASCII_ACTION( sXML_page_height, "page-height" ); -XML_CONSTASCII_ACTION( sXML_page_master, "page-master" ); -XML_CONSTASCII_ACTION( sXML_page_master_name, "page-master-name" ); -XML_CONSTASCII_ACTION( sXML_page_number, "page-number" ); -XML_CONSTASCII_ACTION( sXML_page_start_margin, "page-start-margin" ); -XML_CONSTASCII_ACTION( sXML_page_style_name, "page-style-name" ); -XML_CONSTASCII_ACTION( sXML_page_thumbnail, "page-thumbnail" ); -XML_CONSTASCII_ACTION( sXML_page_usage, "page-usage" ); -XML_CONSTASCII_ACTION( sXML_page_variable_get, "page-variable-get" ); -XML_CONSTASCII_ACTION( sXML_page_variable_set, "page-variable-set" ); -XML_CONSTASCII_ACTION( sXML_page_view_zoom_value, "page-view-zoom-value" ); -XML_CONSTASCII_ACTION( sXML_page_width, "page-width" ); -XML_CONSTASCII_ACTION( sXML_pages, "pages" ); -XML_CONSTASCII_ACTION( sXML_paper_tray_number, "paper-tray-number" ); -XML_CONSTASCII_ACTION( sXML_paragraph, "paragraph" ); -XML_CONSTASCII_ACTION( sXML_paragraph_content, "paragraph-content" ); -XML_CONSTASCII_ACTION( sXML_paragraph_count, "paragraph-count" ); -XML_CONSTASCII_ACTION( sXML_paragraph_end_margin, "paragraph-end-margin" ); -XML_CONSTASCII_ACTION( sXML_paragraph_start_margin, "paragraph-start-margin" ); -XML_CONSTASCII_ACTION( sXML_param, "param" ); -XML_CONSTASCII_ACTION( sXML_parallel, "parallel" ); -XML_CONSTASCII_ACTION( sXML_parent_style_name, "parent-style-name" ); -XML_CONSTASCII_ACTION( sXML_parse_sql_statement, "parse-sql-statement"); -XML_CONSTASCII_ACTION( sXML_parsed, "parsed" ); -XML_CONSTASCII_ACTION( sXML_pause, "pause" ); -XML_CONSTASCII_ACTION( sXML_partialdiff, "partialdiff"); -XML_CONSTASCII_ACTION( sXML_password, "password"); -XML_CONSTASCII_ACTION( sXML_passwort, "passwort"); -XML_CONSTASCII_ACTION( sXML_path , "path" ); -XML_CONSTASCII_ACTION( sXML_pending , "pending" ); -XML_CONSTASCII_ACTION( sXML_percentage, "percentage"); -XML_CONSTASCII_ACTION( sXML_percentage_style, "percentage-style" ); -XML_CONSTASCII_ACTION( sXML_perspective, "perspective"); -XML_CONSTASCII_ACTION( sXML_phdthesis, "phdthesis" ); -XML_CONSTASCII_ACTION( sXML_phong, "phong"); -XML_CONSTASCII_ACTION( sXML_pie_offset, "pie-offset" ); -XML_CONSTASCII_ACTION( sXML_placeholder, "placeholder" ); -XML_CONSTASCII_ACTION( sXML_placeholder_type, "placeholder-type" ); -XML_CONSTASCII_ACTION( sXML_placing, "placing" ); -XML_CONSTASCII_ACTION( sXML_plain_number, "plain-number" ); -XML_CONSTASCII_ACTION( sXML_plain_number_and_name, "plain-number-and-name" ); -XML_CONSTASCII_ACTION( sXML_plot_area, "plot-area" ); -XML_CONSTASCII_ACTION( sXML_plugin, "plugin" ); -XML_CONSTASCII_ACTION( sXML_plus, "plus" ); -XML_CONSTASCII_ACTION( sXML_points, "points" ); -XML_CONSTASCII_ACTION( sXML_polygon , "polygon" ); -XML_CONSTASCII_ACTION( sXML_polyline , "polyline" ); -XML_CONSTASCII_ACTION( sXML_polynomial, "polynomial" ); -XML_CONSTASCII_ACTION( sXML_pool_id, "pool-id" ); -XML_CONSTASCII_ACTION( sXML_portrait, "portrait" ); -XML_CONSTASCII_ACTION( sXML_position, "position" ); -XML_CONSTASCII_ACTION( sXML_position_bottom, "position-bottom" ); -XML_CONSTASCII_ACTION( sXML_position_left, "position-left" ); -XML_CONSTASCII_ACTION( sXML_position_right, "position-right" ); -XML_CONSTASCII_ACTION( sXML_position_top, "position-top" ); -XML_CONSTASCII_ACTION( sXML_posture_italic, "italic" ); -XML_CONSTASCII_ACTION( sXML_posture_normal, "normal" ); -XML_CONSTASCII_ACTION( sXML_posture_oblique, "oblique" ); -XML_CONSTASCII_ACTION( sXML_power, "power" ); -XML_CONSTASCII_ACTION( sXML_precision_as_shown, "precision-as-shown" ); -XML_CONSTASCII_ACTION( sXML_prefix, "prefix" ); -XML_CONSTASCII_ACTION( sXML_presentation, "presentation" ); -XML_CONSTASCII_ACTION( sXML_presentation_chart , "chart" ); -XML_CONSTASCII_ACTION( sXML_presentation_graphic , "graphic" ); -XML_CONSTASCII_ACTION( sXML_presentation_notes , "notes" ); -XML_CONSTASCII_ACTION( sXML_presentation_object , "object" ); -XML_CONSTASCII_ACTION( sXML_presentation_orgchart , "orgchart" ); -XML_CONSTASCII_ACTION( sXML_presentation_outline , "outline" ); -XML_CONSTASCII_ACTION( sXML_presentation_page , "page" ); -XML_CONSTASCII_ACTION( sXML_presentation_page_layout, "presentation-page-layout" ); -XML_CONSTASCII_ACTION( sXML_presentation_page_layout_name, "presentation-page-layout-name" ); -XML_CONSTASCII_ACTION( sXML_presentation_subtitle , "subtitle" ); -XML_CONSTASCII_ACTION( sXML_presentation_table , "table" ); -XML_CONSTASCII_ACTION( sXML_presentation_title , "title" ); -XML_CONSTASCII_ACTION( sXML_previous, "previous" ); -XML_CONSTASCII_ACTION( sXML_previous_page, "previous-page" ); -XML_CONSTASCII_ACTION( sXML_print, "print" ); -XML_CONSTASCII_ACTION( sXML_printable, "printable" ); -XML_CONSTASCII_ACTION( sXML_print_content, "print-content"); -XML_CONSTASCII_ACTION( sXML_print_date, "print-date" ); -XML_CONSTASCII_ACTION( sXML_print_orientation, "print-orientation"); -XML_CONSTASCII_ACTION( sXML_print_page_order, "print-page-order"); -XML_CONSTASCII_ACTION( sXML_print_range, "print-range"); -XML_CONSTASCII_ACTION( sXML_print_ranges, "print-ranges"); -XML_CONSTASCII_ACTION( sXML_print_time, "print-time" ); -XML_CONSTASCII_ACTION( sXML_printed_by, "printed-by" ); -XML_CONSTASCII_ACTION( sXML_proceedings, "proceedings" ); -XML_CONSTASCII_ACTION( sXML_product, "product" ); -XML_CONSTASCII_ACTION( sXML_projection, "projection"); -XML_CONSTASCII_ACTION( sXML_properties, "properties" ); -XML_CONSTASCII_ACTION( sXML_protect, "protect" ); -XML_CONSTASCII_ACTION( sXML_protect_content, "content" ); -XML_CONSTASCII_ACTION( sXML_protect_position, "position" ); -XML_CONSTASCII_ACTION( sXML_protect_size, "size" ); -XML_CONSTASCII_ACTION( sXML_protected, "protected" ); -XML_CONSTASCII_ACTION( sXML_protection_key, "protection-key" ); -XML_CONSTASCII_ACTION( sXML_prsubset, "prsubset" ); -XML_CONSTASCII_ACTION( sXML_publisher, "publisher" ); -XML_CONSTASCII_ACTION( sXML_punctuation_wrap, "punctuation-wrap" ); -XML_CONSTASCII_ACTION( sXML_purple, "purple" ); -XML_CONSTASCII_ACTION( sXML_pyramid, "pyramid" ); -XML_CONSTASCII_ACTION( sXML_quarter, "quarter" ); -XML_CONSTASCII_ACTION( sXML_query_name, "query-name"); -XML_CONSTASCII_ACTION( sXML_quo_vadis, "quo-vadis" ); -XML_CONSTASCII_ACTION( sXML_quotient, "quotient" ); -XML_CONSTASCII_ACTION( sXML_r, "r" ); -XML_CONSTASCII_ACTION( sXML_radar, "radar" ); -XML_CONSTASCII_ACTION( sXML_random, "random" ); -XML_CONSTASCII_ACTION( sXML_range_address, "range-address"); -XML_CONSTASCII_ACTION( sXML_range_usable_as, "range-usable-as"); -XML_CONSTASCII_ACTION( sXML_recreate_on_edit , "recreate-on-edit" ); -XML_CONSTASCII_ACTION( sXML_rect , "rect" ); -XML_CONSTASCII_ACTION( sXML_red , "red" ); -XML_CONSTASCII_ACTION( sXML_ref_name, "ref-name" ); -XML_CONSTASCII_ACTION( sXML_reference, "reference" ); -XML_CONSTASCII_ACTION( sXML_reference_end, "reference-end" ); -XML_CONSTASCII_ACTION( sXML_reference_format, "reference-format" ); -XML_CONSTASCII_ACTION( sXML_reference_mark, "reference-mark" ); -XML_CONSTASCII_ACTION( sXML_reference_mark_end, "reference-mark-end" ); -XML_CONSTASCII_ACTION( sXML_reference_mark_start, "reference-mark-start" ); -XML_CONSTASCII_ACTION( sXML_reference_ref, "reference-ref" ); -XML_CONSTASCII_ACTION( sXML_reference_start, "reference-start" ); -XML_CONSTASCII_ACTION( sXML_reference_type, "reference-type" ); -XML_CONSTASCII_ACTION( sXML_refresh_delay, "refresh-delay" ); -XML_CONSTASCII_ACTION( sXML_region_center, "region-center" ); -XML_CONSTASCII_ACTION( sXML_region_left, "region-left" ); -XML_CONSTASCII_ACTION( sXML_region_right, "region-right" ); -XML_CONSTASCII_ACTION( sXML_register_true, "register-true" ); -XML_CONSTASCII_ACTION( sXML_register_truth_ref_style_name, "register-truth-ref-style-name" ); -XML_CONSTASCII_ACTION( sXML_regression_type, "regression-type" ); -XML_CONSTASCII_ACTION( sXML_rejected, "rejected" ); -XML_CONSTASCII_ACTION( sXML_rejecting_change_id, "rejecting-change-id" ); -XML_CONSTASCII_ACTION( sXML_rejection, "rejection" ); -XML_CONSTASCII_ACTION( sXML_rel_column_width, "rel-column-width" ); -XML_CONSTASCII_ACTION( sXML_rel_height, "rel-height" ); -XML_CONSTASCII_ACTION( sXML_rel_width, "rel-width" ); -XML_CONSTASCII_ACTION( sXML_relative, "relative" ) ; -XML_CONSTASCII_ACTION( sXML_relative_tab_stop_position, "relative-tab-stop-position" ); -XML_CONSTASCII_ACTION( sXML_reln, "reln" ) ; -XML_CONSTASCII_ACTION( sXML_rem, "rem" ) ; -XML_CONSTASCII_ACTION( sXML_remove_dependents, "remove-dependents" ); -XML_CONSTASCII_ACTION( sXML_remove_precedents, "remove-precedents" ); -XML_CONSTASCII_ACTION( sXML_repeat, "repeat" ); -XML_CONSTASCII_ACTION( sXML_repeat_column, "repeat-column"); -XML_CONSTASCII_ACTION( sXML_repeat_row, "repeat-row"); -XML_CONSTASCII_ACTION( sXML_repeated, "repeated" ); -XML_CONSTASCII_ACTION( sXML_replace, "replace" ); -XML_CONSTASCII_ACTION( sXML_report_type, "report-type" ); -XML_CONSTASCII_ACTION( sXML_restart_on_page, "restart-on-page" ); -XML_CONSTASCII_ACTION( sXML_revision, "revision" ); -XML_CONSTASCII_ACTION( sXML_ridge, "ridge" ); -XML_CONSTASCII_ACTION( sXML_right, "right" ); -XML_CONSTASCII_ACTION( sXML_right_outside, "right-outside" ); -XML_CONSTASCII_ACTION( sXML_ring, "ring" ); -XML_CONSTASCII_ACTION( sXML_role, "role" ); -XML_CONSTASCII_ACTION( sXML_roll_from_bottom, "roll-from-bottom" ); -XML_CONSTASCII_ACTION( sXML_roll_from_left, "roll-from-left" ); -XML_CONSTASCII_ACTION( sXML_roll_from_right, "roll-from-right" ); -XML_CONSTASCII_ACTION( sXML_roman, "roman" ); -XML_CONSTASCII_ACTION( sXML_root, "root" ); -XML_CONSTASCII_ACTION( sXML_rotate, "rotate" ); -XML_CONSTASCII_ACTION( sXML_rotation, "rotation" ); -XML_CONSTASCII_ACTION( sXML_rotation_align, "rotation-align" ); -XML_CONSTASCII_ACTION( sXML_rotation_angle, "rotation-angle" ); -XML_CONSTASCII_ACTION( sXML_round , "round" ); -XML_CONSTASCII_ACTION( sXML_row, "row"); -XML_CONSTASCII_ACTION( sXML_rows, "rows"); -XML_CONSTASCII_ACTION( sXML_row_height, "row-height" ); -XML_CONSTASCII_ACTION( sXML_row_number, "row-number" ); -XML_CONSTASCII_ACTION( sXML_ruby, "ruby" ); -XML_CONSTASCII_ACTION( sXML_ruby_align, "ruby-align" ); -XML_CONSTASCII_ACTION( sXML_ruby_base, "ruby-base" ); -XML_CONSTASCII_ACTION( sXML_ruby_position, "ruby-position" ); -XML_CONSTASCII_ACTION( sXML_ruby_text, "ruby-text" ); -XML_CONSTASCII_ACTION( sXML_run_through, "run-through" ); -XML_CONSTASCII_ACTION( sXML_rx, "rx" ); -XML_CONSTASCII_ACTION( sXML_ry, "ry" ); -XML_CONSTASCII_ACTION( sXML_s, "s" ); -XML_CONSTASCII_ACTION( sXML_scale, "scale" ); -XML_CONSTASCII_ACTION( sXML_scale_min, "scale-min" ); -XML_CONSTASCII_ACTION( sXML_scale_text, "scale-text" ); -XML_CONSTASCII_ACTION( sXML_scale_to, "scale-to" ); -XML_CONSTASCII_ACTION( sXML_scale_to_pages, "scale-to-pages" ); -XML_CONSTASCII_ACTION( sXML_scatter, "scatter" ); -XML_CONSTASCII_ACTION( sXML_scenario, "scenario" ); -XML_CONSTASCII_ACTION( sXML_scenario_ranges, "scenario-ranges" ); -XML_CONSTASCII_ACTION( sXML_scene, "scene"); -XML_CONSTASCII_ACTION( sXML_school, "school" ); -XML_CONSTASCII_ACTION( sXML_scientific_number, "scientific-number" ); -XML_CONSTASCII_ACTION( sXML_score_spaces, "score-spaces" ); -XML_CONSTASCII_ACTION( sXML_script, "script" ); -XML_CONSTASCII_ACTION( sXML_scroll, "scroll" ); -XML_CONSTASCII_ACTION( sXML_sdev, "sdev" ); -XML_CONSTASCII_ACTION( sXML_search_criteria_must_apply_to_whole_cell, "search-criteria-must-apply-to-whole-cell" ); -XML_CONSTASCII_ACTION( sXML_sec, "sec" ); -XML_CONSTASCII_ACTION( sXML_sech, "sech" ); -XML_CONSTASCII_ACTION( sXML_second_date_time, "second-date-time" ); -XML_CONSTASCII_ACTION( sXML_seconds, "seconds" ); -XML_CONSTASCII_ACTION( sXML_section, "section" ); -XML_CONSTASCII_ACTION( sXML_section_desc, "section-desc" ); -XML_CONSTASCII_ACTION( sXML_section_name, "section-name" ); -XML_CONSTASCII_ACTION( sXML_section_source, "section-source" ); -XML_CONSTASCII_ACTION( sXML_select_page, "select-page" ); -XML_CONSTASCII_ACTION( sXML_selector, "selector" ); -XML_CONSTASCII_ACTION( sXML_semantics, "semantics" ); -XML_CONSTASCII_ACTION( sXML_semi_automatic, "semi-automatic" ); -XML_CONSTASCII_ACTION( sXML_sender_city, "sender-city" ); -XML_CONSTASCII_ACTION( sXML_sender_company, "sender-company" ); -XML_CONSTASCII_ACTION( sXML_sender_country, "sender-country" ); -XML_CONSTASCII_ACTION( sXML_sender_email, "sender-email" ); -XML_CONSTASCII_ACTION( sXML_sender_fax, "sender-fax" ); -XML_CONSTASCII_ACTION( sXML_sender_firstname, "sender-firstname" ); -XML_CONSTASCII_ACTION( sXML_sender_initials, "sender-initials" ); -XML_CONSTASCII_ACTION( sXML_sender_lastname, "sender-lastname" ); -XML_CONSTASCII_ACTION( sXML_sender_phone_private, "sender-phone-private" ); -XML_CONSTASCII_ACTION( sXML_sender_phone_work, "sender-phone-work" ); -XML_CONSTASCII_ACTION( sXML_sender_position, "sender-position" ); -XML_CONSTASCII_ACTION( sXML_sender_postal_code, "sender-postal-code" ); -XML_CONSTASCII_ACTION( sXML_sender_state_or_province, "sender-state-or-province" ); -XML_CONSTASCII_ACTION( sXML_sender_street, "sender-street" ); -XML_CONSTASCII_ACTION( sXML_sender_title, "sender-title" ); -XML_CONSTASCII_ACTION( sXML_sep, "sep" ); -XML_CONSTASCII_ACTION( sXML_separation_character, "separation-character" ); -XML_CONSTASCII_ACTION( sXML_separator, "separator" ); -XML_CONSTASCII_ACTION( sXML_sequence, "sequence" ); -XML_CONSTASCII_ACTION( sXML_sequence_decl, "sequence-decl" ); -XML_CONSTASCII_ACTION( sXML_sequence_decls, "sequence-decls" ); -XML_CONSTASCII_ACTION( sXML_sequence_ref, "sequence-ref" ); -XML_CONSTASCII_ACTION( sXML_series, "series" ); -XML_CONSTASCII_ACTION( sXML_series_source, "series-source" ); -XML_CONSTASCII_ACTION( sXML_server_map, "server-map" ); -XML_CONSTASCII_ACTION( sXML_set, "set" ); -XML_CONSTASCII_ACTION( sXML_setdiff, "setdiff" ); -XML_CONSTASCII_ACTION( sXML_settings, "settings" ); -XML_CONSTASCII_ACTION( sXML_shade_mode, "shade-mode"); -XML_CONSTASCII_ACTION( sXML_shadow, "shadow" ); -XML_CONSTASCII_ACTION( sXML_shadow_color , "shadow-color" ); -XML_CONSTASCII_ACTION( sXML_shadow_offset_x , "shadow-offset-x" ); -XML_CONSTASCII_ACTION( sXML_shadow_offset_y , "shadow-offset-y" ); -XML_CONSTASCII_ACTION( sXML_shadow_slant, "shadow-slant"); -XML_CONSTASCII_ACTION( sXML_shadow_transparency , "shadow-transparency" ); -XML_CONSTASCII_ACTION( sXML_shape, "shape" ); -XML_CONSTASCII_ACTION( sXML_shapes, "shapes" ); -XML_CONSTASCII_ACTION( sXML_sheet_name, "sheet-name" ); -XML_CONSTASCII_ACTION( sXML_shininess, "shininess" ); -XML_CONSTASCII_ACTION( sXML_short, "short" ); -XML_CONSTASCII_ACTION( sXML_show, "show" ); -XML_CONSTASCII_ACTION( sXML_show_accepted_changes, "show-accepted-changes" ); -XML_CONSTASCII_ACTION( sXML_show_rejected_changes, "show-rejected-changes" ); -XML_CONSTASCII_ACTION( sXML_show_changes, "show-changes" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_author, "show-changes-by-author" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_author_name, "show-changes-by-author-name" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_comment, "show-changes-by-comment" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_comment_text, "show-changes-by-comment-text" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_datetime, "show-changes-by-datetime" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_datetime_mode, "show-changes-by-datetime-mode" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_datetime_first_datetime, "show-changes-by-datetime-first-datetime" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_datetime_second_datetime, "show-changes-by-datetime-second-datetime" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_ranges, "show-changes-by-ranges" ); -XML_CONSTASCII_ACTION( sXML_show_changes_by_ranges_list, "show-changes-by-ranges-list" ); -XML_CONSTASCII_ACTION( sXML_show_logo, "show-logo" ); -XML_CONSTASCII_ACTION( sXML_show_unit, "show-unit" ); -XML_CONSTASCII_ACTION( sXML_shows, "shows" ); -XML_CONSTASCII_ACTION( sXML_side_by_side, "side-by-side" ); -XML_CONSTASCII_ACTION( sXML_silver, "silver" ); -XML_CONSTASCII_ACTION( sXML_simple, "simple" ); -XML_CONSTASCII_ACTION( sXML_sin, "sin" ); -XML_CONSTASCII_ACTION( sXML_since_date_time, "since-date-time" ); -XML_CONSTASCII_ACTION( sXML_since_save, "since-save" ); -XML_CONSTASCII_ACTION( sXML_sinh, "sinh" ); -XML_CONSTASCII_ACTION( sXML_size, "size" ); -XML_CONSTASCII_ACTION( sXML_size_protect, "size-protect" ); -XML_CONSTASCII_ACTION( sXML_slide, "slide" ); -XML_CONSTASCII_ACTION( sXML_slow, "slow" ); -XML_CONSTASCII_ACTION( sXML_soft_page_break, "soft-page-break" ); -XML_CONSTASCII_ACTION( sXML_solid, "solid" ); -XML_CONSTASCII_ACTION( sXML_solid_type, "solid-type" ); -XML_CONSTASCII_ACTION( sXML_sort, "sort"); -XML_CONSTASCII_ACTION( sXML_sort_ascending, "sort-ascending" ); -XML_CONSTASCII_ACTION( sXML_sort_by, "sort-by"); -XML_CONSTASCII_ACTION( sXML_sort_by_position, "sort-by-position" ); -XML_CONSTASCII_ACTION( sXML_sort_groups, "sort-groups"); -XML_CONSTASCII_ACTION( sXML_sort_key, "sort-key"); -XML_CONSTASCII_ACTION( sXML_sort_by_x_values, "sort-by-x-values" ); -XML_CONSTASCII_ACTION( sXML_source_cell_range, "source-cell-range"); -XML_CONSTASCII_ACTION( sXML_source_cell_range_addresses, "source-cell-range-addresses"); -XML_CONSTASCII_ACTION( sXML_source_field_name, "source-field-name"); -XML_CONSTASCII_ACTION( sXML_source_name, "source-name"); -XML_CONSTASCII_ACTION( sXML_source_range_address, "source-range-address"); -XML_CONSTASCII_ACTION( sXML_source_service, "source-service"); -XML_CONSTASCII_ACTION( sXML_space_before, "space-before" ); -XML_CONSTASCII_ACTION( sXML_span, "span" ); -XML_CONSTASCII_ACTION( sXML_specular, "specular"); -XML_CONSTASCII_ACTION( sXML_specular_color, "specular-color" ); -XML_CONSTASCII_ACTION( sXML_sphere, "sphere" ); -XML_CONSTASCII_ACTION( sXML_spiralin_left, "spiralin-left" ); -XML_CONSTASCII_ACTION( sXML_spiralin_right, "spiralin-right" ); -XML_CONSTASCII_ACTION( sXML_spiralout_left, "spiralout-left" ); -XML_CONSTASCII_ACTION( sXML_spiralout_right, "spiralout-right" ); -XML_CONSTASCII_ACTION( sXML_splines, "splines" ); -XML_CONSTASCII_ACTION( sXML_split, "split" ); -XML_CONSTASCII_ACTION( sXML_split_column, "split-column" ); -XML_CONSTASCII_ACTION( sXML_split_position, "split-position" ); -XML_CONSTASCII_ACTION( sXML_split_row, "split-row" ); -XML_CONSTASCII_ACTION( sXML_spreadsheet , "spreadsheet" ); -XML_CONSTASCII_ACTION( sXML_sql_statement, "sql-statement"); -XML_CONSTASCII_ACTION( sXML_stacked, "stacked" ); -XML_CONSTASCII_ACTION( sXML_stagger_even, "stagger-even" ); -XML_CONSTASCII_ACTION( sXML_stagger_odd, "stagger-odd" ); -XML_CONSTASCII_ACTION( sXML_standard, "standard" ); -XML_CONSTASCII_ACTION( sXML_standard_deviation, "standard-deviation" ); -XML_CONSTASCII_ACTION( sXML_starbasic, "starbasic" ); -XML_CONSTASCII_ACTION( sXML_start, "start" ); -XML_CONSTASCII_ACTION( sXML_start_color, "start-color" ); -XML_CONSTASCII_ACTION( sXML_start_column, "start-column" ); -XML_CONSTASCII_ACTION( sXML_start_intensity, "start-intensity" ); -XML_CONSTASCII_ACTION( sXML_start_numbering_at, "start-numbering-at" ); -XML_CONSTASCII_ACTION( sXML_start_page, "start-page" ); -XML_CONSTASCII_ACTION( sXML_start_position, "start-position" ); -XML_CONSTASCII_ACTION( sXML_start_row, "start-row" ); -XML_CONSTASCII_ACTION( sXML_start_table, "start-table" ); -XML_CONSTASCII_ACTION( sXML_start_value, "start-value" ); -XML_CONSTASCII_ACTION( sXML_start_with_navigator, "start-with-navigator" ); -XML_CONSTASCII_ACTION( sXML_statistics, "statistics" ); -XML_CONSTASCII_ACTION( sXML_status, "status" ); -XML_CONSTASCII_ACTION( sXML_stay_on_top, "stay-on-top" ); -XML_CONSTASCII_ACTION( sXML_stdev, "stdev" ); -XML_CONSTASCII_ACTION( sXML_stdevp, "stdevp" ); -XML_CONSTASCII_ACTION( sXML_steps, "steps" ); -XML_CONSTASCII_ACTION( sXML_stock, "stock" ); -XML_CONSTASCII_ACTION( sXML_stock_updown_bars, "stock-updown-bars" ); -XML_CONSTASCII_ACTION( sXML_stock_with_volume, "stock-with-volume" ); -XML_CONSTASCII_ACTION( sXML_stop, "stop" ); -XML_CONSTASCII_ACTION( sXML_stretch_from_bottom, "stretch-from-bottom" ); -XML_CONSTASCII_ACTION( sXML_stretch_from_left, "stretch-from-left" ); -XML_CONSTASCII_ACTION( sXML_stretch_from_right, "stretch-from-right" ); -XML_CONSTASCII_ACTION( sXML_stretch_from_top, "stretch-from-top" ); -XML_CONSTASCII_ACTION( sXML_stretchy, "stretchy" ); -XML_CONSTASCII_ACTION( sXML_strict , "strict" ); -XML_CONSTASCII_ACTION( sXML_string, "string"); -XML_CONSTASCII_ACTION( sXML_string_value, "string-value"); -XML_CONSTASCII_ACTION( sXML_string_value_if_false, "string-value-if-false" ); -XML_CONSTASCII_ACTION( sXML_string_value_if_true, "string-value-if-true" ); -XML_CONSTASCII_ACTION( sXML_stroke , "stroke" ); -XML_CONSTASCII_ACTION( sXML_stroke_color , "stroke-color" ); -XML_CONSTASCII_ACTION( sXML_stroke_dash , "stroke-dash" ); -XML_CONSTASCII_ACTION( sXML_stroke_linejoin , "stroke-linejoin" ); -XML_CONSTASCII_ACTION( sXML_stroke_opacity, "stroke-opacity" ); -XML_CONSTASCII_ACTION( sXML_stroke_width, "stroke-width" ); -XML_CONSTASCII_ACTION( sXML_structure_protected, "structure-protected" ); -XML_CONSTASCII_ACTION( sXML_style, "style" ); -XML_CONSTASCII_ACTION( sXML_style_name, "style-name" ); -XML_CONSTASCII_ACTION( sXML_styles, "styles" ); -XML_CONSTASCII_ACTION( sXML_stylesheet, "stylesheet" ); -XML_CONSTASCII_ACTION( sXML_sub_table, "sub-table" ); -XML_CONSTASCII_ACTION( sXML_subject, "subject" ); -XML_CONSTASCII_ACTION( sXML_subset, "subset" ); -XML_CONSTASCII_ACTION( sXML_subtitle, "subtitle" ); -XML_CONSTASCII_ACTION( sXML_subtotal_field, "subtotal-field"); -XML_CONSTASCII_ACTION( sXML_subtotal_rule, "subtotal-rule"); -XML_CONSTASCII_ACTION( sXML_subtotal_rules, "subtotal-rules"); -XML_CONSTASCII_ACTION( sXML_suffix, "suffix" ); -XML_CONSTASCII_ACTION( sXML_sum, "sum" ); -XML_CONSTASCII_ACTION( sXML_swiss, "swiss" ); -XML_CONSTASCII_ACTION( sXML_symbol, "symbol" ); -XML_CONSTASCII_ACTION( sXML_symbol_height, "symbol-height" ); -XML_CONSTASCII_ACTION( sXML_symbol_image_name, "symbol-image-name" ); -XML_CONSTASCII_ACTION( sXML_symbol_width, "symbol-width" ); -XML_CONSTASCII_ACTION( sXML_system, "system" ); -XML_CONSTASCII_ACTION( sXML_tab_stop, "tab-stop" ); -XML_CONSTASCII_ACTION( sXML_tab_stops, "tab-stops" ); -XML_CONSTASCII_ACTION( sXML_table, "table" ); -XML_CONSTASCII_ACTION( sXML_tables, "tables" ); -XML_CONSTASCII_ACTION( sXML_table_background, "table-background" ); -XML_CONSTASCII_ACTION( sXML_table_cell, "table-cell" ); -XML_CONSTASCII_ACTION( sXML_table_centering, "table-centering" ); -XML_CONSTASCII_ACTION( sXML_table_column, "table-column" ); -XML_CONSTASCII_ACTION( sXML_table_column_group, "table-column-group" ); -XML_CONSTASCII_ACTION( sXML_table_columns, "table-columns" ); -XML_CONSTASCII_ACTION( sXML_table_count, "table-count" ); -XML_CONSTASCII_ACTION( sXML_table_header, "table-header" ); -XML_CONSTASCII_ACTION( sXML_table_header_columns, "table-header-columns" ); -XML_CONSTASCII_ACTION( sXML_table_header_rows, "table-header-rows" ); -XML_CONSTASCII_ACTION( sXML_table_index, "table-index" ); -XML_CONSTASCII_ACTION( sXML_table_index_entry_template, "table-index-entry-template" ); -XML_CONSTASCII_ACTION( sXML_table_index_source, "table-index-source" ); -XML_CONSTASCII_ACTION( sXML_table_name, "table-name"); -XML_CONSTASCII_ACTION( sXML_table_number_list, "table-number-list"); -XML_CONSTASCII_ACTION( sXML_table_of_content, "table-of-content" ); -XML_CONSTASCII_ACTION( sXML_table_of_content_entry_template, "table-of-content-entry-template" ); -XML_CONSTASCII_ACTION( sXML_table_of_content_source, "table-of-content-source" ); -XML_CONSTASCII_ACTION( sXML_table_page, "table-page" ); -XML_CONSTASCII_ACTION( sXML_table_row, "table-row" ); -XML_CONSTASCII_ACTION( sXML_table_row_group, "table-row-group" ); -XML_CONSTASCII_ACTION( sXML_table_rows, "table-rows" ); -XML_CONSTASCII_ACTION( sXML_table_source, "table-source" ); -XML_CONSTASCII_ACTION( sXML_table_view, "table-view" ); -XML_CONSTASCII_ACTION( sXML_tab_stop_distance, "tab-stop-distance" ); -XML_CONSTASCII_ACTION( sXML_tan, "tan" ); -XML_CONSTASCII_ACTION( sXML_tanh, "tanh" ); -XML_CONSTASCII_ACTION( sXML_target_cell_address, "target-cell-address"); -XML_CONSTASCII_ACTION( sXML_target_frame_name, "target-frame-name" ); -XML_CONSTASCII_ACTION( sXML_target_range_address, "target-range-address"); -XML_CONSTASCII_ACTION( sXML_tb_rl, "tb-rl" ); -XML_CONSTASCII_ACTION( sXML_teal, "teal" ); -XML_CONSTASCII_ACTION( sXML_techreport, "techreport" ); -XML_CONSTASCII_ACTION( sXML_template, "template" ); -XML_CONSTASCII_ACTION( sXML_template_name, "template-name" ); -XML_CONSTASCII_ACTION( sXML_tendsto, "tendsto" ); -XML_CONSTASCII_ACTION( sXML_tex_filter, "texture-filter" ); -XML_CONSTASCII_ACTION( sXML_tex_generation_mode_x, "texture-generation-mode-x" ); -XML_CONSTASCII_ACTION( sXML_tex_generation_mode_y, "texture-generation-mode-y" ); -XML_CONSTASCII_ACTION( sXML_tex_kind, "texture-kind" ); -XML_CONSTASCII_ACTION( sXML_tex_mode, "texture-mode" ); -XML_CONSTASCII_ACTION( sXML_text, "text" ); -XML_CONSTASCII_ACTION( sXML_text_align, "text-align" ); -XML_CONSTASCII_ACTION( sXML_text_align_last, "text-align-last" ); -XML_CONSTASCII_ACTION( sXML_text_align_source, "text-align-source" ); -XML_CONSTASCII_ACTION( sXML_text_autospace, "text-autospace" ); -XML_CONSTASCII_ACTION( sXML_text_background_color, "text-background-color" ); -XML_CONSTASCII_ACTION( sXML_text_blinking, "text-blinking" ); -XML_CONSTASCII_ACTION( sXML_text_box, "text-box" ); -XML_CONSTASCII_ACTION( sXML_text_combine, "text-combine" ); -XML_CONSTASCII_ACTION( sXML_text_combine_end_char, "text-combine-end-char" ); -XML_CONSTASCII_ACTION( sXML_text_combine_start_char, "text-combine-start-char" ); -XML_CONSTASCII_ACTION( sXML_text_content, "text-content" ); -XML_CONSTASCII_ACTION( sXML_text_crossing_out, "text-crossing-out" ); -XML_CONSTASCII_ACTION( sXML_text_emphasize, "text-emphasize" ); -XML_CONSTASCII_ACTION( sXML_text_global, "text-global" ); -XML_CONSTASCII_ACTION( sXML_text_indent, "text-indent" ); -XML_CONSTASCII_ACTION( sXML_text_input, "text-input" ); -XML_CONSTASCII_ACTION( sXML_text_outline, "text-outline" ); -XML_CONSTASCII_ACTION( sXML_text_position, "text-position" ); -XML_CONSTASCII_ACTION( sXML_text_rotation_angle, "text-rotation-angle" ); -XML_CONSTASCII_ACTION( sXML_text_rotation_scale, "text-rotation-scale" ); -XML_CONSTASCII_ACTION( sXML_text_scale, "text-scale" ); -XML_CONSTASCII_ACTION( sXML_text_shadow, "text-shadow" ); -XML_CONSTASCII_ACTION( sXML_text_style, "text-style" ); -XML_CONSTASCII_ACTION( sXML_text_transform, "text-transform" ); -XML_CONSTASCII_ACTION( sXML_text_underline, "text-underline" ); -XML_CONSTASCII_ACTION( sXML_text_underline_color, "text-underline-color" ); -XML_CONSTASCII_ACTION( sXML_textarea_horizontal_align, "textarea-horizontal-align" ); -XML_CONSTASCII_ACTION( sXML_textarea_vertical_align, "textarea-vertical-align" ); -XML_CONSTASCII_ACTION( sXML_textual, "textual" ); -XML_CONSTASCII_ACTION( sXML_thick, "thick" ); -XML_CONSTASCII_ACTION( sXML_thin, "thin" ); -XML_CONSTASCII_ACTION( sXML_three_dimensional, "three-dimensional" ); -XML_CONSTASCII_ACTION( sXML_thumbnail, "thumbnail" ); -XML_CONSTASCII_ACTION( sXML_tick_marks_major_inner, "tick-marks-major-inner" ); -XML_CONSTASCII_ACTION( sXML_tick_marks_major_outer, "tick-marks-major-outer" ); -XML_CONSTASCII_ACTION( sXML_tick_marks_minor_inner, "tick-marks-minor-inner" ); -XML_CONSTASCII_ACTION( sXML_tick_marks_minor_outer, "tick-marks-minor-outer" ); -XML_CONSTASCII_ACTION( sXML_tile_repeat_offset, "tile-repeat-offset" ); -XML_CONSTASCII_ACTION( sXML_time, "time"); -XML_CONSTASCII_ACTION( sXML_time_adjust, "time-adjust" ); -XML_CONSTASCII_ACTION( sXML_time_style, "time-style" ); -XML_CONSTASCII_ACTION( sXML_time_value, "time-value"); -XML_CONSTASCII_ACTION( sXML_times, "times"); -XML_CONSTASCII_ACTION( sXML_title, "title" ); -XML_CONSTASCII_ACTION( sXML_to_another_table, "to-another-table" ); -XML_CONSTASCII_ACTION( sXML_toc_mark, "toc-mark" ); -XML_CONSTASCII_ACTION( sXML_toc_mark_end, "toc-mark-end" ); -XML_CONSTASCII_ACTION( sXML_toc_mark_start, "toc-mark-start" ); -XML_CONSTASCII_ACTION( sXML_top, "top" ); -XML_CONSTASCII_ACTION( sXML_top_percent, "top percent"); -XML_CONSTASCII_ACTION( sXML_top_values, "top values"); -XML_CONSTASCII_ACTION( sXML_trace_dependents, "trace-dependents" ); -XML_CONSTASCII_ACTION( sXML_trace_errors, "trace-errors" ); -XML_CONSTASCII_ACTION( sXML_trace_precedents, "trace-precedents" ); -XML_CONSTASCII_ACTION( sXML_track_changes, "track-changes" ); -XML_CONSTASCII_ACTION( sXML_tracked_changes, "tracked-changes" ); -XML_CONSTASCII_ACTION( sXML_tracked_changes_view_settings, "tracked-changes-view-settings" ); -XML_CONSTASCII_ACTION( sXML_transform , "transform" ); -XML_CONSTASCII_ACTION( sXML_transition_on_click, "transition-on-click" ); -XML_CONSTASCII_ACTION( sXML_transparency, "transparency" ); -XML_CONSTASCII_ACTION( sXML_transparency_name, "transparency-name" ); -XML_CONSTASCII_ACTION( sXML_transparent, "transparent" ); -XML_CONSTASCII_ACTION( sXML_transpose, "transpose" ); -XML_CONSTASCII_ACTION( sXML_true, "true" ); -XML_CONSTASCII_ACTION( sXML_truncate_on_overflow, "truncate-on-overflow" ); -XML_CONSTASCII_ACTION( sXML_ttb, "ttb"); -XML_CONSTASCII_ACTION( sXML_type, "type" ); -XML_CONSTASCII_ACTION( sXML_underline_bold, "bold" ); -XML_CONSTASCII_ACTION( sXML_underline_bold_dash, "bold-dash" ); -XML_CONSTASCII_ACTION( sXML_underline_bold_dot_dash, "bold-dot-dash" ); -XML_CONSTASCII_ACTION( sXML_underline_bold_dot_dot_dash, "bold-dot-dot-dash" ); -XML_CONSTASCII_ACTION( sXML_underline_bold_dotted, "bold-dotted" ); -XML_CONSTASCII_ACTION( sXML_underline_bold_long_dash, "bold-long-dash" ); -XML_CONSTASCII_ACTION( sXML_underline_bold_wave, "bold-wave" ); -XML_CONSTASCII_ACTION( sXML_underline_dash, "dash" ); -XML_CONSTASCII_ACTION( sXML_underline_dot_dash, "dot-dash" ); -XML_CONSTASCII_ACTION( sXML_underline_dot_dot_dash, "dot-dot-dash" ); -XML_CONSTASCII_ACTION( sXML_underline_dotted, "dotted" ); -XML_CONSTASCII_ACTION( sXML_underline_double, "double" ); -XML_CONSTASCII_ACTION( sXML_underline_double_wave, "double-wave" ); -XML_CONSTASCII_ACTION( sXML_underline_long_dash, "long-dash" ); -XML_CONSTASCII_ACTION( sXML_underline_none, "none" ); -XML_CONSTASCII_ACTION( sXML_underline_single, "single" ); -XML_CONSTASCII_ACTION( sXML_underline_small_wave, "small-wave" ); -XML_CONSTASCII_ACTION( sXML_underline_wave, "wave" ); -XML_CONSTASCII_ACTION( sXML_unformatted_text, "unformatted-text" ); -XML_CONSTASCII_ACTION( sXML_union, "union" ); -XML_CONSTASCII_ACTION( sXML_unit, "unit" ); -XML_CONSTASCII_ACTION( sXML_unordered_list, "unordered-list" ); -XML_CONSTASCII_ACTION( sXML_unpublished, "unpublished" ); -XML_CONSTASCII_ACTION( sXML_uplimit, "uplimit" ); -XML_CONSTASCII_ACTION( sXML_url, "url" ); -XML_CONSTASCII_ACTION( sXML_use_caption, "use-caption" ); -XML_CONSTASCII_ACTION( sXML_use_cell_protection, "use-cell-protection" ); -XML_CONSTASCII_ACTION( sXML_use_chart_objects, "use-chart-objects" ); -XML_CONSTASCII_ACTION( sXML_use_condition, "use-condition" ); -XML_CONSTASCII_ACTION( sXML_use_draw_objects, "use-draw-objects" ); -XML_CONSTASCII_ACTION( sXML_use_floating_frames, "use-floating-frames" ); -XML_CONSTASCII_ACTION( sXML_use_graphics, "use-graphics" ); -XML_CONSTASCII_ACTION( sXML_use_image_objects, "use-image-objects" ); -XML_CONSTASCII_ACTION( sXML_use_index_marks, "use-index-marks" ); -XML_CONSTASCII_ACTION( sXML_use_index_source_styles, "use-index-source-styles" ); -XML_CONSTASCII_ACTION( sXML_use_keys_as_entries, "use-keys-as-entries" ); -XML_CONSTASCII_ACTION( sXML_use_label, "use-label" ); -XML_CONSTASCII_ACTION( sXML_use_math_objects, "use-math-objects" ); -XML_CONSTASCII_ACTION( sXML_use_objects, "use-objects" ); -XML_CONSTASCII_ACTION( sXML_use_optimal_column_width, "use-optimal-column-width"); -XML_CONSTASCII_ACTION( sXML_use_optimal_row_height, "use-optimal-row-height"); -XML_CONSTASCII_ACTION( sXML_use_other_objects, "use-other-objects" ); -XML_CONSTASCII_ACTION( sXML_use_soft_page_breaks, "use-soft-page-breaks" ); -XML_CONSTASCII_ACTION( sXML_use_spreadsheet_objects, "use-spreadsheet-objects" ); -XML_CONSTASCII_ACTION( sXML_use_styles, "use-styles" ); -XML_CONSTASCII_ACTION( sXML_use_tables, "use-tables" ); -XML_CONSTASCII_ACTION( sXML_use_window_font_color, "use-window-font-color" ); -XML_CONSTASCII_ACTION( sXML_used_hierarchy, "used-hierarchy"); -XML_CONSTASCII_ACTION( sXML_user_defined, "user-defined" ); -XML_CONSTASCII_ACTION( sXML_user_field_decl, "user-field-decl" ); -XML_CONSTASCII_ACTION( sXML_user_field_decls, "user-field-decls" ); -XML_CONSTASCII_ACTION( sXML_user_field_get, "user-field-get" ); -XML_CONSTASCII_ACTION( sXML_user_field_input, "user-field-input" ); -XML_CONSTASCII_ACTION( sXML_user_index, "user-index" ); -XML_CONSTASCII_ACTION( sXML_user_index_entry_template, "user-index-entry-template" ); -XML_CONSTASCII_ACTION( sXML_user_index_mark, "user-index-mark" ); -XML_CONSTASCII_ACTION( sXML_user_index_mark_end, "user-index-mark-end" ); -XML_CONSTASCII_ACTION( sXML_user_index_mark_start, "user-index-mark-start" ); -XML_CONSTASCII_ACTION( sXML_user_index_source, "user-index-source" ); -XML_CONSTASCII_ACTION( sXML_user_transformed, "user-transformed" ); -XML_CONSTASCII_ACTION( sXML_username, "username"); -XML_CONSTASCII_ACTION( sXML_value, "value"); -XML_CONSTASCII_ACTION( sXML_value_type, "value-type"); -XML_CONSTASCII_ACTION( sXML_values_cell_range_address, "values-cell-range-address" ); -XML_CONSTASCII_ACTION( sXML_var, "var" ); -XML_CONSTASCII_ACTION( sXML_variable, "variable" ); -XML_CONSTASCII_ACTION( sXML_variable_decl, "variable-decl" ); -XML_CONSTASCII_ACTION( sXML_variable_decls, "variable-decls" ); -XML_CONSTASCII_ACTION( sXML_variable_get, "variable-get" ); -XML_CONSTASCII_ACTION( sXML_variable_input, "variable-input" ); -XML_CONSTASCII_ACTION( sXML_variable_set, "variable-set" ); -XML_CONSTASCII_ACTION( sXML_variance, "variance" ); -XML_CONSTASCII_ACTION( sXML_varp, "varp" ); -XML_CONSTASCII_ACTION( sXML_vector, "vector" ); -XML_CONSTASCII_ACTION( sXML_verb, "verb" ); -XML_CONSTASCII_ACTION( sXML_version, "version" ); -XML_CONSTASCII_ACTION( sXML_version_entry, "version-entry" ); -XML_CONSTASCII_ACTION( sXML_version_list, "version-list" ); -XML_CONSTASCII_ACTION( sXML_vertical, "vertical" ); -XML_CONSTASCII_ACTION( sXML_vertical_align, "vertical-align" ); -XML_CONSTASCII_ACTION( sXML_vertical_lines, "vertical-lines" ); -XML_CONSTASCII_ACTION( sXML_vertical_pos, "vertical-pos" ); -XML_CONSTASCII_ACTION( sXML_vertical_rel, "vertical-rel" ); -XML_CONSTASCII_ACTION( sXML_vertical_segments, "vertical-segments" ); -XML_CONSTASCII_ACTION( sXML_vertical_split_mode, "vertical-split-mode" ); -XML_CONSTASCII_ACTION( sXML_vertical_split_position, "vertical-split-position" ); -XML_CONSTASCII_ACTION( sXML_vertical_stripes, "vertical-stripes" ); -XML_CONSTASCII_ACTION( sXML_view, "view" ); -XML_CONSTASCII_ACTION( sXML_viewBox, "viewBox" ); -XML_CONSTASCII_ACTION( sXML_view_id, "view-id" ); -XML_CONSTASCII_ACTION( sXML_view_settings, "view-settings" ); -XML_CONSTASCII_ACTION( sXML_visibility, "visibility" ); -XML_CONSTASCII_ACTION( sXML_visible, "visible" ); -XML_CONSTASCII_ACTION( sXML_visible_area, "visible-area" ); -XML_CONSTASCII_ACTION( sXML_visible_area_height, "visible-area-height" ); -XML_CONSTASCII_ACTION( sXML_visible_area_left, "visible-area-left" ); -XML_CONSTASCII_ACTION( sXML_visible_area_top, "visible-area-top" ); -XML_CONSTASCII_ACTION( sXML_visible_area_width, "visible-area-width" ); -XML_CONSTASCII_ACTION( sXML_visited_style_name, "visited-style-name" ); -XML_CONSTASCII_ACTION( sXML_volatile, "volatile" ); -XML_CONSTASCII_ACTION( sXML_volume, "volume" ); -XML_CONSTASCII_ACTION( sXML_vpn, "vpn"); -XML_CONSTASCII_ACTION( sXML_vrp, "vrp"); -XML_CONSTASCII_ACTION( sXML_vup, "vup"); -XML_CONSTASCII_ACTION( sXML_wall, "wall" ); -XML_CONSTASCII_ACTION( sXML_warning, "warning" ); -XML_CONSTASCII_ACTION( sXML_watermark, "watermark" ); -XML_CONSTASCII_ACTION( sXML_wavyline_from_bottom, "wavyline-from-bottom" ); -XML_CONSTASCII_ACTION( sXML_wavyline_from_left, "wavyline-from-left" ); -XML_CONSTASCII_ACTION( sXML_wavyline_from_right, "wavyline-from-right" ); -XML_CONSTASCII_ACTION( sXML_wavyline_from_top, "wavyline-from-top" ); -XML_CONSTASCII_ACTION( sXML_week_of_year, "week-of-year" ); -XML_CONSTASCII_ACTION( sXML_weight_bold, "bold" ); -XML_CONSTASCII_ACTION( sXML_weight_normal, "normal" ); -XML_CONSTASCII_ACTION( sXML_white, "white" ); -XML_CONSTASCII_ACTION( sXML_whole_page, "whole-page" ); -XML_CONSTASCII_ACTION( sXML_widows, "widows" ); -XML_CONSTASCII_ACTION( sXML_width, "width" ); -XML_CONSTASCII_ACTION( sXML_word, "word" ); -XML_CONSTASCII_ACTION( sXML_word_count, "word-count" ); -XML_CONSTASCII_ACTION( sXML_wrap, "wrap" ); -XML_CONSTASCII_ACTION( sXML_wrap_contour, "wrap-contour" ); -XML_CONSTASCII_ACTION( sXML_wrap_contour_mode, "wrap-contour-mode" ); -XML_CONSTASCII_ACTION( sXML_wrap_option, "wrap-option" ); -XML_CONSTASCII_ACTION( sXML_writing_mode, "writing-mode" ); -XML_CONSTASCII_ACTION( sXML_www, "www" ); -XML_CONSTASCII_ACTION( sXML_x, "x" ); -XML_CONSTASCII_ACTION( sXML_x1, "x1" ); -XML_CONSTASCII_ACTION( sXML_x2, "x2" ); -XML_CONSTASCII_ACTION( sXML_x_mac_roman, "x-mac-roman" ); -XML_CONSTASCII_ACTION( sXML_x_symbol, "x-symbol" ); -XML_CONSTASCII_ACTION( sXML_x_system, "x-system" ); -XML_CONSTASCII_ACTION( sXML_xor, "xor" ); -XML_CONSTASCII_ACTION( sXML_y, "y" ); -XML_CONSTASCII_ACTION( sXML_y1, "y1" ); -XML_CONSTASCII_ACTION( sXML_y2, "y2" ); -XML_CONSTASCII_ACTION( sXML_year, "year" ); -XML_CONSTASCII_ACTION( sXML_yellow, "yellow" ); -XML_CONSTASCII_ACTION( sXML_zero_values, "zero-values" ); -XML_CONSTASCII_ACTION( sXML_zindex, "z-index" ); -XML_CONSTASCII_ACTION( sXML_zoom_type, "zoom-type" ); -XML_CONSTASCII_ACTION( sXML_zoom_value, "zoom-value" ); - -XML_CONSTASCII_ACTION( sXML_start_shape, "start-shape"); -XML_CONSTASCII_ACTION( sXML_start_glue_point, "start-glue-point"); -XML_CONSTASCII_ACTION( sXML_end_shape, "end-shape"); -XML_CONSTASCII_ACTION( sXML_end_glue_point, "end-glue-point"); -XML_CONSTASCII_ACTION( sXML_line_number, "line-number"); -XML_CONSTASCII_ACTION( sXML_line_skew, "line-skew"); -XML_CONSTASCII_ACTION( sXML_curve, "curve" ); -XML_CONSTASCII_ACTION( sXML_start_line_spacing_horizontal, "start-line-spacing-horizontal" ); -XML_CONSTASCII_ACTION( sXML_start_line_spacing_vertical, "start-line-spacing-vertical" ); -XML_CONSTASCII_ACTION( sXML_end_line_spacing_horizontal, "end-line-spacing-horizontal" ); -XML_CONSTASCII_ACTION( sXML_end_line_spacing_vertical, "end-line-spacing-vertical" ); -XML_CONSTASCII_ACTION( sXML_line_distance, "line-distance" ); -XML_CONSTASCII_ACTION( sXML_guide_overhang, "guide-overhang" ); -XML_CONSTASCII_ACTION( sXML_guide_distance, "guide-distance" ); -XML_CONSTASCII_ACTION( sXML_start_guide, "start-guide" ); -XML_CONSTASCII_ACTION( sXML_end_guide, "end-guide" ); - -XML_CONSTASCII_ACTION( sXML_dots1, "dots1" ); -XML_CONSTASCII_ACTION( sXML_dots1_length, "dots1-length" ); -XML_CONSTASCII_ACTION( sXML_dots2, "dots2" ); -XML_CONSTASCII_ACTION( sXML_dots2_length, "dots2-length" ); -XML_CONSTASCII_ACTION( sXML_enable_numbering, "enable-numbering" ); - -XML_CONSTASCII_ACTION( sXML_top_left, "top-left" ); -XML_CONSTASCII_ACTION( sXML_top_right, "top-right" ); -XML_CONSTASCII_ACTION( sXML_bottom_left, "bottom-left" ); -XML_CONSTASCII_ACTION( sXML_bottom_right, "bottom-right" ); - -XML_CONSTASCII_ACTION( sXML_fill_image_ref_point, "fill-image-ref-point" ); -XML_CONSTASCII_ACTION( sXML_fill_image_ref_point_x, "fill-image-ref-point-x" ); -XML_CONSTASCII_ACTION( sXML_fill_image_ref_point_y, "fill-image-ref-point-y" ); - -XML_CONSTASCII_ACTION( sXML_from_right, "from-right" ); -XML_CONSTASCII_ACTION( sXML_from_bottom, "from-bottom" ); -XML_CONSTASCII_ACTION( sXML_from_center, "from-center" ); -XML_CONSTASCII_ACTION( sXML_from_upper_left, "from-upper-left" ); -XML_CONSTASCII_ACTION( sXML_from_upper_right, "from-upper-right" ); -XML_CONSTASCII_ACTION( sXML_from_lower_left, "from-lower-left" ); -XML_CONSTASCII_ACTION( sXML_from_lower_right, "from-lower-right" ); -XML_CONSTASCII_ACTION( sXML_to_left, "to-left" ); -XML_CONSTASCII_ACTION( sXML_to_top, "to-top" ); -XML_CONSTASCII_ACTION( sXML_to_right, "to-right" ); -XML_CONSTASCII_ACTION( sXML_to_bottom, "to-bottom" ); -XML_CONSTASCII_ACTION( sXML_to_upper_left, "to-upper-left" ); -XML_CONSTASCII_ACTION( sXML_to_upper_right, "to-upper-right" ); -XML_CONSTASCII_ACTION( sXML_to_lower_right, "to-lower-right" ); -XML_CONSTASCII_ACTION( sXML_to_lower_left, "to-lower-left" ); -XML_CONSTASCII_ACTION( sXML_to_center, "to-center" ); -XML_CONSTASCII_ACTION( sXML_counter_clockwise, "counter-clockwise" ); - -XML_CONSTASCII_ACTION( sXML_fade, "fade" ); -XML_CONSTASCII_ACTION( sXML_move, "move" ); -XML_CONSTASCII_ACTION( sXML_stripes, "stripes" ); -XML_CONSTASCII_ACTION( sXML_spiral_inward_left, "spiral-inward-left" ); -XML_CONSTASCII_ACTION( sXML_spiral_inward_right, "spiral-inward-right" ); -XML_CONSTASCII_ACTION( sXML_spiral_outward_left, "spiral-outward-left" ); -XML_CONSTASCII_ACTION( sXML_spiral_outward_right, "spiral-outward-right" ); -XML_CONSTASCII_ACTION( sXML_spiral, "spiral" ); -XML_CONSTASCII_ACTION( sXML_spiral_in, "spiral-in" ); -XML_CONSTASCII_ACTION( sXML_spiral_out, "spiral-out" ); -XML_CONSTASCII_ACTION( sXML_wavyline, "wavyline" ); -XML_CONSTASCII_ACTION( sXML_laser, "laser" ); -XML_CONSTASCII_ACTION( sXML_appear, "appear" ); -XML_CONSTASCII_ACTION( sXML_hide, "hide" ); -XML_CONSTASCII_ACTION( sXML_move_short, "move-short" ); -XML_CONSTASCII_ACTION( sXML_checkerboard, "checkerboard" ); -XML_CONSTASCII_ACTION( sXML_stretch, "stretch" ); - -XML_CONSTASCII_ACTION( sXML_shape_id, "shape-id" ); -XML_CONSTASCII_ACTION( sXML_effect, "effect" ); -XML_CONSTASCII_ACTION( sXML_speed, "speed" ); -XML_CONSTASCII_ACTION( sXML_start_scale, "start-scale" ); -XML_CONSTASCII_ACTION( sXML_show_shape, "show-shape" ); -XML_CONSTASCII_ACTION( sXML_show_text, "show-text" ); -XML_CONSTASCII_ACTION( sXML_hide_shape, "hide-shape" ); -XML_CONSTASCII_ACTION( sXML_hide_text, "hide-text" ); -XML_CONSTASCII_ACTION( sXML_dim, "dim" ); -XML_CONSTASCII_ACTION( sXML_sound, "sound" ); -XML_CONSTASCII_ACTION( sXML_play_full, "play-full" ); -XML_CONSTASCII_ACTION( sXML_path_id, "path-id" ); - -XML_CONSTASCII_ACTION( sXML_animations, "animations" ); - -XML_CONSTASCII_ACTION( sXML_kind, "kind" ); -XML_CONSTASCII_ACTION( sXML_start_angle, "start-angle" ); -XML_CONSTASCII_ACTION( sXML_cut, "cut" ); -XML_CONSTASCII_ACTION( sXML_arc, "arc" ); - -XML_CONSTASCII_ACTION( sXML_upright, "upright" ); -XML_CONSTASCII_ACTION( sXML_slant_x, "slant-x" ); -XML_CONSTASCII_ACTION( sXML_slant_y, "slant-y" ); -XML_CONSTASCII_ACTION( sXML_autosize, "autosize" ); -XML_CONSTASCII_ACTION( sXML_slant, "slant" ); -XML_CONSTASCII_ACTION( sXML_topcircle, "top-circle" ); -XML_CONSTASCII_ACTION( sXML_bottomcircle, "bottom-circle" ); -XML_CONSTASCII_ACTION( sXML_leftcircle, "left-circle" ); -XML_CONSTASCII_ACTION( sXML_rightcircle, "right-circle" ); -XML_CONSTASCII_ACTION( sXML_toparc, "top-arc" ); -XML_CONSTASCII_ACTION( sXML_bottomarc, "bottom-arc" ); -XML_CONSTASCII_ACTION( sXML_leftarc, "left-arc" ); -XML_CONSTASCII_ACTION( sXML_rightarc, "right-arc" ); -XML_CONSTASCII_ACTION( sXML_button1, "button1" ); -XML_CONSTASCII_ACTION( sXML_button2, "button2" ); -XML_CONSTASCII_ACTION( sXML_button3, "button3" ); -XML_CONSTASCII_ACTION( sXML_button4, "button4" ); - -XML_CONSTASCII_ACTION( sXML_caption_type, "caption-type" ); -XML_CONSTASCII_ACTION( sXML_caption_angle_type, "caption-angle-type" ); -XML_CONSTASCII_ACTION( sXML_caption_angle, "caption-angle" ); -XML_CONSTASCII_ACTION( sXML_caption_gap, "caption-gap" ); -XML_CONSTASCII_ACTION( sXML_caption_escape_direction, "caption-escape-direction" ); -XML_CONSTASCII_ACTION( sXML_caption_escape, "caption-escape" ); -XML_CONSTASCII_ACTION( sXML_caption_line_length, "caption-line-length" ); -XML_CONSTASCII_ACTION( sXML_caption_fit_line_length, "caption-fit-line-length" ); -XML_CONSTASCII_ACTION( sXML_free, "free" ); - -XML_CONSTASCII_ACTION( sXML_straight_line, "straight-line" ); -XML_CONSTASCII_ACTION( sXML_angled_line, "angled-line" ); -XML_CONSTASCII_ACTION( sXML_angled_connector_line, "angled-connector-line" ); - -XML_CONSTASCII_ACTION( sXML_data_source_has_labels, "data-source-has-labels" ); - -XML_CONSTASCII_ACTION( sXML_play, "play" ); -XML_CONSTASCII_ACTION( sXML_handout_master, "handout-master" ); - -XML_CONSTASCII_ACTION( sXML_escape_direction, "escape-direction" ); -XML_CONSTASCII_ACTION( sXML_glue_point, "glue-point" ); - -XML_CONSTASCII_ACTION( sXML_text_style_name, "text-style-name" ); - -XML_CONSTASCII_ACTION( sXML_sort_algorithm, "sort-algorithm" ); -XML_CONSTASCII_ACTION( sXML_roll_from_top, "roll-from-top" ); - -XML_CONSTASCII_ACTION( sXML_script_data, "script-data" ); -XML_CONSTASCII_ACTION( sXML_libraries, "libraries" ); -XML_CONSTASCII_ACTION( sXML_source_code, "source-code" ); -XML_CONSTASCII_ACTION( sXML_readonly, "readonly" ); - -XML_CONSTASCII_ACTION( sXML_page_continuation, "page-continuation" ); - -XML_CONSTASCII_ACTION( sXML_contains, "contains" ); -XML_CONSTASCII_ACTION( sXML_does_not_contain, "does-not-contain" ); -XML_CONSTASCII_ACTION( sXML_begins_with, "begins-with" ); -XML_CONSTASCII_ACTION( sXML_does_not_begin_with, "does-not-begin-with" ); -XML_CONSTASCII_ACTION( sXML_ends_with, "ends-with" ); -XML_CONSTASCII_ACTION( sXML_does_not_end_with, "does-not-end-with" ); - -#endif diff --git a/xmloff/inc/xmloff/txtimp.hxx b/xmloff/inc/xmloff/txtimp.hxx index cdfd1d9b34..b6570356b3 100644 --- a/xmloff/inc/xmloff/txtimp.hxx +++ b/xmloff/inc/xmloff/txtimp.hxx @@ -24,8 +24,8 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ -#ifndef _XMLOFF_TEXTIMP_HXX_ -#define _XMLOFF_TEXTIMP_HXX_ +#ifndef XMLOFF_TEXTIMP_HXX +#define XMLOFF_TEXTIMP_HXX #include "sal/config.h" #include "xmloff/dllapi.h" @@ -33,13 +33,11 @@ #include <com/sun/star/uno/Reference.h> #include <map> -#include <vector> #include <memory> #include <boost/utility.hpp> +#include <boost/shared_ptr.hpp> #include <tools/list.hxx> -#include <xmloff/xmlictxt.hxx> -#include <xmloff/xmlimppr.hxx> #include <xmloff/xmltkmap.hxx> // functional.hxx is obsolete and should be replaced by its comphelper @@ -47,34 +45,44 @@ #include <comphelper/stl_types.hxx> #include <xmloff/uniref.hxx> + // --> OD 2008-04-25 #refactorlists# class XMLTextListsHelper; // <-- -#include <com/sun/star/text/XFormField.hpp> - - +class SvXMLImportContext; +class SvXMLTokenMap; +class SvXMLImportPropertyMapper; +class SvXMLNamespaceMap; class SvXMLImport; class SvXMLStylesContext; class XMLTextListBlockContext; class SvxXMLListStyleContext; class XMLPropStyleContext; class SvI18NMap; -class SvStringsDtor; class XMLSectionImportContext; class XMLFontStylesContext; template<class A> class XMLPropertyBackpatcher; class XMLEventsImportContext; +namespace xmloff { + struct ParsedRDFaAttributes; +} + namespace com { namespace sun { namespace star { -namespace text { class XText; class XTextCursor; class XTextRange; class XTextContent; } +namespace text { + class XText; + class XTextCursor; + class XTextRange; + class XTextContent; + class XFormField; +} namespace frame { class XModel; } namespace container { class XNameContainer; class XIndexReplace; class XNameAccess; } namespace beans { class XPropertySet; } namespace xml { namespace sax { class XAttributeList; } } namespace util { struct DateTime; } namespace lang { class XMultiServiceFactory; } -namespace ucb { class XAnyCompare; } } } } enum SwXMLTextElemTokens @@ -254,11 +262,11 @@ enum XMLTextPAttrTokens XML_TOK_TEXT_P_PROPERTY, XML_TOK_TEXT_P_CONTENT, XML_TOK_TEXT_P_DATATYPE, + XML_TOK_TEXT_P_TEXTID, XML_TOK_TEXT_P_STYLE_NAME, XML_TOK_TEXT_P_COND_STYLE_NAME, XML_TOK_TEXT_P_LEVEL, XML_TOK_TEXT_P_CLASS_NAMES, - XML_TOK_TEXT_P_ID, XML_TOK_TEXT_P_IS_LIST_HEADER, XML_TOK_TEXT_P_RESTART_NUMBERING, XML_TOK_TEXT_P_START_VALUE, @@ -378,127 +386,13 @@ DECLARE_LIST( XMLSectionList_Impl, XMLSectionImportContext* ) class XMLOFF_DLLPUBLIC XMLTextImportHelper : public UniRefBase, private boost::noncopyable { - ::std::auto_ptr<SvXMLTokenMap> pTextElemTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextPElemTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextPAttrTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextFieldAttrTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextNumberedParagraphAttrTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextListBlockAttrTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextListBlockElemTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextFrameAttrTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextContourAttrTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextHyperlinkAttrTokenMap; - ::std::auto_ptr<SvXMLTokenMap> pTextMasterPageElemTokenMap; - ::std::auto_ptr<SvStringsDtor> pPrevFrmNames; - ::std::auto_ptr<SvStringsDtor> pNextFrmNames; - - // --> OD 2008-04-25 #refactorlists# - ::std::auto_ptr<XMLTextListsHelper> mpTextListsHelper; - // <-- - - SvXMLImportContextRef xAutoStyles; - SvXMLImportContextRef xFontDecls; - - XMLSectionList_Impl aSectionList; - - UniReference < SvXMLImportPropertyMapper > xParaImpPrMap; - UniReference < SvXMLImportPropertyMapper > xTextImpPrMap; - UniReference < SvXMLImportPropertyMapper > xFrameImpPrMap; - UniReference < SvXMLImportPropertyMapper > xSectionImpPrMap; - UniReference < SvXMLImportPropertyMapper > xRubyImpPrMap; - - ::std::auto_ptr<SvI18NMap> pRenameMap; - // --> OD 2006-10-12 #i69629# - change and extend data structure: - // - data structure contains candidates of paragraph styles, which - // will be assigned to the outline style - // - data structure contains more than one candidate for each list level - // of the outline style -// ::rtl::OUString *pOutlineStyles; - ::std::vector< ::rtl::OUString >* mpOutlineStylesCandidates; - // <-- - - /// start ranges for open bookmarks - ::std::map< ::rtl::OUString, - // start range, xml:id - ::std::pair< - ::com::sun::star::uno::Reference< - ::com::sun::star::text::XTextRange>, - ::rtl::OUString>, - ::comphelper::UStringLess> aBookmarkStartRanges; - - typedef ::std::vector< ::rtl::OUString> BookmarkVector_t; - BookmarkVector_t aBookmarkVector; - - /// backpatcher for references to footnotes and endnotes - XMLPropertyBackpatcher<sal_Int16> * pFootnoteBackpatcher; - - /// backpatchers for references to sequences - XMLPropertyBackpatcher<sal_Int16> * pSequenceIdBackpatcher; - - XMLPropertyBackpatcher< ::rtl::OUString> * pSequenceNameBackpatcher; - - /// name of the last 'open' redline that started between paragraphs - ::rtl::OUString sOpenRedlineIdentifier; - - ::com::sun::star::uno::Reference < - ::com::sun::star::text::XText > xText; - ::com::sun::star::uno::Reference < - ::com::sun::star::text::XTextCursor > xCursor; - ::com::sun::star::uno::Reference < - ::com::sun::star::text::XTextRange > xCursorAsRange; - ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer > xParaStyles; - ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer > xTextStyles; - ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer > xNumStyles; - ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer > xFrameStyles; - ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer > xPageStyles; - ::com::sun::star::uno::Reference< - ::com::sun::star::container::XIndexReplace > xChapterNumbering; - ::com::sun::star::uno::Reference< - ::com::sun::star::container::XNameAccess > xTextFrames; - ::com::sun::star::uno::Reference< - ::com::sun::star::container::XNameAccess > xGraphics; - ::com::sun::star::uno::Reference< - ::com::sun::star::container::XNameAccess > xObjects; - ::com::sun::star::uno::Reference< - ::com::sun::star::lang::XMultiServiceFactory > xServiceFactory; - - SvXMLImport& rSvXMLImport; - - sal_Bool bInsertMode : 1; - sal_Bool bStylesOnlyMode : 1; - sal_Bool bBlockMode : 1; - sal_Bool bProgress : 1; - sal_Bool bOrganizerMode : 1; - sal_Bool bBodyContentStarted : 1; - - // #107848# - // One more flag to remember if we are inside a deleted redline section - sal_Bool bInsideDeleteContext : 1; - - SAL_DLLPRIVATE SvXMLTokenMap *_GetTextElemTokenMap(); - SAL_DLLPRIVATE SvXMLTokenMap *_GetTextPElemTokenMap(); - SAL_DLLPRIVATE SvXMLTokenMap *_GetTextPAttrTokenMap(); - SAL_DLLPRIVATE SvXMLTokenMap *_GetTextFrameAttrTokenMap(); - SAL_DLLPRIVATE SvXMLTokenMap *_GetTextContourAttrTokenMap(); - SAL_DLLPRIVATE SvXMLTokenMap *_GetTextHyperlinkAttrTokenMap(); - SAL_DLLPRIVATE SvXMLTokenMap *_GetTextMasterPageElemTokenMap(); - - // clean up backpatchers; to be called only by destructor - // Code is implemented in XMLPropertyBackpatcher.cxx - SAL_DLLPRIVATE void _FinitBackpatcher(); - - typedef ::std::pair< ::rtl::OUString, ::rtl::OUString> field_name_type_t; - typedef ::std::pair< ::rtl::OUString, ::rtl::OUString > field_param_t; - typedef ::std::vector< field_param_t > field_params_t; - typedef ::std::pair< field_name_type_t, field_params_t > field_stack_item_t; - typedef ::std::stack< field_stack_item_t > field_stack_t; - - field_stack_t aFieldStack; +private: + struct Impl; + ::std::auto_ptr<Impl> m_pImpl; + /// ugly, but implementation of this is in XMLPropertyBackpatcher.cxx + struct BackpatcherImpl; + ::boost::shared_ptr<BackpatcherImpl> m_pBackpatcherImpl; + ::boost::shared_ptr<BackpatcherImpl> MakeBackpatcherImpl(); protected: virtual SvXMLImportContext *CreateTableChildContext( @@ -515,46 +409,13 @@ protected: public: - const ::rtl::OUString sParaStyleName; - const ::rtl::OUString sCharStyleName; - const ::rtl::OUString sHeadingStyleName; - const ::rtl::OUString sNumberingLevel; - const ::rtl::OUString sNumberingStartValue; - const ::rtl::OUString sNumberingRules; - const ::rtl::OUString sParaIsNumberingRestart; - const ::rtl::OUString sNumberingIsNumber; - const ::rtl::OUString sCurrentPresentation; - const ::rtl::OUString sSequenceNumber; - const ::rtl::OUString sSourceName; - const ::rtl::OUString sChainNextName; - const ::rtl::OUString sChainPrevName; - const ::rtl::OUString sHyperLinkURL; - const ::rtl::OUString sHyperLinkName; - const ::rtl::OUString sHyperLinkTarget; - const ::rtl::OUString sUnvisitedCharStyleName; - const ::rtl::OUString sVisitedCharStyleName; - const ::rtl::OUString sTextFrame; - const ::rtl::OUString sPageDescName; - const ::rtl::OUString sServerMap; - const ::rtl::OUString sHyperLinkEvents; - const ::rtl::OUString sContent; - const ::rtl::OUString sServiceCombinedCharacters; - const ::rtl::OUString sNumberingStyleName; - // --> OD 2008-04-23 #refactorlists# - const ::rtl::OUString sPropNameDefaultListId; - const ::rtl::OUString sPropNameListId; - const ::rtl::OUString sOutlineLevel; //#outline level,add by zhaojianwei - // <-- - - ::rtl::OUString sCellParaStyleDefault; XMLTextImportHelper( - const ::com::sun::star::uno::Reference < - ::com::sun::star::frame::XModel>& rModel, + ::com::sun::star::uno::Reference < + ::com::sun::star::frame::XModel> const& rModel, SvXMLImport& rImport, - sal_Bool bInsertM = sal_False, sal_Bool bStylesOnlyM = sal_False, - sal_Bool bProgress = sal_False, - sal_Bool bBlockMode = sal_False, - sal_Bool bOrganizerMode = sal_False ); + bool const bInsertMode = false, bool const bStylesOnlyMode = false, + bool const bProgress = false, bool const bBlockMode = false, + bool const bOrganizerMode = false); ~XMLTextImportHelper(); @@ -575,36 +436,33 @@ public: ::com::sun::star::xml::sax::XAttributeList > & xAttrList, XMLTextType eType = XML_TEXT_TYPE_SHAPE ); - inline const SvXMLTokenMap& GetTextElemTokenMap(); - inline const SvXMLTokenMap& GetTextPElemTokenMap(); - inline const SvXMLTokenMap& GetTextPAttrTokenMap(); - inline const SvXMLTokenMap& GetTextFrameAttrTokenMap(); - inline const SvXMLTokenMap& GetTextContourAttrTokenMap(); - inline const SvXMLTokenMap& GetTextHyperlinkAttrTokenMap(); - inline const SvXMLTokenMap& GetTextMasterPageElemTokenMap(); + SvXMLTokenMap const& GetTextElemTokenMap(); + SvXMLTokenMap const& GetTextPElemTokenMap(); + SvXMLTokenMap const& GetTextPAttrTokenMap(); + SvXMLTokenMap const& GetTextFrameAttrTokenMap(); + SvXMLTokenMap const& GetTextContourAttrTokenMap(); + SvXMLTokenMap const& GetTextHyperlinkAttrTokenMap(); + SvXMLTokenMap const& GetTextMasterPageElemTokenMap(); const SvXMLTokenMap& GetTextNumberedParagraphAttrTokenMap(); const SvXMLTokenMap& GetTextListBlockAttrTokenMap(); const SvXMLTokenMap& GetTextListBlockElemTokenMap(); const SvXMLTokenMap& GetTextFieldAttrTokenMap(); // impl: txtfldi.cxx - ::com::sun::star::uno::Reference < - ::com::sun::star::text::XText > & GetText() { return xText; } - ::com::sun::star::uno::Reference < - ::com::sun::star::text::XTextCursor > & GetCursor() { return xCursor; } - ::com::sun::star::uno::Reference < - ::com::sun::star::text::XTextRange > & GetCursorAsRange() - { - return xCursorAsRange; - } + ::com::sun::star::uno::Reference< + ::com::sun::star::text::XText > & GetText(); + ::com::sun::star::uno::Reference< + ::com::sun::star::text::XTextCursor > & GetCursor(); + ::com::sun::star::uno::Reference< + ::com::sun::star::text::XTextRange > & GetCursorAsRange(); - sal_Bool IsInsertMode() { return bInsertMode; } - sal_Bool IsStylesOnlyMode() { return bStylesOnlyMode; } - sal_Bool IsBlockMode() { return bBlockMode; } - sal_Bool IsOrganizerMode() { return bOrganizerMode; } - sal_Bool IsProgress() { return bProgress; } + bool IsInsertMode() const; + bool IsStylesOnlyMode() const; + bool IsBlockMode() const; + bool IsOrganizerMode() const; + bool IsProgress() const; - XMLSectionList_Impl& GetSectionList() { return aSectionList; } + XMLSectionList_Impl & GetSectionList(); ::rtl::OUString ConvertStarFonts( const ::rtl::OUString& rChars, const ::rtl::OUString& rStyleName, @@ -686,41 +544,25 @@ public: XMLPropStyleContext* FindPageMaster( const ::rtl::OUString& rName ) const; - const ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer>& GetParaStyles() const - { - return xParaStyles; - } - - const ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer>& GetTextStyles() const - { - return xTextStyles; - } - - const ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer>& GetNumberingStyles() const - { - return xNumStyles; - } - - const ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer>& GetFrameStyles() const - { - return xFrameStyles; - } - - const ::com::sun::star::uno::Reference < - ::com::sun::star::container::XNameContainer>& GetPageStyles() const - { - return xPageStyles; - } + const ::com::sun::star::uno::Reference< + ::com::sun::star::container::XNameContainer> & GetParaStyles() const; + + const ::com::sun::star::uno::Reference< + ::com::sun::star::container::XNameContainer> & GetTextStyles() const; + + const ::com::sun::star::uno::Reference< + ::com::sun::star::container::XNameContainer> & + GetNumberingStyles() const; const ::com::sun::star::uno::Reference< - ::com::sun::star::container::XIndexReplace >& GetChapterNumbering() const - { - return xChapterNumbering; - } + ::com::sun::star::container::XNameContainer> & GetFrameStyles() const; + + const ::com::sun::star::uno::Reference< + ::com::sun::star::container::XNameContainer> & GetPageStyles() const; + + const ::com::sun::star::uno::Reference< + ::com::sun::star::container::XIndexReplace > & + GetChapterNumbering() const; sal_Bool HasFrameByName( const ::rtl::OUString& rName ) const; void ConnectFrameChains( const ::rtl::OUString& rFrmName, @@ -728,16 +570,17 @@ public: const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet >& rFrmPropSet ); - const UniReference < SvXMLImportPropertyMapper >& - GetParaImportPropertySetMapper() const { return xParaImpPrMap; } - const UniReference < SvXMLImportPropertyMapper >& - GetTextImportPropertySetMapper() const { return xTextImpPrMap; } - const UniReference < SvXMLImportPropertyMapper >& - GetFrameImportPropertySetMapper() const { return xFrameImpPrMap; } - const UniReference < SvXMLImportPropertyMapper >& - GetSectionImportPropertySetMapper() const { return xSectionImpPrMap; } - const UniReference < SvXMLImportPropertyMapper >& - GetRubyImportPropertySetMapper() const { return xRubyImpPrMap; } + UniReference< SvXMLImportPropertyMapper > const& + GetParaImportPropertySetMapper() const; + UniReference< SvXMLImportPropertyMapper > const& + GetTextImportPropertySetMapper() const; + UniReference< SvXMLImportPropertyMapper > const& + GetFrameImportPropertySetMapper() const; + UniReference< SvXMLImportPropertyMapper > const& + GetSectionImportPropertySetMapper() const; + UniReference< SvXMLImportPropertyMapper > const& + GetRubyImportPropertySetMapper() const; + static SvXMLImportPropertyMapper *CreateShapeExtPropMapper(SvXMLImport&); static SvXMLImportPropertyMapper *CreateCharExtPropMapper(SvXMLImport&, XMLFontStylesContext *pFontDecls = NULL); static SvXMLImportPropertyMapper *CreateParaExtPropMapper(SvXMLImport&, XMLFontStylesContext *pFontDecls = NULL); @@ -757,14 +600,18 @@ public: const ::rtl::OUString sName, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange> & rRange, - const ::rtl::OUString & i_rXmlId); + ::rtl::OUString const& i_rXmlId, + ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & + i_rpRDFaAttributes); /// process the start of a range reference sal_Bool FindAndRemoveBookmarkStartRange( const ::rtl::OUString sName, ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange> & o_rRange, - ::rtl::OUString& o_rXmlId); + ::rtl::OUString & o_rXmlId, + ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & + o_rpRDFaAttributes); ::rtl::OUString FindActiveBookmarkName(); ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > GetRangeFor(::rtl::OUString &sName); @@ -889,13 +736,13 @@ public: // #107848# // Access methods to the inside_deleted_section flag (redlining) - void SetInsideDeleteContext(sal_Bool bNew) { bInsideDeleteContext = bNew; } - sal_Bool IsInsideDeleteContext() const { return bInsideDeleteContext; } + void SetInsideDeleteContext(bool const bNew); + bool IsInsideDeleteContext() const; - SvXMLImport& GetXMLImport() { return rSvXMLImport;} + SvXMLImport & GetXMLImport(); // --> OD 2008-04-25 #refactorlists# - XMLTextListsHelper& GetTextListHelper() { return *mpTextListsHelper; } + XMLTextListsHelper & GetTextListHelper(); // <-- // forwards to TextListHelper; these are used in many places @@ -903,62 +750,9 @@ public: void PushListContext(XMLTextListBlockContext *i_pListBlock = 0); /// pop the list context stack void PopListContext(); -}; - -inline const SvXMLTokenMap& XMLTextImportHelper::GetTextElemTokenMap() -{ - if( !pTextElemTokenMap.get() ) - pTextElemTokenMap.reset( _GetTextElemTokenMap() ); - - return *pTextElemTokenMap; -} - -inline const SvXMLTokenMap& XMLTextImportHelper::GetTextPElemTokenMap() -{ - if( !pTextPElemTokenMap.get() ) - pTextPElemTokenMap.reset( _GetTextPElemTokenMap() ); - - return *pTextPElemTokenMap; -} - -inline const SvXMLTokenMap& XMLTextImportHelper::GetTextPAttrTokenMap() -{ - if( !pTextPAttrTokenMap.get() ) - pTextPAttrTokenMap.reset( _GetTextPAttrTokenMap() ); - - return *pTextPAttrTokenMap; -} - -inline const SvXMLTokenMap& XMLTextImportHelper::GetTextFrameAttrTokenMap() -{ - if( !pTextFrameAttrTokenMap.get() ) - pTextFrameAttrTokenMap.reset( _GetTextFrameAttrTokenMap() ); - - return *pTextFrameAttrTokenMap; -} - -inline const SvXMLTokenMap& XMLTextImportHelper::GetTextContourAttrTokenMap() -{ - if( !pTextContourAttrTokenMap.get() ) - pTextContourAttrTokenMap.reset( _GetTextContourAttrTokenMap() ); - - return *pTextContourAttrTokenMap; -} -inline const SvXMLTokenMap& XMLTextImportHelper::GetTextHyperlinkAttrTokenMap() -{ - if( !pTextHyperlinkAttrTokenMap.get() ) - pTextHyperlinkAttrTokenMap.reset( _GetTextHyperlinkAttrTokenMap() ); - - return *pTextHyperlinkAttrTokenMap; -} - -inline const SvXMLTokenMap& XMLTextImportHelper::GetTextMasterPageElemTokenMap() -{ - if( !pTextMasterPageElemTokenMap.get() ) - pTextMasterPageElemTokenMap.reset( _GetTextMasterPageElemTokenMap() ); - - return *pTextMasterPageElemTokenMap; -} + void SetCellParaStyleDefault(::rtl::OUString const& rNewValue); + ::rtl::OUString const& GetCellParaStyleDefault(); +}; #endif diff --git a/xmloff/inc/xmloff/xmlexp.hxx b/xmloff/inc/xmloff/xmlexp.hxx index 8900e35542..688f002a06 100644 --- a/xmloff/inc/xmloff/xmlexp.hxx +++ b/xmloff/inc/xmloff/xmlexp.hxx @@ -590,6 +590,12 @@ public: /// name of stream in package, e.g., "content.xml" ::rtl::OUString GetStreamName() const; + // FIXME: this is only for legacy stuff that has not yet been adapted + // to implement XMetadatable; this can write duplicate IDs! + /// add xml:id and legacy namespace id + void SAL_DLLPRIVATE AddAttributeIdLegacy( + sal_uInt16 const nLegacyPrefix, ::rtl::OUString const& rValue); + /// add xml:id attribute (for RDF metadata) void AddAttributeXmlId(::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> const & i_xIfc); diff --git a/xmloff/inc/xmloff/xmlimp.hxx b/xmloff/inc/xmloff/xmlimp.hxx index d7c17628d1..584a573e23 100644 --- a/xmloff/inc/xmloff/xmlimp.hxx +++ b/xmloff/inc/xmloff/xmlimp.hxx @@ -77,6 +77,10 @@ class XMLErrors; class StyleMap; class String; +namespace xmloff { + class RDFaImportHelper; +} + #define IMPORT_META 0x0001 #define IMPORT_STYLES 0x0002 #define IMPORT_MASTERSTYLES 0x0004 @@ -432,6 +436,9 @@ public: ::rtl::OUString const & i_rContent, ::rtl::OUString const & i_rDatatype); + /// do not dllexport this; only for advanced cases (bookmark-start) + SAL_DLLPRIVATE ::xmloff::RDFaImportHelper & GetRDFaImportHelper(); + // #i31958# XForms helper method // (to be implemented by applications suporting XForms) virtual void initXForms(); diff --git a/xmloff/prj/d.lst b/xmloff/prj/d.lst index 0b51b0dd97..7784bca047 100644 --- a/xmloff/prj/d.lst +++ b/xmloff/prj/d.lst @@ -21,7 +21,6 @@ mkdir: %_DEST%\inc%_EXT%\xmloff ..\inc\xmloff\xmlement.hxx %_DEST%\inc%_EXT%\xmloff\xmlement.hxx ..\inc\xmloff\xmlictxt.hxx %_DEST%\inc%_EXT%\xmloff\xmlictxt.hxx ..\inc\xmloff\xmlimp.hxx %_DEST%\inc%_EXT%\xmloff\xmlimp.hxx -..\inc\xmlkywd.hxx %_DEST%\inc%_EXT%\xmloff\xmlkywd.hxx ..\inc\xmloff\xmlmetae.hxx %_DEST%\inc%_EXT%\xmloff\xmlmetae.hxx ..\inc\xmloff\xmlmetai.hxx %_DEST%\inc%_EXT%\xmloff\xmlmetai.hxx ..\inc\xmloff\xmlscripti.hxx %_DEST%\inc%_EXT%\xmloff\xmlscripti.hxx diff --git a/xmloff/qa/unoapi/xmloff.sce b/xmloff/qa/unoapi/xmloff.sce index aa61a24496..c73533f4e4 100644 --- a/xmloff/qa/unoapi/xmloff.sce +++ b/xmloff/qa/unoapi/xmloff.sce @@ -1,26 +1,26 @@ --o xmloff.Chart.XMLContentExporter --o xmloff.Chart.XMLContentImporter --o xmloff.Chart.XMLExporter --o xmloff.Chart.XMLImporter --o xmloff.Chart.XMLStylesExporter --o xmloff.Chart.XMLStylesImporter +#111102# -o xmloff.Chart.XMLContentExporter +#111102# -o xmloff.Chart.XMLContentImporter +#111102# -o xmloff.Chart.XMLExporter +#111102# -o xmloff.Chart.XMLImporter +#111102# -o xmloff.Chart.XMLStylesExporter +#111102# -o xmloff.Chart.XMLStylesImporter -o xmloff.Draw.XMLContentExporter -o xmloff.Draw.XMLContentImporter -o xmloff.Draw.XMLExporter -o xmloff.Draw.XMLImporter -o xmloff.Draw.XMLMetaExporter --o xmloff.Draw.XMLMetaImporter --o xmloff.Draw.XMLSettingsExporter --o xmloff.Draw.XMLSettingsImporter +#i111200 -o xmloff.Draw.XMLMetaImporter +#i111287 -o xmloff.Draw.XMLSettingsExporter +#i111287 -o xmloff.Draw.XMLSettingsImporter #i87695 -o xmloff.Draw.XMLStylesExporter -o xmloff.Draw.XMLStylesImporter --o xmloff.Impress.XMLContentExporter +#i111224 -o xmloff.Impress.XMLContentExporter -o xmloff.Impress.XMLContentImporter -o xmloff.Impress.XMLExporter --o xmloff.Impress.XMLImporter +#i111111# -o xmloff.Impress.XMLImporter -o xmloff.Impress.XMLMetaExporter -o xmloff.Impress.XMLMetaImporter --o xmloff.Impress.XMLSettingsExporter --o xmloff.Impress.XMLSettingsImporter +#i111287 -o xmloff.Impress.XMLSettingsExporter +#i111287 -o xmloff.Impress.XMLSettingsImporter #i87695 -o xmloff.Impress.XMLStylesExporter -o xmloff.Impress.XMLStylesImporter diff --git a/xmloff/source/chart/SchXMLExport.cxx b/xmloff/source/chart/SchXMLExport.cxx index b566acb259..e8245b3d0d 100644 --- a/xmloff/source/chart/SchXMLExport.cxx +++ b/xmloff/source/chart/SchXMLExport.cxx @@ -41,9 +41,7 @@ #include <tools/globname.hxx> #include <sot/clsids.hxx> -#ifndef _SVTOOLS_NMSPMAP_HXX #include <xmloff/nmspmap.hxx> -#endif #include "xmlnmspe.hxx" #include <xmloff/xmltoken.hxx> #include <xmloff/families.hxx> @@ -649,7 +647,12 @@ lcl_TableData lcl_getDataForLocalTable( SchXMLExportHelper::tDataSequenceCont::const_iterator aIt( aBegin ); size_t nMaxSequenceLength( lcl_getMaxSequenceLength( aSequencesToExport )); - nMaxSequenceLength = std::max( nMaxSequenceLength, size_t( aSimpleCategories.getLength() ) ); + size_t nCategoriesLength( aSimpleCategories.getLength() ); + if( nCategoriesLength > nMaxSequenceLength ) + { + aSimpleCategories.realloc(nMaxSequenceLength);//#i110617# + nCategoriesLength = nMaxSequenceLength; + } size_t nNumColumns( bSeriesFromColumns ? nNumSequences : nMaxSequenceLength ); size_t nNumRows( bSeriesFromColumns ? nMaxSequenceLength : nNumSequences ); @@ -1084,6 +1087,7 @@ void SchXMLExportHelper::parseDocument( Reference< chart::XChartDocument >& rCha aDataProviderURL = OUString( RTL_CONSTASCII_USTRINGPARAM( "." ) ); } mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, aDataProviderURL ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); } OUString sChartType( xDiagram->getDiagramType() ); @@ -1520,8 +1524,11 @@ void SchXMLExportHelper::exportTable() // to allow a correct re-association when copying via clipboard if( !bHasOwnData && aColumnDescriptions_RangeIter != aColumnDescriptions_RangeEnd ) { - if( (*aColumnDescriptions_RangeIter).getLength()) - mrExport.AddAttribute( XML_NAMESPACE_TEXT, XML_ID, *aColumnDescriptions_RangeIter ); + if ((*aColumnDescriptions_RangeIter).getLength()) + { + mrExport.AddAttributeIdLegacy(XML_NAMESPACE_TEXT, + *aColumnDescriptions_RangeIter); + } ++aColumnDescriptions_RangeIter; } exportText( *aIt ); @@ -1553,7 +1560,10 @@ void SchXMLExportHelper::exportTable() // write the original range name as id into the local table // to allow a correct re-association when copying via clipboard if( !bHasOwnData && aRowDescriptions_RangeIter != aRowDescriptions_RangeEnd ) - mrExport.AddAttribute( XML_NAMESPACE_TEXT, XML_ID, *aRowDescriptions_RangeIter++ ); + { + mrExport.AddAttributeIdLegacy(XML_NAMESPACE_TEXT, + *aRowDescriptions_RangeIter++); + } exportText( *aRowDescriptionsIter ); ++aRowDescriptionsIter; if( nC < nComplexCount ) @@ -1575,8 +1585,11 @@ void SchXMLExportHelper::exportTable() if( ( !bHasOwnData && aDataRangeIter != aDataRangeEndIter ) && ( mbRowSourceColumns || (aColIt == aRowIt->begin())) ) { - if( (*aDataRangeIter).getLength()) - mrExport.AddAttribute( XML_NAMESPACE_TEXT, XML_ID, *aDataRangeIter ); + if ((*aDataRangeIter).getLength()) + { + mrExport.AddAttributeIdLegacy(XML_NAMESPACE_TEXT, + *aDataRangeIter); + } ++aDataRangeIter; } exportText( msString, false ); // do not convert tabs and lfs diff --git a/xmloff/source/chart/SchXMLParagraphContext.cxx b/xmloff/source/chart/SchXMLParagraphContext.cxx index 2a26a628b0..2f986286a6 100644 --- a/xmloff/source/chart/SchXMLParagraphContext.cxx +++ b/xmloff/source/chart/SchXMLParagraphContext.cxx @@ -60,6 +60,7 @@ void SchXMLParagraphContext::StartElement( const uno::Reference< xml::sax::XAttr { sal_Int16 nAttrCount = xAttrList.is()? xAttrList->getLength(): 0; rtl::OUString aValue; + bool bHaveXmlId( false ); for( sal_Int16 i = 0; i < nAttrCount; i++ ) { @@ -67,11 +68,20 @@ void SchXMLParagraphContext::StartElement( const uno::Reference< xml::sax::XAttr rtl::OUString aLocalName; USHORT nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName ); - if( nPrefix == XML_NAMESPACE_TEXT && - IsXMLToken( aLocalName, XML_ID ) ) + if (IsXMLToken(aLocalName, XML_ID)) { - (*mpId) = xAttrList->getValueByIndex( i ); - break; // we only need this attribute + if (nPrefix == XML_NAMESPACE_XML) + { + (*mpId) = xAttrList->getValueByIndex( i ); + bHaveXmlId = true; + } + if (nPrefix == XML_NAMESPACE_TEXT) + { // text:id shall be ignored if xml:id exists + if (!bHaveXmlId) + { + (*mpId) = xAttrList->getValueByIndex( i ); + } + } } } } diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.cxx b/xmloff/source/chart/SchXMLPlotAreaContext.cxx index 55628c961a..86a6a3469c 100644 --- a/xmloff/source/chart/SchXMLPlotAreaContext.cxx +++ b/xmloff/source/chart/SchXMLPlotAreaContext.cxx @@ -1271,6 +1271,10 @@ void SchXMLAxisContext::CreateAxis() // set properties if( xProp.is()) { + // #i109879# the line color is black as default, in the model it is a light gray + xProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LineColor" )), + uno::makeAny( COL_BLACK )); + xProp->setPropertyValue( rtl::OUString::createFromAscii( "DisplayLabels" ), aFalseBool ); // #88077# AutoOrigin 'on' is default diff --git a/xmloff/source/chart/SchXMLSeries2Context.cxx b/xmloff/source/chart/SchXMLSeries2Context.cxx index a5621b14c8..5a250142c6 100644 --- a/xmloff/source/chart/SchXMLSeries2Context.cxx +++ b/xmloff/source/chart/SchXMLSeries2Context.cxx @@ -39,7 +39,6 @@ #include <com/sun/star/chart2/XRegressionCurve.hpp> #include <com/sun/star/chart2/data/XDataSink.hpp> #include <com/sun/star/chart2/data/XDataReceiver.hpp> -#include <com/sun/star/chart2/data/XRangeXMLConversion.hpp> #include <com/sun/star/chart/ChartAxisAssign.hpp> #include <com/sun/star/chart/ChartSymbolType.hpp> @@ -78,15 +77,6 @@ using ::rtl::OUStringBuffer; namespace { -OUString lcl_ConvertRange( const ::rtl::OUString & rRange, const Reference< chart2::data::XDataProvider >& xDataProvider ) -{ - OUString aResult = rRange; - Reference< chart2::data::XRangeXMLConversion > xConversion( xDataProvider, uno::UNO_QUERY ); - if( xConversion.is()) - aResult = xConversion->convertRangeFromXML( rRange ); - return aResult; -} - class SchXMLDomain2Context : public SvXMLImportContext { private: @@ -232,7 +222,7 @@ void lcl_insertErrorBarLSequencesToMap( Reference< chart2::data::XLabeledDataSequence > lcl_createAndAddSequenceToSeries( const rtl::OUString& rRole , const rtl::OUString& rRange - , const Reference< chart2::data::XDataProvider >& xDataProvider + , const Reference< chart2::XChartDocument >& xChartDoc , const Reference< chart2::XDataSeries >& xSeries ) { Reference< chart2::data::XLabeledDataSequence > xLabeledSeq; @@ -240,27 +230,14 @@ Reference< chart2::data::XLabeledDataSequence > lcl_createAndAddSequenceToSeries Reference< chart2::data::XDataSource > xSeriesSource( xSeries,uno::UNO_QUERY ); Reference< chart2::data::XDataSink > xSeriesSink( xSeries, uno::UNO_QUERY ); - if( !(rRange.getLength() && xDataProvider.is() && xSeriesSource.is() && xSeriesSink.is()) ) + if( !(rRange.getLength() && xChartDoc.is() && xSeriesSource.is() && xSeriesSink.is()) ) return xLabeledSeq; // create a new sequence xLabeledSeq = SchXMLTools::GetNewLabeledDataSequence(); // set values at the new sequence - Reference< chart2::data::XDataSequence > xSeq; - try - { - xSeq.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( rRange, xDataProvider ))); - SchXMLTools::setXMLRangePropertyAtDataSequence( xSeq, rRange ); - } - catch( const lang::IllegalArgumentException & ex ) - { - (void)ex; // avoid warning for pro build - OSL_ENSURE( false, ::rtl::OUStringToOString( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IllegalArgumentException caught, Message: " )) + - ex.Message, RTL_TEXTENCODING_ASCII_US ).getStr()); - } - + Reference< chart2::data::XDataSequence > xSeq = SchXMLTools::CreateDataSequence( rRange, xChartDoc ); Reference< beans::XPropertySet > xSeqProp( xSeq, uno::UNO_QUERY ); if( xSeqProp.is()) xSeqProp->setPropertyValue(OUString::createFromAscii("Role"), uno::makeAny( rRole)); @@ -336,10 +313,6 @@ void SchXMLSeries2Context::StartElement( const uno::Reference< xml::sax::XAttrib bool bHasRange = false; bool bHasLabelRange = false; - Reference< chart2::data::XRangeXMLConversion > xRangeConversion; - if( mxNewDoc.is()) - xRangeConversion.set( mxNewDoc->getDataProvider(), uno::UNO_QUERY ); - for( sal_Int16 i = 0; i < nAttrCount; i++ ) { rtl::OUString sAttrName = xAttrList->getNameByIndex( i ); @@ -401,123 +374,93 @@ void SchXMLSeries2Context::StartElement( const uno::Reference< xml::sax::XAttrib try { OSL_ASSERT( mxNewDoc.is()); - if( mxNewDoc.is()) - { - if( m_rGlobalSeriesImportInfo.rbAllRangeAddressesAvailable && ! bHasRange ) - m_rGlobalSeriesImportInfo.rbAllRangeAddressesAvailable = sal_False; + if( m_rGlobalSeriesImportInfo.rbAllRangeAddressesAvailable && ! bHasRange ) + m_rGlobalSeriesImportInfo.rbAllRangeAddressesAvailable = sal_False; - Reference< chart2::data::XDataProvider > xDataProvider( mxNewDoc->getDataProvider() ); - if( xDataProvider.is()) + bool bIsCandleStick = maGlobalChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.CandleStickChartType")); + if( maSeriesChartTypeName.getLength() ) + { + bIsCandleStick = maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.CandleStickChartType")); + } + else + { + if( bIsCandleStick + && m_bStockHasVolume + && mnSeriesIndex == 0 ) { - bool bIsCandleStick = maGlobalChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.CandleStickChartType")); - if( maSeriesChartTypeName.getLength() ) - { - bIsCandleStick = maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.CandleStickChartType")); - } - else - { - if( bIsCandleStick - && m_bStockHasVolume - && mnSeriesIndex == 0 ) - { - maSeriesChartTypeName = OUString::createFromAscii( "com.sun.star.chart2.ColumnChartType" ); - bIsCandleStick = false; - } - else - { - maSeriesChartTypeName = maGlobalChartTypeName; - } - } - if( ! mrGlobalChartTypeUsedBySeries ) - mrGlobalChartTypeUsedBySeries = (maSeriesChartTypeName.equals( maGlobalChartTypeName )); - sal_Int32 nCoordinateSystemIndex = 0;//so far we can only import one coordinate system - m_xSeries.set( - mrImportHelper.GetNewDataSeries( mxNewDoc, nCoordinateSystemIndex, maSeriesChartTypeName, ! mrGlobalChartTypeUsedBySeries )); - Reference< chart2::data::XLabeledDataSequence > xLabeledSeq( - SchXMLTools::GetNewLabeledDataSequence()); - - if( bIsCandleStick ) - { - // set default color for range-line to black (before applying styles) - Reference< beans::XPropertySet > xSeriesProp( m_xSeries, uno::UNO_QUERY ); - if( xSeriesProp.is()) - xSeriesProp->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Color")), - uno::makeAny( sal_Int32( 0x000000 ))); // black - } - else if( maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.PieChartType"))) - { - //@todo: this property should be saved - Reference< beans::XPropertySet > xSeriesProp( m_xSeries, uno::UNO_QUERY ); - if( xSeriesProp.is()) - xSeriesProp->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VaryColorsByPoint")), - uno::makeAny( true )); - } + maSeriesChartTypeName = OUString::createFromAscii( "com.sun.star.chart2.ColumnChartType" ); + bIsCandleStick = false; + } + else + { + maSeriesChartTypeName = maGlobalChartTypeName; + } + } + if( ! mrGlobalChartTypeUsedBySeries ) + mrGlobalChartTypeUsedBySeries = (maSeriesChartTypeName.equals( maGlobalChartTypeName )); + sal_Int32 nCoordinateSystemIndex = 0;//so far we can only import one coordinate system + m_xSeries.set( + mrImportHelper.GetNewDataSeries( mxNewDoc, nCoordinateSystemIndex, maSeriesChartTypeName, ! mrGlobalChartTypeUsedBySeries )); + Reference< chart2::data::XLabeledDataSequence > xLabeledSeq( + SchXMLTools::GetNewLabeledDataSequence()); + + if( bIsCandleStick ) + { + // set default color for range-line to black (before applying styles) + Reference< beans::XPropertySet > xSeriesProp( m_xSeries, uno::UNO_QUERY ); + if( xSeriesProp.is()) + xSeriesProp->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Color")), + uno::makeAny( sal_Int32( 0x000000 ))); // black + } + else if( maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.PieChartType"))) + { + //@todo: this property should be saved + Reference< beans::XPropertySet > xSeriesProp( m_xSeries, uno::UNO_QUERY ); + if( xSeriesProp.is()) + xSeriesProp->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VaryColorsByPoint")), + uno::makeAny( true )); + } - // values - Reference< chart2::data::XDataSequence > xSeq; - if( bHasRange ) - try - { - xSeq.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( m_aSeriesRange, xDataProvider ))); - SchXMLTools::setXMLRangePropertyAtDataSequence( xSeq, m_aSeriesRange ); - } - catch( const lang::IllegalArgumentException & ex ) - { - (void)ex; // avoid warning for pro build - OSL_ENSURE( false, ::rtl::OUStringToOString( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IllegalArgumentException caught, Message: " )) + - ex.Message, RTL_TEXTENCODING_ASCII_US ).getStr()); - } + // values + Reference< chart2::data::XDataSequence > xSeq; + if( bHasRange ) + xSeq = SchXMLTools::CreateDataSequence( m_aSeriesRange, mxNewDoc ); - Reference< beans::XPropertySet > xSeqProp( xSeq, uno::UNO_QUERY ); - if( xSeqProp.is()) - { - OUString aMainRole( OUString::createFromAscii("values-y") ); - if( maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.BubbleChartType") ) ) - aMainRole = OUString::createFromAscii("values-size"); - xSeqProp->setPropertyValue(OUString::createFromAscii("Role"), uno::makeAny( aMainRole )); - } - xLabeledSeq->setValues( xSeq ); + Reference< beans::XPropertySet > xSeqProp( xSeq, uno::UNO_QUERY ); + if( xSeqProp.is()) + { + OUString aMainRole( OUString::createFromAscii("values-y") ); + if( maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.BubbleChartType") ) ) + aMainRole = OUString::createFromAscii("values-size"); + xSeqProp->setPropertyValue(OUString::createFromAscii("Role"), uno::makeAny( aMainRole )); + } + xLabeledSeq->setValues( xSeq ); - // register for setting local data if external data provider is not present - maPostponedSequences.insert( - tSchXMLLSequencesPerIndex::value_type( - tSchXMLIndexWithPart( m_rGlobalSeriesImportInfo.nCurrentDataIndex, SCH_XML_PART_VALUES ), xLabeledSeq )); + // register for setting local data if external data provider is not present + maPostponedSequences.insert( + tSchXMLLSequencesPerIndex::value_type( + tSchXMLIndexWithPart( m_rGlobalSeriesImportInfo.nCurrentDataIndex, SCH_XML_PART_VALUES ), xLabeledSeq )); - // label - if( bHasLabelRange ) - { - try - { - Reference< chart2::data::XDataSequence > xLabelSequence( - xDataProvider->createDataSequenceByRangeRepresentation( - lcl_ConvertRange( m_aSeriesLabelRange, xDataProvider ))); - xLabeledSeq->setLabel( xLabelSequence ); - SchXMLTools::setXMLRangePropertyAtDataSequence( xLabelSequence, m_aSeriesLabelRange ); - } - catch( const lang::IllegalArgumentException & ex ) - { - (void)ex; // avoid warning for pro build - OSL_ENSURE( false, ::rtl::OUStringToOString( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IllegalArgumentException caught, Message: " )) + - ex.Message, RTL_TEXTENCODING_ASCII_US ).getStr()); - } - } + // label + if( bHasLabelRange ) + { + Reference< chart2::data::XDataSequence > xLabelSequence = + SchXMLTools::CreateDataSequence( m_aSeriesLabelRange, mxNewDoc ); + xLabeledSeq->setLabel( xLabelSequence ); + } - // Note: Even if we have no label, we have to register the label - // for creation, because internal data always has labels. If - // they don't exist in the original, auto-generated labels are - // used for the internal data. - maPostponedSequences.insert( - tSchXMLLSequencesPerIndex::value_type( - tSchXMLIndexWithPart( m_rGlobalSeriesImportInfo.nCurrentDataIndex, SCH_XML_PART_LABEL ), xLabeledSeq )); + // Note: Even if we have no label, we have to register the label + // for creation, because internal data always has labels. If + // they don't exist in the original, auto-generated labels are + // used for the internal data. + maPostponedSequences.insert( + tSchXMLLSequencesPerIndex::value_type( + tSchXMLIndexWithPart( m_rGlobalSeriesImportInfo.nCurrentDataIndex, SCH_XML_PART_LABEL ), xLabeledSeq )); - Sequence< Reference< chart2::data::XLabeledDataSequence > > aSeq( &xLabeledSeq, 1 ); - Reference< chart2::data::XDataSink > xSink( m_xSeries, uno::UNO_QUERY_THROW ); - xSink->setData( aSeq ); - } - } + Sequence< Reference< chart2::data::XLabeledDataSequence > > aSeq( &xLabeledSeq, 1 ); + Reference< chart2::data::XDataSink > xSink( m_xSeries, uno::UNO_QUERY_THROW ); + xSink->setData( aSeq ); } catch( uno::Exception & ex ) { @@ -662,15 +605,11 @@ void SchXMLSeries2Context::EndElement() } } - Reference< chart2::data::XDataProvider > xDataProvider; - if ( mxNewDoc.is() ) { - xDataProvider = mxNewDoc->getDataProvider(); - } for( std::vector< DomainInfo >::reverse_iterator aIt( aDomainInfos.rbegin() ); aIt!= aDomainInfos.rend(); ++aIt ) { DomainInfo aDomainInfo( *aIt ); Reference< chart2::data::XLabeledDataSequence > xLabeledSeq = - lcl_createAndAddSequenceToSeries( aDomainInfo.aRole, aDomainInfo.aRange, xDataProvider, m_xSeries ); + lcl_createAndAddSequenceToSeries( aDomainInfo.aRole, aDomainInfo.aRange, mxNewDoc, m_xSeries ); if( xLabeledSeq.is() ) { // register for setting local data if external data provider is not present diff --git a/xmloff/source/chart/SchXMLTableContext.cxx b/xmloff/source/chart/SchXMLTableContext.cxx index 6b4bb5097d..8c12781980 100644 --- a/xmloff/source/chart/SchXMLTableContext.cxx +++ b/xmloff/source/chart/SchXMLTableContext.cxx @@ -161,6 +161,11 @@ struct lcl_ApplyCellToData : public ::std::unary_function< SchXMLCell, void > ++m_nIndex; } + sal_Int32 getCurrentIndex() const + { + return m_nIndex; + } + private: Sequence< double > & m_rData; sal_Int32 m_nIndex; @@ -865,7 +870,12 @@ void SchXMLTableHelper::applyTableToInternalDataProvider( lcl_ApplyCellToComplexLabel( rRow.front(), aComplexRowDescriptions[nRow] ); // values - ::std::for_each( rRow.begin() + nColOffset, rRow.end(), lcl_ApplyCellToData( aDataInRows[nRow] )); + Sequence< double >& rTargetRow = aDataInRows[nRow]; + lcl_ApplyCellToData aApplyCellToData = ::std::for_each( rRow.begin() + nColOffset, rRow.end(), lcl_ApplyCellToData( rTargetRow ) ); + double fNaN = 0.0; + ::rtl::math::setNan( &fNaN ); + for( sal_Int32 nCurrentIndex = aApplyCellToData.getCurrentIndex(); nCurrentIndex<nNumColumns; nCurrentIndex++ ) + rTargetRow[nCurrentIndex] = fNaN;//#i110615# } } } diff --git a/xmloff/source/chart/SchXMLTools.cxx b/xmloff/source/chart/SchXMLTools.cxx index d88d8c7ee5..cd504d5485 100644 --- a/xmloff/source/chart/SchXMLTools.cxx +++ b/xmloff/source/chart/SchXMLTools.cxx @@ -133,20 +133,25 @@ sal_Int32 lcl_getBuildIDFromGenerator( const ::rtl::OUString& rGenerator ) return nBuildId; } +OUString lcl_ConvertRange( const ::rtl::OUString & rRange, const Reference< chart2::data::XDataProvider >& xDataProvider ) +{ + OUString aResult = rRange; + Reference< chart2::data::XRangeXMLConversion > xRangeConversion( xDataProvider, uno::UNO_QUERY ); + if( xRangeConversion.is()) + aResult = xRangeConversion->convertRangeFromXML( rRange ); + return aResult; +} + Reference< chart2::data::XDataSequence > lcl_createNewSequenceFromCachedXMLRange( const Reference< chart2::data::XDataSequence >& xSeq, const Reference< chart2::data::XDataProvider >& xDataProvider ) { Reference< chart2::data::XDataSequence > xRet; OUString aRange; - Reference< chart2::data::XRangeXMLConversion > xRangeConversion( xDataProvider, uno::UNO_QUERY ); - if( xRangeConversion.is() ) + if( xSeq.is() && SchXMLTools::getXMLRangePropertyFromDataSequence( xSeq, aRange, /* bClearProp = */ true ) ) { - if( xSeq.is() && SchXMLTools::getXMLRangePropertyFromDataSequence( xSeq, aRange, /* bClearProp = */ true ) ) - { - xRet.set( xDataProvider->createDataSequenceByRangeRepresentation( - xRangeConversion->convertRangeFromXML( aRange )) ); - SchXMLTools::copyProperties( Reference< beans::XPropertySet >( xSeq, uno::UNO_QUERY ), - Reference< beans::XPropertySet >( xRet, uno::UNO_QUERY )); - } + xRet.set( xDataProvider->createDataSequenceByRangeRepresentation( + lcl_ConvertRange( aRange, xDataProvider )) ); + SchXMLTools::copyProperties( Reference< beans::XPropertySet >( xSeq, uno::UNO_QUERY ), + Reference< beans::XPropertySet >( xRet, uno::UNO_QUERY )); } return xRet; } @@ -385,6 +390,53 @@ Reference< chart2::data::XLabeledDataSequence > GetNewLabeledDataSequence() return xResult; } +Reference< chart2::data::XDataSequence > CreateDataSequence( + const OUString & rRange, + const Reference< chart2::XChartDocument >& xChartDoc ) +{ + Reference< chart2::data::XDataSequence > xRet; + + if( !xChartDoc.is() ) + { + DBG_ERROR( "need a chart document" ); + return xRet; + } + + Reference< chart2::data::XDataProvider > xDataProvider( xChartDoc->getDataProvider() ); + if( !xDataProvider.is() ) + { + DBG_ERROR( "need a data provider" ); + return xRet; + } + + try + { + xRet.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( rRange, xDataProvider ))); + SchXMLTools::setXMLRangePropertyAtDataSequence( xRet, rRange ); + } + catch( const lang::IllegalArgumentException & ) + { + DBG_ERROR( "could not create data sequence" ); + } + + if( !xRet.is() && !xChartDoc->hasInternalDataProvider() ) + { + //#i103911# switch to internal data in case the parent cannot provide the requested data + xChartDoc->createInternalDataProvider( sal_True /* bCloneExistingData */ ); + xDataProvider = xChartDoc->getDataProvider(); + try + { + xRet.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( rRange, xDataProvider ))); + SchXMLTools::setXMLRangePropertyAtDataSequence( xRet, rRange ); + } + catch( const lang::IllegalArgumentException & ) + { + DBG_ERROR( "could not create data sequence" ); + } + } + return xRet; +} + void CreateCategories( const uno::Reference< chart2::data::XDataProvider > & xDataProvider, const uno::Reference< chart2::XChartDocument > & xNewDoc, diff --git a/xmloff/source/chart/SchXMLTools.hxx b/xmloff/source/chart/SchXMLTools.hxx index d66c125e0c..8e797a6fa0 100644 --- a/xmloff/source/chart/SchXMLTools.hxx +++ b/xmloff/source/chart/SchXMLTools.hxx @@ -87,6 +87,11 @@ namespace SchXMLTools ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > GetNewLabeledDataSequence(); + ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence > CreateDataSequence( + const ::rtl::OUString& rRange, + const ::com::sun::star::uno::Reference< + ::com::sun::star::chart2::XChartDocument >& xChartDoc ); + void CreateCategories( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataProvider > & xDataProvider, const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > & xNewDoc, diff --git a/xmloff/source/core/RDFaExportHelper.cxx b/xmloff/source/core/RDFaExportHelper.cxx index e755b287d3..e88cb6b84b 100644 --- a/xmloff/source/core/RDFaExportHelper.cxx +++ b/xmloff/source/core/RDFaExportHelper.cxx @@ -95,11 +95,6 @@ RDFaExportHelper::RDFaExportHelper(SvXMLExport & i_rExport) OSL_ENSURE(xRS.is(), "AddRDFa: model is no rdf::XRepositorySupplier"); if (!xRS.is()) throw uno::RuntimeException(); m_xRepository.set(xRS->getRDFRepository(), uno::UNO_QUERY_THROW); - - const uno::Reference<rdf::XURI> xLabel( - rdf::URI::createKnown(m_rExport.GetComponentContext(), - rdf::URIs::RDFS_LABEL)); - m_RDFsLabel = xLabel->getStringValue(); } ::rtl::OUString @@ -128,19 +123,21 @@ RDFaExportHelper::AddRDFa( { try { - uno::Sequence<rdf::Statement> stmts( - m_xRepository->getStatementRDFa(i_xMetadatable) ); + beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > const + RDFaResult( m_xRepository->getStatementRDFa(i_xMetadatable) ); + + uno::Sequence<rdf::Statement> const & rStatements( RDFaResult.First ); - if (0 == stmts.getLength()) + if (0 == rStatements.getLength()) { return; // no RDFa } // all stmts have the same subject, so we only handle first one - const uno::Reference<rdf::XURI> xSubjectURI(stmts[0].Subject, - uno::UNO_QUERY); - const uno::Reference<rdf::XBlankNode> xSubjectBNode(stmts[0].Subject, + const uno::Reference<rdf::XURI> xSubjectURI(rStatements[0].Subject, uno::UNO_QUERY); + const uno::Reference<rdf::XBlankNode> xSubjectBNode( + rStatements[0].Subject, uno::UNO_QUERY); if (!xSubjectURI.is() && !xSubjectBNode.is()) { throw uno::RuntimeException(); @@ -154,47 +151,31 @@ RDFaExportHelper::AddRDFa( .makeStringAndClear() ); - rdf::Statement* const iter - ( ::std::partition( ::comphelper::stl_begin(stmts), - ::comphelper::stl_end(stmts), - ::boost::bind(&::rtl::OUString::equals, m_RDFsLabel, - ::boost::bind(&rdf::XNode::getStringValue, - ::boost::bind(&rdf::Statement::Predicate, _1))) ) ); - - if (iter != ::comphelper::stl_end(stmts)) + const uno::Reference<rdf::XLiteral> xContent( + rStatements[0].Object, uno::UNO_QUERY_THROW ); + const uno::Reference<rdf::XURI> xDatatype(xContent->getDatatype()); + if (xDatatype.is()) { - // from iter to end, all stmts should have same object - const uno::Reference<rdf::XLiteral> xContent( - (*iter).Object, uno::UNO_QUERY_THROW ); - const uno::Reference<rdf::XURI> xDatatype(xContent->getDatatype()); - if (xDatatype.is()) - { - const ::rtl::OUString datatype( - makeCURIE(&m_rExport, xDatatype) ); - m_rExport.AddAttribute(XML_NAMESPACE_XHTML, - token::XML_DATATYPE, datatype); - } - if (iter != ::comphelper::stl_begin(stmts)) // there is rdfs:label - { - m_rExport.AddAttribute(XML_NAMESPACE_XHTML, token::XML_CONTENT, - xContent->getValue()); - } + const ::rtl::OUString datatype( + makeCURIE(&m_rExport, xDatatype) ); + m_rExport.AddAttribute(XML_NAMESPACE_XHTML, + token::XML_DATATYPE, datatype); } - else + if (RDFaResult.Second) // there is xhtml:content { - OSL_ENSURE(false,"invalid RDFa: every property is rdfs:label"); - return; + m_rExport.AddAttribute(XML_NAMESPACE_XHTML, token::XML_CONTENT, + xContent->getValue()); } ::rtl::OUStringBuffer property; ::comphelper::intersperse( ::boost::make_transform_iterator( - iter, // omit RDFsLabel predicates! + ::comphelper::stl_begin(rStatements), ::boost::bind(&makeCURIE, &m_rExport, ::boost::bind(&rdf::Statement::Predicate, _1))), // argh, this must be the same type :( ::boost::make_transform_iterator( - ::comphelper::stl_end(stmts), + ::comphelper::stl_end(rStatements), ::boost::bind(&makeCURIE, &m_rExport, ::boost::bind(&rdf::Statement::Predicate, _1))), ::comphelper::OUStringBufferAppender(property), diff --git a/xmloff/source/core/RDFaImportHelper.cxx b/xmloff/source/core/RDFaImportHelper.cxx index 4257f36c33..a217b3115e 100644 --- a/xmloff/source/core/RDFaImportHelper.cxx +++ b/xmloff/source/core/RDFaImportHelper.cxx @@ -126,28 +126,39 @@ public: void InsertRDFaEntry(struct RDFaEntry const & i_rEntry); }; -/** store metadatable object and its RDFa attributes */ -struct SAL_DLLPRIVATE RDFaEntry +/** store parsed RDFa attributes */ +struct SAL_DLLPRIVATE ParsedRDFaAttributes { - uno::Reference<rdf::XMetadatable> m_xObject; ::rtl::OUString m_About; ::std::vector< ::rtl::OUString > m_Properties; ::rtl::OUString m_Content; ::rtl::OUString m_Datatype; - RDFaEntry(uno::Reference<rdf::XMetadatable> i_xObject, + ParsedRDFaAttributes( ::rtl::OUString const & i_rAbout, ::std::vector< ::rtl::OUString > const & i_rProperties, ::rtl::OUString const & i_rContent, ::rtl::OUString const & i_rDatatype) - : m_xObject(i_xObject) - , m_About(i_rAbout) + : m_About(i_rAbout) , m_Properties(i_rProperties) , m_Content(i_rContent) , m_Datatype(i_rDatatype) { } }; +/** store metadatable object and its RDFa attributes */ +struct SAL_DLLPRIVATE RDFaEntry +{ + uno::Reference<rdf::XMetadatable> m_xObject; + ::boost::shared_ptr<ParsedRDFaAttributes> m_pRDFaAttributes; + + RDFaEntry(uno::Reference<rdf::XMetadatable> const & i_xObject, + ::boost::shared_ptr<ParsedRDFaAttributes> const& i_pRDFaAttributes) + : m_xObject(i_xObject) + , m_pRDFaAttributes(i_pRDFaAttributes) + { } +}; + //////////////////////////////////////////////////////////////////////////// @@ -344,7 +355,7 @@ void RDFaInserter::InsertRDFaEntry( if (!i_rEntry.m_xObject.is()) return; const uno::Reference< rdf::XResource > xSubject( - MakeResource( i_rEntry.m_About ) ); + MakeResource( i_rEntry.m_pRDFaAttributes->m_About ) ); if (!xSubject.is()) { return; // invalid @@ -352,13 +363,15 @@ void RDFaInserter::InsertRDFaEntry( ::comphelper::SequenceAsVector< uno::Reference< rdf::XURI > > predicates; - predicates.reserve(i_rEntry.m_Properties.size()); + predicates.reserve(i_rEntry.m_pRDFaAttributes->m_Properties.size()); ::std::remove_copy_if( - ::boost::make_transform_iterator(i_rEntry.m_Properties.begin(), + ::boost::make_transform_iterator( + i_rEntry.m_pRDFaAttributes->m_Properties.begin(), ::boost::bind(&RDFaInserter::MakeURI, this, _1)), // argh, this must be the same type :( - ::boost::make_transform_iterator(i_rEntry.m_Properties.end(), + ::boost::make_transform_iterator( + i_rEntry.m_pRDFaAttributes->m_Properties.end(), ::boost::bind(&RDFaInserter::MakeURI, this, _1)), ::std::back_inserter(predicates), ref_is_null() ); @@ -375,9 +388,9 @@ void RDFaInserter::InsertRDFaEntry( } uno::Reference<rdf::XURI> xDatatype; - if (i_rEntry.m_Datatype.getLength()) + if (i_rEntry.m_pRDFaAttributes->m_Datatype.getLength()) { - xDatatype = MakeURI( i_rEntry.m_Datatype ); + xDatatype = MakeURI( i_rEntry.m_pRDFaAttributes->m_Datatype ); } try @@ -386,7 +399,8 @@ void RDFaInserter::InsertRDFaEntry( // this must be done _after_ importing the whole XML file, // to prevent collision between generated ids and ids in the file m_xRepository->setStatementRDFa(xSubject, predicates.getAsConstList(), - i_rEntry.m_xObject, i_rEntry.m_Content, xDatatype); + i_rEntry.m_xObject, + i_rEntry.m_pRDFaAttributes->m_Content, xDatatype); } catch (uno::Exception &) { @@ -405,9 +419,8 @@ RDFaImportHelper::~RDFaImportHelper() { } -void -RDFaImportHelper::AddRDFa( - uno::Reference<rdf::XMetadatable> i_xObject, +::boost::shared_ptr<ParsedRDFaAttributes> +RDFaImportHelper::ParseRDFa( ::rtl::OUString const & i_rAbout, ::rtl::OUString const & i_rProperty, ::rtl::OUString const & i_rContent, @@ -416,25 +429,58 @@ RDFaImportHelper::AddRDFa( if (!i_rProperty.getLength()) { OSL_TRACE("AddRDFa: invalid input: xhtml:property empty"); - return; - } - if (!i_xObject.is()) - { - OSL_ENSURE(false, "AddRDFa: invalid arg: null textcontent"); - return; + return ::boost::shared_ptr<ParsedRDFaAttributes>(); } // must parse CURIEs here: need namespace declaration context RDFaReader reader(GetImport()); const ::rtl::OUString about( reader.ReadURIOrSafeCURIE(i_rAbout) ); - if (!about.getLength()) return; + if (!about.getLength()) { + return ::boost::shared_ptr<ParsedRDFaAttributes>(); + } const ::std::vector< ::rtl::OUString > properties( reader.ReadCURIEs(i_rProperty) ); - if (!properties.size()) return; + if (!properties.size()) { + return ::boost::shared_ptr<ParsedRDFaAttributes>(); + } const ::rtl::OUString datatype( i_rDatatype.getLength() ? reader.ReadCURIE(i_rDatatype) : ::rtl::OUString() ); - m_RDFaEntries.push_back(RDFaEntry(i_xObject, - about, properties, i_rContent, datatype)); + return ::boost::shared_ptr<ParsedRDFaAttributes>( + new ParsedRDFaAttributes(about, properties, i_rContent, datatype)); +} + +void +RDFaImportHelper::AddRDFa( + uno::Reference<rdf::XMetadatable> const & i_xObject, + ::boost::shared_ptr<ParsedRDFaAttributes> & i_pRDFaAttributes) +{ + if (!i_xObject.is()) + { + OSL_ENSURE(false, "AddRDFa: invalid arg: null textcontent"); + return; + } + if (!i_pRDFaAttributes.get()) + { + OSL_ENSURE(false, "AddRDFa: invalid arg: null RDFa attributes"); + return; + } + m_RDFaEntries.push_back(RDFaEntry(i_xObject, i_pRDFaAttributes)); +} + +void +RDFaImportHelper::ParseAndAddRDFa( + uno::Reference<rdf::XMetadatable> const & i_xObject, + ::rtl::OUString const & i_rAbout, + ::rtl::OUString const & i_rProperty, + ::rtl::OUString const & i_rContent, + ::rtl::OUString const & i_rDatatype) +{ + ::boost::shared_ptr<ParsedRDFaAttributes> pAttributes( + ParseRDFa(i_rAbout, i_rProperty, i_rContent, i_rDatatype) ); + if (pAttributes.get()) + { + AddRDFa(i_xObject, pAttributes); + } } void RDFaImportHelper::InsertRDFa( diff --git a/xmloff/source/core/makefile.mk b/xmloff/source/core/makefile.mk index b881f9610f..4d663d3218 100644 --- a/xmloff/source/core/makefile.mk +++ b/xmloff/source/core/makefile.mk @@ -38,12 +38,6 @@ ENABLE_EXCEPTIONS=TRUE .INCLUDE : settings.mk .INCLUDE: $(PRJ)$/util$/makefile.pmk -# --- to build xmlkywd.obj in obj, too ----------------------------- - -OBJFILES = $(OBJ)$/xmlkywd.obj -LIB2TARGET =$(LB)$/xmlkywd.lib -LIB2OBJFILES =$(OBJFILES) - # --- Files -------------------------------------------------------- SLOFILES = \ @@ -59,7 +53,6 @@ SLOFILES = \ $(SLO)$/xmlexp.obj \ $(SLO)$/xmlictxt.obj \ $(SLO)$/xmlimp.obj \ - $(SLO)$/xmlkywd.obj \ $(SLO)$/xmltkmap.obj \ $(SLO)$/xmltoken.obj \ $(SLO)$/xmluconv.obj \ diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index a87141adf2..25965187f4 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -2535,6 +2535,22 @@ SvtSaveOptions::ODFDefaultVersion SvXMLExport::getDefaultVersion() const } void +SvXMLExport::AddAttributeIdLegacy( + sal_uInt16 const nLegacyPrefix, ::rtl::OUString const& rValue) +{ + switch (getDefaultVersion()) { + case SvtSaveOptions::ODFVER_011: // fall thru + case SvtSaveOptions::ODFVER_010: break; + default: // ODF 1.2: xml:id + AddAttribute(XML_NAMESPACE_XML, XML_ID, rValue); + } + // in ODF 1.1 this was form:id, anim:id, draw:id, or text:id + // backward compatibility: in ODF 1.2 write _both_ id attrs + AddAttribute(nLegacyPrefix, XML_ID, rValue); + // FIXME: this function simply assumes that rValue is unique +} + +void SvXMLExport::AddAttributeXmlId(uno::Reference<uno::XInterface> const & i_xIfc) { // check version >= 1.2 diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx index dda82a237f..e128bfc556 100644 --- a/xmloff/source/core/xmlimp.cxx +++ b/xmloff/source/core/xmlimp.cxx @@ -38,7 +38,6 @@ #include <xmloff/nmspmap.hxx> #include <xmloff/xmluconv.hxx> #include "xmlnmspe.hxx" -#include "xmlkywd.hxx" #include <xmloff/xmltoken.hxx> #include <xmloff/XMLFontStylesContext.hxx> #include <xmloff/xmlictxt.hxx> @@ -110,6 +109,7 @@ sal_Char __READONLY_DATA sXML_np__number[] = "_number"; sal_Char __READONLY_DATA sXML_np__svg[] = "_svg"; sal_Char __READONLY_DATA sXML_np__chart[] = "_chart"; sal_Char __READONLY_DATA sXML_np__math[] = "_math"; +sal_Char __READONLY_DATA sXML_np__form[] = "_form"; sal_Char __READONLY_DATA sXML_np__script[] = "_script"; sal_Char __READONLY_DATA sXML_np__config[] = "_config"; sal_Char __READONLY_DATA sXML_np__db[] = "_db"; @@ -293,7 +293,7 @@ void SvXMLImport::_InitCtor() mpNamespaceMap->Add( OUString( RTL_CONSTASCII_USTRINGPARAM ( sXML_np__math) ), GetXMLToken(XML_N_MATH), XML_NAMESPACE_MATH ); - mpNamespaceMap->Add( OUString( RTL_CONSTASCII_USTRINGPARAM ( sXML_namespace_form) ), + mpNamespaceMap->Add(OUString(RTL_CONSTASCII_USTRINGPARAM( sXML_np__form )), GetXMLToken(XML_N_FORM), XML_NAMESPACE_FORM ); mpNamespaceMap->Add( OUString( RTL_CONSTASCII_USTRINGPARAM ( sXML_np__script) ), @@ -675,7 +675,7 @@ void SAL_CALL SvXMLImport::startElement( const OUString& rName, } } else if( ( rAttrName.getLength() >= 5 ) && - ( rAttrName.compareToAscii( sXML_xmlns, 5 ) == 0 ) && + ( rAttrName.compareTo( GetXMLToken(XML_XMLNS), 5 ) == 0 ) && ( rAttrName.getLength() == 5 || ':' == rAttrName[5] ) ) { if( !pRewindMap ) @@ -1985,6 +1985,16 @@ void SvXMLImport::SetXmlId(uno::Reference<uno::XInterface> const & i_xIfc, } } +SAL_DLLPRIVATE ::xmloff::RDFaImportHelper & +SvXMLImport::GetRDFaImportHelper() +{ + if (!mpImpl->mpRDFaHelper.get()) + { + mpImpl->mpRDFaHelper.reset( new ::xmloff::RDFaImportHelper(*this) ); + } + return *mpImpl->mpRDFaHelper; +} + void SvXMLImport::AddRDFa(uno::Reference<rdf::XMetadatable> i_xObject, ::rtl::OUString const & i_rAbout, @@ -1994,11 +2004,8 @@ SvXMLImport::AddRDFa(uno::Reference<rdf::XMetadatable> i_xObject, { // N.B.: we only get called if i_xObject had xhtml:about attribute // (an empty attribute value is valid) - if (!mpImpl->mpRDFaHelper.get()) - { - mpImpl->mpRDFaHelper.reset( new ::xmloff::RDFaImportHelper(*this) ); - } - mpImpl->mpRDFaHelper->AddRDFa(i_xObject, + ::xmloff::RDFaImportHelper & rRDFaHelper( GetRDFaImportHelper() ); + rRDFaHelper.ParseAndAddRDFa(i_xObject, i_rAbout, i_rProperty, i_rContent, i_rDatatype); } diff --git a/xmloff/source/core/xmlkywd.cxx b/xmloff/source/core/xmlkywd.cxx deleted file mode 100644 index 78203ee781..0000000000 --- a/xmloff/source/core/xmlkywd.cxx +++ /dev/null @@ -1,38 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_xmloff.hxx" - -#ifndef _XMLOFF_XMLKYWD_HXX -#define XML_DEFINE_KEYWORDS -#include "xmlkywd.hxx" -#undef XML_DEFINE_KEYWORDS -#endif - - - diff --git a/xmloff/source/draw/XMLReplacementImageContext.cxx b/xmloff/source/draw/XMLReplacementImageContext.cxx index a8d1f96d21..e6f079dbfe 100644 --- a/xmloff/source/draw/XMLReplacementImageContext.cxx +++ b/xmloff/source/draw/XMLReplacementImageContext.cxx @@ -33,7 +33,6 @@ #include <xmloff/xmlimp.hxx> #include <xmloff/xmltoken.hxx> #include "xmlnmspe.hxx" -#include "xmlkywd.hxx" #include <xmloff/nmspmap.hxx> #include <xmloff/XMLBase64ImportContext.hxx> #include "XMLReplacementImageContext.hxx" diff --git a/xmloff/source/draw/animationexport.cxx b/xmloff/source/draw/animationexport.cxx index 47b36abf7c..890b63164c 100644 --- a/xmloff/source/draw/animationexport.cxx +++ b/xmloff/source/draw/animationexport.cxx @@ -28,24 +28,14 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" -#ifndef _COM_SUN_STAR_ANIMATIONS_XAnimateColor_HPP_ #include <com/sun/star/animations/XAnimateColor.hpp> -#endif -#ifndef _COM_SUN_STAR_ANIMATIONS_XAnimateSet_HPP_ #include <com/sun/star/animations/XAnimateSet.hpp> -#endif #include <com/sun/star/animations/XCommand.hpp> #include <com/sun/star/animations/Timing.hpp> #include <com/sun/star/animations/Event.hpp> -#ifndef _COM_SUN_STAR_ANIMATIONS_XAnimateMotion_HPP_ #include <com/sun/star/animations/XAnimateMotion.hpp> -#endif -#ifndef _COM_SUN_STAR_ANIMATIONS_XAnimateTransform_HPP_ #include <com/sun/star/animations/XAnimateTransform.hpp> -#endif -#ifndef _COM_SUN_STAR_ANIMATIONS_XTransitionFilter_HPP_ #include <com/sun/star/animations/XTransitionFilter.hpp> -#endif #include <com/sun/star/animations/XIterateContainer.hpp> #include <com/sun/star/animations/XAudio.hpp> #include <com/sun/star/animations/AnimationColorSpace.hpp> @@ -64,19 +54,12 @@ #include <com/sun/star/container/XEnumerationAccess.hpp> #include <com/sun/star/beans/NamedValue.hpp> #include <com/sun/star/presentation/EffectNodeType.hpp> -#ifndef _COM_SUN_STAR_PRESENTATION_EffectPresetClass_HPP_ #include <com/sun/star/presentation/EffectPresetClass.hpp> -#endif -#ifndef _COM_SUN_STAR_PRESENTATION_ParagraphTarget_HPP_ #include <com/sun/star/presentation/ParagraphTarget.hpp> -#endif #include <com/sun/star/presentation/TextAnimationType.hpp> #include <com/sun/star/presentation/ShapeAnimationSubType.hpp> #include <com/sun/star/presentation/EffectCommands.hpp> - -#ifndef _COM_SUN_STAR_DRAWING_XShape_HPP_ #include <com/sun/star/drawing/XShape.hpp> -#endif #include <tools/debug.hxx> #include <tools/time.hxx> @@ -780,7 +763,10 @@ void AnimationsExporterImpl::exportNode( const Reference< XAnimationNode >& xNod const OUString& rExportIdentifier = mrExport.getInterfaceToIdentifierMapper().getIdentifier( xNode ); if( rExportIdentifier.getLength() ) - mrExport.AddAttribute( XML_NAMESPACE_ANIMATION, XML_ID, rExportIdentifier ); + { + mrExport.AddAttributeIdLegacy( + XML_NAMESPACE_ANIMATION, rExportIdentifier); + } Any aTemp( xNode->getBegin() ); if( aTemp.hasValue() ) diff --git a/xmloff/source/draw/animationimport.cxx b/xmloff/source/draw/animationimport.cxx index ae29c424a7..38cccc95a0 100644 --- a/xmloff/source/draw/animationimport.cxx +++ b/xmloff/source/draw/animationimport.cxx @@ -47,18 +47,14 @@ #include <com/sun/star/animations/XAudio.hpp> #include <com/sun/star/animations/ValuePair.hpp> #include <com/sun/star/animations/AnimationColorSpace.hpp> -#ifndef _COM_SUN_STAR_PRESENTATION_EffectPresetClass_HPP_ #include <com/sun/star/presentation/EffectPresetClass.hpp> -#endif #include <com/sun/star/animations/Timing.hpp> #include <com/sun/star/animations/Event.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/xml/sax/XAttributeList.hpp> #include <com/sun/star/text/XTextCursor.hpp> #include <com/sun/star/text/XTextRangeCompare.hpp> -#ifndef _COM_SUN_STAR_PRESENTATION_ParagraphTarget_HPP_ #include <com/sun/star/presentation/ParagraphTarget.hpp> -#endif #include <com/sun/star/container/XEnumerationAccess.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/animations/EventTrigger.hpp> @@ -237,7 +233,8 @@ enum AnimationNodeAttributes ANA_IterateType, ANA_IterateInterval, ANA_Formula, - ANA_ID, + ANA_ANIMID, + ANA_XMLID, ANA_Group_Id, ANA_Command, ANA_Volume @@ -294,8 +291,8 @@ const SvXMLTokenMap& AnimationsImportHelperImpl::getAnimationNodeAttributeTokenM { XML_NAMESPACE_ANIMATION, XML_ITERATE_TYPE, (sal_uInt16)ANA_IterateType }, { XML_NAMESPACE_ANIMATION, XML_ITERATE_INTERVAL, (sal_uInt16)ANA_IterateInterval }, { XML_NAMESPACE_ANIMATION, XML_FORMULA, (sal_uInt16)ANA_Formula }, - { XML_NAMESPACE_ANIMATION, XML_ID, (sal_uInt16)ANA_ID }, - { XML_NAMESPACE_XML, XML_ID, (sal_uInt16)ANA_ID }, + { XML_NAMESPACE_ANIMATION, XML_ID, (sal_uInt16)ANA_ANIMID }, + { XML_NAMESPACE_XML, XML_ID, (sal_uInt16)ANA_XMLID }, { XML_NAMESPACE_PRESENTATION, XML_GROUP_ID, (sal_uInt16)ANA_Group_Id }, { XML_NAMESPACE_ANIMATION, XML_AUDIO_LEVEL, (sal_uInt16)ANA_Volume }, { XML_NAMESPACE_ANIMATION, XML_COMMAND, (sal_uInt16)ANA_Command }, @@ -808,6 +805,8 @@ void AnimationNodeContext::init_node( const ::com::sun::star::uno::Reference< : std::list< NamedValue > aUserData; XMLTokenEnum meAttributeName = XML_TOKEN_INVALID; OUString aFrom, aBy, aTo, aValues; + bool bHaveXmlId( false ); + OUString sXmlId; const sal_Int16 nCount = xAttrList.is() ? xAttrList->getLength() : 0; sal_uInt16 nEnum; @@ -1054,13 +1053,15 @@ void AnimationNodeContext::init_node( const ::com::sun::star::uno::Reference< : } break; - case ANA_ID: + case ANA_ANIMID: { - if( rValue.getLength() ) - { - Reference< XInterface > xRef( mxNode, UNO_QUERY ); - GetImport().getInterfaceToIdentifierMapper().registerReference( rValue, xRef ); - } + if (!bHaveXmlId) { sXmlId = rValue; } + } + break; + case ANA_XMLID: + { + sXmlId = rValue; + bHaveXmlId = true; } break; @@ -1251,6 +1252,13 @@ void AnimationNodeContext::init_node( const ::com::sun::star::uno::Reference< : } } + if (sXmlId.getLength()) + { + Reference< XInterface > const xRef( mxNode, UNO_QUERY ); + GetImport().getInterfaceToIdentifierMapper().registerReference( + sXmlId, xRef ); + } + sal_Int32 nUserDataCount = aUserData.size(); if( nUserDataCount ) { diff --git a/xmloff/source/draw/sdpropls.cxx b/xmloff/source/draw/sdpropls.cxx index 248f98800a..068f9c83c7 100644 --- a/xmloff/source/draw/sdpropls.cxx +++ b/xmloff/source/draw/sdpropls.cxx @@ -323,8 +323,9 @@ const XMLPropertyMapEntry aXMLSDPresPageProps[] = DPMAP( "FillStyle", XML_NAMESPACE_DRAW, XML_FILL, XML_SD_TYPE_FILLSTYLE, 0 ), DPMAP( "FillColor", XML_NAMESPACE_DRAW, XML_FILL_COLOR, XML_TYPE_COLOR, 0 ), DPMAP( "FillGradientName", XML_NAMESPACE_DRAW, XML_FILL_GRADIENT_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLGRADIENTNAME ), - DPMAP( "FillGradientStepCount", XML_NAMESPACE_DRAW, XML_GRADIENT_STEP_COUNT, XML_TYPE_NUMBER16, 0 ), + DPMAP( "FillGradientStepCount", XML_NAMESPACE_DRAW, XML_GRADIENT_STEP_COUNT, XML_TYPE_NUMBER, 0 ), DPMAP( "FillHatchName", XML_NAMESPACE_DRAW, XML_FILL_HATCH_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLHATCHNAME ), + GMAP( "FillBackground", XML_NAMESPACE_DRAW, XML_FILL_HATCH_SOLID, XML_TYPE_BOOL, 0 ), DPMAP( "FillBitmapName", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLBITMAPNAME ), DPMAP( "FillTransparenceGradientName", XML_NAMESPACE_DRAW, XML_OPACITY_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLTRANSNAME ), DPMAP( "FillBitmapSizeX", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_WIDTH, XML_SD_TYPE_FILLBITMAPSIZE|MID_FLAG_MULTI_PROPERTY, 0 ), diff --git a/xmloff/source/draw/sdxmlexp.cxx b/xmloff/source/draw/sdxmlexp.cxx index 9f574d0048..a0eb4b7e56 100644 --- a/xmloff/source/draw/sdxmlexp.cxx +++ b/xmloff/source/draw/sdxmlexp.cxx @@ -2011,7 +2011,9 @@ void SdXMLExport::_ExportContent() // write draw:id const OUString aPageId = getInterfaceToIdentifierMapper().getIdentifier( xDrawPage ); if( aPageId.getLength() != 0 ) - AddAttribute ( XML_NAMESPACE_DRAW, XML_ID, aPageId ); + { + AddAttributeIdLegacy(XML_NAMESPACE_DRAW, aPageId); + } // write page SvXMLElementExport aDPG(*this, XML_NAMESPACE_DRAW, XML_PAGE, sal_True, sal_True); diff --git a/xmloff/source/draw/sdxmlimp.cxx b/xmloff/source/draw/sdxmlimp.cxx index 3a57098c3a..9b44f4b19a 100644 --- a/xmloff/source/draw/sdxmlimp.cxx +++ b/xmloff/source/draw/sdxmlimp.cxx @@ -665,8 +665,8 @@ const SvXMLTokenMap& SdXMLImport::GetDrawPageAttrTokenMap() { XML_NAMESPACE_DRAW, XML_STYLE_NAME, XML_TOK_DRAWPAGE_STYLE_NAME }, { XML_NAMESPACE_DRAW, XML_MASTER_PAGE_NAME, XML_TOK_DRAWPAGE_MASTER_PAGE_NAME }, { XML_NAMESPACE_PRESENTATION, XML_PRESENTATION_PAGE_LAYOUT_NAME, XML_TOK_DRAWPAGE_PAGE_LAYOUT_NAME }, - { XML_NAMESPACE_DRAW, XML_ID, XML_TOK_DRAWPAGE_ID }, - { XML_NAMESPACE_XML, XML_ID, XML_TOK_DRAWPAGE_ID }, + { XML_NAMESPACE_DRAW, XML_ID, XML_TOK_DRAWPAGE_DRAWID }, + { XML_NAMESPACE_XML, XML_ID, XML_TOK_DRAWPAGE_XMLID }, { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_DRAWPAGE_HREF }, { XML_NAMESPACE_PRESENTATION, XML_USE_HEADER_NAME, XML_TOK_DRAWPAGE_USE_HEADER_NAME }, { XML_NAMESPACE_PRESENTATION, XML_USE_FOOTER_NAME, XML_TOK_DRAWPAGE_USE_FOOTER_NAME }, diff --git a/xmloff/source/draw/sdxmlimp_impl.hxx b/xmloff/source/draw/sdxmlimp_impl.hxx index 11fd210f2d..0bc22d9ae9 100644 --- a/xmloff/source/draw/sdxmlimp_impl.hxx +++ b/xmloff/source/draw/sdxmlimp_impl.hxx @@ -130,7 +130,8 @@ enum SdXMLDrawPageAttrTokenMap XML_TOK_DRAWPAGE_STYLE_NAME, XML_TOK_DRAWPAGE_MASTER_PAGE_NAME, XML_TOK_DRAWPAGE_PAGE_LAYOUT_NAME, - XML_TOK_DRAWPAGE_ID, + XML_TOK_DRAWPAGE_DRAWID, + XML_TOK_DRAWPAGE_XMLID, XML_TOK_DRAWPAGE_HREF, XML_TOK_DRAWPAGE_USE_HEADER_NAME, XML_TOK_DRAWPAGE_USE_FOOTER_NAME, diff --git a/xmloff/source/draw/shapeexport.cxx b/xmloff/source/draw/shapeexport.cxx index a2eb587a2a..1b5206880a 100644 --- a/xmloff/source/draw/shapeexport.cxx +++ b/xmloff/source/draw/shapeexport.cxx @@ -27,7 +27,11 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" + +#include <memory> + #include "unointerfacetouniqueidentifiermapper.hxx" +#include <com/sun/star/presentation/ClickAction.hpp> #include <com/sun/star/lang/ServiceNotRegisteredException.hpp> #include <com/sun/star/container/XChild.hpp> #include <com/sun/star/text/XText.hpp> @@ -43,9 +47,7 @@ #include <xmloff/xmluconv.hxx> #include "PropertySetMerger.hxx" -#ifndef _XMLOFF_SHAPEEXPORT_HXX #include <xmloff/shapeexport.hxx> -#endif #include "sdpropls.hxx" #include "sdxmlexp_impl.hxx" #include <xmloff/families.hxx> @@ -75,6 +77,8 @@ XMLShapeExport::XMLShapeExport(SvXMLExport& rExp, SvXMLExportPropertyMapper *pExtMapper ) : mrExport( rExp ), mnNextUniqueShapeId(1), + maShapesInfos(), + maCurrentShapesIter(maShapesInfos.end()), mbExportLayer( sal_False ), // #88546# init to FALSE mbHandleProgressBar( sal_False ), @@ -538,6 +542,38 @@ void XMLShapeExport::exportShape(const uno::Reference< drawing::XShape >& xShape } sal_Int32 nZIndex = 0; uno::Reference< beans::XPropertySet > xSet( xShape, uno::UNO_QUERY ); + + + ::std::auto_ptr< SvXMLElementExport > mpHyperlinkElement; + + // export hyperlinks with <a><shape/></a>. Currently only in draw since draw + // does not support document events + if( xSet.is() && (GetExport().GetModelType() == SvtModuleOptions::E_DRAW) ) try + { + presentation::ClickAction eAction = presentation::ClickAction_NONE; + xSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("OnClick"))) >>= eAction; + + if( (eAction == presentation::ClickAction_DOCUMENT) || + (eAction == presentation::ClickAction_BOOKMARK) ) + { + OUString sURL; + xSet->getPropertyValue(msBookmark) >>= sURL; + + if( sURL.getLength() ) + { + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sURL ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mpHyperlinkElement.reset( new SvXMLElementExport(mrExport, XML_NAMESPACE_DRAW, XML_A, sal_True, sal_True) ); + } + } + } + catch( uno::Exception& ) + { + DBG_ERROR("XMLShapeExport::exportShape(): exception during hyperlink export"); + } + + if( xSet.is() ) xSet->getPropertyValue(msZIndex) >>= nZIndex; @@ -639,7 +675,9 @@ void XMLShapeExport::exportShape(const uno::Reference< drawing::XShape >& xShape uno::Reference< uno::XInterface > xRef( xShape, uno::UNO_QUERY ); const OUString& rShapeId = mrExport.getInterfaceToIdentifierMapper().getIdentifier( xRef ); if( rShapeId.getLength() ) - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_ID, rShapeId ); + { + mrExport.AddAttributeIdLegacy(XML_NAMESPACE_DRAW, rShapeId); + } } // -------------------------- @@ -845,6 +883,8 @@ void XMLShapeExport::exportShape(const uno::Reference< drawing::XShape >& xShape } } + mpHyperlinkElement.reset(); + // #97489# #97111# // if there was an error and no element for the shape was exported // we need to clear the attribute list or the attributes will be diff --git a/xmloff/source/draw/ximpbody.cxx b/xmloff/source/draw/ximpbody.cxx index 70b6a26ceb..3742134b2d 100644 --- a/xmloff/source/draw/ximpbody.cxx +++ b/xmloff/source/draw/ximpbody.cxx @@ -62,6 +62,9 @@ SdXMLDrawPageContext::SdXMLDrawPageContext( SdXMLImport& rImport, : SdXMLGenericPageContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ) , mbHadSMILNodes( false ) { + bool bHaveXmlId( false ); + OUString sXmlId; + sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; for(sal_Int16 i=0; i < nAttrCount; i++) @@ -109,13 +112,17 @@ SdXMLDrawPageContext::SdXMLDrawPageContext( SdXMLImport& rImport, maUseDateTimeDeclName = sValue; break; } - - case XML_TOK_DRAWPAGE_ID: + case XML_TOK_DRAWPAGE_DRAWID: { - uno::Reference< uno::XInterface > xRef( rShapes.get() ); - GetImport().getInterfaceToIdentifierMapper().registerReference( sValue, xRef ); - break; + if (!bHaveXmlId) { sXmlId = sValue; } } + break; + case XML_TOK_DRAWPAGE_XMLID: + { + sXmlId = sValue; + bHaveXmlId = true; + } + break; case XML_TOK_DRAWPAGE_HREF: { maHREF = sValue; @@ -124,6 +131,12 @@ SdXMLDrawPageContext::SdXMLDrawPageContext( SdXMLImport& rImport, } } + if (sXmlId.getLength()) + { + uno::Reference< uno::XInterface > const xRef( rShapes.get() ); + GetImport().getInterfaceToIdentifierMapper().registerReference( + sXmlId, xRef ); + } GetImport().GetShapeImport()->startPage( rShapes ); uno::Reference< drawing::XDrawPage > xShapeDrawPage(rShapes, uno::UNO_QUERY); diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx index 0a0dbb98ff..3ce36cd8e6 100644 --- a/xmloff/source/draw/ximpshap.cxx +++ b/xmloff/source/draw/ximpshap.cxx @@ -372,31 +372,46 @@ void SdXMLShapeContext::EndElement() if( msHyperlink.getLength() != 0 ) try { - Reference< XEventsSupplier > xEventsSupplier( mxShape, UNO_QUERY_THROW ); - Reference< XNameReplace > xEvents( xEventsSupplier->getEvents(), UNO_QUERY_THROW ); + const OUString sBookmark( RTL_CONSTASCII_USTRINGPARAM( "Bookmark" ) ); - uno::Sequence< beans::PropertyValue > aProperties( 3 ); - aProperties[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "EventType" ) ); - aProperties[0].Handle = -1; - aProperties[0].Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM("Presentation") ); - aProperties[0].State = beans::PropertyState_DIRECT_VALUE; + Reference< XEventsSupplier > xEventsSupplier( mxShape, UNO_QUERY ); + if( xEventsSupplier.is() ) + { + const OUString sEventType( RTL_CONSTASCII_USTRINGPARAM( "EventType" ) ); + const OUString sClickAction( RTL_CONSTASCII_USTRINGPARAM( "ClickAction" ) ); + + Reference< XNameReplace > xEvents( xEventsSupplier->getEvents(), UNO_QUERY_THROW ); + + uno::Sequence< beans::PropertyValue > aProperties( 3 ); + aProperties[0].Name = sEventType; + aProperties[0].Handle = -1; + aProperties[0].Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM("Presentation") ); + aProperties[0].State = beans::PropertyState_DIRECT_VALUE; - aProperties[1].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "ClickAction" ) ); - aProperties[1].Handle = -1; - aProperties[1].Value <<= ::com::sun::star::presentation::ClickAction_DOCUMENT; - aProperties[1].State = beans::PropertyState_DIRECT_VALUE; + aProperties[1].Name = sClickAction; + aProperties[1].Handle = -1; + aProperties[1].Value <<= ::com::sun::star::presentation::ClickAction_DOCUMENT; + aProperties[1].State = beans::PropertyState_DIRECT_VALUE; - aProperties[2].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "Bookmark" ) ); - aProperties[2].Handle = -1; - aProperties[2].Value <<= msHyperlink; - aProperties[2].State = beans::PropertyState_DIRECT_VALUE; + aProperties[2].Name = sBookmark; + aProperties[2].Handle = -1; + aProperties[2].Value <<= msHyperlink; + aProperties[2].State = beans::PropertyState_DIRECT_VALUE; - const OUString sAPIEventName( RTL_CONSTASCII_USTRINGPARAM( "OnClick" ) ); - xEvents->replaceByName( sAPIEventName, Any( aProperties ) ); + const OUString sAPIEventName( RTL_CONSTASCII_USTRINGPARAM( "OnClick" ) ); + xEvents->replaceByName( sAPIEventName, Any( aProperties ) ); + } + else + { + // in draw use the Bookmark property + Reference< beans::XPropertySet > xSet( mxShape, UNO_QUERY_THROW ); + xSet->setPropertyValue( sBookmark, Any( msHyperlink ) ); + xSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "OnClick" ) ), Any( ::com::sun::star::presentation::ClickAction_DOCUMENT ) ); + } } catch( Exception& ) { - DBG_ERROR("xmloff::SdXMLShapeContext::EndElement(), exception caught!"); + DBG_ERROR("xmloff::SdXMLShapeContext::EndElement(), exception caught while setting hyperlink!"); } if( mxLockable.is() ) @@ -761,6 +776,7 @@ void SdXMLShapeContext::SetThumbnail() // this is called from the parent group for each unparsed attribute in the attribute list void SdXMLShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ) { + bool bHaveXmlId( false ); if( XML_NAMESPACE_DRAW == nPrefix ) { if( IsXMLToken( rLocalName, XML_ZINDEX ) ) @@ -769,7 +785,7 @@ void SdXMLShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUStr } else if( IsXMLToken( rLocalName, XML_ID ) ) { - maShapeId = rValue; + if (!bHaveXmlId) { maShapeId = rValue; }; } else if( IsXMLToken( rLocalName, XML_NAME ) ) { @@ -862,6 +878,7 @@ void SdXMLShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUStr if( IsXMLToken( rLocalName, XML_ID ) ) { maShapeId = rValue; + bHaveXmlId = true; } } } @@ -3668,7 +3685,7 @@ void SdXMLTableShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl:: SvXMLImportContext* SdXMLTableShapeContext::CreateChildContext( USHORT nPrefix, const ::rtl::OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& xAttrList ) { - if( mxTableImportContext.Is() ) + if( mxTableImportContext.Is() && (nPrefix == XML_NAMESPACE_TABLE) ) return mxTableImportContext->CreateChildContext(nPrefix, rLocalName, xAttrList); else return SdXMLShapeContext::CreateChildContext(nPrefix, rLocalName, xAttrList); diff --git a/xmloff/source/forms/elementexport.cxx b/xmloff/source/forms/elementexport.cxx index e82d2a3456..9fe201e65a 100644 --- a/xmloff/source/forms/elementexport.cxx +++ b/xmloff/source/forms/elementexport.cxx @@ -313,10 +313,8 @@ namespace xmloff if (CCA_CONTROL_ID & m_nIncludeCommon) { OSL_ENSURE(m_sControlId.getLength(), "OControlExport::exportInnerAttributes: have no control id for the control!"); - AddAttribute( - OAttributeMetaData::getCommonControlAttributeNamespace(CCA_CONTROL_ID), - OAttributeMetaData::getCommonControlAttributeName(CCA_CONTROL_ID), - m_sControlId); + m_rContext.getGlobalContext().AddAttributeIdLegacy( + XML_NAMESPACE_FORM, m_sControlId); #if OSL_DEBUG_LEVEL > 0 // reset the bit for later checking m_nIncludeCommon = m_nIncludeCommon & ~CCA_CONTROL_ID; @@ -693,7 +691,7 @@ namespace xmloff if (m_nIncludeCommon & CCA_TARGET_LOCATION) { - exportTargetLocationAttribute(); + exportTargetLocationAttribute(false); #if OSL_DEBUG_LEVEL > 0 // reset the bit for later checking m_nIncludeCommon = m_nIncludeCommon & ~CCA_TARGET_LOCATION; @@ -2035,6 +2033,12 @@ namespace xmloff OAttributeMetaData::getFormAttributeNamespace(eStringPropertyIds[i]), OAttributeMetaData::getFormAttributeName(eStringPropertyIds[i]), aStringPropertyNames[i]); + + // Since as per ODF 1.2, xlink:href and xlink:type need to exist either both or none, + // we need to write xlink:type, too, even if it carries no information. + // #i111035# / 2010-04-141/ frank.schoenheit@sun.com + AddAttributeASCII( XML_NAMESPACE_XLINK, "type", "simple" ); + // now export the data source name or databaselocation or connection resource ::rtl::OUString sPropValue; m_xProps->getPropertyValue( PROPERTY_DATASOURCENAME ) >>= sPropValue; @@ -2134,7 +2138,7 @@ namespace xmloff // the target frame exportTargetFrameAttribute(); // the target URL - exportTargetLocationAttribute(); + exportTargetLocationAttribute(true); // #i110911# add type attribute (for form, but not for control) // master fields exportStringSequenceAttribute( diff --git a/xmloff/source/forms/elementimport.cxx b/xmloff/source/forms/elementimport.cxx index 6f78786e78..036d803e34 100644 --- a/xmloff/source/forms/elementimport.cxx +++ b/xmloff/source/forms/elementimport.cxx @@ -586,12 +586,21 @@ namespace xmloff //--------------------------------------------------------------------- void OControlImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { - static const sal_Char* pControlIdAttributeName = OAttributeMetaData::getCommonControlAttributeName(CCA_CONTROL_ID); static const sal_Char* pLinkedCellAttributeName = OAttributeMetaData::getBindingAttributeName(BA_LINKED_CELL); - if ( !m_sControlId.getLength() && _rLocalName.equalsAscii( pControlIdAttributeName ) ) - { // it's the control id - m_sControlId = _rValue; + if (IsXMLToken(_rLocalName, XML_ID)) + { // it's the control id + if (XML_NAMESPACE_XML == _nNamespaceKey) + { + m_sControlId = _rValue; + } + else if (XML_NAMESPACE_FORM == _nNamespaceKey) + { + if (!m_sControlId.getLength()) + { + m_sControlId = _rValue; + } + } } else if ( _rLocalName.equalsAscii( pLinkedCellAttributeName ) ) { // it's the address of a spreadsheet cell diff --git a/xmloff/source/forms/formattributes.cxx b/xmloff/source/forms/formattributes.cxx index 5fd09a451f..430b2573af 100644 --- a/xmloff/source/forms/formattributes.cxx +++ b/xmloff/source/forms/formattributes.cxx @@ -53,7 +53,7 @@ namespace xmloff case CCA_NAME: return "name"; case CCA_SERVICE_NAME: return "control-implementation"; case CCA_BUTTON_TYPE: return "button-type"; - case CCA_CONTROL_ID: return "id"; +// disabled(AddAttributeIdLegacy) case CCA_CONTROL_ID: return "id"; case CCA_CURRENT_SELECTED: return "current-selected"; case CCA_CURRENT_VALUE: return "current-value"; case CCA_DISABLED: return "disabled"; diff --git a/xmloff/source/forms/propertyexport.cxx b/xmloff/source/forms/propertyexport.cxx index e6140c03c3..41b7587ce2 100644 --- a/xmloff/source/forms/propertyexport.cxx +++ b/xmloff/source/forms/propertyexport.cxx @@ -420,7 +420,7 @@ namespace xmloff } //--------------------------------------------------------------------- - void OPropertyExport::exportRelativeTargetLocation(const ConstAsciiString& _sPropertyName,sal_Int32 _nProperty) + void OPropertyExport::exportRelativeTargetLocation(const ConstAsciiString& _sPropertyName,sal_Int32 _nProperty,bool _bAddType) { DBG_CHECK_PROPERTY( _sPropertyName, ::rtl::OUString ); @@ -433,6 +433,10 @@ namespace xmloff ,OAttributeMetaData::getCommonControlAttributeName(_nProperty) , sTargetLocation); + // #i110911# add xlink:type="simple" if required + if (_bAddType) + AddAttribute(XML_NAMESPACE_XLINK, token::XML_TYPE, token::XML_SIMPLE); + exportedProperty(_sPropertyName); } //--------------------------------------------------------------------- diff --git a/xmloff/source/forms/propertyexport.hxx b/xmloff/source/forms/propertyexport.hxx index 8ca221bbe8..28cd7ea84b 100644 --- a/xmloff/source/forms/propertyexport.hxx +++ b/xmloff/source/forms/propertyexport.hxx @@ -69,7 +69,7 @@ namespace xmloff StringSet m_aRemainingProps; // see examinePersistence - void exportRelativeTargetLocation(const ConstAsciiString& _sPropertyName,sal_Int32 _nProperty); + void exportRelativeTargetLocation(const ConstAsciiString& _sPropertyName,sal_Int32 _nProperty,bool _bAddType); protected: IFormsExportContext& m_rContext; @@ -230,8 +230,10 @@ namespace xmloff <p>The value of this attribute is extracted from the TargetURL property of the object given.</p> <p>The property needs a special handling because the URL's need to be made relative</p> + + <p>If _bAddType is set, an additional xlink:type="simple" attribute is also added.</p> */ - inline void exportTargetLocationAttribute() { exportRelativeTargetLocation(PROPERTY_TARGETURL,CCA_TARGET_LOCATION); } + inline void exportTargetLocationAttribute(bool _bAddType) { exportRelativeTargetLocation(PROPERTY_TARGETURL,CCA_TARGET_LOCATION,_bAddType); } /** add the form:image attribute to the export context. @@ -239,7 +241,7 @@ namespace xmloff <p>The property needs a special handling because the URL's need to be made relative</p> */ - inline void exportImageDataAttribute() { exportRelativeTargetLocation(PROPERTY_IMAGEURL,CCA_IMAGE_DATA); } + inline void exportImageDataAttribute() { exportRelativeTargetLocation(PROPERTY_IMAGEURL,CCA_IMAGE_DATA,false); } /** flag the style properties as 'already exported' diff --git a/xmloff/source/forms/propertyimport.cxx b/xmloff/source/forms/propertyimport.cxx index b5c20be581..9cf2bea366 100644 --- a/xmloff/source/forms/propertyimport.cxx +++ b/xmloff/source/forms/propertyimport.cxx @@ -363,7 +363,7 @@ void OPropertyImport::handleAttribute(sal_uInt16 /*_nNamespaceKey*/, const ::rtl implPushBackPropertyValue( aNewValue ); } #if OSL_DEBUG_LEVEL > 0 - else + else if (!token::IsXMLToken(_rLocalName, token::XML_TYPE)) // xlink:type is valid but ignored for <form:form> { ::rtl::OString sMessage( "OPropertyImport::handleAttribute: Can't handle the following:\n" ); sMessage += ::rtl::OString( " Attribute name: " ); diff --git a/xmloff/source/meta/xmlmetae.cxx b/xmloff/source/meta/xmlmetae.cxx index 938dfb41f6..3b487f48bf 100644 --- a/xmloff/source/meta/xmlmetae.cxx +++ b/xmloff/source/meta/xmlmetae.cxx @@ -475,7 +475,9 @@ SvXMLMetaExport::startElement(const ::rtl::OUString & i_rName, } // finally, start the element - mrExport.StartElement(i_rName, sal_True); //FIXME:whitespace? + // #i107240# no whitespace here, because the DOM may already contain + // whitespace, which is not cleared when loading and thus accumulates. + mrExport.StartElement(i_rName, (m_level > 1) ? sal_False : sal_True); ++m_level; } diff --git a/xmloff/source/script/XMLScriptExportHandler.cxx b/xmloff/source/script/XMLScriptExportHandler.cxx index be72ceba52..0e610cb15f 100644 --- a/xmloff/source/script/XMLScriptExportHandler.cxx +++ b/xmloff/source/script/XMLScriptExportHandler.cxx @@ -75,6 +75,9 @@ void XMLScriptExportHandler::Export( OUString sTmp; rValues[i].Value >>= sTmp; rExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, sTmp); + + // #i110911# xlink:type="simple" is required + rExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE); } // else: disregard } diff --git a/xmloff/source/style/WordWrapPropertyHdl.cxx b/xmloff/source/style/WordWrapPropertyHdl.cxx index f0ff8f778b..f98604d688 100644 --- a/xmloff/source/style/WordWrapPropertyHdl.cxx +++ b/xmloff/source/style/WordWrapPropertyHdl.cxx @@ -29,7 +29,6 @@ #include "precompiled_xmloff.hxx" #include <xmloff/xmlimp.hxx> #include <xmloff/WordWrapPropertyHdl.hxx> -#include "xmlkywd.hxx" #include <xmloff/xmltoken.hxx> #include <xmloff/xmluconv.hxx> #include <comphelper/extract.hxx> diff --git a/xmloff/source/style/XMLClipPropertyHandler.cxx b/xmloff/source/style/XMLClipPropertyHandler.cxx index c241c1894b..a0be804b98 100644 --- a/xmloff/source/style/XMLClipPropertyHandler.cxx +++ b/xmloff/source/style/XMLClipPropertyHandler.cxx @@ -32,7 +32,6 @@ #include <rtl/ustrbuf.hxx> #include <com/sun/star/text/GraphicCrop.hpp> #include <xmloff/xmluconv.hxx> -#include <xmlkywd.hxx> #include <xmloff/xmltoken.hxx> using ::rtl::OUString; @@ -77,7 +76,7 @@ sal_Bool XMLClipPropertyHandler::importXML( const OUString& rStrImpValue, uno::A sal_Bool bRet = sal_False; sal_Int32 nLen = rStrImpValue.getLength(); if( nLen > 6 && - 0 == rStrImpValue.compareToAscii( sXML_rect, 4 ) && + 0 == rStrImpValue.compareTo( GetXMLToken(XML_RECT), 4 ) && rStrImpValue[4] == '(' && rStrImpValue[nLen-1] == ')' ) { diff --git a/xmloff/source/style/XMLFontAutoStylePool.cxx b/xmloff/source/style/XMLFontAutoStylePool.cxx index f671fa214a..e376b659ff 100644 --- a/xmloff/source/style/XMLFontAutoStylePool.cxx +++ b/xmloff/source/style/XMLFontAutoStylePool.cxx @@ -27,18 +27,19 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" + #include <tools/debug.hxx> #include <svl/cntnrsrt.hxx> #include <tools/fontenum.hxx> + #include "xmlnmspe.hxx" #include <xmloff/xmltoken.hxx> #include <xmloff/xmluconv.hxx> -#ifndef _XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX #include "fonthdl.hxx" -#endif #include <xmloff/xmlexp.hxx> #include <xmloff/XMLFontAutoStylePool.hxx> + using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/XMLFontStylesContext.cxx b/xmloff/source/style/XMLFontStylesContext.cxx index 8322951197..e98a9007ae 100644 --- a/xmloff/source/style/XMLFontStylesContext.cxx +++ b/xmloff/source/style/XMLFontStylesContext.cxx @@ -28,25 +28,20 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" -#ifndef _COM_SUN_STAR_AWT_FONTFAMILY_HPP #include <com/sun/star/awt/FontFamily.hpp> -#endif -#ifndef _COM_SUN_STAR_AWT_FONTPITCH_HPP #include <com/sun/star/awt/FontPitch.hpp> -#endif + +#include <rtl/logfile.hxx> + #include <xmloff/nmspmap.hxx> #include "xmlnmspe.hxx" #include <xmloff/xmltoken.hxx> -#ifndef _XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX #include "fonthdl.hxx" -#endif #include <xmloff/xmlimp.hxx> #include <xmloff/maptype.hxx> - -#ifndef _XMLOFF_XMLFONTSTYLESCONTEXT_HXX #include <xmloff/XMLFontStylesContext.hxx> -#endif -#include <rtl/logfile.hxx> + + using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/XMLRectangleMembersHandler.cxx b/xmloff/source/style/XMLRectangleMembersHandler.cxx index 4169935bd6..9a3b8297b4 100644 --- a/xmloff/source/style/XMLRectangleMembersHandler.cxx +++ b/xmloff/source/style/XMLRectangleMembersHandler.cxx @@ -48,11 +48,6 @@ XMLRectangleMembersHdl::XMLRectangleMembersHdl( sal_Int32 nType ) { } - sal_Int32 X; - sal_Int32 Y; - sal_Int32 Width; - sal_Int32 Height; - XMLRectangleMembersHdl::~XMLRectangleMembersHdl() { } diff --git a/xmloff/source/style/adjushdl.cxx b/xmloff/source/style/adjushdl.cxx index 7e024e4ca9..3879069f3f 100644 --- a/xmloff/source/style/adjushdl.cxx +++ b/xmloff/source/style/adjushdl.cxx @@ -35,10 +35,6 @@ #include <com/sun/star/style/ParagraphAdjust.hpp> #include <com/sun/star/uno/Any.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using namespace ::com::sun::star; using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/backhdl.cxx b/xmloff/source/style/backhdl.cxx index a65738c554..d82008ecf8 100644 --- a/xmloff/source/style/backhdl.cxx +++ b/xmloff/source/style/backhdl.cxx @@ -34,10 +34,6 @@ #include <com/sun/star/uno/Any.hxx> #include <rtl/ustrbuf.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/bordrhdl.cxx b/xmloff/source/style/bordrhdl.cxx index 141e592d23..df58f82b79 100644 --- a/xmloff/source/style/bordrhdl.cxx +++ b/xmloff/source/style/bordrhdl.cxx @@ -34,10 +34,6 @@ #include <xmloff/xmluconv.hxx> #include <rtl/ustrbuf.hxx> #include <com/sun/star/uno/Any.hxx> - -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif #include <com/sun/star/table/BorderLine.hpp> using ::rtl::OUString; diff --git a/xmloff/source/style/breakhdl.cxx b/xmloff/source/style/breakhdl.cxx index a8ed90188c..1c8e125620 100644 --- a/xmloff/source/style/breakhdl.cxx +++ b/xmloff/source/style/breakhdl.cxx @@ -34,10 +34,6 @@ #include <com/sun/star/style/BreakType.hpp> #include <com/sun/star/uno/Any.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/cdouthdl.cxx b/xmloff/source/style/cdouthdl.cxx index d1e3c59ecc..6ecc271afa 100644 --- a/xmloff/source/style/cdouthdl.cxx +++ b/xmloff/source/style/cdouthdl.cxx @@ -32,15 +32,9 @@ #include <xmloff/xmluconv.hxx> #include <rtl/ustrbuf.hxx> -#ifndef _COM_SUN_STAR_AWT_FONTSTRIKEOUT_HPP #include <com/sun/star/awt/FontStrikeout.hpp> -#endif #include <com/sun/star/uno/Any.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/chrhghdl.cxx b/xmloff/source/style/chrhghdl.cxx index 24de540aa1..90df3338a2 100644 --- a/xmloff/source/style/chrhghdl.cxx +++ b/xmloff/source/style/chrhghdl.cxx @@ -35,10 +35,6 @@ #include <rtl/ustrbuf.hxx> #include <com/sun/star/uno/Any.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/chrlohdl.cxx b/xmloff/source/style/chrlohdl.cxx index 68eb011178..4b61a0af55 100644 --- a/xmloff/source/style/chrlohdl.cxx +++ b/xmloff/source/style/chrlohdl.cxx @@ -34,10 +34,6 @@ #include <xmloff/xmluconv.hxx> #include <rtl/ustrbuf.hxx> #include <com/sun/star/uno/Any.hxx> - -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif #include <com/sun/star/lang/Locale.hpp> using ::rtl::OUString; diff --git a/xmloff/source/style/csmaphdl.cxx b/xmloff/source/style/csmaphdl.cxx index 7ca6e9f0fd..8a65509b21 100644 --- a/xmloff/source/style/csmaphdl.cxx +++ b/xmloff/source/style/csmaphdl.cxx @@ -32,14 +32,8 @@ #include <xmloff/xmluconv.hxx> #include <rtl/ustrbuf.hxx> #include <com/sun/star/style/CaseMap.hpp> - - #include <com/sun/star/uno/Any.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/escphdl.cxx b/xmloff/source/style/escphdl.cxx index 019f0ef9da..3a170f1899 100644 --- a/xmloff/source/style/escphdl.cxx +++ b/xmloff/source/style/escphdl.cxx @@ -35,10 +35,6 @@ #include <rtl/ustrbuf.hxx> #include <com/sun/star/uno/Any.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/fonthdl.cxx b/xmloff/source/style/fonthdl.cxx index bbaf3d9b47..e2ecf93909 100644 --- a/xmloff/source/style/fonthdl.cxx +++ b/xmloff/source/style/fonthdl.cxx @@ -28,18 +28,13 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" -#ifndef _XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX #include <fonthdl.hxx> -#endif #include <xmloff/xmltoken.hxx> #include <xmloff/xmluconv.hxx> #include <rtl/ustrbuf.hxx> #include <com/sun/star/uno/Any.hxx> #include <tools/fontenum.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif #include <tools/string.hxx> using ::rtl::OUString; diff --git a/xmloff/source/style/fonthdl.hxx b/xmloff/source/style/fonthdl.hxx index 5f2ff08334..2a24d91545 100644 --- a/xmloff/source/style/fonthdl.hxx +++ b/xmloff/source/style/fonthdl.hxx @@ -25,8 +25,8 @@ * ************************************************************************/ -#ifndef _XMLOFF_PROPERTYHANDLER_FONTYPES_HXX -#define _XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX +#ifndef XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX +#define XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX #include <xmloff/xmlprhdl.hxx> @@ -79,4 +79,4 @@ public: }; -#endif // _XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX +#endif // XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX diff --git a/xmloff/source/style/lspachdl.cxx b/xmloff/source/style/lspachdl.cxx index 678167427f..44c1a57e90 100644 --- a/xmloff/source/style/lspachdl.cxx +++ b/xmloff/source/style/lspachdl.cxx @@ -37,10 +37,6 @@ #include <com/sun/star/style/LineSpacing.hpp> #include <com/sun/star/style/LineSpacingMode.hpp> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/postuhdl.cxx b/xmloff/source/style/postuhdl.cxx index 3d5c55db53..021e65a9c2 100644 --- a/xmloff/source/style/postuhdl.cxx +++ b/xmloff/source/style/postuhdl.cxx @@ -35,10 +35,6 @@ #include <com/sun/star/awt/FontSlant.hpp> #include <tools/fontenum.hxx> -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif - using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/prhdlfac.cxx b/xmloff/source/style/prhdlfac.cxx index 731c80e138..8062758566 100644 --- a/xmloff/source/style/prhdlfac.cxx +++ b/xmloff/source/style/prhdlfac.cxx @@ -27,10 +27,13 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" + #include <com/sun/star/drawing/ColorMode.hpp> #include <com/sun/star/text/HorizontalAdjust.hpp> #include <com/sun/star/text/WritingMode2.hpp> + #include <tools/debug.hxx> + #include <xmloff/prhdlfac.hxx> #include <xmloff/xmltypes.hxx> #include <xmloff/xmltoken.hxx> @@ -39,9 +42,7 @@ #include <xmloff/XMLConstantsPropertyHandler.hxx> #include "cdouthdl.hxx" #include "csmaphdl.hxx" -#ifndef _XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX #include "fonthdl.hxx" -#endif #include "kernihdl.hxx" #include <postuhdl.hxx> #include "shadwhdl.hxx" diff --git a/xmloff/source/style/styleexp.cxx b/xmloff/source/style/styleexp.cxx index b2b2ed29e3..bff67f9e3b 100644 --- a/xmloff/source/style/styleexp.cxx +++ b/xmloff/source/style/styleexp.cxx @@ -39,7 +39,6 @@ //#include "xmlitmap.hxx" #endif #include <xmloff/xmluconv.hxx> -#include "xmlkywd.hxx" #include <xmloff/attrlist.hxx> #include <xmloff/xmlprmap.hxx> #include <xmloff/xmlexppr.hxx> diff --git a/xmloff/source/style/undlihdl.cxx b/xmloff/source/style/undlihdl.cxx index 12a4a3e79e..8dd9e5f2e8 100644 --- a/xmloff/source/style/undlihdl.cxx +++ b/xmloff/source/style/undlihdl.cxx @@ -34,13 +34,7 @@ #include <com/sun/star/uno/Any.hxx> -#ifndef _COM_SUN_STAR_AWT_FONTUNDERLINE_HPP #include <com/sun/star/awt/FontUnderline.hpp> -#endif - -#ifndef _XMLOFF_XMLEMENT_HXX -#include <xmloff/xmlelement.hxx> -#endif using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/style/xmlimppr.cxx b/xmloff/source/style/xmlimppr.cxx index 5212442340..1c5ddc771f 100644 --- a/xmloff/source/style/xmlimppr.cxx +++ b/xmloff/source/style/xmlimppr.cxx @@ -40,7 +40,6 @@ #include <xmloff/xmlimppr.hxx> #include <xmloff/xmlimp.hxx> -#include "xmlkywd.hxx" #include "unoatrcn.hxx" #include "xmlnmspe.hxx" #include <xmloff/xmltoken.hxx> diff --git a/xmloff/source/style/xmlnume.cxx b/xmloff/source/style/xmlnume.cxx index eecf90e27d..39614be1f2 100644 --- a/xmloff/source/style/xmlnume.cxx +++ b/xmloff/source/style/xmlnume.cxx @@ -27,15 +27,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" -#include <rtl/ustrbuf.hxx> -#include <tools/debug.hxx> -#include <xmloff/nmspmap.hxx> -#include "xmlnmspe.hxx" -#include <xmloff/xmltoken.hxx> -#include <xmloff/xmluconv.hxx> -#ifndef _XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX -#include "fonthdl.hxx" -#endif + #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> #include <com/sun/star/style/NumberingType.hpp> #include <com/sun/star/style/XStyle.hpp> @@ -52,11 +44,22 @@ // <-- #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/beans/XPropertySet.hpp> + +#include <rtl/ustrbuf.hxx> + +#include <tools/debug.hxx> + +#include <xmloff/nmspmap.hxx> +#include "xmlnmspe.hxx" +#include <xmloff/xmltoken.hxx> +#include <xmloff/xmluconv.hxx> +#include "fonthdl.hxx" #include "XMLTextListAutoStylePool.hxx" #include <xmloff/xmlnume.hxx> #include <xmloff/xmlexp.hxx> #include <tools/fontenum.hxx> + using ::rtl::OUString; using ::rtl::OUStringBuffer; @@ -294,9 +297,12 @@ void SvxXMLNumRuleExport::exportLevelStyle( INT32 nLevel, OUStringBuffer sTmp; sTmp.append( nLevel + 1 ); GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_LEVEL, sTmp.makeStringAndClear() ); - if( sTextStyleName.getLength() > 0 ) + // #i110694#: no style-name on list-level-style-image + if ((sTextStyleName.getLength() > 0) && (NumberingType::BITMAP != eType)) + { GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_STYLE_NAME, GetExport().EncodeStyleName( sTextStyleName ) ); + } if( sPrefix.getLength() > 0 ) GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_NUM_PREFIX, sPrefix ); if( sSuffix.getLength() > 0 ) diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx index 172868c41a..01d684c7c9 100644 --- a/xmloff/source/style/xmlnumfi.cxx +++ b/xmloff/source/style/xmlnumfi.cxx @@ -2149,7 +2149,7 @@ sal_Bool lcl_IsAtEnd( rtl::OUStringBuffer& rBuffer, const String& rToken ) if ( nTokLen > nBufLen ) return sal_False; - sal_Int32 nStartPos = nTokLen - nBufLen; + sal_Int32 nStartPos = nBufLen - nTokLen; for ( xub_StrLen nTokPos = 0; nTokPos < nTokLen; nTokPos++ ) if ( rToken.GetChar( nTokPos ) != rBuffer.charAt( nStartPos + nTokPos ) ) return sal_False; diff --git a/xmloff/source/style/xmlnumi.cxx b/xmloff/source/style/xmlnumi.cxx index 76ae1bac84..3450620a93 100644 --- a/xmloff/source/style/xmlnumi.cxx +++ b/xmloff/source/style/xmlnumi.cxx @@ -27,16 +27,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" -#include <rtl/ustrbuf.hxx> -#include <tools/urlobj.hxx> -#include <tools/debug.hxx> -#include <tools/fontenum.hxx> -#include <xmloff/xmltkmap.hxx> -#include <xmloff/nmspmap.hxx> -#include "xmlnmspe.hxx" -#include <xmloff/xmlimp.hxx> -#include <xmloff/XMLBase64ImportContext.hxx> #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/awt/Size.hpp> @@ -51,26 +42,33 @@ #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/style/XStyle.hpp> #include <com/sun/star/io/XOutputStream.hpp> + +#include <rtl/ustrbuf.hxx> + +#include <tools/urlobj.hxx> +#include <tools/debug.hxx> +#include <tools/fontenum.hxx> + +#include <xmloff/xmltkmap.hxx> +#include <xmloff/nmspmap.hxx> +#include "xmlnmspe.hxx" +#include <xmloff/xmlimp.hxx> +#include <xmloff/XMLBase64ImportContext.hxx> #include <xmloff/xmltoken.hxx> #include "i18nmap.hxx" #include <xmloff/xmluconv.hxx> -#ifndef _XMLOFF_PROPERTYHANDLER_FONTTYPES_HXX #include "fonthdl.hxx" -#endif -#ifndef _XMLOFF_XMLFONTSTYLESCONTEXT_HXX #include <xmloff/XMLFontStylesContext.hxx> -#endif -#ifndef _XMLOFF_FAMILIES_HXX #include <xmloff/families.hxx> -#endif #include <xmloff/maptype.hxx> - #include <xmloff/xmlnumi.hxx> #define _SVSTDARR_USHORTS #include <svl/svstdarr.hxx> + + using ::rtl::OUString; using ::rtl::OUStringBuffer; diff --git a/xmloff/source/text/XMLChangedRegionImportContext.cxx b/xmloff/source/text/XMLChangedRegionImportContext.cxx index 1411816e8d..6b34d1adb7 100644 --- a/xmloff/source/text/XMLChangedRegionImportContext.cxx +++ b/xmloff/source/text/XMLChangedRegionImportContext.cxx @@ -68,6 +68,7 @@ void XMLChangedRegionImportContext::StartElement( const Reference<XAttributeList> & xAttrList) { // process attributes: id + bool bHaveXmlId( false ); sal_Int16 nLength = xAttrList->getLength(); for(sal_Int16 nAttr = 0; nAttr < nLength; nAttr++) { @@ -77,11 +78,19 @@ void XMLChangedRegionImportContext::StartElement( &sLocalName ); const OUString sValue = xAttrList->getValueByIndex(nAttr); - if ( XML_NAMESPACE_TEXT == nPrefix ) + if (XML_NAMESPACE_XML == nPrefix) { - if( IsXMLToken( sLocalName, XML_ID ) ) + if (IsXMLToken(sLocalName, XML_ID)) { sID = sValue; + bHaveXmlId = true; + } + } + else if (XML_NAMESPACE_TEXT == nPrefix) + { + if (IsXMLToken(sLocalName, XML_ID)) + { + if (!bHaveXmlId) { sID = sValue; } } else if( IsXMLToken( sLocalName, XML_MERGE_LAST_PARAGRAPH ) ) { diff --git a/xmloff/source/text/XMLIndexTOCContext.cxx b/xmloff/source/text/XMLIndexTOCContext.cxx index 140a069ebf..092af4fba7 100644 --- a/xmloff/source/text/XMLIndexTOCContext.cxx +++ b/xmloff/source/text/XMLIndexTOCContext.cxx @@ -50,14 +50,11 @@ #include <xmloff/txtimp.hxx> #include <xmloff/nmspmap.hxx> #include "xmlnmspe.hxx" -#include "xmlkywd.hxx" #include <xmloff/xmltoken.hxx> #include <xmloff/prstylei.hxx> #include "xmlerror.hxx" #include <xmloff/xmluconv.hxx> -#include <tools/debug.hxx> #include <rtl/ustring.hxx> -#include <tools/debug.hxx> using namespace ::com::sun::star::uno; @@ -85,15 +82,15 @@ static const sal_Char* aIndexServiceMap[] = "com.sun.star.text.IllustrationsIndex" }; -static const sal_Char* aIndexSourceElementMap[] = +static const XMLTokenEnum aIndexSourceElementMap[] = { - sXML_table_of_content_source, - sXML_alphabetical_index_source, - sXML_table_index_source, - sXML_object_index_source, - sXML_bibliography_source, - sXML_user_index_source, - sXML_illustration_index_source + XML_TABLE_OF_CONTENT_SOURCE, + XML_ALPHABETICAL_INDEX_SOURCE, + XML_TABLE_INDEX_SOURCE, + XML_OBJECT_INDEX_SOURCE, + XML_BIBLIOGRAPHY_SOURCE, + XML_USER_INDEX_SOURCE, + XML_ILLUSTRATION_INDEX_SOURCE }; SvXMLEnumMapEntry __READONLY_DATA aIndexTypeMap[] = @@ -117,7 +114,6 @@ XMLIndexTOCContext::XMLIndexTOCContext( , sTitle(RTL_CONSTASCII_USTRINGPARAM("Title")) , sIsProtected(RTL_CONSTASCII_USTRINGPARAM("IsProtected")) , sName(RTL_CONSTASCII_USTRINGPARAM("Name")) -, pSourceElementName(NULL) , bValid(sal_False) { if (XML_NAMESPACE_TEXT == nPrfx) @@ -126,13 +122,12 @@ XMLIndexTOCContext::XMLIndexTOCContext( if (SvXMLUnitConverter::convertEnum(nTmp, rLocalName, aIndexTypeMap)) { // check for array index: - DBG_ASSERT(nTmp < (sizeof(aIndexServiceMap)/sizeof(sal_Char*)), "index out of range"); - DBG_ASSERT(sizeof(aIndexServiceMap) == + OSL_ENSURE(nTmp < (sizeof(aIndexServiceMap)/sizeof(sal_Char*)), "index out of range"); + OSL_ENSURE(sizeof(aIndexServiceMap) == sizeof(aIndexSourceElementMap), "service and source element maps must be same size"); - eIndexType = (enum IndexTypeEnum)nTmp; - pSourceElementName = aIndexSourceElementMap[eIndexType]; + eIndexType = static_cast<IndexTypeEnum>(nTmp); bValid = sal_True; } } @@ -201,10 +196,6 @@ void XMLIndexTOCContext::StartElement( OUString::createFromAscii(aIndexServiceMap[eIndexType])); if( xIfc.is() ) { - - // xml:id for RDF metadata - GetImport().SetXmlId(xIfc, sXmlId); - // get Property set Reference<XPropertySet> xPropSet(xIfc, UNO_QUERY); xTOCPropertySet = xPropSet; @@ -246,6 +237,9 @@ void XMLIndexTOCContext::StartElement( return; } + // xml:id for RDF metadata + GetImport().SetXmlId(xIfc, sXmlId); + // b) insert marker and move cursor rImport->InsertString(sMarker); rImport->GetCursor()->goLeft(2, sal_False); @@ -326,7 +320,7 @@ SvXMLImportContext* XMLIndexTOCContext::CreateChildContext( xBodyContextRef = pContext; } } - else if (0 == rLocalName.compareToAscii(pSourceElementName)) + else if (IsXMLToken(rLocalName, aIndexSourceElementMap[eIndexType])) { // instantiate source context for the appropriate index type switch (eIndexType) @@ -367,7 +361,7 @@ SvXMLImportContext* XMLIndexTOCContext::CreateChildContext( break; default: - DBG_ERROR("index type not implemented"); + OSL_ENSURE(false, "index type not implemented"); break; } } diff --git a/xmloff/source/text/XMLIndexTOCContext.hxx b/xmloff/source/text/XMLIndexTOCContext.hxx index 52c2ee2e0d..a43bd23dbc 100644 --- a/xmloff/source/text/XMLIndexTOCContext.hxx +++ b/xmloff/source/text/XMLIndexTOCContext.hxx @@ -73,9 +73,6 @@ class XMLIndexTOCContext : public SvXMLImportContext enum IndexTypeEnum eIndexType; - /** source element name (for CreateChildContext) */ - const sal_Char* pSourceElementName; - sal_Bool bValid; SvXMLImportContextRef xBodyContextRef; diff --git a/xmloff/source/text/XMLPropertyBackpatcher.cxx b/xmloff/source/text/XMLPropertyBackpatcher.cxx index 45fe207a41..9c2a4ddad2 100644 --- a/xmloff/source/text/XMLPropertyBackpatcher.cxx +++ b/xmloff/source/text/XMLPropertyBackpatcher.cxx @@ -30,9 +30,7 @@ #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/uno/Reference.h> -#ifndef _RTL_USTRING #include <rtl/ustring.hxx> -#endif #include <tools/debug.hxx> #include "XMLPropertyBackpatcher.hxx" #include <xmloff/txtimp.hxx> // XMLTextImportHelper partially implemented here @@ -206,7 +204,34 @@ void XMLPropertyBackpatcher<A>::SetDefault() template class XMLPropertyBackpatcher<sal_Int16>; template class XMLPropertyBackpatcher<OUString>; +struct SAL_DLLPRIVATE XMLTextImportHelper::BackpatcherImpl +{ + /// backpatcher for references to footnotes and endnotes + ::std::auto_ptr< XMLPropertyBackpatcher<sal_Int16> > + m_pFootnoteBackpatcher; + + /// backpatchers for references to sequences + ::std::auto_ptr< XMLPropertyBackpatcher<sal_Int16> > + m_pSequenceIdBackpatcher; + + ::std::auto_ptr< XMLPropertyBackpatcher< ::rtl::OUString> > + m_pSequenceNameBackpatcher; +}; + +::boost::shared_ptr<XMLTextImportHelper::BackpatcherImpl> +XMLTextImportHelper::MakeBackpatcherImpl() +{ + // n.b.: the shared_ptr stores the dtor! + return ::boost::shared_ptr<BackpatcherImpl>(new BackpatcherImpl); +} + +static ::rtl::OUString const& GetSequenceNumber() +{ + static ::rtl::OUString s_SequenceNumber( + RTL_CONSTASCII_USTRINGPARAM("SequenceNumber")); + return s_SequenceNumber; +} // // XMLTextImportHelper @@ -224,32 +249,34 @@ template class XMLPropertyBackpatcher<OUString>; XMLPropertyBackpatcher<sal_Int16>& XMLTextImportHelper::GetFootnoteBP() { - if (NULL == pFootnoteBackpatcher) + if (!m_pBackpatcherImpl->m_pFootnoteBackpatcher.get()) { - pFootnoteBackpatcher = - new XMLPropertyBackpatcher<sal_Int16>(sSequenceNumber); + m_pBackpatcherImpl->m_pFootnoteBackpatcher.reset( + new XMLPropertyBackpatcher<sal_Int16>(GetSequenceNumber())); } - return *pFootnoteBackpatcher; + return *m_pBackpatcherImpl->m_pFootnoteBackpatcher; } XMLPropertyBackpatcher<sal_Int16>& XMLTextImportHelper::GetSequenceIdBP() { - if (NULL == pSequenceIdBackpatcher) + if (!m_pBackpatcherImpl->m_pSequenceIdBackpatcher.get()) { - pSequenceIdBackpatcher = - new XMLPropertyBackpatcher<sal_Int16>(sSequenceNumber); + m_pBackpatcherImpl->m_pSequenceIdBackpatcher.reset( + new XMLPropertyBackpatcher<sal_Int16>(GetSequenceNumber())); } - return *pSequenceIdBackpatcher; + return *m_pBackpatcherImpl->m_pSequenceIdBackpatcher; } XMLPropertyBackpatcher<OUString>& XMLTextImportHelper::GetSequenceNameBP() { - if (NULL == pSequenceNameBackpatcher) + static ::rtl::OUString s_SourceName( + RTL_CONSTASCII_USTRINGPARAM("SourceName")); + if (!m_pBackpatcherImpl->m_pSequenceNameBackpatcher.get()) { - pSequenceNameBackpatcher = - new XMLPropertyBackpatcher<OUString>(sSourceName); + m_pBackpatcherImpl->m_pSequenceNameBackpatcher.reset( + new XMLPropertyBackpatcher<OUString>(s_SourceName)); } - return *pSequenceNameBackpatcher; + return *m_pBackpatcherImpl->m_pSequenceNameBackpatcher; } void XMLTextImportHelper::InsertFootnoteID( @@ -283,9 +310,3 @@ void XMLTextImportHelper::ProcessSequenceReference( GetSequenceNameBP().SetProperty(xPropSet, sXMLId); } -void XMLTextImportHelper::_FinitBackpatcher() -{ - delete pFootnoteBackpatcher; - delete pSequenceIdBackpatcher; - delete pSequenceNameBackpatcher; -} diff --git a/xmloff/source/text/XMLRedlineExport.cxx b/xmloff/source/text/XMLRedlineExport.cxx index b48a98f667..465eb27d06 100644 --- a/xmloff/source/text/XMLRedlineExport.cxx +++ b/xmloff/source/text/XMLRedlineExport.cxx @@ -374,7 +374,7 @@ void XMLRedlineExport::ExportChangedRegion( const Reference<XPropertySet> & rPropSet) { // Redline-ID - rExport.AddAttribute(XML_NAMESPACE_TEXT, XML_ID, GetRedlineID(rPropSet) ); + rExport.AddAttributeIdLegacy(XML_NAMESPACE_TEXT, GetRedlineID(rPropSet)); // merge-last-paragraph Any aAny = rPropSet->getPropertyValue(sMergeLastPara); diff --git a/xmloff/source/text/XMLSectionExport.cxx b/xmloff/source/text/XMLSectionExport.cxx index 702f259eb2..3e52a7fb67 100644 --- a/xmloff/source/text/XMLSectionExport.cxx +++ b/xmloff/source/text/XMLSectionExport.cxx @@ -28,7 +28,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" #include "XMLSectionExport.hxx" -#include <tools/debug.hxx> #include <rtl/ustring.hxx> #include <rtl/ustrbuf.hxx> @@ -53,7 +52,6 @@ #include <com/sun/star/text/XTextFieldsSupplier.hpp> #include <com/sun/star/text/XChapterNumberingSupplier.hpp> #include <com/sun/star/text/ChapterFormat.hpp> //i90246 -#include "xmlkywd.hxx" #include <xmloff/xmltoken.hxx> #include "xmlnmspe.hxx" #include <xmloff/families.hxx> @@ -306,7 +304,7 @@ void XMLSectionExport::ExportSectionEnd( break; default: - DBG_ERROR("unknown index type"); + OSL_ENSURE(false, "unknown index type"); // default: skip index! break; } @@ -332,7 +330,7 @@ void XMLSectionExport::ExportSectionEnd( } else { - DBG_ERROR("Need element name!"); + OSL_ENSURE(false, "Need element name!"); } } // else: autostyles -> ignore @@ -376,7 +374,7 @@ void XMLSectionExport::ExportIndexStart( default: // skip index - DBG_ERROR("unknown index type"); + OSL_ENSURE(false, "unknown index type"); break; } } @@ -809,15 +807,15 @@ void XMLSectionExport::ExportBaseIndexStart( GetExport().StartElement( XML_NAMESPACE_TEXT, eElement, sal_False ); } -static const sal_Char* aTypeSourceElementNameMap[] = +static const XMLTokenEnum aTypeSourceElementNameMap[] = { - sXML_table_of_content_source, // TOC - sXML_table_index_source, // table index - sXML_illustration_index_source, // illustration index - sXML_object_index_source, // object index - sXML_user_index_source, // user index - sXML_alphabetical_index_source, // alphabetical index - sXML_bibliography_source // bibliography + XML_TABLE_OF_CONTENT_SOURCE, // TOC + XML_TABLE_INDEX_SOURCE, // table index + XML_ILLUSTRATION_INDEX_SOURCE, // illustration index + XML_OBJECT_INDEX_SOURCE, // object index + XML_USER_INDEX_SOURCE, // user index + XML_ALPHABETICAL_INDEX_SOURCE, // alphabetical index + XML_BIBLIOGRAPHY_SOURCE // bibliography }; void XMLSectionExport::ExportBaseIndexSource( @@ -825,8 +823,8 @@ void XMLSectionExport::ExportBaseIndexSource( const Reference<XPropertySet> & rPropertySet) { // check type - DBG_ASSERT(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type"); - DBG_ASSERT(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type"); + OSL_ENSURE(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type"); + OSL_ENSURE(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type"); Any aAny; @@ -854,8 +852,9 @@ void XMLSectionExport::ExportBaseIndexSource( // the index source element (all indices) SvXMLElementExport aElem(GetExport(), XML_NAMESPACE_TEXT, - aTypeSourceElementNameMap[ - eType - TEXT_SECTION_TYPE_TOC], + GetXMLToken( + aTypeSourceElementNameMap[ + eType - TEXT_SECTION_TYPE_TOC]), sal_True, sal_True); // scope for title template (all indices) @@ -925,8 +924,8 @@ void XMLSectionExport::ExportBaseIndexBody( const Reference<XPropertySet> &) { // type not used; checked anyway. - DBG_ASSERT(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type"); - DBG_ASSERT(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type"); + OSL_ENSURE(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type"); + OSL_ENSURE(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type"); // export start only @@ -969,23 +968,23 @@ void XMLSectionExport::ExportTableAndIllustrationIndexSourceAttributes( // map index of LevelFormats to attribute value; // level 0 is always the header -static const sal_Char* aLevelNameTOCMap[] = - { NULL, sXML_1, sXML_2, sXML_3, sXML_4, sXML_5, sXML_6, sXML_7, - sXML_8, sXML_9, sXML_10, NULL }; -static const sal_Char* aLevelNameTableMap[] = - { NULL, "", NULL }; -static const sal_Char* aLevelNameAlphaMap[] = - { NULL, sXML_separator, sXML_1, sXML_2, sXML_3, NULL }; -static const sal_Char* aLevelNameBibliographyMap[] = - { NULL, sXML_article, sXML_book, sXML_booklet, sXML_conference, - sXML_custom1, sXML_custom2, sXML_custom3, sXML_custom4, - sXML_custom5, sXML_email, sXML_inbook, sXML_incollection, - sXML_inproceedings, sXML_journal, - sXML_manual, sXML_mastersthesis, sXML_misc, sXML_phdthesis, - sXML_proceedings, sXML_techreport, sXML_unpublished, sXML_www, - NULL }; - -static const sal_Char** aTypeLevelNameMap[] = +static const XMLTokenEnum aLevelNameTOCMap[] = + { XML_TOKEN_INVALID, XML_1, XML_2, XML_3, XML_4, XML_5, XML_6, XML_7, + XML_8, XML_9, XML_10, XML_TOKEN_INVALID }; +static const XMLTokenEnum aLevelNameTableMap[] = + { XML_TOKEN_INVALID, XML__EMPTY, XML_TOKEN_INVALID }; +static const XMLTokenEnum aLevelNameAlphaMap[] = + { XML_TOKEN_INVALID, XML_SEPARATOR, XML_1, XML_2, XML_3, XML_TOKEN_INVALID }; +static const XMLTokenEnum aLevelNameBibliographyMap[] = + { XML_TOKEN_INVALID, XML_ARTICLE, XML_BOOK, XML_BOOKLET, XML_CONFERENCE, + XML_CUSTOM1, XML_CUSTOM2, XML_CUSTOM3, XML_CUSTOM4, + XML_CUSTOM5, XML_EMAIL, XML_INBOOK, XML_INCOLLECTION, + XML_INPROCEEDINGS, XML_JOURNAL, + XML_MANUAL, XML_MASTERSTHESIS, XML_MISC, XML_PHDTHESIS, + XML_PROCEEDINGS, XML_TECHREPORT, XML_UNPUBLISHED, XML_WWW, + XML_TOKEN_INVALID }; + +static const XMLTokenEnum* aTypeLevelNameMap[] = { aLevelNameTOCMap, // TOC aLevelNameTableMap, // table index @@ -1029,26 +1028,26 @@ static const sal_Char** aTypeLevelStylePropNameMap[] = aLevelStylePropNameBibliographyMap // bibliography }; -static const sal_Char* aTypeLevelAttrMap[] = +static const XMLTokenEnum aTypeLevelAttrMap[] = { - sXML_outline_level, // TOC - NULL, // table index - NULL, // illustration index - NULL, // object index - sXML_outline_level, // user index - sXML_outline_level, // alphabetical index - sXML_bibliography_type // bibliography + XML_OUTLINE_LEVEL, // TOC + XML_TOKEN_INVALID, // table index + XML_TOKEN_INVALID, // illustration index + XML_TOKEN_INVALID, // object index + XML_OUTLINE_LEVEL, // user index + XML_OUTLINE_LEVEL, // alphabetical index + XML_BIBLIOGRAPHY_TYPE // bibliography }; -static const sal_Char* aTypeElementNameMap[] = +static const XMLTokenEnum aTypeElementNameMap[] = { - sXML_table_of_content_entry_template, // TOC - sXML_table_index_entry_template, // table index - sXML_illustration_index_entry_template, // illustration index - sXML_object_index_entry_template, // object index - sXML_user_index_entry_template, // user index - sXML_alphabetical_index_entry_template, // alphabetical index - sXML_bibliography_entry_template // bibliography + XML_TABLE_OF_CONTENT_ENTRY_TEMPLATE, // TOC + XML_TABLE_INDEX_ENTRY_TEMPLATE, // table index + XML_ILLUSTRATION_INDEX_ENTRY_TEMPLATE, // illustration index + XML_OBJECT_INDEX_ENTRY_TEMPLATE, // object index + XML_USER_INDEX_ENTRY_TEMPLATE, // user index + XML_ALPHABETICAL_INDEX_ENTRY_TEMPLATE, // alphabetical index + XML_BIBLIOGRAPHY_ENTRY_TEMPLATE // bibliography }; @@ -1058,44 +1057,44 @@ sal_Bool XMLSectionExport::ExportIndexTemplate( const Reference<XPropertySet> & rPropertySet, Sequence<Sequence<PropertyValue> > & rValues) { - DBG_ASSERT(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type"); - DBG_ASSERT(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type"); - DBG_ASSERT(nOutlineLevel >= 0, "illegal outline level"); + OSL_ENSURE(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type"); + OSL_ENSURE(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type"); + OSL_ENSURE(nOutlineLevel >= 0, "illegal outline level"); if ( (eType >= TEXT_SECTION_TYPE_TOC) && (eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY) && (nOutlineLevel >= 0) ) { // get level name and level attribute name from aLevelNameMap; - const sal_Char* pLevelAttrName = - aTypeLevelAttrMap[eType-TEXT_SECTION_TYPE_TOC]; - const sal_Char* pLevelName = - aTypeLevelNameMap[eType-TEXT_SECTION_TYPE_TOC][nOutlineLevel]; + const XMLTokenEnum eLevelAttrName( + aTypeLevelAttrMap[eType-TEXT_SECTION_TYPE_TOC]); + const XMLTokenEnum eLevelName( + aTypeLevelNameMap[eType-TEXT_SECTION_TYPE_TOC][nOutlineLevel]); // #92124#: some old documents may be broken, then they have // too many template levels; we need to recognize this and // export only as many as is legal for the respective index // type. To do this, we simply return an error flag, which // will then abort further template level exports. - DBG_ASSERT(NULL != pLevelName, "can't find level name"); - if ( NULL == pLevelName ) + OSL_ENSURE(XML_TOKEN_INVALID != eLevelName, "can't find level name"); + if ( XML_TOKEN_INVALID == eLevelName ) { // output level not found? Then end of templates! #91214# return sal_False; } // output level name - if ((NULL != pLevelName) && (NULL != pLevelAttrName)) + if ((XML_TOKEN_INVALID != eLevelName) && (XML_TOKEN_INVALID != eLevelAttrName)) { - GetExport().AddAttributeASCII(XML_NAMESPACE_TEXT, - pLevelAttrName, - pLevelName); + GetExport().AddAttribute(XML_NAMESPACE_TEXT, + GetXMLToken(eLevelAttrName), + GetXMLToken(eLevelName)); } // paragraph level style name - const sal_Char* pPropName = - aTypeLevelStylePropNameMap[eType-TEXT_SECTION_TYPE_TOC][nOutlineLevel]; - DBG_ASSERT(NULL != pPropName, "can't find property name"); + const sal_Char* pPropName( + aTypeLevelStylePropNameMap[eType-TEXT_SECTION_TYPE_TOC][nOutlineLevel]); + OSL_ENSURE(NULL != pPropName, "can't find property name"); if (NULL != pPropName) { Any aAny = rPropertySet->getPropertyValue( @@ -1108,11 +1107,11 @@ sal_Bool XMLSectionExport::ExportIndexTemplate( } // template element - const sal_Char* pElementName = - aTypeElementNameMap[eType - TEXT_SECTION_TYPE_TOC]; + const XMLTokenEnum eElementName( + aTypeElementNameMap[eType - TEXT_SECTION_TYPE_TOC]); SvXMLElementExport aLevelTemplate(GetExport(), XML_NAMESPACE_TEXT, - pElementName, + GetXMLToken(eElementName), sal_True, sal_True); // export sequence @@ -1353,39 +1352,46 @@ void XMLSectionExport::ExportIndexTemplateElement( } // convert type to token (and check validity) ... - sal_Char* pElement = NULL; + XMLTokenEnum eElement(XML_TOKEN_INVALID); switch(nTokenType) { case TOK_TTYPE_ENTRY_TEXT: - pElement = sXML_index_entry_text; + eElement = XML_INDEX_ENTRY_TEXT; break; case TOK_TTYPE_TAB_STOP: // test validity - pElement = ( bRightAligned || bTabPositionOK || bFillCharOK ) - ? sXML_index_entry_tab_stop : NULL; + if ( bRightAligned || bTabPositionOK || bFillCharOK ) + { + eElement = XML_INDEX_ENTRY_TAB_STOP; + } break; case TOK_TTYPE_TEXT: // test validity - pElement = bTextOK ? sXML_index_entry_span : NULL; + if (bTextOK) + { + eElement = XML_INDEX_ENTRY_SPAN; + } break; case TOK_TTYPE_PAGE_NUMBER: - pElement = sXML_index_entry_page_number; + eElement = XML_INDEX_ENTRY_PAGE_NUMBER; break; case TOK_TTYPE_CHAPTER_INFO: // keyword index - pElement = sXML_index_entry_chapter; + eElement = XML_INDEX_ENTRY_CHAPTER; break; case TOK_TTYPE_ENTRY_NUMBER: // table of content - pElement = sXML_index_entry_chapter; + eElement = XML_INDEX_ENTRY_CHAPTER; break; case TOK_TTYPE_HYPERLINK_START: - pElement = sXML_index_entry_link_start; + eElement = XML_INDEX_ENTRY_LINK_START; break; case TOK_TTYPE_HYPERLINK_END: - pElement = sXML_index_entry_link_end; + eElement = XML_INDEX_ENTRY_LINK_END; break; case TOK_TTYPE_BIBLIOGRAPHY: - pElement = bBibliographyDataOK - ? sXML_index_entry_bibliography : NULL; + if (bBibliographyDataOK) + { + eElement = XML_INDEX_ENTRY_BIBLIOGRAPHY; + } break; default: ; // unknown/unimplemented template @@ -1404,7 +1410,7 @@ void XMLSectionExport::ExportIndexTemplateElement( //it's not permitted in other indexes if (eType != TEXT_SECTION_TYPE_ALPHABETICAL) { - pElement = NULL; //not permitted, null the element + eElement = XML_TOKEN_INVALID; //not permitted, invalidate the element } else //maps format for 1.1 & 1.0 { @@ -1447,7 +1453,7 @@ void XMLSectionExport::ExportIndexTemplateElement( //<--- // ... and write Element - if (pElement != NULL) + if (eElement != XML_TOKEN_INVALID) { // character style (for most templates) if (bCharStyleOK) @@ -1510,7 +1516,7 @@ void XMLSectionExport::ExportIndexTemplateElement( // bibliography data if (TOK_TTYPE_BIBLIOGRAPHY == nTokenType) { - DBG_ASSERT(bBibliographyDataOK, "need bibl data"); + OSL_ENSURE(bBibliographyDataOK, "need bibl data"); OUStringBuffer sBuf; if (SvXMLUnitConverter::convertEnum( sBuf, nBibliographyData, aBibliographyDataFieldMap ) ) @@ -1524,7 +1530,7 @@ void XMLSectionExport::ExportIndexTemplateElement( // chapter info if (TOK_TTYPE_CHAPTER_INFO == nTokenType) { - DBG_ASSERT(bChapterFormatOK, "need chapter info"); + OSL_ENSURE(bChapterFormatOK, "need chapter info"); GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_DISPLAY, XMLTextFieldExport::MapChapterDisplayFormat(nChapterFormat)); @@ -1550,7 +1556,9 @@ void XMLSectionExport::ExportIndexTemplateElement( //<--- // export template SvXMLElementExport aTemplateElement(GetExport(), XML_NAMESPACE_TEXT, - pElement, sal_True, sal_False); + GetXMLToken(eElement), + sal_True, sal_False) + ; // entry text or span element: write text if (TOK_TTYPE_TEXT == nTokenType) @@ -1614,7 +1622,7 @@ void XMLSectionExport::ExportBoolean( sal_Bool bDefault, sal_Bool bInvert) { - DBG_ASSERT(eAttributeName != XML_TOKEN_INVALID, "Need attribute name"); + OSL_ENSURE(eAttributeName != XML_TOKEN_INVALID, "Need attribute name"); Any aAny = rPropSet->getPropertyValue(sPropertyName); sal_Bool bTmp = *(sal_Bool*)aAny.getValue(); @@ -1656,7 +1664,7 @@ void XMLSectionExport::ExportBibliographyConfiguration(SvXMLExport& rExport) Reference<XPropertySet> xPropSet; aAny >>= xPropSet; - DBG_ASSERT( xPropSet.is(), "field master must have XPropSet" ); + OSL_ENSURE( xPropSet.is(), "field master must have XPropSet" ); const OUString sBracketBefore( RTL_CONSTASCII_USTRINGPARAM("BracketBefore")); @@ -1843,7 +1851,7 @@ sal_Bool XMLSectionExport::IsInSection( { // default: like default argument sal_Bool bRet = bDefault; - DBG_ASSERT(rEnclosingSection.is(), "enclosing section expected"); + OSL_ENSURE(rEnclosingSection.is(), "enclosing section expected"); Reference<XPropertySet> xPropSet(rContent, UNO_QUERY); if (xPropSet.is()) diff --git a/xmloff/source/text/XMLSectionImportContext.cxx b/xmloff/source/text/XMLSectionImportContext.cxx index 46cfeeab86..f95557f69c 100644 --- a/xmloff/source/text/XMLSectionImportContext.cxx +++ b/xmloff/source/text/XMLSectionImportContext.cxx @@ -161,9 +161,6 @@ void XMLSectionImportContext::StartElement( // save PropertySet (for CreateChildContext) xSectionPropertySet = xPropSet; - // xml:id for RDF metadata - GetImport().SetXmlId(xIfc, sXmlId); - // name Reference<XNamed> xNamed(xPropSet, UNO_QUERY); xNamed->setName(sName); @@ -253,6 +250,9 @@ void XMLSectionImportContext::StartElement( // finally, check for redlines that should start at // the section start node rHelper->RedlineAdjustStartNodeCursor(sal_True); // start ??? + + // xml:id for RDF metadata + GetImport().SetXmlId(xIfc, sXmlId); } } } diff --git a/xmloff/source/text/XMLTextFrameContext.cxx b/xmloff/source/text/XMLTextFrameContext.cxx index 61b065ef2e..5bdbce9930 100644 --- a/xmloff/source/text/XMLTextFrameContext.cxx +++ b/xmloff/source/text/XMLTextFrameContext.cxx @@ -43,7 +43,6 @@ #include <xmloff/xmlimp.hxx> #include <xmloff/xmltoken.hxx> #include "xmlnmspe.hxx" -#include "xmlkywd.hxx" #include <xmloff/nmspmap.hxx> #include <xmloff/xmluconv.hxx> #include "XMLAnchorTypePropHdl.hxx" @@ -1032,10 +1031,11 @@ XMLTextFrameContext_Impl::XMLTextFrameContext_Impl( { OUString sValue( rValue ); sValue.trim(); - const sal_Int32 nRotateLen = sizeof(sXML_rotate)-1; + const OUString aRotate(GetXMLToken(XML_ROTATE)); + const sal_Int32 nRotateLen(aRotate.getLength()); sal_Int32 nLen = sValue.getLength(); if( nLen >= nRotateLen+3 && - 0 == sValue.compareToAscii( sXML_rotate, nRotateLen ) && + 0 == sValue.compareTo( aRotate, nRotateLen ) && '(' == sValue[nRotateLen] && ')' == sValue[nLen-1] ) { @@ -1241,6 +1241,14 @@ void XMLTextFrameContext_Impl::SetHyperlink( const OUString& rHRef, const OUString& rTargetFrameName, sal_Bool bMap ) { + static ::rtl::OUString s_HyperLinkURL( + RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL")); + static ::rtl::OUString s_HyperLinkName( + RTL_CONSTASCII_USTRINGPARAM("HyperLinkName")); + static ::rtl::OUString s_HyperLinkTarget( + RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget")); + static ::rtl::OUString s_ServerMap( + RTL_CONSTASCII_USTRINGPARAM("ServerMap")); if( !xPropSet.is() ) return; @@ -1248,29 +1256,29 @@ void XMLTextFrameContext_Impl::SetHyperlink( const OUString& rHRef, Reference < XPropertySetInfo > xPropSetInfo = xPropSet->getPropertySetInfo(); if( !xPropSetInfo.is() || - !xPropSetInfo->hasPropertyByName( xTxtImp->sHyperLinkURL ) ) + !xPropSetInfo->hasPropertyByName(s_HyperLinkURL)) return; Any aAny; aAny <<= rHRef; - xPropSet->setPropertyValue( xTxtImp->sHyperLinkURL, aAny ); + xPropSet->setPropertyValue( s_HyperLinkURL, aAny ); - if( xPropSetInfo->hasPropertyByName( xTxtImp->sHyperLinkName ) ) + if (xPropSetInfo->hasPropertyByName(s_HyperLinkName)) { aAny <<= rName; - xPropSet->setPropertyValue( xTxtImp->sHyperLinkName, aAny ); + xPropSet->setPropertyValue(s_HyperLinkName, aAny); } - if( xPropSetInfo->hasPropertyByName( xTxtImp->sHyperLinkTarget ) ) + if (xPropSetInfo->hasPropertyByName(s_HyperLinkTarget)) { aAny <<= rTargetFrameName; - xPropSet->setPropertyValue( xTxtImp->sHyperLinkTarget, aAny ); + xPropSet->setPropertyValue( s_HyperLinkTarget, aAny ); } - if( xPropSetInfo->hasPropertyByName( xTxtImp->sServerMap ) ) + if (xPropSetInfo->hasPropertyByName(s_ServerMap)) { aAny.setValue( &bMap, ::getBooleanCppuType() ); - xPropSet->setPropertyValue( xTxtImp->sServerMap, aAny ); + xPropSet->setPropertyValue(s_ServerMap, aAny); } } diff --git a/xmloff/source/text/XMLTextListBlockContext.cxx b/xmloff/source/text/XMLTextListBlockContext.cxx index 6fc2c27c31..41d293dc08 100644 --- a/xmloff/source/text/XMLTextListBlockContext.cxx +++ b/xmloff/source/text/XMLTextListBlockContext.cxx @@ -79,6 +79,8 @@ XMLTextListBlockContext::XMLTextListBlockContext( , msContinueListId() // <-- { + static ::rtl::OUString s_PropNameDefaultListId( + RTL_CONSTASCII_USTRINGPARAM("DefaultListId")); { // get the parent list block context (if any); this is a bit ugly... XMLTextListBlockContext * pLB(0); @@ -180,10 +182,12 @@ XMLTextListBlockContext::XMLTextListBlockContext( { uno::Reference< beans::XPropertySetInfo > xNumRulePropSetInfo( xNumRuleProps->getPropertySetInfo()); - if ( xNumRulePropSetInfo.is() && - xNumRulePropSetInfo->hasPropertyByName( mrTxtImport.sPropNameDefaultListId) ) + if (xNumRulePropSetInfo.is() && + xNumRulePropSetInfo->hasPropertyByName( + s_PropNameDefaultListId)) { - xNumRuleProps->getPropertyValue( mrTxtImport.sPropNameDefaultListId ) >>= sListStyleDefaultListId; + xNumRuleProps->getPropertyValue(s_PropNameDefaultListId) + >>= sListStyleDefaultListId; DBG_ASSERT( sListStyleDefaultListId.getLength() != 0, "no default list id found at numbering rules instance. Serious defect -> please inform OD." ); } diff --git a/xmloff/source/text/XMLTextListItemContext.cxx b/xmloff/source/text/XMLTextListItemContext.cxx index 52b3f04574..8c287c809c 100644 --- a/xmloff/source/text/XMLTextListItemContext.cxx +++ b/xmloff/source/text/XMLTextListItemContext.cxx @@ -69,6 +69,8 @@ XMLTextListItemContext::XMLTextListItemContext( mxNumRulesOverride() // <-- { + static ::rtl::OUString s_NumberingRules( + RTL_CONSTASCII_USTRINGPARAM("NumberingRules")); sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; for( sal_Int16 i=0; i < nAttrCount; i++ ) { @@ -105,7 +107,7 @@ XMLTextListItemContext::XMLTextListItemContext( aAny >>= xStyle; uno::Reference< beans::XPropertySet > xPropSet( xStyle, UNO_QUERY ); - aAny = xPropSet->getPropertyValue( rTxtImp.sNumberingRules ); + aAny = xPropSet->getPropertyValue(s_NumberingRules); aAny >>= mxNumRulesOverride; } else diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx index 08cb730d3a..803f3c5473 100644 --- a/xmloff/source/text/XMLTextMarkImportContext.cxx +++ b/xmloff/source/text/XMLTextMarkImportContext.cxx @@ -49,10 +49,13 @@ #include <com/sun/star/text/XFormField.hpp> +#include "RDFaImportHelper.hxx" + using ::rtl::OUString; using ::rtl::OUStringBuffer; +using namespace ::com::sun::star; using namespace ::com::sun::star::text; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::beans; @@ -113,7 +116,6 @@ XMLTextMarkImportContext::XMLTextMarkImportContext( const OUString& rLocalName ) : SvXMLImportContext(rImport, nPrefix, rLocalName) , m_rHelper(rHlp) - , m_bHaveAbout(false) { } @@ -190,13 +192,13 @@ void XMLTextMarkImportContext::EndElement() { SvXMLImportContext::EndElement(); - const OUString sAPI_reference_mark( + static const OUString sAPI_reference_mark( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.ReferenceMark")); - const OUString sAPI_bookmark( + static const OUString sAPI_bookmark( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.Bookmark")); - const OUString sAPI_fieldmark( + static const OUString sAPI_fieldmark( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.Fieldmark")); - const OUString sAPI_formfieldmark( + static const OUString sAPI_formfieldmark( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.FormFieldmark")); if (m_sBookmarkName.getLength() > 0) @@ -228,13 +230,6 @@ void XMLTextMarkImportContext::EndElement() m_sBookmarkName, m_rHelper.GetCursorAsRange()->getStart(), m_sXmlId) ); - if (m_bHaveAbout) - { - const Reference<com::sun::star::rdf::XMetadatable> - xMeta( xContent, UNO_QUERY); - GetImport().AddRDFa(xMeta, - m_sAbout, m_sProperty, m_sContent, m_sDatatype); - } if ((lcl_MarkType)nTmp==TypeFieldmark) { if (xContent.is() && bImportAsField) { // setup fieldmark... @@ -252,9 +247,22 @@ void XMLTextMarkImportContext::EndElement() case TypeFieldmarkStart: case TypeBookmarkStart: // save XTextRange for later construction of bookmark - m_rHelper.InsertBookmarkStartRange( - m_sBookmarkName, m_rHelper.GetCursorAsRange()->getStart(), - m_sXmlId); + { + ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > + pRDFaAttributes; + if (m_bHaveAbout && (TypeBookmarkStart + == static_cast<lcl_MarkType>(nTmp))) + { + pRDFaAttributes = + GetImport().GetRDFaImportHelper().ParseRDFa( + m_sAbout, m_sProperty, + m_sContent, m_sDatatype); + } + m_rHelper.InsertBookmarkStartRange( + m_sBookmarkName, + m_rHelper.GetCursorAsRange()->getStart(), + m_sXmlId, pRDFaAttributes); + } break; case TypeFieldmarkEnd: @@ -262,8 +270,11 @@ void XMLTextMarkImportContext::EndElement() { // get old range, and construct Reference<XTextRange> xStartRange; - if (m_rHelper.FindAndRemoveBookmarkStartRange(m_sBookmarkName, - xStartRange, m_sXmlId)) + ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > + pRDFaAttributes; + if (m_rHelper.FindAndRemoveBookmarkStartRange( + m_sBookmarkName, xStartRange, + m_sXmlId, pRDFaAttributes)) { Reference<XTextRange> xEndRange( m_rHelper.GetCursorAsRange()->getStart()); @@ -295,12 +306,12 @@ void XMLTextMarkImportContext::EndElement() m_sBookmarkName, xInsertionRange, m_sXmlId) ); - if (m_bHaveAbout) + if (pRDFaAttributes) { - const Reference<com::sun::star::rdf::XMetadatable> - xMeta( xContent, UNO_QUERY); - GetImport().AddRDFa(xMeta, - m_sAbout, m_sProperty, m_sContent, m_sDatatype); + const Reference<rdf::XMetadatable> + xMeta(xContent, UNO_QUERY); + GetImport().GetRDFaImportHelper().AddRDFa( + xMeta, pRDFaAttributes); } if ((lcl_MarkType)nTmp==TypeFieldmarkEnd) { diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 5b8032662c..7087f7e71e 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -212,87 +212,6 @@ const sal_Char sAPI_TextRange[] = "TextRange"; const sal_Char sAPI_true[] = "TRUE"; -static __FAR_DATA SvXMLTokenMapEntry aTextFieldAttrTokenMap[] = -{ - { XML_NAMESPACE_TEXT, XML_FIXED, XML_TOK_TEXTFIELD_FIXED }, - { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXTFIELD_DESCRIPTION }, - { XML_NAMESPACE_TEXT, XML_HELP, XML_TOK_TEXTFIELD_HELP }, - { XML_NAMESPACE_TEXT, XML_HINT, XML_TOK_TEXTFIELD_HINT }, - { XML_NAMESPACE_TEXT, XML_PLACEHOLDER_TYPE, - XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE }, - { XML_NAMESPACE_TEXT, XML_NAME, XML_TOK_TEXTFIELD_NAME }, - { XML_NAMESPACE_TEXT, XML_FORMULA, XML_TOK_TEXTFIELD_FORMULA }, - { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXTFIELD_NUM_FORMAT }, - { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC, - XML_TOK_TEXTFIELD_NUM_LETTER_SYNC }, - { XML_NAMESPACE_TEXT, XML_DISPLAY_FORMULA, - XML_TOK_TEXTFIELD_DISPLAY_FORMULA }, - { XML_NAMESPACE_TEXT, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, // #i32362#: src680m48++ saves text:value-type - { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, - { XML_NAMESPACE_TEXT, XML_VALUE, XML_TOK_TEXTFIELD_VALUE }, - { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TEXTFIELD_VALUE }, - { XML_NAMESPACE_TEXT, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE }, - { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE }, - { XML_NAMESPACE_TEXT, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE }, - { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE }, - { XML_NAMESPACE_TEXT, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE }, - { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE }, - { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TEXTFIELD_BOOL_VALUE}, - { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TEXTFIELD_CURRENCY}, - { XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME, - XML_TOK_TEXTFIELD_DATA_STYLE_NAME }, - { XML_NAMESPACE_TEXT, XML_DISPLAY_OUTLINE_LEVEL, - XML_TOK_TEXTFIELD_NUMBERING_LEVEL }, - { XML_NAMESPACE_TEXT, XML_SEPARATION_CHARACTER, - XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR }, - { XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TOK_TEXTFIELD_DISPLAY }, - { XML_NAMESPACE_TEXT, XML_TIME_ADJUST, XML_TOK_TEXTFIELD_TIME_ADJUST }, - { XML_NAMESPACE_TEXT, XML_DATE_ADJUST, XML_TOK_TEXTFIELD_DATE_ADJUST }, - { XML_NAMESPACE_TEXT, XML_PAGE_ADJUST, XML_TOK_TEXTFIELD_PAGE_ADJUST }, - { XML_NAMESPACE_TEXT, XML_SELECT_PAGE, XML_TOK_TEXTFIELD_SELECT_PAGE }, - { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXTFIELD_DATABASE_NAME}, - { XML_NAMESPACE_TEXT, XML_TABLE_NAME, XML_TOK_TEXTFIELD_TABLE_NAME }, - { XML_NAMESPACE_TEXT, XML_COLUMN_NAME, XML_TOK_TEXTFIELD_COLUMN_NAME }, - { XML_NAMESPACE_TEXT, XML_ROW_NUMBER, XML_TOK_TEXTFIELD_ROW_NUMBER }, - { XML_NAMESPACE_TEXT, XML_CONDITION, XML_TOK_TEXTFIELD_CONDITION }, - { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_TRUE, - XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE }, - { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_FALSE, - XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE }, - { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, XML_TOK_TEXTFIELD_REVISION }, - { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL, XML_TOK_TEXTFIELD_OUTLINE_LEVEL}, - { XML_NAMESPACE_TEXT, XML_ACTIVE, XML_TOK_TEXTFIELD_ACTIVE }, - { XML_NAMESPACE_TEXT, XML_NOTE_CLASS, XML_TOK_TEXTFIELD_NOTE_CLASS }, - { XML_NAMESPACE_TEXT, XML_REFERENCE_FORMAT, - XML_TOK_TEXTFIELD_REFERENCE_FORMAT }, - { XML_NAMESPACE_TEXT, XML_REF_NAME, XML_TOK_TEXTFIELD_REF_NAME }, - { XML_NAMESPACE_TEXT, XML_CONNECTION_NAME, - XML_TOK_TEXTFIELD_CONNECTION_NAME }, - { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXTFIELD_HREF }, - { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, - XML_TOK_TEXTFIELD_TARGET_FRAME }, - { XML_NAMESPACE_TEXT, XML_ANNOTATION, XML_TOK_TEXTFIELD_ANNOTATION }, - { XML_NAMESPACE_SCRIPT, XML_LANGUAGE, XML_TOK_TEXTFIELD_LANGUAGE }, - { XML_NAMESPACE_TEXT, XML_KIND, XML_TOK_TEXTFIELD_MEASURE_KIND }, - { XML_NAMESPACE_TEXT, XML_IS_HIDDEN, XML_TOK_TEXTFIELD_IS_HIDDEN }, - { XML_NAMESPACE_TEXT, XML_CURRENT_VALUE, - XML_TOK_TEXTFIELD_CURRENT_VALUE }, - { XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE }, - - XML_TOKEN_MAP_END -}; - -const SvXMLTokenMap& XMLTextImportHelper::GetTextFieldAttrTokenMap() -{ - if ( !pTextFieldAttrTokenMap.get() ) { - pTextFieldAttrTokenMap.reset( - new SvXMLTokenMap(aTextFieldAttrTokenMap) ); - } - - return *pTextFieldAttrTokenMap; - -} - TYPEINIT1( XMLTextFieldImportContext, SvXMLImportContext); XMLTextFieldImportContext::XMLTextFieldImportContext( diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx index 153d51e71c..4fbf91d2b0 100644 --- a/xmloff/source/text/txtimp.cxx +++ b/xmloff/source/text/txtimp.cxx @@ -27,6 +27,12 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" + +#include <vector> + +#include <boost/scoped_array.hpp> +#include <boost/tuple/tuple.hpp> + #include <tools/solar.h> #include <tools/debug.hxx> #ifndef _SVSTDARR_STRINGSDTOR_DECL @@ -45,6 +51,7 @@ #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp> #include <com/sun/star/text/TextContentAnchorType.hpp> #include <com/sun/star/text/XTextFrame.hpp> +#include <com/sun/star/text/XFormField.hpp> #include <com/sun/star/drawing/XShapes.hpp> #include <com/sun/star/util/DateTime.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> @@ -56,6 +63,8 @@ #include <xmloff/families.hxx> #include <xmloff/xmlnumfi.hxx> #include <xmloff/xmlnumi.hxx> +#include <xmloff/xmlictxt.hxx> +#include <xmloff/xmlimppr.hxx> #include "txtparai.hxx" #include <xmloff/txtimp.hxx> @@ -97,6 +106,7 @@ using ::rtl::OUStringBuffer; using ::com::sun::star::ucb::XAnyCompare; using namespace ::std; +using namespace ::com::sun::star; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::text; @@ -333,11 +343,11 @@ static __FAR_DATA SvXMLTokenMapEntry aTextPAttrTokenMap[] = { XML_NAMESPACE_XHTML, XML_PROPERTY, XML_TOK_TEXT_P_PROPERTY }, { XML_NAMESPACE_XHTML, XML_CONTENT, XML_TOK_TEXT_P_CONTENT }, { XML_NAMESPACE_XHTML, XML_DATATYPE, XML_TOK_TEXT_P_DATATYPE }, + { XML_NAMESPACE_TEXT, XML_ID, XML_TOK_TEXT_P_TEXTID }, { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_P_STYLE_NAME }, { XML_NAMESPACE_TEXT, XML_COND_STYLE_NAME, XML_TOK_TEXT_P_COND_STYLE_NAME }, { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL,XML_TOK_TEXT_P_LEVEL }, - { XML_NAMESPACE_TEXT, XML_ID, XML_TOK_TEXT_P_ID }, { XML_NAMESPACE_TEXT, XML_IS_LIST_HEADER,XML_TOK_TEXT_P_IS_LIST_HEADER }, { XML_NAMESPACE_TEXT, XML_RESTART_NUMBERING,XML_TOK_TEXT_P_RESTART_NUMBERING }, { XML_NAMESPACE_TEXT, XML_START_VALUE,XML_TOK_TEXT_P_START_VALUE }, @@ -444,9 +454,436 @@ static __FAR_DATA SvXMLTokenMapEntry aTextMasterPageElemTokenMap[] = XML_TOKEN_MAP_END }; +static __FAR_DATA SvXMLTokenMapEntry aTextFieldAttrTokenMap[] = +{ + { XML_NAMESPACE_TEXT, XML_FIXED, XML_TOK_TEXTFIELD_FIXED }, + { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXTFIELD_DESCRIPTION }, + { XML_NAMESPACE_TEXT, XML_HELP, XML_TOK_TEXTFIELD_HELP }, + { XML_NAMESPACE_TEXT, XML_HINT, XML_TOK_TEXTFIELD_HINT }, + { XML_NAMESPACE_TEXT, XML_PLACEHOLDER_TYPE, + XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE }, + { XML_NAMESPACE_TEXT, XML_NAME, XML_TOK_TEXTFIELD_NAME }, + { XML_NAMESPACE_TEXT, XML_FORMULA, XML_TOK_TEXTFIELD_FORMULA }, + { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXTFIELD_NUM_FORMAT }, + { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC, + XML_TOK_TEXTFIELD_NUM_LETTER_SYNC }, + { XML_NAMESPACE_TEXT, XML_DISPLAY_FORMULA, + XML_TOK_TEXTFIELD_DISPLAY_FORMULA }, + { XML_NAMESPACE_TEXT, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, // #i32362#: src680m48++ saves text:value-type + { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, + { XML_NAMESPACE_TEXT, XML_VALUE, XML_TOK_TEXTFIELD_VALUE }, + { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TEXTFIELD_VALUE }, + { XML_NAMESPACE_TEXT, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE }, + { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE }, + { XML_NAMESPACE_TEXT, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE }, + { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE }, + { XML_NAMESPACE_TEXT, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE }, + { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE }, + { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TEXTFIELD_BOOL_VALUE}, + { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TEXTFIELD_CURRENCY}, + { XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME, + XML_TOK_TEXTFIELD_DATA_STYLE_NAME }, + { XML_NAMESPACE_TEXT, XML_DISPLAY_OUTLINE_LEVEL, + XML_TOK_TEXTFIELD_NUMBERING_LEVEL }, + { XML_NAMESPACE_TEXT, XML_SEPARATION_CHARACTER, + XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR }, + { XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TOK_TEXTFIELD_DISPLAY }, + { XML_NAMESPACE_TEXT, XML_TIME_ADJUST, XML_TOK_TEXTFIELD_TIME_ADJUST }, + { XML_NAMESPACE_TEXT, XML_DATE_ADJUST, XML_TOK_TEXTFIELD_DATE_ADJUST }, + { XML_NAMESPACE_TEXT, XML_PAGE_ADJUST, XML_TOK_TEXTFIELD_PAGE_ADJUST }, + { XML_NAMESPACE_TEXT, XML_SELECT_PAGE, XML_TOK_TEXTFIELD_SELECT_PAGE }, + { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXTFIELD_DATABASE_NAME}, + { XML_NAMESPACE_TEXT, XML_TABLE_NAME, XML_TOK_TEXTFIELD_TABLE_NAME }, + { XML_NAMESPACE_TEXT, XML_COLUMN_NAME, XML_TOK_TEXTFIELD_COLUMN_NAME }, + { XML_NAMESPACE_TEXT, XML_ROW_NUMBER, XML_TOK_TEXTFIELD_ROW_NUMBER }, + { XML_NAMESPACE_TEXT, XML_CONDITION, XML_TOK_TEXTFIELD_CONDITION }, + { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_TRUE, + XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE }, + { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_FALSE, + XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE }, + { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, XML_TOK_TEXTFIELD_REVISION }, + { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL, XML_TOK_TEXTFIELD_OUTLINE_LEVEL}, + { XML_NAMESPACE_TEXT, XML_ACTIVE, XML_TOK_TEXTFIELD_ACTIVE }, + { XML_NAMESPACE_TEXT, XML_NOTE_CLASS, XML_TOK_TEXTFIELD_NOTE_CLASS }, + { XML_NAMESPACE_TEXT, XML_REFERENCE_FORMAT, + XML_TOK_TEXTFIELD_REFERENCE_FORMAT }, + { XML_NAMESPACE_TEXT, XML_REF_NAME, XML_TOK_TEXTFIELD_REF_NAME }, + { XML_NAMESPACE_TEXT, XML_CONNECTION_NAME, + XML_TOK_TEXTFIELD_CONNECTION_NAME }, + { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXTFIELD_HREF }, + { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, + XML_TOK_TEXTFIELD_TARGET_FRAME }, + { XML_NAMESPACE_TEXT, XML_ANNOTATION, XML_TOK_TEXTFIELD_ANNOTATION }, + { XML_NAMESPACE_SCRIPT, XML_LANGUAGE, XML_TOK_TEXTFIELD_LANGUAGE }, + { XML_NAMESPACE_TEXT, XML_KIND, XML_TOK_TEXTFIELD_MEASURE_KIND }, + { XML_NAMESPACE_TEXT, XML_IS_HIDDEN, XML_TOK_TEXTFIELD_IS_HIDDEN }, + { XML_NAMESPACE_TEXT, XML_CURRENT_VALUE, + XML_TOK_TEXTFIELD_CURRENT_VALUE }, + { XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE }, + + XML_TOKEN_MAP_END +}; + + // maximum allowed length of combined characters field #define MAX_COMBINED_CHARACTERS 6 +struct SAL_DLLPRIVATE XMLTextImportHelper::Impl + : private ::boost::noncopyable +{ + ::std::auto_ptr<SvXMLTokenMap> m_pTextElemTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextPElemTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextPAttrTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextFieldAttrTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextNumberedParagraphAttrTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockAttrTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockElemTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextFrameAttrTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextContourAttrTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextHyperlinkAttrTokenMap; + ::std::auto_ptr<SvXMLTokenMap> m_pTextMasterPageElemTokenMap; + ::std::auto_ptr<SvStringsDtor> m_pPrevFrmNames; + ::std::auto_ptr<SvStringsDtor> m_pNextFrmNames; + + // --> OD 2008-04-25 #refactorlists# + ::std::auto_ptr<XMLTextListsHelper> m_pTextListsHelper; + // <-- + + SvXMLImportContextRef m_xAutoStyles; + SvXMLImportContextRef m_xFontDecls; + + XMLSectionList_Impl m_SectionList; + + UniReference< SvXMLImportPropertyMapper > m_xParaImpPrMap; + UniReference< SvXMLImportPropertyMapper > m_xTextImpPrMap; + UniReference< SvXMLImportPropertyMapper > m_xFrameImpPrMap; + UniReference< SvXMLImportPropertyMapper > m_xSectionImpPrMap; + UniReference< SvXMLImportPropertyMapper > m_xRubyImpPrMap; + + ::std::auto_ptr<SvI18NMap> m_pRenameMap; + // --> OD 2006-10-12 #i69629# - change and extend data structure: + // - data structure contains candidates of paragraph styles, which + // will be assigned to the outline style + // - data structure contains more than one candidate for each list level + // of the outline style + ::boost::scoped_array< ::std::vector< ::rtl::OUString > > + m_pOutlineStylesCandidates; + // <-- + + // start range, xml:id, RDFa stuff + typedef ::boost::tuple< + uno::Reference<text::XTextRange>, ::rtl::OUString, + ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > > + BookmarkMapEntry_t; + /// start ranges for open bookmarks + ::std::map< ::rtl::OUString, BookmarkMapEntry_t, + ::comphelper::UStringLess> m_BookmarkStartRanges; + + typedef ::std::vector< ::rtl::OUString > BookmarkVector_t; + BookmarkVector_t m_BookmarkVector; + + /// name of the last 'open' redline that started between paragraphs + ::rtl::OUString m_sOpenRedlineIdentifier; + + uno::Reference<text::XText> m_xText; + uno::Reference<text::XTextCursor> m_xCursor; + uno::Reference<text::XTextRange> m_xCursorAsRange; + uno::Reference<container::XNameContainer> m_xParaStyles; + uno::Reference<container::XNameContainer> m_xTextStyles; + uno::Reference<container::XNameContainer> m_xNumStyles; + uno::Reference<container::XNameContainer> m_xFrameStyles; + uno::Reference<container::XNameContainer> m_xPageStyles; + uno::Reference<container::XIndexReplace> m_xChapterNumbering; + uno::Reference<container::XNameAccess> m_xTextFrames; + uno::Reference<container::XNameAccess> m_xGraphics; + uno::Reference<container::XNameAccess> m_xObjects; + uno::Reference<lang::XMultiServiceFactory> m_xServiceFactory; + + SvXMLImport & m_rSvXMLImport; + + bool m_bInsertMode : 1; + bool m_bStylesOnlyMode : 1; + bool m_bBlockMode : 1; + bool m_bProgress : 1; + bool m_bOrganizerMode : 1; + bool m_bBodyContentStarted : 1; + + // #107848# + // One more flag to remember if we are inside a deleted redline section + bool m_bInsideDeleteContext : 1; + + typedef ::std::pair< ::rtl::OUString, ::rtl::OUString> field_name_type_t; + typedef ::std::pair< ::rtl::OUString, ::rtl::OUString > field_param_t; + typedef ::std::vector< field_param_t > field_params_t; + typedef ::std::pair< field_name_type_t, field_params_t > field_stack_item_t; + typedef ::std::stack< field_stack_item_t > field_stack_t; + + field_stack_t m_FieldStack; + + ::rtl::OUString m_sCellParaStyleDefault; + + Impl( uno::Reference<frame::XModel> const& rModel, + SvXMLImport & rImport, + bool const bInsertMode, bool const bStylesOnlyMode, + bool const bProgress, bool const bBlockMode, + bool const bOrganizerMode) + : m_pTextElemTokenMap( 0 ) + , m_pTextPElemTokenMap( 0 ) + , m_pTextPAttrTokenMap( 0 ) + , m_pTextFieldAttrTokenMap( 0 ) + , m_pTextNumberedParagraphAttrTokenMap( 0 ) + , m_pTextListBlockAttrTokenMap( 0 ) + , m_pTextListBlockElemTokenMap( 0 ) + , m_pTextFrameAttrTokenMap( 0 ) + , m_pTextContourAttrTokenMap( 0 ) + , m_pTextHyperlinkAttrTokenMap( 0 ) + , m_pTextMasterPageElemTokenMap( 0 ) + , m_pPrevFrmNames( 0 ) + , m_pNextFrmNames( 0 ) + // --> OD 2008-04-25 #refactorlists# + , m_pTextListsHelper( new XMLTextListsHelper() ) + // <-- + , m_pRenameMap( 0 ) + // --> OD 2006-10-12 #i69629# + , m_pOutlineStylesCandidates( 0 ) + // <-- + , m_xServiceFactory( rModel, UNO_QUERY ) + , m_rSvXMLImport( rImport ) + , m_bInsertMode( bInsertMode ) + , m_bStylesOnlyMode( bStylesOnlyMode ) + , m_bBlockMode( bBlockMode ) + , m_bProgress( bProgress ) + , m_bOrganizerMode( bOrganizerMode ) + , m_bBodyContentStarted( true ) + // #107848# Initialize inside_deleted_section flag correctly + , m_bInsideDeleteContext( false ) + { + } + + void InitOutlineStylesCandidates() + { + if (!m_pOutlineStylesCandidates) + { + size_t const size(m_xChapterNumbering->getCount()); + m_pOutlineStylesCandidates.reset( + new ::std::vector< ::rtl::OUString >[size] ); + } + } + +}; + + +uno::Reference< text::XText > & XMLTextImportHelper::GetText() +{ + return m_pImpl->m_xText; +} + +uno::Reference< text::XTextCursor > & XMLTextImportHelper::GetCursor() +{ + return m_pImpl->m_xCursor; +} + +uno::Reference< text::XTextRange > & XMLTextImportHelper::GetCursorAsRange() +{ + return m_pImpl->m_xCursorAsRange; +} + +bool XMLTextImportHelper::IsInsertMode() const +{ + return m_pImpl->m_bInsertMode; +} + +bool XMLTextImportHelper::IsStylesOnlyMode() const +{ + return m_pImpl->m_bStylesOnlyMode; +} + +bool XMLTextImportHelper::IsBlockMode() const +{ + return m_pImpl->m_bBlockMode; +} + +bool XMLTextImportHelper::IsOrganizerMode() const +{ + return m_pImpl->m_bOrganizerMode; +} + +bool XMLTextImportHelper::IsProgress() const +{ + return m_pImpl->m_bProgress; +} + +XMLSectionList_Impl & XMLTextImportHelper::GetSectionList() +{ + return m_pImpl->m_SectionList; +} + +uno::Reference<container::XNameContainer> const& +XMLTextImportHelper::GetParaStyles() const +{ + return m_pImpl->m_xParaStyles; +} + +uno::Reference<container::XNameContainer> const& +XMLTextImportHelper::GetTextStyles() const +{ + return m_pImpl->m_xTextStyles; +} + +uno::Reference<container::XNameContainer> const& +XMLTextImportHelper::GetNumberingStyles() const +{ + return m_pImpl->m_xNumStyles; +} + +uno::Reference<container::XNameContainer> const& +XMLTextImportHelper::GetFrameStyles() const +{ + return m_pImpl->m_xFrameStyles; +} + +uno::Reference<container::XNameContainer> const& +XMLTextImportHelper::GetPageStyles() const +{ + return m_pImpl->m_xPageStyles; +} + +uno::Reference<container::XIndexReplace> const& +XMLTextImportHelper::GetChapterNumbering() const +{ + return m_pImpl->m_xChapterNumbering; +} + +UniReference< SvXMLImportPropertyMapper > const& +XMLTextImportHelper::GetParaImportPropertySetMapper() const +{ + return m_pImpl->m_xParaImpPrMap; +} + +UniReference< SvXMLImportPropertyMapper > const& +XMLTextImportHelper::GetTextImportPropertySetMapper() const +{ + return m_pImpl->m_xTextImpPrMap; +} + +UniReference< SvXMLImportPropertyMapper > const& +XMLTextImportHelper::GetFrameImportPropertySetMapper() const +{ + return m_pImpl->m_xFrameImpPrMap; +} + +UniReference< SvXMLImportPropertyMapper > const& +XMLTextImportHelper::GetSectionImportPropertySetMapper() const +{ + return m_pImpl->m_xSectionImpPrMap; +} + +UniReference< SvXMLImportPropertyMapper > const& +XMLTextImportHelper::GetRubyImportPropertySetMapper() const +{ + return m_pImpl->m_xRubyImpPrMap; +} + +void XMLTextImportHelper::SetInsideDeleteContext(bool const bNew) +{ + m_pImpl->m_bInsideDeleteContext = bNew; +} + +bool XMLTextImportHelper::IsInsideDeleteContext() const +{ + return m_pImpl->m_bInsideDeleteContext; +} + +SvXMLImport & XMLTextImportHelper::GetXMLImport() +{ + return m_pImpl->m_rSvXMLImport; +} + +XMLTextListsHelper & XMLTextImportHelper::GetTextListHelper() +{ + return *m_pImpl->m_pTextListsHelper; +} + +const SvXMLTokenMap& XMLTextImportHelper::GetTextElemTokenMap() +{ + if (!m_pImpl->m_pTextElemTokenMap.get()) + { + m_pImpl->m_pTextElemTokenMap.reset( + new SvXMLTokenMap( aTextElemTokenMap )); + } + return *m_pImpl->m_pTextElemTokenMap; +} + +const SvXMLTokenMap& XMLTextImportHelper::GetTextPElemTokenMap() +{ + if (!m_pImpl->m_pTextPElemTokenMap.get()) + { + m_pImpl->m_pTextPElemTokenMap.reset( + new SvXMLTokenMap( aTextPElemTokenMap )); + } + return *m_pImpl->m_pTextPElemTokenMap; +} + +const SvXMLTokenMap& XMLTextImportHelper::GetTextPAttrTokenMap() +{ + if (!m_pImpl->m_pTextPAttrTokenMap.get()) + { + m_pImpl->m_pTextPAttrTokenMap.reset( + new SvXMLTokenMap( aTextPAttrTokenMap )); + } + return *m_pImpl->m_pTextPAttrTokenMap; +} + +const SvXMLTokenMap& XMLTextImportHelper::GetTextFrameAttrTokenMap() +{ + if (!m_pImpl->m_pTextFrameAttrTokenMap.get()) + { + m_pImpl->m_pTextFrameAttrTokenMap.reset( + new SvXMLTokenMap( aTextFrameAttrTokenMap )); + } + return *m_pImpl->m_pTextFrameAttrTokenMap; +} + +const SvXMLTokenMap& XMLTextImportHelper::GetTextContourAttrTokenMap() +{ + if (!m_pImpl->m_pTextContourAttrTokenMap.get()) + { + m_pImpl->m_pTextContourAttrTokenMap.reset( + new SvXMLTokenMap( aTextContourAttrTokenMap )); + } + return *m_pImpl->m_pTextContourAttrTokenMap; +} + +const SvXMLTokenMap& XMLTextImportHelper::GetTextHyperlinkAttrTokenMap() +{ + if (!m_pImpl->m_pTextHyperlinkAttrTokenMap.get()) + { + m_pImpl->m_pTextHyperlinkAttrTokenMap.reset( + new SvXMLTokenMap( aTextHyperlinkAttrTokenMap )); + } + return *m_pImpl->m_pTextHyperlinkAttrTokenMap; +} + +const SvXMLTokenMap& XMLTextImportHelper::GetTextMasterPageElemTokenMap() +{ + if (!m_pImpl->m_pTextMasterPageElemTokenMap.get()) + { + m_pImpl->m_pTextMasterPageElemTokenMap.reset( + new SvXMLTokenMap( aTextMasterPageElemTokenMap )); + } + return *m_pImpl->m_pTextMasterPageElemTokenMap; +} + +const SvXMLTokenMap& XMLTextImportHelper::GetTextFieldAttrTokenMap() +{ + if (!m_pImpl->m_pTextFieldAttrTokenMap.get()) + { + m_pImpl->m_pTextFieldAttrTokenMap.reset( + new SvXMLTokenMap( aTextFieldAttrTokenMap )); + } + return *m_pImpl->m_pTextFieldAttrTokenMap; +} + namespace { @@ -513,111 +950,48 @@ namespace } XMLTextImportHelper::XMLTextImportHelper( - const Reference < XModel >& rModel, + uno::Reference<frame::XModel> const& rModel, SvXMLImport& rImport, - sal_Bool bInsertM, sal_Bool bStylesOnlyM, - sal_Bool bPrg, - sal_Bool bBlockM, - sal_Bool bOrganizerM ) -: pTextElemTokenMap( 0 ) -, pTextPElemTokenMap( 0 ) -, pTextPAttrTokenMap( 0 ) -, pTextFieldAttrTokenMap( 0 ) -, pTextNumberedParagraphAttrTokenMap( 0 ) -, pTextListBlockAttrTokenMap( 0 ) -, pTextListBlockElemTokenMap( 0 ) -, pTextFrameAttrTokenMap( 0 ) -, pTextContourAttrTokenMap( 0 ) -, pTextHyperlinkAttrTokenMap( 0 ) -, pTextMasterPageElemTokenMap( 0 ) -, pPrevFrmNames( 0 ) -, pNextFrmNames( 0 ) - -// --> OD 2008-04-25 #refactorlists# -, mpTextListsHelper( new XMLTextListsHelper() ) -// <-- - -, pRenameMap( 0 ) -// --> OD 2006-10-12 #i69629# -, mpOutlineStylesCandidates( 0 ) -// <-- - -, pFootnoteBackpatcher( NULL ) -, pSequenceIdBackpatcher( NULL ) -, pSequenceNameBackpatcher( NULL ) - -, xServiceFactory( rModel, UNO_QUERY ) - -, rSvXMLImport( rImport ) - -, bInsertMode( bInsertM ) -, bStylesOnlyMode( bStylesOnlyM ) -, bBlockMode( bBlockM ) -, bProgress( bPrg ) -, bOrganizerMode( bOrganizerM ) -, bBodyContentStarted( sal_True ) - - // #107848# - // Initialize inside_deleted_section flag correctly -, bInsideDeleteContext( sal_False ) - -, sParaStyleName(RTL_CONSTASCII_USTRINGPARAM("ParaStyleName")) -, sCharStyleName(RTL_CONSTASCII_USTRINGPARAM("CharStyleName")) -, sHeadingStyleName(RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName")) -, sNumberingLevel(RTL_CONSTASCII_USTRINGPARAM("NumberingLevel")) -, sNumberingStartValue(RTL_CONSTASCII_USTRINGPARAM("NumberingStartValue")) -, sNumberingRules(RTL_CONSTASCII_USTRINGPARAM("NumberingRules")) -, sParaIsNumberingRestart(RTL_CONSTASCII_USTRINGPARAM("ParaIsNumberingRestart")) -, sNumberingIsNumber(RTL_CONSTASCII_USTRINGPARAM("NumberingIsNumber")) -, sCurrentPresentation(RTL_CONSTASCII_USTRINGPARAM("CurrentPresentation")) -, sSequenceNumber(RTL_CONSTASCII_USTRINGPARAM("SequenceNumber")) -, sSourceName(RTL_CONSTASCII_USTRINGPARAM("SourceName")) -, sChainNextName(RTL_CONSTASCII_USTRINGPARAM("ChainNextName")) -, sChainPrevName(RTL_CONSTASCII_USTRINGPARAM("ChainPrevName")) -, sHyperLinkURL(RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL")) -, sHyperLinkName(RTL_CONSTASCII_USTRINGPARAM("HyperLinkName")) -, sHyperLinkTarget(RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget")) -, sUnvisitedCharStyleName(RTL_CONSTASCII_USTRINGPARAM("UnvisitedCharStyleName")) -, sVisitedCharStyleName(RTL_CONSTASCII_USTRINGPARAM("VisitedCharStyleName")) -, sTextFrame(RTL_CONSTASCII_USTRINGPARAM("TextFrame")) -, sPageDescName(RTL_CONSTASCII_USTRINGPARAM("PageDescName")) -, sServerMap(RTL_CONSTASCII_USTRINGPARAM("ServerMap")) -, sHyperLinkEvents(RTL_CONSTASCII_USTRINGPARAM("HyperLinkEvents")) -, sContent(RTL_CONSTASCII_USTRINGPARAM("Content")) -, sServiceCombinedCharacters(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextField.CombinedCharacters")) -, sNumberingStyleName(RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName")) -// --> OD 2008-04-23 #refactorlists# -, sPropNameDefaultListId(RTL_CONSTASCII_USTRINGPARAM("DefaultListId")) -, sPropNameListId(RTL_CONSTASCII_USTRINGPARAM("ListId")) -, sOutlineLevel( RTL_CONSTASCII_USTRINGPARAM("OutlineLevel")) //#outline level,add by zhaojianwei -// <-- + bool const bInsertMode, bool const bStylesOnlyMode, + bool const bProgress, bool const bBlockMode, + bool const bOrganizerMode) + : m_pImpl( new Impl(rModel, rImport, bInsertMode, bStylesOnlyMode, + bProgress, bBlockMode, bOrganizerMode) ) + , m_pBackpatcherImpl( MakeBackpatcherImpl() ) { + static ::rtl::OUString s_PropNameDefaultListId( + RTL_CONSTASCII_USTRINGPARAM("DefaultListId")); + Reference< XChapterNumberingSupplier > xCNSupplier( rModel, UNO_QUERY ); if( xCNSupplier.is() ) { - xChapterNumbering = xCNSupplier->getChapterNumberingRules(); + m_pImpl->m_xChapterNumbering = xCNSupplier->getChapterNumberingRules(); // --> OD 2008-05-15 #refactorlists# - if ( xChapterNumbering.is() ) + if (m_pImpl->m_xChapterNumbering.is()) { - Reference< XPropertySet > xNumRuleProps( xChapterNumbering, UNO_QUERY ); + Reference< XPropertySet > const xNumRuleProps( + m_pImpl->m_xChapterNumbering, UNO_QUERY); if ( xNumRuleProps.is() ) { Reference< XPropertySetInfo > xNumRulePropSetInfo( xNumRuleProps->getPropertySetInfo()); - if ( xNumRulePropSetInfo.is() && - xNumRulePropSetInfo->hasPropertyByName( sPropNameDefaultListId) ) + if (xNumRulePropSetInfo.is() && + xNumRulePropSetInfo->hasPropertyByName( + s_PropNameDefaultListId)) { ::rtl::OUString sListId; - xNumRuleProps->getPropertyValue( sPropNameDefaultListId ) >>= sListId; + xNumRuleProps->getPropertyValue(s_PropNameDefaultListId) + >>= sListId; DBG_ASSERT( sListId.getLength() != 0, "no default list id found at chapter numbering rules instance. Serious defect -> please inform OD." ); if ( sListId.getLength() ) { - Reference< XNamed > xChapterNumNamed( xChapterNumbering, UNO_QUERY ); + Reference< XNamed > const xChapterNumNamed( + m_pImpl->m_xChapterNumbering, UNO_QUERY); if ( xChapterNumNamed.is() ) { - mpTextListsHelper->KeepListAsProcessed( + m_pImpl->m_pTextListsHelper->KeepListAsProcessed( sListId, xChapterNumNamed->getName(), ::rtl::OUString() ); @@ -639,72 +1013,81 @@ XMLTextImportHelper::XMLTextImportHelper( const OUString aParaStyles(RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles")); if( xFamilies->hasByName( aParaStyles ) ) { - xParaStyles.set(xFamilies->getByName( aParaStyles ), UNO_QUERY); + m_pImpl->m_xParaStyles.set(xFamilies->getByName(aParaStyles), + UNO_QUERY); } const OUString aCharStyles(RTL_CONSTASCII_USTRINGPARAM("CharacterStyles")); if( xFamilies->hasByName( aCharStyles ) ) { - xTextStyles.set(xFamilies->getByName( aCharStyles ), UNO_QUERY); + m_pImpl->m_xTextStyles.set(xFamilies->getByName(aCharStyles), + UNO_QUERY); } const OUString aNumStyles(RTL_CONSTASCII_USTRINGPARAM("NumberingStyles")); if( xFamilies->hasByName( aNumStyles ) ) { - xNumStyles.set(xFamilies->getByName( aNumStyles ), UNO_QUERY); + m_pImpl->m_xNumStyles.set(xFamilies->getByName(aNumStyles), + UNO_QUERY); } const OUString aFrameStyles(RTL_CONSTASCII_USTRINGPARAM("FrameStyles")); if( xFamilies->hasByName( aFrameStyles ) ) { - xFrameStyles.set(xFamilies->getByName( aFrameStyles ), UNO_QUERY); + m_pImpl->m_xFrameStyles.set(xFamilies->getByName(aFrameStyles), + UNO_QUERY); } const OUString aPageStyles(RTL_CONSTASCII_USTRINGPARAM("PageStyles")); if( xFamilies->hasByName( aPageStyles ) ) { - xPageStyles.set(xFamilies->getByName( aPageStyles ), UNO_QUERY); + m_pImpl->m_xPageStyles.set(xFamilies->getByName(aPageStyles), + UNO_QUERY); } } Reference < XTextFramesSupplier > xTFS( rModel, UNO_QUERY ); if( xTFS.is() ) - xTextFrames.set(xTFS->getTextFrames()); + { + m_pImpl->m_xTextFrames.set(xTFS->getTextFrames()); + } Reference < XTextGraphicObjectsSupplier > xTGOS( rModel, UNO_QUERY ); if( xTGOS.is() ) - xGraphics.set(xTGOS->getGraphicObjects()); + { + m_pImpl->m_xGraphics.set(xTGOS->getGraphicObjects()); + } Reference < XTextEmbeddedObjectsSupplier > xTEOS( rModel, UNO_QUERY ); if( xTEOS.is() ) - xObjects.set(xTEOS->getEmbeddedObjects()); + { + m_pImpl->m_xObjects.set(xTEOS->getEmbeddedObjects()); + } XMLPropertySetMapper *pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_PARA ); - xParaImpPrMap = new XMLTextImportPropertyMapper( pPropMapper, rImport ); + m_pImpl->m_xParaImpPrMap = + new XMLTextImportPropertyMapper( pPropMapper, rImport ); pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT ); - xTextImpPrMap = new XMLTextImportPropertyMapper( pPropMapper, rImport ); + m_pImpl->m_xTextImpPrMap = + new XMLTextImportPropertyMapper( pPropMapper, rImport ); pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME ); - xFrameImpPrMap = new XMLTextImportPropertyMapper( pPropMapper, rImport ); + m_pImpl->m_xFrameImpPrMap = + new XMLTextImportPropertyMapper( pPropMapper, rImport ); pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_SECTION ); - xSectionImpPrMap = new XMLTextImportPropertyMapper( pPropMapper, rImport ); + m_pImpl->m_xSectionImpPrMap = + new XMLTextImportPropertyMapper( pPropMapper, rImport ); pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_RUBY ); - xRubyImpPrMap = new SvXMLImportPropertyMapper( pPropMapper, rImport ); + m_pImpl->m_xRubyImpPrMap = + new SvXMLImportPropertyMapper( pPropMapper, rImport ); } XMLTextImportHelper::~XMLTextImportHelper() { - // --> OD 2006-10-12 #i69629# - delete [] mpOutlineStylesCandidates; - // <-- - - aBookmarkVector.clear(); - - _FinitBackpatcher(); } SvXMLImportPropertyMapper *XMLTextImportHelper::CreateShapeExtPropMapper(SvXMLImport& rImport) @@ -771,75 +1154,46 @@ SvXMLImportPropertyMapper* void XMLTextImportHelper::SetCursor( const Reference < XTextCursor > & rCursor ) { - xCursor.set(rCursor); - xText.set(rCursor->getText()); - xCursorAsRange.set( rCursor, UNO_QUERY ); + m_pImpl->m_xCursor.set(rCursor); + m_pImpl->m_xText.set(rCursor->getText()); + m_pImpl->m_xCursorAsRange.set( rCursor, UNO_QUERY ); } void XMLTextImportHelper::ResetCursor() { - xCursor.set(0); - xText.set(0); - xCursorAsRange.set(0); -} - -SvXMLTokenMap *XMLTextImportHelper::_GetTextElemTokenMap() -{ - return new SvXMLTokenMap( aTextElemTokenMap ); -} - -SvXMLTokenMap *XMLTextImportHelper::_GetTextPElemTokenMap() -{ - return new SvXMLTokenMap( aTextPElemTokenMap ); -} - -SvXMLTokenMap *XMLTextImportHelper::_GetTextPAttrTokenMap() -{ - return new SvXMLTokenMap( aTextPAttrTokenMap ); -} - -SvXMLTokenMap *XMLTextImportHelper::_GetTextFrameAttrTokenMap() -{ - return new SvXMLTokenMap( aTextFrameAttrTokenMap ); -} - -SvXMLTokenMap *XMLTextImportHelper::_GetTextContourAttrTokenMap() -{ - return new SvXMLTokenMap( aTextContourAttrTokenMap ); -} - - -SvXMLTokenMap *XMLTextImportHelper::_GetTextHyperlinkAttrTokenMap() -{ - return new SvXMLTokenMap( aTextHyperlinkAttrTokenMap ); + m_pImpl->m_xCursor.set(0); + m_pImpl->m_xText.set(0); + m_pImpl->m_xCursorAsRange.set(0); } -SvXMLTokenMap *XMLTextImportHelper::_GetTextMasterPageElemTokenMap() -{ - return new SvXMLTokenMap( aTextMasterPageElemTokenMap ); -} sal_Bool XMLTextImportHelper::HasFrameByName( const OUString& rName ) const { - return ( xTextFrames.is() && xTextFrames->hasByName( rName ) ) || - ( xGraphics.is() && xGraphics->hasByName( rName ) ) || - ( xObjects.is() && xObjects->hasByName( rName ) ); + return (m_pImpl->m_xTextFrames.is() && + m_pImpl->m_xTextFrames->hasByName(rName)) + || (m_pImpl->m_xGraphics.is() && + m_pImpl->m_xGraphics->hasByName(rName)) + || (m_pImpl->m_xObjects.is() && + m_pImpl->m_xObjects->hasByName(rName)); } void XMLTextImportHelper::InsertString( const OUString& rChars ) { - DBG_ASSERT( xText.is(), "no text" ); - DBG_ASSERT( xCursorAsRange.is(), "no range" ); - if( xText.is() ) - xText->insertString( xCursorAsRange, rChars, sal_False ); + DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); + DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); + if (m_pImpl->m_xText.is()) + { + m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, + rChars, sal_False); + } } void XMLTextImportHelper::InsertString( const OUString& rChars, sal_Bool& rIgnoreLeadingSpace ) { - DBG_ASSERT( xText.is(), "no text" ); - DBG_ASSERT( xCursorAsRange.is(), "no range" ); - if( xText.is() ) + DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); + DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); + if (m_pImpl->m_xText.is()) { sal_Int32 nLen = rChars.getLength(); OUStringBuffer sChars( nLen ); @@ -863,35 +1217,43 @@ void XMLTextImportHelper::InsertString( const OUString& rChars, break; } } - xText->insertString( xCursorAsRange, sChars.makeStringAndClear(), - sal_False ); + m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, + sChars.makeStringAndClear(), sal_False); } } + void XMLTextImportHelper::InsertControlCharacter( sal_Int16 nControl ) { - DBG_ASSERT( xText.is(), "no text" ); - DBG_ASSERT( xCursorAsRange.is(), "no range" ); - if( xText.is() ) - xText->insertControlCharacter( xCursorAsRange, nControl, sal_False ); + DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); + DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); + if (m_pImpl->m_xText.is()) + { + m_pImpl->m_xText->insertControlCharacter( + m_pImpl->m_xCursorAsRange, nControl, sal_False); + } } void XMLTextImportHelper::InsertTextContent( Reference < XTextContent > & xContent ) { - DBG_ASSERT( xText.is(), "no text" ); - DBG_ASSERT( xCursorAsRange.is(), "no range" ); - if( xText.is() ) - xText->insertTextContent( xCursorAsRange, xContent, sal_False ); + DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); + DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); + if (m_pImpl->m_xText.is()) + { + m_pImpl->m_xText->insertTextContent( + m_pImpl->m_xCursorAsRange, xContent, sal_False); + } } void XMLTextImportHelper::DeleteParagraph() { - DBG_ASSERT( xText.is(), "no text" ); - DBG_ASSERT( xCursor.is(), "no cursor" ); - DBG_ASSERT( xCursorAsRange.is(), "no range" ); + DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); + DBG_ASSERT(m_pImpl->m_xCursor.is(), "no cursor"); + DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); sal_Bool bDelete = sal_True; - Reference < XEnumerationAccess > xEnumAccess( xCursor, UNO_QUERY ); + Reference < XEnumerationAccess > const xEnumAccess( + m_pImpl->m_xCursor, UNO_QUERY); if( xEnumAccess.is() ) { Reference < XEnumeration > xEnum(xEnumAccess->createEnumeration()); @@ -909,10 +1271,11 @@ void XMLTextImportHelper::DeleteParagraph() } if( bDelete ) { - if( xCursor->goLeft( 1, sal_True ) ) + if (m_pImpl->m_xCursor->goLeft( 1, sal_True )) { OUString sEmpty; - xText->insertString( xCursorAsRange, sEmpty, sal_True ); + m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, + sEmpty, sal_True); } } } @@ -935,9 +1298,10 @@ OUString XMLTextImportHelper::ConvertStarFonts( const OUString& rChars, XMLTextStyleContext *pStyle = 0; sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH : XML_STYLE_FAMILY_TEXT_TEXT; - if( rStyleName.getLength() && xAutoStyles.Is() ) + if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) { - const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)-> + const SvXMLStyleContext* pTempStyle = + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> FindStyleChildContext( nFamily, rStyleName, sal_True ); pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle); @@ -949,7 +1313,8 @@ OUString XMLTextImportHelper::ConvertStarFonts( const OUString& rChars, if( nCount ) { UniReference < SvXMLImportPropertyMapper > xImpPrMap = - ((SvXMLStylesContext *)&xAutoStyles)->GetImportPropertyMapper(nFamily); + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles) + ->GetImportPropertyMapper(nFamily); if( xImpPrMap.is() ) { UniReference<XMLPropertySetMapper> rPropMapper = @@ -1135,13 +1500,41 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( sal_Bool bSetListAttrs ) // <-- { + static ::rtl::OUString s_ParaStyleName( + RTL_CONSTASCII_USTRINGPARAM("ParaStyleName")); + static ::rtl::OUString s_CharStyleName( + RTL_CONSTASCII_USTRINGPARAM("CharStyleName")); + static ::rtl::OUString s_NumberingRules( + RTL_CONSTASCII_USTRINGPARAM("NumberingRules")); + static ::rtl::OUString s_NumberingIsNumber( + RTL_CONSTASCII_USTRINGPARAM("NumberingIsNumber")); + static ::rtl::OUString s_NumberingLevel( + RTL_CONSTASCII_USTRINGPARAM("NumberingLevel")); + static ::rtl::OUString s_ParaIsNumberingRestart( + RTL_CONSTASCII_USTRINGPARAM("ParaIsNumberingRestart")); + static ::rtl::OUString s_NumberingStartValue( + RTL_CONSTASCII_USTRINGPARAM("NumberingStartValue")); + static ::rtl::OUString s_PropNameListId( + RTL_CONSTASCII_USTRINGPARAM("ListId")); + static ::rtl::OUString s_PageDescName( + RTL_CONSTASCII_USTRINGPARAM("PageDescName")); + static ::rtl::OUString s_ServiceCombinedCharacters( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.text.TextField.CombinedCharacters")); + static ::rtl::OUString s_Content(RTL_CONSTASCII_USTRINGPARAM("Content")); + static ::rtl::OUString s_OutlineLevel( + RTL_CONSTASCII_USTRINGPARAM("OutlineLevel")); + static ::rtl::OUString s_NumberingStyleName( + RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName")); + const sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH : XML_STYLE_FAMILY_TEXT_TEXT; XMLTextStyleContext *pStyle = 0; OUString sStyleName( rStyleName ); - if( sStyleName.getLength() && xAutoStyles.Is() ) + if (sStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) { - const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)-> + const SvXMLStyleContext* pTempStyle = + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> FindStyleChildContext( nFamily, sStyleName, sal_True ); pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle); } @@ -1156,9 +1549,10 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( if( sStyleName.getLength() ) { sStyleName = rImport.GetStyleDisplayName( nFamily, sStyleName ); - const String& rPropName = bPara ? sParaStyleName : sCharStyleName; - const Reference < XNameContainer > & rStyles = bPara ? xParaStyles - : xTextStyles; + const String& rPropName = (bPara) ? s_ParaStyleName : s_CharStyleName; + const Reference < XNameContainer > & rStyles = (bPara) + ? m_pImpl->m_xParaStyles + : m_pImpl->m_xTextStyles; if( rStyles.is() && xPropSetInfo->hasPropertyByName( rPropName ) && rStyles->hasByName( sStyleName ) ) @@ -1174,11 +1568,13 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( // is not inside a list and if it by default applies the outline style. bool bApplyOutlineLevelAsListLevel( false ); // --> OD 2007-08-17 #i80724# - if ( bSetListAttrs && bPara && xPropSetInfo->hasPropertyByName( sNumberingRules ) ) + if (bSetListAttrs && bPara + && xPropSetInfo->hasPropertyByName( s_NumberingRules)) // <-- { // Set numbering rules - Reference < XIndexReplace > xNumRules(xPropSet->getPropertyValue( sNumberingRules ), UNO_QUERY); + Reference< XIndexReplace > const xNumRules( + xPropSet->getPropertyValue(s_NumberingRules), UNO_QUERY); XMLTextListBlockContext * pListBlock(0); XMLTextListItemContext * pListItem(0); @@ -1214,7 +1610,8 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( } // --> OD 2008-08-15 #i92811# - sListId = mpTextListsHelper->GetListIdForListBlock( *pListBlock ); + sListId = m_pImpl->m_pTextListsHelper->GetListIdForListBlock( + *pListBlock); // <-- } else if (pNumberedParagraph) @@ -1268,7 +1665,8 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( // gracefully. try { - xPropSet->setPropertyValue( sNumberingRules, makeAny(xNewNumRules) ); + xPropSet->setPropertyValue( + s_NumberingRules, makeAny(xNewNumRules) ); } catch( Exception e ) { @@ -1279,37 +1677,37 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( } if (!bNumberingIsNumber && - xPropSetInfo->hasPropertyByName( sNumberingIsNumber ) ) + xPropSetInfo->hasPropertyByName(s_NumberingIsNumber)) { - xPropSet->setPropertyValue( sNumberingIsNumber, Any(sal_False) ); + xPropSet->setPropertyValue(s_NumberingIsNumber, Any(sal_False)); } - xPropSet->setPropertyValue( sNumberingLevel, Any(nLevel) ); + xPropSet->setPropertyValue( s_NumberingLevel, Any(nLevel) ); if( pListBlock && pListBlock->IsRestartNumbering() ) { // TODO: property missing - if( xPropSetInfo->hasPropertyByName( sParaIsNumberingRestart ) ) + if (xPropSetInfo->hasPropertyByName(s_ParaIsNumberingRestart)) { sal_Bool bTmp = sal_True; - xPropSet->setPropertyValue(sParaIsNumberingRestart, + xPropSet->setPropertyValue(s_ParaIsNumberingRestart, makeAny(bTmp) ); } pListBlock->ResetRestartNumbering(); } if ( 0 <= nStartValue && - xPropSetInfo->hasPropertyByName( sNumberingStartValue ) ) + xPropSetInfo->hasPropertyByName(s_NumberingStartValue)) { - xPropSet->setPropertyValue(sNumberingStartValue, + xPropSet->setPropertyValue(s_NumberingStartValue, makeAny(nStartValue)); } // --> OD 2008-04-23 #refactorlists# - if ( xPropSetInfo->hasPropertyByName( sPropNameListId ) ) + if (xPropSetInfo->hasPropertyByName(s_PropNameListId)) { if (sListId.getLength()) { - xPropSet->setPropertyValue( sPropNameListId, + xPropSet->setPropertyValue(s_PropNameListId, makeAny(sListId) ); } } @@ -1338,10 +1736,11 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( if ( ( bBuildIdFound && nUPD == 680 ) || !pStyle || !pStyle->IsListStyleSet() ) { - if ( xChapterNumbering.is() ) + if (m_pImpl->m_xChapterNumbering.is()) { Reference< XNamed > xNumNamed( xNumRules, UNO_QUERY ); - Reference< XNamed > xChapterNumNamed( xChapterNumbering, UNO_QUERY ); + Reference< XNamed > const xChapterNumNamed ( + m_pImpl->m_xChapterNumbering, UNO_QUERY); if ( xNumNamed.is() && xChapterNumNamed.is() && xNumNamed->getName() == xChapterNumNamed->getName() ) { @@ -1355,7 +1754,7 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( // <-- if ( bRemove ) { - xPropSet->setPropertyValue( sNumberingRules, Any() ); + xPropSet->setPropertyValue( s_NumberingRules, Any() ); } } // <-- @@ -1367,27 +1766,28 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( { pStyle->FillPropertySet( xPropSet ); if( bPara && pStyle->HasMasterPageName() && - xPropSetInfo->hasPropertyByName( sPageDescName ) ) + xPropSetInfo->hasPropertyByName(s_PageDescName)) { OUString sDisplayName( rImport.GetStyleDisplayName( XML_STYLE_FAMILY_MASTER_PAGE, pStyle->GetMasterPageName()) ); if( !sDisplayName.getLength() || - (xPageStyles.is() && - xPageStyles->hasByName( sDisplayName )) ) + (m_pImpl->m_xPageStyles.is() && + m_pImpl->m_xPageStyles->hasByName( sDisplayName))) { - xPropSet->setPropertyValue( sPageDescName, makeAny(sDisplayName) ); + xPropSet->setPropertyValue(s_PageDescName, + makeAny(sDisplayName)); } } if( bPara && pStyle->GetDropCapStyleName().getLength() && - xTextStyles.is() ) + m_pImpl->m_xTextStyles.is()) { OUString sDisplayName( rImport.GetStyleDisplayName( XML_STYLE_FAMILY_TEXT_TEXT, pStyle->GetDropCapStyleName()) ); - if( xTextStyles->hasByName( sDisplayName ) && + if (m_pImpl->m_xTextStyles->hasByName(sDisplayName) && xPropSetInfo->hasPropertyByName( sDisplayName ) ) { xPropSet->setPropertyValue( pStyle->sDropCapCharStyleName, makeAny(sDisplayName) ); @@ -1398,9 +1798,11 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( if (!bPara && pStyle->HasCombinedCharactersLetter()) { // insert combined characters text field - if( xServiceFactory.is() ) + if (m_pImpl->m_xServiceFactory.is()) { - Reference<XPropertySet> xTmp( xServiceFactory->createInstance(sServiceCombinedCharacters), UNO_QUERY ); + uno::Reference<beans::XPropertySet> const xTmp( + m_pImpl->m_xServiceFactory->createInstance( + s_ServiceCombinedCharacters), UNO_QUERY); if( xTmp.is() ) { // fix cursor if larger than possible for @@ -1413,15 +1815,16 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( } // set field value (the combined character string) - xTmp->setPropertyValue(sContent, makeAny(rCursor->getString())); + xTmp->setPropertyValue(s_Content, + makeAny(rCursor->getString())); // insert the field over it's original text Reference<XTextRange> xRange(rCursor, UNO_QUERY); Reference<XTextContent> xTextContent(xTmp, UNO_QUERY); - if (xText.is() && xRange.is()) + if (m_pImpl->m_xText.is() && xRange.is()) { - xText->insertTextContent( xRange, xTextContent, - sal_True ); + m_pImpl->m_xText->insertTextContent( + xRange, xTextContent, sal_True); } } } @@ -1444,10 +1847,12 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( { // --> OD 2009-08-18 #i103817# sal_Int16 nCurrentOutlineLevelInheritedFromParagraphStyle = 0; - const bool bHasOutlineLevelProp( xPropSetInfo->hasPropertyByName( sOutlineLevel ) ); + const bool bHasOutlineLevelProp( + xPropSetInfo->hasPropertyByName(s_OutlineLevel)); if ( bHasOutlineLevelProp ) { - xPropSet->getPropertyValue( sOutlineLevel ) >>= nCurrentOutlineLevelInheritedFromParagraphStyle; + xPropSet->getPropertyValue(s_OutlineLevel) + >>= nCurrentOutlineLevelInheritedFromParagraphStyle; } // <-- //if ( bPara && nOutlineLevel != -1 ) //#outline level,removed by zhaojianwei @@ -1460,7 +1865,7 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( // attribute outline level, the paragraph attribute value is left unset if ( nCurrentOutlineLevelInheritedFromParagraphStyle != nOutlineLevel ) { - xPropSet->setPropertyValue( sOutlineLevel, + xPropSet->setPropertyValue( s_OutlineLevel, makeAny( static_cast<sal_Int16>(nOutlineLevel) ) ); } }//<-end,zhaojianwei @@ -1469,11 +1874,11 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( if ( bApplyOutlineLevelAsListLevel ) { sal_Int16 nNumLevel = -1; - xPropSet->getPropertyValue( sNumberingLevel ) >>= nNumLevel; + xPropSet->getPropertyValue( s_NumberingLevel ) >>= nNumLevel; if ( nNumLevel == -1 || nNumLevel != (nOutlineLevel - 1) ) { - xPropSet->setPropertyValue( sNumberingLevel, + xPropSet->setPropertyValue( s_NumberingLevel, makeAny( static_cast<sal_Int8>(nOutlineLevel - 1) ) ); } } @@ -1486,7 +1891,7 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( // a candidate for an assignment to the list level of the outline // style, if it has no direct list style property and (if exists) the // automatic paragraph style has also no direct list style set. - if( xParaStyles->hasByName( sStyleName ) ) + if (m_pImpl->m_xParaStyles->hasByName(sStyleName)) { bool bOutlineStyleCandidate( false ); @@ -1538,19 +1943,19 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( // Assure that heading applies the outline style if ( ( !pStyle || !pStyle->IsListStyleSet() ) && !bOutlineStyleCandidate && - xChapterNumbering.is() ) + m_pImpl->m_xChapterNumbering.is()) { OUString sEmptyStr; if ( !lcl_HasListStyle( sStyleName, - xParaStyles, GetXMLImport(), - sNumberingStyleName, + m_pImpl->m_xParaStyles, GetXMLImport(), + s_NumberingStyleName, sEmptyStr ) ) { // heading not in a list --> apply outline style - xPropSet->setPropertyValue( sNumberingRules, - makeAny(xChapterNumbering) ); - xPropSet->setPropertyValue( sNumberingLevel, - makeAny( static_cast<sal_Int8>(nOutlineLevel - 1) ) ); + xPropSet->setPropertyValue( s_NumberingRules, + makeAny(m_pImpl->m_xChapterNumbering) ); + xPropSet->setPropertyValue( s_NumberingLevel, + makeAny(static_cast<sal_Int8>(nOutlineLevel - 1))); } } // <-- @@ -1564,7 +1969,8 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( if ( nCurrentOutlineLevelInheritedFromParagraphStyle != 0 ) { sal_Int16 nZero = 0; - xPropSet->setPropertyValue( sOutlineLevel, makeAny( static_cast<sal_Int16>(nZero) ) ); + xPropSet->setPropertyValue(s_OutlineLevel, + makeAny( static_cast<sal_Int16>(nZero) )); } }//<-end,zhaojianwei } @@ -1576,38 +1982,39 @@ OUString XMLTextImportHelper::SetStyleAndAttrs( void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName, sal_Int8 nOutlineLevel ) { + static ::rtl::OUString s_HeadingStyleName( + RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName")); + // style name empty? if( rStyleName.getLength() == 0 ) { // Empty? Then we need o do stuff. Let's do error checking first. - if( xChapterNumbering.is() && + if (m_pImpl->m_xChapterNumbering.is() && ( nOutlineLevel > 0 ) && - ( nOutlineLevel <= xChapterNumbering->getCount() ) ) + (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount())) { nOutlineLevel--; // for the remainder, the level's are 0-based // empty style name: look-up previously used name // if we don't have a previously used name, we'll use the default - if ( mpOutlineStylesCandidates == NULL ) - { - mpOutlineStylesCandidates = new ::std::vector<OUString>[xChapterNumbering->getCount()]; - } - - if ( mpOutlineStylesCandidates[nOutlineLevel].empty() ) + m_pImpl->InitOutlineStylesCandidates(); + if (m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].empty()) { // no other name used previously? Then use default // iterate over property value sequence to find the style name Sequence<PropertyValue> aProperties; - xChapterNumbering->getByIndex( nOutlineLevel ) >>= aProperties; + m_pImpl->m_xChapterNumbering->getByIndex( nOutlineLevel ) + >>= aProperties; for( sal_Int32 i = 0; i < aProperties.getLength(); i++ ) { - if( aProperties[i].Name == sHeadingStyleName ) + if (aProperties[i].Name == s_HeadingStyleName) { rtl::OUString aOutlineStyle; aProperties[i].Value >>= aOutlineStyle; - mpOutlineStylesCandidates[nOutlineLevel].push_back( aOutlineStyle ); + m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel] + .push_back( aOutlineStyle ); break; // early out, if we found it!. } } @@ -1616,7 +2023,8 @@ void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName, // finally, we'll use the previously used style name for this // format (or the default we've just put into that style) // --> OD 2006-11-06 #i71249# - take last added one - rStyleName = mpOutlineStylesCandidates[nOutlineLevel].back(); + rStyleName = + m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].back(); // <-- } // else: nothing we can do, so we'll leave it empty @@ -1627,23 +2035,27 @@ void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName, void XMLTextImportHelper::AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel, const OUString& rStyleName ) { - if ( rStyleName.getLength() && - xChapterNumbering.is() && - nOutlineLevel > 0 && nOutlineLevel <= xChapterNumbering->getCount() ) + if (rStyleName.getLength() + && m_pImpl->m_xChapterNumbering.is() + && (nOutlineLevel > 0) + && (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount())) { - if( !mpOutlineStylesCandidates ) - { - mpOutlineStylesCandidates = new ::std::vector<OUString>[xChapterNumbering->getCount()]; - } - mpOutlineStylesCandidates[nOutlineLevel-1].push_back( rStyleName ); + m_pImpl->InitOutlineStylesCandidates(); + m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel-1].push_back( + rStyleName); } } void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels ) { - if ( ( mpOutlineStylesCandidates != NULL || bSetEmptyLevels ) && - xChapterNumbering.is() && - !IsInsertMode() ) + static ::rtl::OUString s_NumberingStyleName( + RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName")); + static ::rtl::OUString s_HeadingStyleName( + RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName")); + + if ((m_pImpl->m_pOutlineStylesCandidates != NULL || bSetEmptyLevels) && + m_pImpl->m_xChapterNumbering.is() && + !IsInsertMode()) { bool bChooseLastOne( false ); { @@ -1666,12 +2078,13 @@ void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels ) OUString sOutlineStyleName; { - Reference<XPropertySet> xChapterNumRule( xChapterNumbering, UNO_QUERY ); + Reference<XPropertySet> xChapterNumRule( + m_pImpl->m_xChapterNumbering, UNO_QUERY); const OUString sName(RTL_CONSTASCII_USTRINGPARAM("Name")); xChapterNumRule->getPropertyValue(sName) >>= sOutlineStyleName; } - const sal_Int32 nCount = xChapterNumbering->getCount(); + const sal_Int32 nCount = m_pImpl->m_xChapterNumbering->getCount(); // --> OD 2009-11-13 #i106218# // First collect all paragraph styles choosen for assignment to each // list level of the outline style, then perform the intrinsic assignment. @@ -1683,28 +2096,33 @@ void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels ) for( sal_Int32 i=0; i < nCount; ++i ) { if ( bSetEmptyLevels || - ( mpOutlineStylesCandidates && - !mpOutlineStylesCandidates[i].empty() ) ) + (m_pImpl->m_pOutlineStylesCandidates && + !m_pImpl->m_pOutlineStylesCandidates[i].empty())) { // determine, which candidate is one to be assigned to the list // level of the outline style - if ( mpOutlineStylesCandidates && - !mpOutlineStylesCandidates[i].empty() ) + if (m_pImpl->m_pOutlineStylesCandidates && + !m_pImpl->m_pOutlineStylesCandidates[i].empty()) { if ( bChooseLastOne ) { - sChosenStyles[i] = mpOutlineStylesCandidates[i].back(); + sChosenStyles[i] = + m_pImpl->m_pOutlineStylesCandidates[i].back(); } else { - for ( sal_uInt32 j = 0; j < mpOutlineStylesCandidates[i].size(); ++j ) + for (sal_uInt32 j = 0; + j < m_pImpl->m_pOutlineStylesCandidates[i].size(); + ++j) { - if ( !lcl_HasListStyle( mpOutlineStylesCandidates[i][j], - xParaStyles, GetXMLImport(), - sNumberingStyleName, - sOutlineStyleName ) ) + if (!lcl_HasListStyle( + m_pImpl->m_pOutlineStylesCandidates[i][j], + m_pImpl->m_xParaStyles, GetXMLImport(), + s_NumberingStyleName, + sOutlineStyleName)) { - sChosenStyles[i] = mpOutlineStylesCandidates[i][j]; + sChosenStyles[i] = + m_pImpl->m_pOutlineStylesCandidates[i][j]; break; } } @@ -1715,7 +2133,7 @@ void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels ) // --> OD 2009-11-13 #i106218# Sequence < PropertyValue > aProps( 1 ); PropertyValue *pProps = aProps.getArray(); - pProps->Name = sHeadingStyleName; + pProps->Name = s_HeadingStyleName; for ( sal_Int32 i = 0; i < nCount; ++i ) { // --> OD 2009-12-11 #i107610# @@ -1724,7 +2142,8 @@ void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels ) // <-- { pProps->Value <<= sChosenStyles[i]; - xChapterNumbering->replaceByIndex( i, makeAny( aProps ) ); + m_pImpl->m_xChapterNumbering->replaceByIndex(i, + makeAny( aProps )); } } // <-- @@ -1741,62 +2160,79 @@ void XMLTextImportHelper::SetHyperlink( const OUString& rVisitedStyleName, XMLEventsImportContext* pEvents) { + static ::rtl::OUString s_HyperLinkURL( + RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL")); + static ::rtl::OUString s_HyperLinkName( + RTL_CONSTASCII_USTRINGPARAM("HyperLinkName")); + static ::rtl::OUString s_HyperLinkTarget( + RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget")); + static ::rtl::OUString s_UnvisitedCharStyleName( + RTL_CONSTASCII_USTRINGPARAM("UnvisitedCharStyleName")); + static ::rtl::OUString s_VisitedCharStyleName( + RTL_CONSTASCII_USTRINGPARAM("VisitedCharStyleName")); + static ::rtl::OUString s_HyperLinkEvents( + RTL_CONSTASCII_USTRINGPARAM("HyperLinkEvents")); + Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY ); Reference < XPropertySetInfo > xPropSetInfo( xPropSet->getPropertySetInfo()); - if( !xPropSetInfo.is() || !xPropSetInfo->hasPropertyByName(sHyperLinkURL) ) + if (!xPropSetInfo.is() || !xPropSetInfo->hasPropertyByName(s_HyperLinkURL)) return; - xPropSet->setPropertyValue( sHyperLinkURL, makeAny(rHRef) ); + xPropSet->setPropertyValue(s_HyperLinkURL, makeAny(rHRef)); - if( xPropSetInfo->hasPropertyByName( sHyperLinkName ) ) + if (xPropSetInfo->hasPropertyByName(s_HyperLinkName)) { - xPropSet->setPropertyValue( sHyperLinkName, makeAny(rName) ); + xPropSet->setPropertyValue(s_HyperLinkName, makeAny(rName)); } - if( xPropSetInfo->hasPropertyByName( sHyperLinkTarget ) ) + if (xPropSetInfo->hasPropertyByName(s_HyperLinkTarget)) { - xPropSet->setPropertyValue( sHyperLinkTarget, makeAny(rTargetFrameName) ); + xPropSet->setPropertyValue(s_HyperLinkTarget, + makeAny(rTargetFrameName)); } if ( (pEvents != NULL) && - xPropSetInfo->hasPropertyByName( sHyperLinkEvents )) + xPropSetInfo->hasPropertyByName(s_HyperLinkEvents)) { // The API treats events at hyperlinks differently from most // other properties: You have to set a name replace with the // events in it. The easiest way to to this is to 1) get // events, 2) set new ones, and 3) then put events back. - Reference<XNameReplace> xReplace(xPropSet->getPropertyValue( sHyperLinkEvents ), UNO_QUERY); + uno::Reference<XNameReplace> const xReplace( + xPropSet->getPropertyValue(s_HyperLinkEvents), UNO_QUERY); if (xReplace.is()) { // set events pEvents->SetEvents(xReplace); // put events - xPropSet->setPropertyValue( sHyperLinkEvents, makeAny(xReplace) ); + xPropSet->setPropertyValue(s_HyperLinkEvents, makeAny(xReplace)); } } - if( xTextStyles.is() ) + if (m_pImpl->m_xTextStyles.is()) { OUString sDisplayName( rImport.GetStyleDisplayName( XML_STYLE_FAMILY_TEXT_TEXT, rStyleName ) ); if( sDisplayName.getLength() && - xPropSetInfo->hasPropertyByName( sUnvisitedCharStyleName ) && - xTextStyles->hasByName( sDisplayName ) ) + xPropSetInfo->hasPropertyByName(s_UnvisitedCharStyleName) && + m_pImpl->m_xTextStyles->hasByName(sDisplayName)) { - xPropSet->setPropertyValue( sUnvisitedCharStyleName, makeAny(sDisplayName) ); + xPropSet->setPropertyValue(s_UnvisitedCharStyleName, + makeAny(sDisplayName)); } sDisplayName = rImport.GetStyleDisplayName( XML_STYLE_FAMILY_TEXT_TEXT, rVisitedStyleName ); if( sDisplayName.getLength() && - xPropSetInfo->hasPropertyByName( sVisitedCharStyleName ) && - xTextStyles->hasByName( sDisplayName ) ) + xPropSetInfo->hasPropertyByName(s_VisitedCharStyleName) && + m_pImpl->m_xTextStyles->hasByName(sDisplayName)) { - xPropSet->setPropertyValue( sVisitedCharStyleName, makeAny(sDisplayName) ); + xPropSet->setPropertyValue(s_VisitedCharStyleName, + makeAny(sDisplayName)); } } } @@ -1822,9 +2258,10 @@ void XMLTextImportHelper::SetRuby( // the ruby style (ruby-adjust) XMLPropStyleContext *pStyle = 0; - if( rStyleName.getLength() && xAutoStyles.Is() ) + if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) { - const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)-> + const SvXMLStyleContext* pTempStyle = + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> FindStyleChildContext( XML_STYLE_FAMILY_TEXT_RUBY, rStyleName, sal_True ); pStyle = PTR_CAST(XMLPropStyleContext,pTempStyle); @@ -1834,14 +2271,14 @@ void XMLTextImportHelper::SetRuby( } // the ruby text character style - if( xTextStyles.is() ) + if (m_pImpl->m_xTextStyles.is()) { OUString sDisplayName( rImport.GetStyleDisplayName( XML_STYLE_FAMILY_TEXT_TEXT, rTextStyleName ) ); if( (sDisplayName.getLength() > 0) && // xPropSetInfo->hasPropertyByName( sRubyCharStyleName ) && - xTextStyles->hasByName( sDisplayName ) ) + m_pImpl->m_xTextStyles->hasByName( sDisplayName )) { xPropSet->setPropertyValue(sRubyCharStyleName, makeAny(sDisplayName)); } @@ -1851,21 +2288,21 @@ void XMLTextImportHelper::SetRuby( void XMLTextImportHelper::SetAutoStyles( SvXMLStylesContext *pStyles ) { - xAutoStyles = pStyles; + m_pImpl->m_xAutoStyles = pStyles; } void XMLTextImportHelper::SetFontDecls( XMLFontStylesContext *pFontDecls ) { - xFontDecls = pFontDecls; - ((XMLTextImportPropertyMapper *)xParaImpPrMap.get()) + m_pImpl->m_xFontDecls = pFontDecls; + ((XMLTextImportPropertyMapper *)m_pImpl->m_xParaImpPrMap.get()) ->SetFontDecls( pFontDecls ); - ((XMLTextImportPropertyMapper *)xTextImpPrMap.get()) + ((XMLTextImportPropertyMapper *)m_pImpl->m_xTextImpPrMap.get()) ->SetFontDecls( pFontDecls ); } const XMLFontStylesContext *XMLTextImportHelper::GetFontDecls() const { - return (XMLFontStylesContext *)&xFontDecls; + return (XMLFontStylesContext *)&m_pImpl->m_xFontDecls; } sal_Bool XMLTextImportHelper::HasDrawNameAttribute( @@ -1910,7 +2347,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( pContext = new XMLParaContext( rImport, nPrefix, rLocalName, xAttrList, bHeading ); - if( bProgress && XML_TEXT_TYPE_SHAPE != eType ) + if (m_pImpl->m_bProgress && XML_TEXT_TYPE_SHAPE != eType) { rImport.GetProgressBarHelper()->Increment(); } @@ -1935,7 +2372,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( xAttrList ); break; case XML_TOK_TEXT_SEQUENCE_DECLS: - if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) || + if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || XML_TEXT_TYPE_HEADER_FOOTER == eType ) { pContext = new XMLVariableDeclsImportContext( @@ -1945,7 +2382,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( break; case XML_TOK_TEXT_VARFIELD_DECLS: - if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) || + if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || XML_TEXT_TYPE_HEADER_FOOTER == eType ) { pContext = new XMLVariableDeclsImportContext( @@ -1955,7 +2392,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( break; case XML_TOK_TEXT_USERFIELD_DECLS: - if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted)|| + if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted)|| XML_TEXT_TYPE_HEADER_FOOTER == eType ) { pContext = new XMLVariableDeclsImportContext( @@ -1965,7 +2402,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( break; case XML_TOK_TEXT_DDE_DECLS: - if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) || + if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || XML_TEXT_TYPE_HEADER_FOOTER == eType ) { pContext = new XMLDdeFieldDeclsImportContext( @@ -1975,7 +2412,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( break; case XML_TOK_TEXT_FRAME_PAGE: - if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) || + if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || XML_TEXT_TYPE_TEXTBOX == eType || XML_TEXT_TYPE_CHANGED_REGION == eType ) { @@ -1990,7 +2427,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( break; case XML_TOK_DRAW_A_PAGE: - if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) || + if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || XML_TEXT_TYPE_TEXTBOX == eType || XML_TEXT_TYPE_CHANGED_REGION == eType) { @@ -2080,7 +2517,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( break; default: - if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) || + if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || XML_TEXT_TYPE_TEXTBOX == eType || XML_TEXT_TYPE_CHANGED_REGION == eType ) { @@ -2103,7 +2540,9 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( } if( XML_TEXT_TYPE_BODY == eType && bContent ) - bBodyContentStarted = sal_False; + { + m_pImpl->m_bBodyContentStarted = sal_False; + } return pContext; } @@ -2120,7 +2559,8 @@ SvXMLImportContext *XMLTextImportHelper::CreateTableChildContext( sal_Int32 XMLTextImportHelper::GetDataStyleKey(const OUString& sStyleName, sal_Bool* pIsSystemLanguage ) { - const SvXMLStyleContext* pStyle = ((SvXMLStylesContext *)&xAutoStyles)-> + const SvXMLStyleContext* pStyle = + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> FindStyleChildContext( XML_STYLE_FAMILY_DATA_STYLE, sStyleName, sal_True ); @@ -2153,9 +2593,10 @@ sal_Int32 XMLTextImportHelper::GetDataStyleKey(const OUString& sStyleName, const SvxXMLListStyleContext *XMLTextImportHelper::FindAutoListStyle( const OUString& rName ) const { const SvxXMLListStyleContext *pStyle = 0; - if( xAutoStyles.Is() ) + if (m_pImpl->m_xAutoStyles.Is()) { - const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)-> + const SvXMLStyleContext* pTempStyle = + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> FindStyleChildContext( XML_STYLE_FAMILY_TEXT_LIST, rName, sal_True ); pStyle = PTR_CAST( SvxXMLListStyleContext ,pTempStyle); @@ -2167,9 +2608,10 @@ const SvxXMLListStyleContext *XMLTextImportHelper::FindAutoListStyle( const OUSt XMLPropStyleContext *XMLTextImportHelper::FindAutoFrameStyle( const OUString& rName ) const { XMLPropStyleContext *pStyle = 0; - if( xAutoStyles.Is() ) + if (m_pImpl->m_xAutoStyles.Is()) { - const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)-> + const SvXMLStyleContext* pTempStyle = + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> FindStyleChildContext( XML_STYLE_FAMILY_SD_GRAPHICS_ID, rName, sal_True ); pStyle = PTR_CAST( XMLPropStyleContext ,pTempStyle); @@ -2182,9 +2624,10 @@ XMLPropStyleContext* XMLTextImportHelper::FindSectionStyle( const OUString& rName ) const { XMLPropStyleContext* pStyle = NULL; - if (xAutoStyles.Is() ) + if (m_pImpl->m_xAutoStyles.Is()) { - const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)-> + const SvXMLStyleContext* pTempStyle = + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> FindStyleChildContext( XML_STYLE_FAMILY_TEXT_SECTION, rName, sal_True ); @@ -2198,9 +2641,10 @@ XMLPropStyleContext* XMLTextImportHelper::FindPageMaster( const OUString& rName ) const { XMLPropStyleContext* pStyle = NULL; - if (xAutoStyles.Is() ) + if (m_pImpl->m_xAutoStyles.Is()) { - const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)-> + const SvXMLStyleContext* pTempStyle = + ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> FindStyleChildContext( XML_STYLE_FAMILY_PAGE_MASTER, rName, sal_True ); @@ -2224,63 +2668,75 @@ void XMLTextImportHelper::PopListContext() const SvXMLTokenMap& XMLTextImportHelper::GetTextNumberedParagraphAttrTokenMap() { - if( !pTextNumberedParagraphAttrTokenMap.get() ) - pTextNumberedParagraphAttrTokenMap.reset( + if (!m_pImpl->m_pTextNumberedParagraphAttrTokenMap.get()) + { + m_pImpl->m_pTextNumberedParagraphAttrTokenMap.reset( new SvXMLTokenMap( aTextNumberedParagraphAttrTokenMap ) ); - - return *pTextNumberedParagraphAttrTokenMap; + } + return *m_pImpl->m_pTextNumberedParagraphAttrTokenMap; } const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockAttrTokenMap() { - if( !pTextListBlockAttrTokenMap.get() ) - pTextListBlockAttrTokenMap.reset( + if (!m_pImpl->m_pTextListBlockAttrTokenMap.get()) + { + m_pImpl->m_pTextListBlockAttrTokenMap.reset( new SvXMLTokenMap( aTextListBlockAttrTokenMap ) ); - - return *pTextListBlockAttrTokenMap; + } + return *m_pImpl->m_pTextListBlockAttrTokenMap; } const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockElemTokenMap() { - if( !pTextListBlockElemTokenMap.get() ) - pTextListBlockElemTokenMap.reset( + if (!m_pImpl->m_pTextListBlockElemTokenMap.get()) + { + m_pImpl->m_pTextListBlockElemTokenMap.reset( new SvXMLTokenMap( aTextListBlockElemTokenMap ) ); - - return *pTextListBlockElemTokenMap; + } + return *m_pImpl->m_pTextListBlockElemTokenMap; } SvI18NMap& XMLTextImportHelper::GetRenameMap() { - if( !pRenameMap.get() ) - pRenameMap.reset( new SvI18NMap() ); - return *pRenameMap; + if (!m_pImpl->m_pRenameMap.get()) + { + m_pImpl->m_pRenameMap.reset( new SvI18NMap() ); + } + return *m_pImpl->m_pRenameMap; } void XMLTextImportHelper::InsertBookmarkStartRange( const OUString sName, const Reference<XTextRange> & rRange, - const OUString& i_rXmlId) + OUString const& i_rXmlId, + ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & i_rpRDFaAttributes) { - aBookmarkStartRanges[sName] = std::make_pair(rRange, i_rXmlId); - aBookmarkVector.push_back(sName); + m_pImpl->m_BookmarkStartRanges[sName] = + ::boost::make_tuple(rRange, i_rXmlId, i_rpRDFaAttributes); + m_pImpl->m_BookmarkVector.push_back(sName); } sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange( const OUString sName, Reference<XTextRange> & o_rRange, - OUString& o_rXmlId) + OUString & o_rXmlId, + ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & o_rpRDFaAttributes) { - if (aBookmarkStartRanges.count(sName)) + if (m_pImpl->m_BookmarkStartRanges.count(sName)) { - o_rRange.set(aBookmarkStartRanges[sName].first); - o_rXmlId = aBookmarkStartRanges[sName].second; - aBookmarkStartRanges.erase(sName); - BookmarkVector_t::iterator it=aBookmarkVector.begin(); - while(it!=aBookmarkVector.end() && it->compareTo(sName)!=0) { + Impl::BookmarkMapEntry_t & rEntry = + (*m_pImpl->m_BookmarkStartRanges.find(sName)).second; + o_rRange.set(rEntry.get<0>()); + o_rXmlId = rEntry.get<1>(); + o_rpRDFaAttributes = rEntry.get<2>(); + m_pImpl->m_BookmarkStartRanges.erase(sName); + Impl::BookmarkVector_t::iterator it(m_pImpl->m_BookmarkVector.begin()); + while (it != m_pImpl->m_BookmarkVector.end() && it->compareTo(sName)!=0) + { it++; } - if (it!=aBookmarkVector.end()) { - aBookmarkVector.erase(it); + if (it!=m_pImpl->m_BookmarkVector.end()) { + m_pImpl->m_BookmarkVector.erase(it); } return sal_True; } @@ -2292,62 +2748,68 @@ sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange( ::rtl::OUString XMLTextImportHelper::FindActiveBookmarkName() { - if ( !aBookmarkVector.empty() ) { - return aBookmarkVector.back(); + if (!m_pImpl->m_BookmarkVector.empty()) { + return m_pImpl->m_BookmarkVector.back(); } else return ::rtl::OUString(); // return the empty string on error... } ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > XMLTextImportHelper::GetRangeFor(::rtl::OUString &sName) { - return aBookmarkStartRanges[sName].first; + return m_pImpl->m_BookmarkStartRanges[sName].get<0>(); } void XMLTextImportHelper::pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type ) { - aFieldStack.push(field_stack_item_t(field_name_type_t(name, type), field_params_t())); + m_pImpl->m_FieldStack.push(Impl::field_stack_item_t( + Impl::field_name_type_t(name, type), Impl::field_params_t())); } void XMLTextImportHelper::popFieldCtx() { - aFieldStack.pop(); + m_pImpl->m_FieldStack.pop(); } void XMLTextImportHelper::addFieldParam( ::rtl::OUString name, ::rtl::OUString value ) { - DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before..."); - if (!aFieldStack.empty()) { - field_stack_item_t &aFieldStackItem=aFieldStack.top(); - aFieldStackItem.second.push_back(field_param_t( name, value )); + DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), + "stack is empty: not good! Do a pushFieldCtx before..."); + if (!m_pImpl->m_FieldStack.empty()) { + Impl::field_stack_item_t & FieldStackItem(m_pImpl->m_FieldStack.top()); + FieldStackItem.second.push_back(Impl::field_param_t( name, value )); } } ::rtl::OUString XMLTextImportHelper::getCurrentFieldName() { - DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before..."); - if (!aFieldStack.empty()) { - return aFieldStack.top().first.first; + DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), + "stack is empty: not good! Do a pushFieldCtx before..."); + if (!m_pImpl->m_FieldStack.empty()) { + return m_pImpl->m_FieldStack.top().first.first; } else return ::rtl::OUString(); } ::rtl::OUString XMLTextImportHelper::getCurrentFieldType() { - DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before..."); - if (!aFieldStack.empty()) { - return aFieldStack.top().first.second; + DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), + "stack is empty: not good! Do a pushFieldCtx before..."); + if (!m_pImpl->m_FieldStack.empty()) { + return m_pImpl->m_FieldStack.top().first.second; } else return ::rtl::OUString(); } bool XMLTextImportHelper::hasCurrentFieldCtx() { - return !aFieldStack.empty(); + return !m_pImpl->m_FieldStack.empty(); } void XMLTextImportHelper::setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField) { - DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before..."); - if (!aFieldStack.empty() && xFormField.is()) + DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), + "stack is empty: not good! Do a pushFieldCtx before..."); + if (!m_pImpl->m_FieldStack.empty() && xFormField.is()) { - FieldParamImporter(&aFieldStack.top().second, xFormField->getParameters()).Import(); + FieldParamImporter(&m_pImpl->m_FieldStack.top().second, + xFormField->getParameters()).Import(); } } @@ -2357,6 +2819,11 @@ void XMLTextImportHelper::ConnectFrameChains( const OUString& rNextFrmName, const Reference < XPropertySet >& rFrmPropSet ) { + static ::rtl::OUString s_ChainNextName( + RTL_CONSTASCII_USTRINGPARAM("ChainNextName")); + static ::rtl::OUString s_ChainPrevName( + RTL_CONSTASCII_USTRINGPARAM("ChainPrevName")); + if( !rFrmName.getLength() ) return; @@ -2364,39 +2831,42 @@ void XMLTextImportHelper::ConnectFrameChains( { OUString sNextFrmName(GetRenameMap().Get( XML_TEXT_RENAME_TYPE_FRAME, rNextFrmName )); - if( xTextFrames.is() && xTextFrames->hasByName( sNextFrmName ) ) + if (m_pImpl->m_xTextFrames.is() + && m_pImpl->m_xTextFrames->hasByName(sNextFrmName)) { - rFrmPropSet->setPropertyValue( sChainNextName, makeAny(sNextFrmName) ); + rFrmPropSet->setPropertyValue(s_ChainNextName, + makeAny(sNextFrmName)); } else { - if( !pPrevFrmNames.get() ) + if (!m_pImpl->m_pPrevFrmNames.get()) { - pPrevFrmNames.reset( new SvStringsDtor ); - pNextFrmNames.reset( new SvStringsDtor ); + m_pImpl->m_pPrevFrmNames.reset( new SvStringsDtor ); + m_pImpl->m_pNextFrmNames.reset( new SvStringsDtor ); } - pPrevFrmNames->Insert( new String( rFrmName ), - pPrevFrmNames->Count() ); - pNextFrmNames->Insert( new String( sNextFrmName ), - pNextFrmNames->Count() ); + m_pImpl->m_pPrevFrmNames->Insert( new String( rFrmName ), + m_pImpl->m_pPrevFrmNames->Count() ); + m_pImpl->m_pNextFrmNames->Insert( new String( sNextFrmName ), + m_pImpl->m_pNextFrmNames->Count() ); } } - if( pPrevFrmNames.get() && pPrevFrmNames->Count() ) + if (m_pImpl->m_pPrevFrmNames.get() && m_pImpl->m_pPrevFrmNames->Count()) { - sal_uInt16 nCount = pPrevFrmNames->Count(); + sal_uInt16 nCount = m_pImpl->m_pPrevFrmNames->Count(); for( sal_uInt16 i=0; i<nCount; i++ ) { - String *pNext = (*pNextFrmNames)[i]; + String *pNext = (*m_pImpl->m_pNextFrmNames)[i]; if( OUString(*pNext) == rFrmName ) { // The previuous frame must exist, because it existing than // inserting the entry - String *pPrev = (*pPrevFrmNames)[i]; + String *pPrev = (*m_pImpl->m_pPrevFrmNames)[i]; - rFrmPropSet->setPropertyValue( sChainPrevName, makeAny(OUString( *pPrev )) ); + rFrmPropSet->setPropertyValue(s_ChainPrevName, + makeAny(OUString( *pPrev ))); - pPrevFrmNames->Remove( i, 1 ); - pNextFrmNames->Remove( i, 1 ); + m_pImpl->m_pPrevFrmNames->Remove( i, 1 ); + m_pImpl->m_pNextFrmNames->Remove( i, 1 ); delete pPrev; delete pNext; @@ -2409,6 +2879,9 @@ void XMLTextImportHelper::ConnectFrameChains( sal_Bool XMLTextImportHelper::IsInFrame() const { + static ::rtl::OUString s_TextFrame( + RTL_CONSTASCII_USTRINGPARAM("TextFrame")); + sal_Bool bIsInFrame = sal_False; // are we currently in a text frame? yes, if the cursor has a @@ -2416,9 +2889,10 @@ sal_Bool XMLTextImportHelper::IsInFrame() const Reference<XPropertySet> xPropSet(((XMLTextImportHelper *)this)->GetCursor(), UNO_QUERY); if (xPropSet.is()) { - if (xPropSet->getPropertySetInfo()->hasPropertyByName(sTextFrame)) + if (xPropSet->getPropertySetInfo()->hasPropertyByName(s_TextFrame)) { - Reference<XTextFrame> xFrame(xPropSet->getPropertyValue(sTextFrame), UNO_QUERY); + uno::Reference<XTextFrame> const xFrame( + xPropSet->getPropertyValue(s_TextFrame), UNO_QUERY); if (xFrame.is()) { @@ -2541,12 +3015,12 @@ void XMLTextImportHelper::SetChangesProtectionKey(const Sequence<sal_Int8> &) OUString XMLTextImportHelper::GetOpenRedlineId() { - return sOpenRedlineIdentifier; + return m_pImpl->m_sOpenRedlineIdentifier; } void XMLTextImportHelper::SetOpenRedlineId( ::rtl::OUString& rId) { - sOpenRedlineIdentifier = rId; + m_pImpl->m_sOpenRedlineIdentifier = rId; } void XMLTextImportHelper::ResetOpenRedlineId() @@ -2555,3 +3029,14 @@ void XMLTextImportHelper::ResetOpenRedlineId() SetOpenRedlineId(sEmpty); } +void +XMLTextImportHelper::SetCellParaStyleDefault(::rtl::OUString const& rNewValue) +{ + m_pImpl->m_sCellParaStyleDefault = rNewValue; +} + +::rtl::OUString const& XMLTextImportHelper::GetCellParaStyleDefault() +{ + return m_pImpl->m_sCellParaStyleDefault; +} + diff --git a/xmloff/source/text/txtlists.cxx b/xmloff/source/text/txtlists.cxx index b4b83e5ec7..82735fdf59 100644 --- a/xmloff/source/text/txtlists.cxx +++ b/xmloff/source/text/txtlists.cxx @@ -453,6 +453,8 @@ XMLTextListsHelper::MakeNumRule( sal_Bool* o_pRestartNumbering, sal_Bool* io_pSetDefaults) { + static ::rtl::OUString s_NumberingRules( + RTL_CONSTASCII_USTRINGPARAM("NumberingRules")); uno::Reference<container::XIndexReplace> xNumRules(i_rNumRule); if ( i_StyleName.getLength() && i_StyleName != i_ParentStyleName ) @@ -479,8 +481,7 @@ XMLTextListsHelper::MakeNumRule( uno::Reference< beans::XPropertySet > xPropSet( xStyle, uno::UNO_QUERY ); - any = xPropSet->getPropertyValue( - i_rImport.GetTextImport()->sNumberingRules ); + any = xPropSet->getPropertyValue(s_NumberingRules); any >>= xNumRules; } else diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx index cdfbf4ca86..a73600bfa4 100644 --- a/xmloff/source/text/txtparae.cxx +++ b/xmloff/source/text/txtparae.cxx @@ -90,7 +90,6 @@ #include <com/sun/star/text/XEndnotesSupplier.hpp> #include <com/sun/star/drawing/XControlShape.hpp> #include <com/sun/star/util/DateTime.hpp> -#include "xmlkywd.hxx" #include "xmlnmspe.hxx" #include <xmloff/xmlaustp.hxx> #include <xmloff/families.hxx> @@ -1999,7 +1998,18 @@ void XMLTextParagraphExport::exportParagraph( { const OUString& rIdentifier = GetExport().getInterfaceToIdentifierMapper().getIdentifier( xRef ); if( rIdentifier.getLength() ) - GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_ID, rIdentifier ); + { + // FIXME: this is just temporary until EditEngine + // paragraphs implement XMetadatable. + // then that must be used and not the mapper, because + // when both can be used we get two xml:id! + uno::Reference<rdf::XMetadatable> const xMeta(xRef, + uno::UNO_QUERY); + OSL_ENSURE(!xMeta.is(), "paragraph that implements " + "XMetadatable used in interfaceToIdentifierMapper?"); + GetExport().AddAttributeIdLegacy(XML_NAMESPACE_TEXT, + rIdentifier); + } } OUString sAutoStyle( sStyle ); diff --git a/xmloff/source/text/txtparai.cxx b/xmloff/source/text/txtparai.cxx index 7fd7702aa5..9277b6a3d1 100644 --- a/xmloff/source/text/txtparai.cxx +++ b/xmloff/source/text/txtparai.cxx @@ -1917,6 +1917,7 @@ XMLParaContext::XMLParaContext( const SvXMLTokenMap& rTokenMap = GetImport().GetTextImport()->GetTextPAttrTokenMap(); + bool bHaveXmlId( false ); OUString aCondStyleName, sClassNames; sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; @@ -1933,6 +1934,7 @@ XMLParaContext::XMLParaContext( { case XML_TOK_TEXT_P_XMLID: m_sXmlId = rValue; + bHaveXmlId = true; break; case XML_TOK_TEXT_P_ABOUT: m_sAbout = rValue; @@ -1947,6 +1949,9 @@ XMLParaContext::XMLParaContext( case XML_TOK_TEXT_P_DATATYPE: m_sDatatype = rValue; break; + case XML_TOK_TEXT_P_TEXTID: + if (!bHaveXmlId) { m_sXmlId = rValue; } + break; case XML_TOK_TEXT_P_STYLE_NAME: sStyleName = rValue; break; @@ -1979,9 +1984,6 @@ XMLParaContext::XMLParaContext( } } break; - case XML_TOK_TEXT_P_ID: - sId = rValue; - break; case XML_TOK_TEXT_P_RESTART_NUMBERING: { sal_Bool bBool; @@ -2020,14 +2022,17 @@ XMLParaContext::~XMLParaContext() // if we have an id set for this paragraph, get a cursor for this // paragraph and register it with the given identifier - if( sId.getLength() ) + // FIXME: this is just temporary, and should be removed when + // EditEngine paragraphs implement XMetadatable! + if (m_sXmlId.getLength()) { Reference < XTextCursor > xIdCursor( xTxtImport->GetText()->createTextCursorByRange( xStart ) ); if( xIdCursor.is() ) { xIdCursor->gotoRange( xEnd, sal_True ); Reference< XInterface > xRef( xIdCursor, UNO_QUERY ); - GetImport().getInterfaceToIdentifierMapper().registerReference( sId, xRef ); + GetImport().getInterfaceToIdentifierMapper().registerReference( + m_sXmlId, xRef); } } @@ -2067,7 +2072,7 @@ XMLParaContext::~XMLParaContext() } } - OUString sCellParaStyleName = xTxtImport->sCellParaStyleDefault; + OUString const sCellParaStyleName(xTxtImport->GetCellParaStyleDefault()); if( sCellParaStyleName.getLength() > 0 ) { // --> OD 2007-08-16 #i80724# diff --git a/xmloff/source/text/txtparai.hxx b/xmloff/source/text/txtparai.hxx index 1b2ba58cf3..979b869f8c 100644 --- a/xmloff/source/text/txtparai.hxx +++ b/xmloff/source/text/txtparai.hxx @@ -46,7 +46,6 @@ class XMLParaContext : public SvXMLImportContext ::com::sun::star::uno::Reference < ::com::sun::star::text::XTextRange > xStart; // xub_StrLen nStart; ::rtl::OUString sStyleName; - ::rtl::OUString sId; ::rtl::OUString m_sXmlId; ::rtl::OUString m_sAbout; ::rtl::OUString m_sProperty; diff --git a/xmloff/util/makefile.mk b/xmloff/util/makefile.mk index a7060d7950..b8745b6b8f 100644 --- a/xmloff/util/makefile.mk +++ b/xmloff/util/makefile.mk @@ -53,17 +53,8 @@ LIB1FILES= \ # --- Shared-Library ----------------------------------------------- -.IF "$(GUI)"!="UNX" -LIB4TARGET= $(LB)$/ixo.lib -LIB4FILES= $(LB)$/_ixo.lib -.IF "$(GUI)"!="OS2" -LIB4OBJFILES=\ - $(OBJ)$/xmlkywd.obj -.ENDIF -.ENDIF - SHL1TARGET= xo$(DLLPOSTFIX) -SHL1IMPLIB= _ixo +SHL1IMPLIB= i$(TARGET) SHL1USE_EXPORTS=name SHL1STDLIBS= \ @@ -86,21 +77,6 @@ SHL1STDLIBS+=-licg617mxp SHL1DEF= $(MISC)$/$(SHL1TARGET).def SHL1LIBS= $(LIB1TARGET) - -SHL5STDLIBS= \ - $(TOOLSLIB) \ - $(SALLIB) \ - $(SALHELPERLIB) \ - $(CPPULIB) \ - $(CPPUHELPERLIB) \ - $(COMPHELPERLIB) - -.IF "$(GUI)"=="UNX" || "$(COM)"=="GCC" - SHL5STDLIBS += -lxo$(DLLPOSTFIX) -.ELSE - SHL5STDLIBS += ixo.lib -.ENDIF - # --- Def-File --------------------------------------------------------- DEF1NAME =$(SHL1TARGET) diff --git a/xmlscript/source/xmldlg_imexp/exp_share.hxx b/xmlscript/source/xmldlg_imexp/exp_share.hxx index eceedfb6d2..9ea565fc54 100644 --- a/xmlscript/source/xmldlg_imexp/exp_share.hxx +++ b/xmlscript/source/xmldlg_imexp/exp_share.hxx @@ -117,7 +117,7 @@ public: inline bool readProp( T * ret, ::rtl::OUString const & rPropName ); css::uno::Any readProp( ::rtl::OUString const & rPropName ); // - void readDefaults( bool supportPrintable = true ); + void readDefaults( bool supportPrintable = true, bool supportVisible = true ); // void readStringAttr( ::rtl::OUString const & rPropName, ::rtl::OUString const & rAttrName ); diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx index bf49fb1445..2818d0755e 100644 --- a/xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx +++ b/xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx @@ -1138,7 +1138,7 @@ void ElementDescriptor::readDialogModel( StyleBag * all_styles ) } // collect elements - readDefaults( false ); + readDefaults( false, false ); readBoolAttr( OUString( RTL_CONSTASCII_USTRINGPARAM("Closeable") ), OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_DIALOGS_PREFIX ":closeable") ) ); diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx index 588e30a657..2898ac1386 100644 --- a/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx +++ b/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx @@ -972,7 +972,7 @@ void ElementDescriptor::readSelectionTypeAttr( OUString const & rPropName, OUStr } } //__________________________________________________________________________________________________ -void ElementDescriptor::readDefaults( bool supportPrintable ) +void ElementDescriptor::readDefaults( bool supportPrintable, bool supportVisible ) { Any a( _xProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("Name") ) ) ); addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_DIALOGS_PREFIX ":id") ), @@ -995,7 +995,7 @@ void ElementDescriptor::readDefaults( bool supportPrintable ) } sal_Bool bVisible = sal_True; - try + if (supportVisible) try { if (_xProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM("EnableVisible") ) ) >>= bVisible) { |