summaryrefslogtreecommitdiff
path: root/basctl
diff options
context:
space:
mode:
authorNoel Power <noel.power@novell.com>2010-10-06 10:16:13 +0100
committerNoel Power <noel.power@novell.com>2010-10-06 10:16:13 +0100
commite31e563d728078ea564a3d398b74d3467e0ba56a (patch)
treed102e9168d7511047dc6f6ed33fb3a1986795159 /basctl
parenteedd208284e201e25b983a2371f8666d392c904f (diff)
initial commit for vba blob ( not including container_control stuff )
Diffstat (limited to 'basctl')
-rw-r--r--basctl/source/basicide/baside3.cxx19
-rw-r--r--basctl/source/basicide/basides3.cxx2
-rw-r--r--basctl/source/basicide/moduldlg.cxx4
-rw-r--r--basctl/source/basicide/scriptdocument.cxx10
-rw-r--r--basctl/source/dlged/dlged.cxx9
-rw-r--r--basctl/source/dlged/dlgedobj.cxx40
-rw-r--r--basctl/source/inc/dlged.hxx5
7 files changed, 60 insertions, 29 deletions
diff --git a/basctl/source/basicide/baside3.cxx b/basctl/source/basicide/baside3.cxx
index f4a3c1d48fc7..43bfbb7559dc 100644
--- a/basctl/source/basicide/baside3.cxx
+++ b/basctl/source/basicide/baside3.cxx
@@ -82,6 +82,7 @@
#include <com/sun/star/resource/XStringResourceResolver.hpp>
#include <com/sun/star/resource/StringResourceWithLocation.hpp>
#include <com/sun/star/task/XInteractionHandler.hpp>
+#include <com/sun/star/script/vba/XVBACompatibility.hpp>
using namespace comphelper;
using namespace ::com::sun::star;
@@ -112,8 +113,16 @@ DialogWindow::DialogWindow( Window* pParent, const ScriptDocument& rDocument, St
{
InitSettings( TRUE, TRUE, TRUE );
- pEditor = new DlgEditor();
+ pEditor = new DlgEditor( rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
pEditor->SetWindow( this );
+ // set vba mode on DialogModel ( allows it to work in 100thmm instead of MAP_APPFONT )
+ if ( rDocument.isDocument() && rDocument.getDocument().is() )
+ {
+ uno::Reference< script::vba::XVBACompatibility > xDocVBAMode( rDocument.getLibraryContainer( E_SCRIPTS ), uno::UNO_QUERY );
+ uno::Reference< script::vba::XVBACompatibility > xDialogModelVBAMode( xDialogModel, uno::UNO_QUERY );
+ if ( xDocVBAMode.is() && xDialogModelVBAMode.is() )
+ xDialogModelVBAMode->setVBACompatibilityMode( xDocVBAMode->getVBACompatibilityMode() );
+ }
pEditor->SetDialog( xDialogModel );
// Undo einrichten
@@ -728,7 +737,7 @@ BOOL DialogWindow::SaveDialog()
Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY );
OSL_ASSERT( xProps.is() );
OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext );
+ Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() );
Reference< XInputStream > xInput( xISP->createInputStream() );
Reference< XSimpleFileAccess > xSFI( xMSF->createInstance
@@ -1010,7 +1019,7 @@ BOOL implImportDialog( Window* pWin, const String& rCurPath, const ScriptDocumen
Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
OSL_ASSERT( xProps.is() );
OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- ::xmlscript::importDialogModel( xInput, xDialogModel, xContext );
+ ::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
String aXmlDlgName;
Reference< beans::XPropertySet > xDialogModelPropSet( xDialogModel, UNO_QUERY );
@@ -1236,7 +1245,7 @@ BOOL implImportDialog( Window* pWin, const String& rCurPath, const ScriptDocumen
}
}
- Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext );
+ Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
bool bSuccess = rDocument.insertDialog( aLibName, aNewDlgName, xISP );
if( bSuccess )
{
@@ -1346,7 +1355,7 @@ void DialogWindow::StoreData()
Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY );
OSL_ASSERT( xProps.is() );
OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext );
+ Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() );
xLib->replaceByName( ::rtl::OUString( GetName() ), makeAny( xISP ) );
}
}
diff --git a/basctl/source/basicide/basides3.cxx b/basctl/source/basicide/basides3.cxx
index 22fbdc4a9c7b..322faa0bcc11 100644
--- a/basctl/source/basicide/basides3.cxx
+++ b/basctl/source/basicide/basides3.cxx
@@ -96,7 +96,7 @@ DialogWindow* BasicIDEShell::CreateDlgWin( const ScriptDocument& rDocument, cons
Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
OSL_ASSERT( xProps.is() );
OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- ::xmlscript::importDialogModel( xInput, xDialogModel, xContext );
+ ::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
LocalizationMgr::setStringResourceAtDialog( rDocument, rLibName, aDlgName, xDialogModel );
// new dialog window
diff --git a/basctl/source/basicide/moduldlg.cxx b/basctl/source/basicide/moduldlg.cxx
index 0f66a6ebe120..c45fa00d1641 100644
--- a/basctl/source/basicide/moduldlg.cxx
+++ b/basctl/source/basicide/moduldlg.cxx
@@ -312,7 +312,7 @@ void BasicIDEShell::CopyDialogResources( Reference< io::XInputStreamProvider >&
Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
OSL_ASSERT( xProps.is() );
OSL_VERIFY( xProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- ::xmlscript::importDialogModel( xInput, xDialogModel, xContext );
+ ::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rSourceDoc.isDocument() ? rSourceDoc.getDocument() : Reference< frame::XModel >() );
if( xDialogModel.is() )
{
@@ -329,7 +329,7 @@ void BasicIDEShell::CopyDialogResources( Reference< io::XInputStreamProvider >&
{
LocalizationMgr::setResourceIDsForDialog( xDialogModel, xDestMgr );
}
- io_xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext );
+ io_xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, rDestDoc.isDocument() ? rDestDoc.getDocument() : Reference< frame::XModel >() );
}
}
diff --git a/basctl/source/basicide/scriptdocument.cxx b/basctl/source/basicide/scriptdocument.cxx
index 6b16316d889c..98cd27c55668 100644
--- a/basctl/source/basicide/scriptdocument.cxx
+++ b/basctl/source/basicide/scriptdocument.cxx
@@ -453,14 +453,12 @@ namespace basctl
bool ScriptDocument_Impl::isInVBAMode() const
{
bool bResult = false;
-#ifdef FUTURE_VBA_CWS
if ( !isApplication() )
{
Reference< XVBACompatibility > xVBACompat( getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
if ( xVBACompat.is() )
bResult = xVBACompat->getVBACompatibilityMode();
}
-#endif
return bResult;
}
@@ -678,7 +676,7 @@ namespace basctl
if ( !_rxExistingDialogModel.is() )
{
Reference< XInputStream > xInput( xISP->createInputStream(), UNO_QUERY_THROW );
- ::xmlscript::importDialogModel( xInput, xDialogModel, aContext.getUNOContext() );
+ ::xmlscript::importDialogModel( xInput, xDialogModel, aContext.getUNOContext(), isDocument() ? getDocument() : Reference< XModel >() );
}
// set new name as property
@@ -686,12 +684,12 @@ namespace basctl
xDlgPSet->setPropertyValue( DLGED_PROP_NAME, makeAny( _rNewName ) );
// export dialog model
- xISP = ::xmlscript::exportDialogModel( xDialogModel, aContext.getUNOContext() );
+ xISP = ::xmlscript::exportDialogModel( xDialogModel, aContext.getUNOContext(), isDocument() ? getDocument() : Reference< XModel >() );
aElement <<= xISP;
}
// insert element by new name in container
- else if ( _eType == E_SCRIPTS )
+ if ( _eType == E_SCRIPTS )
{
Reference< XVBAModuleInfo > xVBAModuleInfo( xLib, UNO_QUERY );
if ( xVBAModuleInfo->hasModuleInfo( _rOldName ) )
@@ -798,7 +796,7 @@ namespace basctl
xDlgPSet->setPropertyValue( DLGED_PROP_NAME, makeAny( _rDialogName ) );
// export dialog model
- _out_rDialogProvider = ::xmlscript::exportDialogModel( xDialogModel, aContext.getUNOContext() );
+ _out_rDialogProvider = ::xmlscript::exportDialogModel( xDialogModel, aContext.getUNOContext(), isDocument() ? getDocument() : Reference< XModel >() );
// insert dialog into library
xLib->insertByName( _rDialogName, makeAny( _out_rDialogProvider ) );
diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx
index 326098976d87..6f031ae601f2 100644
--- a/basctl/source/dlged/dlged.cxx
+++ b/basctl/source/dlged/dlged.cxx
@@ -205,7 +205,7 @@ BOOL DlgEditor::RemarkDialog()
//----------------------------------------------------------------------------
-DlgEditor::DlgEditor()
+DlgEditor::DlgEditor( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel )
:pHScroll(NULL)
,pVScroll(NULL)
,pDlgEdModel(NULL)
@@ -227,6 +227,7 @@ DlgEditor::DlgEditor()
,bCreateOK(TRUE)
,bDialogModelChanged(FALSE)
,mnPaintGuard(0)
+ ,m_xDocument( xModel )
{
pDlgEdModel = new DlgEdModel();
pDlgEdModel->GetItemPool().FreezeIdRanges();
@@ -835,7 +836,7 @@ void DlgEditor::Copy()
Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY );
OSL_ASSERT( xProps.is() );
OSL_VERIFY( xProps->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xClipDialogModel, xContext );
+ Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xClipDialogModel, xContext, m_xDocument );
Reference< XInputStream > xStream( xISP->createInputStream() );
Sequence< sal_Int8 > DialogModelBytes;
implCopyStreamToByteSequence( xStream, DialogModelBytes );
@@ -868,7 +869,7 @@ void DlgEditor::Copy()
uno::Reference< resource::XStringResourceManager >
xStringResourceManager( xStringResourcePersistence, uno::UNO_QUERY );
LocalizationMgr::resetResourceForDialog( xClipDialogModel, xStringResourceManager );
- Reference< XInputStreamProvider > xISP2 = ::xmlscript::exportDialogModel( xClipDialogModel, xContext );
+ Reference< XInputStreamProvider > xISP2 = ::xmlscript::exportDialogModel( xClipDialogModel, xContext, m_xDocument );
Reference< XInputStream > xStream2( xISP2->createInputStream() );
Sequence< sal_Int8 > NoResourceDialogModelBytes;
implCopyStreamToByteSequence( xStream2, NoResourceDialogModelBytes );
@@ -1014,7 +1015,7 @@ void DlgEditor::Paste()
Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
OSL_ASSERT( xProps.is() );
OSL_VERIFY( xProps->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- ::xmlscript::importDialogModel( ::xmlscript::createInputStream( *((::rtl::ByteSequence*)(&DialogModelBytes)) ) , xClipDialogModel, xContext );
+ ::xmlscript::importDialogModel( ::xmlscript::createInputStream( *((::rtl::ByteSequence*)(&DialogModelBytes)) ) , xClipDialogModel, xContext, m_xDocument );
}
// get control models from clipboard dialog model
diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx
index 5af7519f85f0..fcade49d1c8b 100644
--- a/basctl/source/dlged/dlgedobj.cxx
+++ b/basctl/source/dlged/dlgedobj.cxx
@@ -74,6 +74,22 @@ TYPEINIT1(DlgEdObj, SdrUnoObj);
DBG_NAME(DlgEdObj);
//----------------------------------------------------------------------------
+MapMode lcl_getMapModeForForm( DlgEdForm* pForm )
+{
+ MapMode aMode( MAP_APPFONT ); //Default
+ try
+ {
+ uno::Reference< beans::XPropertySet > xProps( pForm ? pForm->GetUnoControlModel() : NULL, uno::UNO_QUERY_THROW );
+ sal_Bool bVBAForm = sal_False;
+ xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("VBAForm") ) ) >>= bVBAForm;
+ if ( bVBAForm )
+ aMode = MapMode( MAP_100TH_MM );
+ }
+ catch ( Exception& )
+ {
+ }
+ return aMode;
+}
DlgEdObj::DlgEdObj()
:SdrUnoObj(String(), sal_False)
@@ -194,8 +210,9 @@ bool DlgEdObj::TransformSdrToControlCoordinates(
}
// convert pixel to logic units
- aPos = pDevice->PixelToLogic( aPos, MapMode( MAP_APPFONT ) );
- aSize = pDevice->PixelToLogic( aSize, MapMode( MAP_APPFONT ) );
+ MapMode aConvMode = lcl_getMapModeForForm( pForm );
+ aPos = pDevice->PixelToLogic( aPos, aConvMode );
+ aSize = pDevice->PixelToLogic( aSize, aConvMode );
// set out parameters
nXOut = aPos.Width();
@@ -242,10 +259,10 @@ bool DlgEdObj::TransformSdrToFormCoordinates(
aSize.Width() -= aDeviceInfo.LeftInset + aDeviceInfo.RightInset;
aSize.Height() -= aDeviceInfo.TopInset + aDeviceInfo.BottomInset;
}
-
+ MapMode aConvMode = lcl_getMapModeForForm( pForm );
// convert pixel to logic units
- aPos = pDevice->PixelToLogic( aPos, MapMode( MAP_APPFONT ) );
- aSize = pDevice->PixelToLogic( aSize, MapMode( MAP_APPFONT ) );
+ aPos = pDevice->PixelToLogic( aPos, aConvMode );
+ aSize = pDevice->PixelToLogic( aSize, aConvMode );
// set out parameters
nXOut = aPos.Width();
@@ -287,9 +304,10 @@ bool DlgEdObj::TransformControlToSdrCoordinates(
DBG_ASSERT( pDevice, "DlgEdObj::TransformControlToSdrCoordinates: missing default device!" );
if ( !pDevice )
return false;
- aPos = pDevice->LogicToPixel( aPos, MapMode( MAP_APPFONT ) );
- aSize = pDevice->LogicToPixel( aSize, MapMode( MAP_APPFONT ) );
- aFormPos = pDevice->LogicToPixel( aFormPos, MapMode( MAP_APPFONT ) );
+ MapMode aConvMode = lcl_getMapModeForForm( pForm );
+ aPos = pDevice->LogicToPixel( aPos, aConvMode );
+ aSize = pDevice->LogicToPixel( aSize, aConvMode );
+ aFormPos = pDevice->LogicToPixel( aFormPos, aConvMode );
// add form position
aPos.Width() += aFormPos.Width();
@@ -333,14 +351,16 @@ bool DlgEdObj::TransformFormToSdrCoordinates(
DBG_ASSERT( pDevice, "DlgEdObj::TransformFormToSdrCoordinates: missing default device!" );
if ( !pDevice )
return false;
- aPos = pDevice->LogicToPixel( aPos, MapMode( MAP_APPFONT ) );
- aSize = pDevice->LogicToPixel( aSize, MapMode( MAP_APPFONT ) );
// take window borders into account
DlgEdForm* pForm = NULL;
if ( !lcl_getDlgEdForm( this, pForm ) )
return false;
+ MapMode aConvMode = lcl_getMapModeForForm( pForm );
+ aPos = pDevice->LogicToPixel( aPos, aConvMode );
+ aSize = pDevice->LogicToPixel( aSize, aConvMode );
+
// take window borders into account
Reference< beans::XPropertySet > xPSetForm( pForm->GetUnoControlModel(), UNO_QUERY );
DBG_ASSERT( xPSetForm.is(), "DlgEdObj::TransformFormToSdrCoordinates: no form property set!" );
diff --git a/basctl/source/inc/dlged.hxx b/basctl/source/inc/dlged.hxx
index 1444bab59c65..f49d684cbe80 100644
--- a/basctl/source/inc/dlged.hxx
+++ b/basctl/source/inc/dlged.hxx
@@ -32,6 +32,7 @@
#include <com/sun/star/awt/XControlContainer.hpp>
#include <com/sun/star/datatransfer/DataFlavor.hpp>
#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/frame/XModel.hpp>
#include <tools/link.hxx>
#include <tools/gen.hxx>
#include <vcl/timer.hxx>
@@ -128,9 +129,11 @@ protected:
BOOL bDialogModelChanged;
Timer aMarkTimer;
long mnPaintGuard;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > m_xDocument;
+ DlgEditor(); // not implemented
public:
- DlgEditor();
+ DlgEditor( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel );
~DlgEditor();
void SetWindow( Window* pWindow );