summaryrefslogtreecommitdiff
path: root/sc/source/filter/xml/xmlwrap.cxx
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@suse.cz>2011-03-18 15:33:40 +0100
committerJan Holesovsky <kendy@suse.cz>2011-03-18 15:33:40 +0100
commite6064484fae8aa2797f86c68e9a8d23d2e213367 (patch)
treedb2f4d140efca43ab01dee4fc053fff0829d106b /sc/source/filter/xml/xmlwrap.cxx
parent9e0a09e89c38774dd1af902387a8b25de158b634 (diff)
parent378c75a798c8baa34cb26e7f07fe28cb5ee2a85f (diff)
Merge remote-tracking branch 'origin/integration/dev300_m101'
Conflicts: chart2/source/controller/main/UndoManager.cxx chart2/source/tools/RegressionCurveHelper.cxx sc/inc/address.hxx sc/inc/attrib.hxx sc/inc/bigrange.hxx sc/inc/callform.hxx sc/inc/cell.hxx sc/inc/chartarr.hxx sc/inc/chartlis.hxx sc/inc/chgtrack.hxx sc/inc/collect.hxx sc/inc/compiler.hxx sc/inc/detdata.hxx sc/inc/document.hxx sc/inc/fillinfo.hxx sc/inc/olinetab.hxx sc/inc/prnsave.hxx sc/inc/queryparam.hxx sc/inc/sc.hrc sc/inc/scabstdlg.hxx sc/inc/table.hxx sc/inc/validat.hxx sc/inc/zforauto.hxx sc/source/core/data/documen2.cxx sc/source/core/data/document.cxx sc/source/core/data/table1.cxx sc/source/core/tool/address.cxx sc/source/core/tool/token.cxx sc/source/filter/excel/frmbase.cxx sc/source/filter/excel/impop.cxx sc/source/filter/excel/xename.cxx sc/source/filter/inc/formel.hxx sc/source/filter/inc/xename.hxx sc/source/filter/xml/xmlexprt.cxx sc/source/filter/xml/xmlnexpi.cxx sc/source/filter/xml/xmlnexpi.hxx sc/source/ui/dbgui/filtdlg.cxx sc/source/ui/inc/docfunc.hxx sc/source/ui/inc/namedlg.hxx sc/source/ui/namedlg/namedlg.cxx sc/source/ui/src/namedlg.src
Diffstat (limited to 'sc/source/filter/xml/xmlwrap.cxx')
-rw-r--r--sc/source/filter/xml/xmlwrap.cxx68
1 files changed, 44 insertions, 24 deletions
diff --git a/sc/source/filter/xml/xmlwrap.cxx b/sc/source/filter/xml/xmlwrap.cxx
index 18f449cc3da2..2a121a49f065 100644
--- a/sc/source/filter/xml/xmlwrap.cxx
+++ b/sc/source/filter/xml/xmlwrap.cxx
@@ -63,6 +63,7 @@
#include <com/sun/star/lang/DisposedException.hpp>
#include <com/sun/star/packages/zip/ZipIOException.hpp>
#include <com/sun/star/embed/ElementModes.hpp>
+#include <com/sun/star/script/vba/XVBACompatibility.hpp>
#include <svx/xmleohlp.hxx>
#include <rtl/logfile.hxx>
@@ -124,7 +125,7 @@ sal_uInt32 ScXMLImportWrapper::ImportFromComponent(uno::Reference<lang::XMultiSe
if ( !xStorage.is() && pMedium )
xStorage = pMedium->GetStorage();
- sal_Bool bEncrypted = sal_False;
+ sal_Bool bEncrypted = false;
rtl::OUString sStream(sDocName);
if( xStorage.is() )
{
@@ -139,7 +140,7 @@ sal_uInt32 ScXMLImportWrapper::ImportFromComponent(uno::Reference<lang::XMultiSe
sStream = sOldDocName;
}
else
- return sal_False;
+ return false;
aParserInput.aInputStream = xDocStream->getInputStream();
uno::Reference < beans::XPropertySet > xSet( xDocStream, uno::UNO_QUERY );
@@ -208,7 +209,7 @@ sal_uInt32 ScXMLImportWrapper::ImportFromComponent(uno::Reference<lang::XMultiSe
if ( aSaxEx.WrappedException >>= aTmp )
aSaxEx = aTmp;
else
- bTryChild = sal_False;
+ bTryChild = false;
}
packages::zip::ZipIOException aBrokenPackage;
@@ -322,7 +323,7 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError)
comphelper::getProcessServiceFactory();
DBG_ASSERT( xServiceFactory.is(), "got no service manager" );
if( !xServiceFactory.is() )
- return sal_False;
+ return false;
xml::sax::InputSource aParserInput;
if (pMedium)
@@ -337,7 +338,7 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError)
OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.xml.sax.Parser" )) ));
DBG_ASSERT( xXMLParser.is(), "com.sun.star.xml.sax.Parser service missing" );
if( !xXMLParser.is() )
- return sal_False;
+ return false;
// get filter
SfxObjectShell* pObjSh = rDoc.GetDocumentShell();
@@ -358,6 +359,7 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError)
{ MAP_LEN( "StreamRelPath" ), 0, &::getCppuType( (rtl::OUString *)0 ), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0 },
{ MAP_LEN( "StreamName" ), 0, &::getCppuType( (rtl::OUString *)0 ), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0 },
{ MAP_LEN( "BuildId" ), 0, &::getCppuType( (OUString *)0 ), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0 },
+ { MAP_LEN( "VBACompatibilityMode" ), 0, &::getBooleanCppuType(), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0 },
{ MAP_LEN( "ScriptConfiguration" ), 0, &::getCppuType((uno::Reference<container::XNameAccess> *)0), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0},
{ NULL, 0, 0, NULL, 0, 0 }
@@ -434,7 +436,7 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError)
: rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLMetaImporter")),
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("meta.xml")),
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Meta.xml")), aMetaArgs,
- sal_False);
+ false);
RTL_LOGFILE_CONTEXT_TRACE( aLog, "meta import end" );
}
@@ -452,7 +454,7 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError)
if( pObjSh )
{
- pObjectHelper = SvXMLEmbeddedObjectHelper::Create(xStorage, *pObjSh, EMBEDDEDOBJECTHELPER_MODE_READ, sal_False );
+ pObjectHelper = SvXMLEmbeddedObjectHelper::Create(xStorage, *pObjSh, EMBEDDEDOBJECTHELPER_MODE_READ, false );
xObjectResolver = pObjectHelper;
}
}
@@ -479,7 +481,7 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError)
bOasis ? rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLOasisSettingsImporter"))
: rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLSettingsImporter")),
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("settings.xml")),
- sEmpty, aSettingsArgs, sal_False);
+ sEmpty, aSettingsArgs, false);
RTL_LOGFILE_CONTEXT_TRACE( aLog, "settings import end" );
}
@@ -527,7 +529,7 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError)
if (xStatusIndicator.is())
xStatusIndicator->end();
- sal_Bool bRet(sal_False);
+ sal_Bool bRet(false);
if (bStylesOnly)
{
if (nStylesRetval)
@@ -575,12 +577,30 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError)
uno::Reference <container::XNameAccess> xCodeNameAccess;
if( aAny >>= xCodeNameAccess )
XMLCodeNameProvider::set( xCodeNameAccess, &rDoc );
+
+ // VBA compatibility
+ bool bVBACompat = false;
+ if ( (xInfoSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("VBACompatibilityMode"))) >>= bVBACompat) && bVBACompat )
+ {
+ /* Set library container to VBA compatibility mode, this
+ forces loading the Basic project, which in turn creates the
+ VBA Globals object and does all related initialization. */
+ if ( xModelSet.is() ) try
+ {
+ uno::Reference< script::vba::XVBACompatibility > xVBACompat( xModelSet->getPropertyValue(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "BasicLibraries" ) ) ), uno::UNO_QUERY_THROW );
+ xVBACompat->setVBACompatibilityMode( sal_True );
+ }
+ catch( uno::Exception& )
+ {
+ }
+ }
}
// Don't test bStylesRetval and bMetaRetval, because it could be an older file which not contain such streams
return bRet;//!bStylesOnly ? bDocRetval : bStylesRetval;
}
- return sal_False;
+ return false;
}
bool lcl_HasValidStream(ScDocument& rDoc)
@@ -608,7 +628,7 @@ sal_Bool ScXMLImportWrapper::ExportToComponent(uno::Reference<lang::XMultiServic
const rtl::OUString& sMediaType, const rtl::OUString& sComponentName,
const sal_Bool bPlainText, uno::Sequence<uno::Any>& aArgs, ScMySharedData*& pSharedData)
{
- sal_Bool bRet(sal_False);
+ sal_Bool bRet(false);
uno::Reference<io::XOutputStream> xOut;
uno::Reference<io::XStream> xStream;
@@ -628,7 +648,7 @@ sal_Bool ScXMLImportWrapper::ExportToComponent(uno::Reference<lang::XMultiServic
xSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MediaType")), uno::makeAny(sMediaType));
OUString aUseCommonPassPropName( RTL_CONSTASCII_USTRINGPARAM("UseCommonStoragePasswordEncryption") );
if (bPlainText)
- xSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Compressed")), uno::makeAny(sal_False));
+ xSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Compressed")), uno::makeAny(false));
// even plain stream should be encrypted in encrypted documents
xSet->setPropertyValue( aUseCommonPassPropName, uno::makeAny(sal_True) );
@@ -707,7 +727,7 @@ sal_Bool ScXMLImportWrapper::ExportToComponent(uno::Reference<lang::XMultiServic
SCTAB nTabCount = rDoc.GetTableCount();
for (SCTAB nTab=0; nTab<nTabCount; nTab++)
if (rDoc.IsStreamValid(nTab))
- rDoc.SetStreamValid(nTab, FALSE);
+ rDoc.SetStreamValid(nTab, false);
}
}
else
@@ -726,13 +746,13 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly)
uno::Reference<lang::XMultiServiceFactory> xServiceFactory(comphelper::getProcessServiceFactory());
DBG_ASSERT( xServiceFactory.is(), "got no service manager" );
if( !xServiceFactory.is() )
- return sal_False;
+ return false;
uno::Reference<uno::XInterface> xWriter(xServiceFactory->createInstance(
OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.xml.sax.Writer" )) ));
DBG_ASSERT( xWriter.is(), "com.sun.star.xml.sax.Writer service missing" );
if(!xWriter.is())
- return sal_False;
+ return false;
if ( !xStorage.is() && pMedium )
xStorage = pMedium->GetOutputStorage();
@@ -810,9 +830,9 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly)
}
sal_Bool bMetaRet(pObjSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED);
- sal_Bool bStylesRet (sal_False);
- sal_Bool bDocRet(sal_False);
- sal_Bool bSettingsRet(sal_False);
+ sal_Bool bStylesRet (false);
+ sal_Bool bDocRet(false);
+ sal_Bool bSettingsRet(false);
ScMySharedData* pSharedData = NULL;
sal_Bool bOasis = ( SotStorage::GetVersion( xStorage ) > SOFFICE_FILEFORMAT_60 );
@@ -846,13 +866,13 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly)
if( xStorage.is() )
{
- pGraphicHelper = SvXMLGraphicHelper::Create( xStorage, GRAPHICHELPER_MODE_WRITE, FALSE );
+ pGraphicHelper = SvXMLGraphicHelper::Create( xStorage, GRAPHICHELPER_MODE_WRITE, false );
xGrfContainer = pGraphicHelper;
}
if( pObjSh )
{
- pObjectHelper = SvXMLEmbeddedObjectHelper::Create( xStorage, *pObjSh, EMBEDDEDOBJECTHELPER_MODE_WRITE, sal_False );
+ pObjectHelper = SvXMLEmbeddedObjectHelper::Create( xStorage, *pObjSh, EMBEDDEDOBJECTHELPER_MODE_WRITE, false );
xObjectResolver = pObjectHelper;
}
@@ -874,7 +894,7 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly)
sTextMediaType,
bOasis ? rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLOasisStylesExporter"))
: rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLStylesExporter")),
- sal_False, aStylesArgs, pSharedData);
+ false, aStylesArgs, pSharedData);
RTL_LOGFILE_CONTEXT_TRACE( aLog, "styles export end" );
}
@@ -898,7 +918,7 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly)
sTextMediaType,
bOasis ? rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLOasisContentExporter"))
: rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLContentExporter")),
- sal_False, aDocArgs, pSharedData);
+ false, aDocArgs, pSharedData);
RTL_LOGFILE_CONTEXT_TRACE( aLog, "content export end" );
}
@@ -926,7 +946,7 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly)
sTextMediaType,
bOasis ? rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLOasisSettingsExporter"))
: rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Calc.XMLSettingsExporter")),
- sal_False, aSettingsArgs, pSharedData);
+ false, aSettingsArgs, pSharedData);
RTL_LOGFILE_CONTEXT_TRACE( aLog, "settings export end" );
}
@@ -941,7 +961,7 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly)
// later: give string descriptor as parameter for doc type
- return sal_False;
+ return false;
}