1*efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file
5*efeef26fSAndrew Rist * distributed with this work for additional information
6*efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*efeef26fSAndrew Rist * "License"); you may not use this file except in compliance
9*efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at
10*efeef26fSAndrew Rist *
11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*efeef26fSAndrew Rist *
13*efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*efeef26fSAndrew Rist * software distributed under the License is distributed on an
15*efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*efeef26fSAndrew Rist * KIND, either express or implied. See the License for the
17*efeef26fSAndrew Rist * specific language governing permissions and limitations
18*efeef26fSAndrew Rist * under the License.
19*efeef26fSAndrew Rist *
20*efeef26fSAndrew Rist *************************************************************/
21*efeef26fSAndrew Rist
22*efeef26fSAndrew Rist
23cdf0e10cSrcweir #include <stdio.h>
24cdf0e10cSrcweir #include "vbaapplication.hxx"
25cdf0e10cSrcweir #include "vbadocument.hxx"
26cdf0e10cSrcweir #include <osl/file.hxx>
27cdf0e10cSrcweir #include <vbahelper/vbahelper.hxx>
28cdf0e10cSrcweir #include "vbawindow.hxx"
29cdf0e10cSrcweir #include "vbasystem.hxx"
30cdf0e10cSrcweir #include "vbaoptions.hxx"
31cdf0e10cSrcweir #include "vbaselection.hxx"
32cdf0e10cSrcweir #include "vbadocuments.hxx"
33cdf0e10cSrcweir #include "vbaaddins.hxx"
34cdf0e10cSrcweir #include "vbadialogs.hxx"
35cdf0e10cSrcweir #include <ooo/vba/word/WdEnableCancelKey.hpp>
36cdf0e10cSrcweir #include <editeng/acorrcfg.hxx>
37cdf0e10cSrcweir #include "wordvbahelper.hxx"
38cdf0e10cSrcweir #include <docsh.hxx>
39cdf0e10cSrcweir
40cdf0e10cSrcweir using namespace ::ooo;
41cdf0e10cSrcweir using namespace ::ooo::vba;
42cdf0e10cSrcweir using namespace ::com::sun::star;
43cdf0e10cSrcweir
44cdf0e10cSrcweir using ::com::sun::star::uno::Reference;
45cdf0e10cSrcweir using ::com::sun::star::uno::UNO_QUERY_THROW;
46cdf0e10cSrcweir using ::com::sun::star::uno::UNO_QUERY;
47cdf0e10cSrcweir using ::rtl::OUString;
48cdf0e10cSrcweir
49cdf0e10cSrcweir // Enable our own join detection for Intersection and Union
50cdf0e10cSrcweir // should be more efficient than using ScRangeList::Join ( because
51cdf0e10cSrcweir // we already are testing the same things )
52cdf0e10cSrcweir
53cdf0e10cSrcweir #define OWN_JOIN 1
54cdf0e10cSrcweir
55cdf0e10cSrcweir // #TODO is this defined somewhere else?
56cdf0e10cSrcweir #if ( defined UNX ) || ( defined OS2 ) //unix
57cdf0e10cSrcweir #define FILE_PATH_SEPERATOR "/"
58cdf0e10cSrcweir #else // windows
59cdf0e10cSrcweir #define FILE_PATH_SEPERATOR "\\"
60cdf0e10cSrcweir #endif
61cdf0e10cSrcweir
62cdf0e10cSrcweir #define EXCELVERSION "11.0"
63cdf0e10cSrcweir
64cdf0e10cSrcweir uno::Any sbxToUnoValue( SbxVariable* pVar );
65cdf0e10cSrcweir
SwVbaApplication(uno::Reference<uno::XComponentContext> & xContext)66cdf0e10cSrcweir SwVbaApplication::SwVbaApplication( uno::Reference<uno::XComponentContext >& xContext ): SwVbaApplication_BASE( xContext )
67cdf0e10cSrcweir {
68cdf0e10cSrcweir }
69cdf0e10cSrcweir
~SwVbaApplication()70cdf0e10cSrcweir SwVbaApplication::~SwVbaApplication()
71cdf0e10cSrcweir {
72cdf0e10cSrcweir }
73cdf0e10cSrcweir
GetDocShell(const uno::Reference<frame::XModel> & xModel)74cdf0e10cSrcweir SfxObjectShell* SwVbaApplication::GetDocShell( const uno::Reference< frame::XModel >& xModel ) throw (uno::RuntimeException)
75cdf0e10cSrcweir {
76cdf0e10cSrcweir return static_cast< SfxObjectShell* >( word::getDocShell( xModel ) );
77cdf0e10cSrcweir }
78cdf0e10cSrcweir
79cdf0e10cSrcweir rtl::OUString SAL_CALL
getName()80cdf0e10cSrcweir SwVbaApplication::getName() throw (uno::RuntimeException)
81cdf0e10cSrcweir {
82cdf0e10cSrcweir static rtl::OUString appName( RTL_CONSTASCII_USTRINGPARAM("Microsoft Word" ) );
83cdf0e10cSrcweir return appName;
84cdf0e10cSrcweir }
85cdf0e10cSrcweir
86cdf0e10cSrcweir uno::Reference< word::XDocument > SAL_CALL
getActiveDocument()87cdf0e10cSrcweir SwVbaApplication::getActiveDocument() throw (uno::RuntimeException)
88cdf0e10cSrcweir {
89cdf0e10cSrcweir return new SwVbaDocument( this, mxContext, getCurrentDocument() );
90cdf0e10cSrcweir }
91cdf0e10cSrcweir
92cdf0e10cSrcweir uno::Reference< word::XWindow > SAL_CALL
getActiveWindow()93cdf0e10cSrcweir SwVbaApplication::getActiveWindow() throw (uno::RuntimeException)
94cdf0e10cSrcweir {
95cdf0e10cSrcweir // #FIXME sofar can't determine Parent
96cdf0e10cSrcweir uno::Reference< frame::XModel > xModel( getCurrentDocument(), uno::UNO_SET_THROW );
97cdf0e10cSrcweir uno::Reference< frame::XController > xController( xModel->getCurrentController(), uno::UNO_SET_THROW );
98cdf0e10cSrcweir return new SwVbaWindow( uno::Reference< XHelperInterface >(), mxContext, xModel, xController );
99cdf0e10cSrcweir }
100cdf0e10cSrcweir
101cdf0e10cSrcweir uno::Reference<word::XSystem > SAL_CALL
getSystem()102cdf0e10cSrcweir SwVbaApplication::getSystem() throw (uno::RuntimeException)
103cdf0e10cSrcweir {
104cdf0e10cSrcweir return uno::Reference< word::XSystem >( new SwVbaSystem( mxContext ) );
105cdf0e10cSrcweir }
106cdf0e10cSrcweir
107cdf0e10cSrcweir uno::Reference<word::XOptions > SAL_CALL
getOptions()108cdf0e10cSrcweir SwVbaApplication::getOptions() throw (uno::RuntimeException)
109cdf0e10cSrcweir {
110cdf0e10cSrcweir return uno::Reference< word::XOptions >( new SwVbaOptions( mxContext ) );
111cdf0e10cSrcweir }
112cdf0e10cSrcweir
113cdf0e10cSrcweir uno::Any SAL_CALL
CommandBars(const uno::Any & aIndex)114cdf0e10cSrcweir SwVbaApplication::CommandBars( const uno::Any& aIndex ) throw (uno::RuntimeException)
115cdf0e10cSrcweir {
116cdf0e10cSrcweir return VbaApplicationBase::CommandBars( aIndex );
117cdf0e10cSrcweir }
118cdf0e10cSrcweir
119cdf0e10cSrcweir uno::Reference< word::XSelection > SAL_CALL
getSelection()120cdf0e10cSrcweir SwVbaApplication::getSelection() throw (uno::RuntimeException)
121cdf0e10cSrcweir {
122cdf0e10cSrcweir return new SwVbaSelection( this, mxContext, getCurrentDocument() );
123cdf0e10cSrcweir }
124cdf0e10cSrcweir
125cdf0e10cSrcweir uno::Any SAL_CALL
Documents(const uno::Any & index)126cdf0e10cSrcweir SwVbaApplication::Documents( const uno::Any& index ) throw (uno::RuntimeException)
127cdf0e10cSrcweir {
128cdf0e10cSrcweir uno::Reference< XCollection > xCol( new SwVbaDocuments( this, mxContext ) );
129cdf0e10cSrcweir if ( index.hasValue() )
130cdf0e10cSrcweir return xCol->Item( index, uno::Any() );
131cdf0e10cSrcweir return uno::makeAny( xCol );
132cdf0e10cSrcweir }
133cdf0e10cSrcweir
134cdf0e10cSrcweir uno::Any SAL_CALL
Addins(const uno::Any & index)135cdf0e10cSrcweir SwVbaApplication::Addins( const uno::Any& index ) throw (uno::RuntimeException)
136cdf0e10cSrcweir {
137cdf0e10cSrcweir static uno::Reference< XCollection > xCol( new SwVbaAddins( this, mxContext ) );
138cdf0e10cSrcweir if ( index.hasValue() )
139cdf0e10cSrcweir return xCol->Item( index, uno::Any() );
140cdf0e10cSrcweir return uno::makeAny( xCol );
141cdf0e10cSrcweir }
142cdf0e10cSrcweir
143cdf0e10cSrcweir uno::Any SAL_CALL
Dialogs(const uno::Any & index)144cdf0e10cSrcweir SwVbaApplication::Dialogs( const uno::Any& index ) throw (uno::RuntimeException)
145cdf0e10cSrcweir {
146cdf0e10cSrcweir uno::Reference< word::XDialogs > xCol( new SwVbaDialogs( this, mxContext, getCurrentDocument() ));
147cdf0e10cSrcweir if ( index.hasValue() )
148cdf0e10cSrcweir return xCol->Item( index );
149cdf0e10cSrcweir return uno::makeAny( xCol );
150cdf0e10cSrcweir }
151cdf0e10cSrcweir
getDisplayAutoCompleteTips()152cdf0e10cSrcweir sal_Bool SAL_CALL SwVbaApplication::getDisplayAutoCompleteTips() throw (css::uno::RuntimeException)
153cdf0e10cSrcweir {
154cdf0e10cSrcweir return SvxAutoCorrCfg::Get()->IsAutoTextTip();
155cdf0e10cSrcweir }
156cdf0e10cSrcweir
setDisplayAutoCompleteTips(sal_Bool _displayAutoCompleteTips)157cdf0e10cSrcweir void SAL_CALL SwVbaApplication::setDisplayAutoCompleteTips( sal_Bool _displayAutoCompleteTips ) throw (css::uno::RuntimeException)
158cdf0e10cSrcweir {
159cdf0e10cSrcweir SvxAutoCorrCfg::Get()->SetAutoTextTip( _displayAutoCompleteTips );
160cdf0e10cSrcweir }
161cdf0e10cSrcweir
getEnableCancelKey()162cdf0e10cSrcweir sal_Int32 SAL_CALL SwVbaApplication::getEnableCancelKey() throw (css::uno::RuntimeException)
163cdf0e10cSrcweir {
164cdf0e10cSrcweir // the default value is wdCancelInterrupt in Word
165cdf0e10cSrcweir return word::WdEnableCancelKey::wdCancelInterrupt;
166cdf0e10cSrcweir }
167cdf0e10cSrcweir
setEnableCancelKey(sal_Int32)168cdf0e10cSrcweir void SAL_CALL SwVbaApplication::setEnableCancelKey( sal_Int32/* _enableCancelKey */) throw (css::uno::RuntimeException)
169cdf0e10cSrcweir {
170cdf0e10cSrcweir // seems not supported in Writer
171cdf0e10cSrcweir }
172cdf0e10cSrcweir
CentimetersToPoints(float _Centimeters)173cdf0e10cSrcweir float SAL_CALL SwVbaApplication::CentimetersToPoints( float _Centimeters ) throw (uno::RuntimeException)
174cdf0e10cSrcweir {
175cdf0e10cSrcweir return VbaApplicationBase::CentimetersToPoints( _Centimeters );
176cdf0e10cSrcweir }
177cdf0e10cSrcweir
178cdf0e10cSrcweir uno::Reference< frame::XModel >
getCurrentDocument()179cdf0e10cSrcweir SwVbaApplication::getCurrentDocument() throw (css::uno::RuntimeException)
180cdf0e10cSrcweir {
181cdf0e10cSrcweir return getCurrentWordDoc( mxContext );
182cdf0e10cSrcweir }
183cdf0e10cSrcweir
184cdf0e10cSrcweir rtl::OUString&
getServiceImplName()185cdf0e10cSrcweir SwVbaApplication::getServiceImplName()
186cdf0e10cSrcweir {
187cdf0e10cSrcweir static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaApplication") );
188cdf0e10cSrcweir return sImplName;
189cdf0e10cSrcweir }
190cdf0e10cSrcweir
191cdf0e10cSrcweir uno::Sequence< rtl::OUString >
getServiceNames()192cdf0e10cSrcweir SwVbaApplication::getServiceNames()
193cdf0e10cSrcweir {
194cdf0e10cSrcweir static uno::Sequence< rtl::OUString > aServiceNames;
195cdf0e10cSrcweir if ( aServiceNames.getLength() == 0 )
196cdf0e10cSrcweir {
197cdf0e10cSrcweir aServiceNames.realloc( 1 );
198cdf0e10cSrcweir aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Application" ) );
199cdf0e10cSrcweir }
200cdf0e10cSrcweir return aServiceNames;
201cdf0e10cSrcweir }
202