summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Power <noel.power@suse.com>2013-04-19 12:52:06 +0100
committerNoel Power <noel.power@suse.com>2013-05-07 09:56:20 +0100
commitc95803f9fcba5a7f57b76345cb2c75507a2d3b49 (patch)
treeb36d2c4bafb77de1bbaa771e1a21baf68f3cb721
parentb591c11f0ec40783c3c2092672c4b481d7b3af07 (diff)
handle various ReturnXXXX types for forms
Change-Id: Idcbfbebafb02c734b42428c5b1d6df8d0d4a23d6
-rw-r--r--include/vbahelper/vbareturntypes.hxx77
-rw-r--r--oovbaapi/UnoApi_oovbaapi.mk8
-rw-r--r--oovbaapi/ooo/vba/msforms/XReturnBoolean.idl (renamed from oovbaapi/ooo/vba/msforms/ReturnSingle.idl)6
-rw-r--r--oovbaapi/ooo/vba/msforms/XReturnEffect.idl (renamed from oovbaapi/ooo/vba/msforms/ReturnEffect.idl)6
-rw-r--r--oovbaapi/ooo/vba/msforms/XReturnInteger.idl (renamed from oovbaapi/ooo/vba/msforms/ReturnInteger.idl)6
-rw-r--r--oovbaapi/ooo/vba/msforms/XReturnSingle.idl (renamed from oovbaapi/ooo/vba/msforms/ReturnBoolean.idl)5
-rw-r--r--scripting/source/vbaevents/eventhelper.cxx13
7 files changed, 101 insertions, 20 deletions
diff --git a/include/vbahelper/vbareturntypes.hxx b/include/vbahelper/vbareturntypes.hxx
new file mode 100644
index 000000000000..d44252dc2999
--- /dev/null
+++ b/include/vbahelper/vbareturntypes.hxx
@@ -0,0 +1,77 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef RETURNTYPES_HXX
+#define RETURNTYPES_HXX
+
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/script/XDefaultProperty.hpp>
+#include <ooo/vba/msforms/XReturnInteger.hpp>
+#include <ooo/vba/msforms/XReturnBoolean.hpp>
+#include <ooo/vba/msforms/XReturnSingle.hpp>
+#include <ooo/vba/msforms/XReturnEffect.hpp>
+
+#include <vbahelper/vbahelper.hxx>
+#include <vbahelper/vbahelperinterface.hxx>
+
+namespace ooo
+{
+ namespace vba
+ {
+ template< typename T1, typename T2 >
+ class DefaultReturnHelper : public ::cppu::WeakImplHelper2< T2, css::script::XDefaultProperty >
+ {
+ T1 mnValue;
+ public:
+ DefaultReturnHelper( const T1& nValue ) : mnValue( nValue ) {}
+ virtual void SAL_CALL setValue( T1 nValue ) throw (::com::sun::star::uno::RuntimeException) { mnValue = nValue; }
+ virtual T1 SAL_CALL getValue() throw (::com::sun::star::uno::RuntimeException) { return mnValue; }
+ OUString SAL_CALL getDefaultPropertyName( ) throw (css::uno::RuntimeException) { return OUString("Value"); }
+ };
+
+ typedef DefaultReturnHelper< sal_Int32, ov::msforms::XReturnInteger > ReturnInteger_BASE;
+ class ReturnInteger : public ReturnInteger_BASE
+ {
+ public:
+ ReturnInteger( sal_Int32 nValue ) : ReturnInteger_BASE( nValue ){}
+ };
+
+ typedef DefaultReturnHelper< sal_Bool, ov::msforms::XReturnBoolean > ReturnBoolean_BASE;
+ class ReturnBoolean : public ReturnBoolean_BASE
+ {
+ public:
+ ReturnBoolean( sal_Bool nValue ) : ReturnBoolean_BASE( nValue ){}
+ };
+ typedef DefaultReturnHelper< float, ov::msforms::XReturnSingle > ReturnSingle_BASE;
+ class ReturnSingle : public ReturnSingle_BASE
+ {
+ public:
+ ReturnSingle( float nValue ) : ReturnSingle_BASE( nValue ){}
+ };
+ typedef DefaultReturnHelper< short, ov::msforms::XReturnEffect > ReturnEffect_BASE;
+ class ReturnEffect : public ReturnEffect_BASE
+ {
+ public:
+ ReturnEffect( short nValue ) : ReturnEffect_BASE( nValue ){}
+ };
+ } // vba
+} // ooo
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oovbaapi/UnoApi_oovbaapi.mk b/oovbaapi/UnoApi_oovbaapi.mk
index 4df023ba74f7..b2a44e8fc3dc 100644
--- a/oovbaapi/UnoApi_oovbaapi.mk
+++ b/oovbaapi/UnoApi_oovbaapi.mk
@@ -521,10 +521,6 @@ $(eval $(call gb_UnoApi_add_idlfiles,oovbaapi,oovbaapi/ooo/vba/msforms,\
fmTransitionEffect \
fmVerticalScrollBarSide \
fmZOrder \
- ReturnBoolean \
- ReturnEffect \
- ReturnInteger \
- ReturnSingle \
XButton \
XCheckBox \
XColorFormat \
@@ -545,6 +541,10 @@ $(eval $(call gb_UnoApi_add_idlfiles,oovbaapi,oovbaapi/ooo/vba/msforms,\
XPictureFormat \
XProgressBar \
XRadioButton \
+ XReturnBoolean \
+ XReturnEffect \
+ XReturnInteger \
+ XReturnSingle \
XScrollBar \
XShape \
XShapeRange \
diff --git a/oovbaapi/ooo/vba/msforms/ReturnSingle.idl b/oovbaapi/ooo/vba/msforms/XReturnBoolean.idl
index 6d2e07b09af6..102cda1bcc1c 100644
--- a/oovbaapi/ooo/vba/msforms/ReturnSingle.idl
+++ b/oovbaapi/ooo/vba/msforms/XReturnBoolean.idl
@@ -16,9 +16,11 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <com/sun/star/uno/XInterface.idl>
+
module ooo { module vba { module msforms {
- struct ReturnSingle
+ interface XReturnBoolean
{
- float Value;
+ [attribute] boolean Value;
};
}; }; };
diff --git a/oovbaapi/ooo/vba/msforms/ReturnEffect.idl b/oovbaapi/ooo/vba/msforms/XReturnEffect.idl
index 817b0cd41943..db656b920bd7 100644
--- a/oovbaapi/ooo/vba/msforms/ReturnEffect.idl
+++ b/oovbaapi/ooo/vba/msforms/XReturnEffect.idl
@@ -16,10 +16,12 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <com/sun/star/uno/XInterface.idl>
+
module ooo { module vba { module msforms {
- struct ReturnEffect
+ interface XReturnEffect
{
//fmDropEffect Value;
- short Value;
+ [attribute] short Value;
};
}; }; };
diff --git a/oovbaapi/ooo/vba/msforms/ReturnInteger.idl b/oovbaapi/ooo/vba/msforms/XReturnInteger.idl
index 3b949ad3bfcf..f55a28210b8c 100644
--- a/oovbaapi/ooo/vba/msforms/ReturnInteger.idl
+++ b/oovbaapi/ooo/vba/msforms/XReturnInteger.idl
@@ -16,9 +16,11 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <com/sun/star/uno/XInterface.idl>
+
module ooo { module vba { module msforms {
- struct ReturnInteger
+ interface XReturnInteger
{
- long Value;
+ [attribute] long Value;
};
}; }; };
diff --git a/oovbaapi/ooo/vba/msforms/ReturnBoolean.idl b/oovbaapi/ooo/vba/msforms/XReturnSingle.idl
index cd739ddf49a9..d92d2eab379c 100644
--- a/oovbaapi/ooo/vba/msforms/ReturnBoolean.idl
+++ b/oovbaapi/ooo/vba/msforms/XReturnSingle.idl
@@ -15,10 +15,11 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <com/sun/star/uno/XInterface.idl>
module ooo { module vba { module msforms {
- struct ReturnBoolean
+ interface XReturnSingle
{
- boolean Value;
+ [attribute] float Value;
};
}; }; };
diff --git a/scripting/source/vbaevents/eventhelper.cxx b/scripting/source/vbaevents/eventhelper.cxx
index 97fc38d6cb52..207973c9202d 100644
--- a/scripting/source/vbaevents/eventhelper.cxx
+++ b/scripting/source/vbaevents/eventhelper.cxx
@@ -58,8 +58,6 @@
#include <com/sun/star/awt/XRadioButton.hpp>
#include <com/sun/star/awt/XListBox.hpp>
-#include <ooo/vba/msforms/ReturnInteger.hpp>
-
#include <sfx2/objsh.hxx>
#include <basic/sbstar.hxx>
#include <basic/basmgr.hxx>
@@ -67,6 +65,7 @@
#include <basic/sbmod.hxx>
#include <basic/sbx.hxx>
#include <filter/msfilter/msvbahelper.hxx>
+#include <vbahelper/vbareturntypes.hxx>
// for debug
#include <comphelper/anytostring.hxx>
@@ -160,9 +159,8 @@ Sequence< Any > ooKeyPressedToVBAKeyPressed( const Sequence< Any >& params )
translatedParams.realloc(1);
- msforms::ReturnInteger keyCode;
- keyCode.Value = evt.KeyCode;
- translatedParams[0] <<= keyCode;
+ Reference< msforms::XReturnInteger> xKeyCode = new ReturnInteger( sal_Int32( evt.KeyCode ) );
+ translatedParams[0] <<= xKeyCode;
return translatedParams;
}
@@ -176,12 +174,11 @@ Sequence< Any > ooKeyPressedToVBAKeyUpDown( const Sequence< Any >& params )
translatedParams.realloc(2);
- msforms::ReturnInteger keyCode;
+ Reference< msforms::XReturnInteger> xKeyCode = new ReturnInteger( evt.KeyCode );
sal_Int8 shift = sal::static_int_cast<sal_Int8>( evt.Modifiers );
// #TODO check whether values from OOO conform to values generated from vba
- keyCode.Value = evt.KeyCode;
- translatedParams[0] <<= keyCode;
+ translatedParams[0] <<= xKeyCode;
translatedParams[1] <<= shift;
return translatedParams;
}