1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
23 #include <ooo/vba/XSinkCaller.hpp>
24 #include <ooo/vba/excel/XApplication.hpp>
26 #include <vbahelper/vbaapplicationbase.hxx>
27 #include <cppuhelper/implbase.hxx>
29 namespace com::sun::star::uno
{ class XComponentContext
; }
30 namespace ooo::vba
{ class XSink
; }
31 namespace ooo::vba::excel
{ class XFileDialog
; }
33 typedef cppu::ImplInheritanceHelper
< VbaApplicationBase
, ov::excel::XApplication
, ov::XSinkCaller
> ScVbaApplication_BASE
;
35 struct ScVbaAppSettings
;
37 class ScVbaApplication
: public ScVbaApplication_BASE
40 // note: member variables moved to struct "ScVbaAppSettings", see cxx file, to be shared by all application instances
41 ScVbaAppSettings
& mrAppSettings
;
43 // must be stored in order to get result paths from the same instance
44 css::uno::Reference
< ov::excel::XFileDialog
> m_xFileDialog
;
45 sal_Int32 m_nDialogType
;
47 /// @throws css::uno::RuntimeException
48 OUString
getOfficePath( const OUString
& sPath
);
50 std::vector
<css::uno::Reference
< ooo::vba::XSink
>> mvSinks
;
53 virtual css::uno::Reference
< css::frame::XModel
> getCurrentDocument() override
;
56 explicit ScVbaApplication( const css::uno::Reference
< css::uno::XComponentContext
>& m_xContext
);
57 virtual ~ScVbaApplication() override
;
59 /** Returns true, if VBA document events are enabled. */
60 static bool getDocumentEventsEnabled();
62 sal_uInt32
AddSink( const css::uno::Reference
< ooo::vba::XSink
>& xSink
);
63 void RemoveSink( sal_uInt32 nNumber
);
66 virtual OUString SAL_CALL
getExactName( const OUString
& aApproximateName
) override
;
69 virtual css::uno::Reference
< css::beans::XIntrospectionAccess
> SAL_CALL
getIntrospection() override
;
70 virtual css::uno::Any SAL_CALL
invoke(const OUString
& FunctionName
, const css::uno::Sequence
< css::uno::Any
>& Params
, css::uno::Sequence
< sal_Int16
>& OutParamIndex
, css::uno::Sequence
< css::uno::Any
>& OutParam
) override
;
71 virtual void SAL_CALL
setValue(const OUString
& PropertyName
, const css::uno::Any
& Value
) override
;
72 virtual css::uno::Any SAL_CALL
getValue(const OUString
& PropertyName
) override
;
73 virtual sal_Bool SAL_CALL
hasMethod(const OUString
& Name
) override
;
74 virtual sal_Bool SAL_CALL
hasProperty(const OUString
& Name
) override
;
77 virtual void SAL_CALL
setDefaultFilePath( const OUString
& DefaultFilePath
) override
;
78 virtual OUString SAL_CALL
getDefaultFilePath() override
;
79 virtual OUString SAL_CALL
getPathSeparator() override
;
80 virtual OUString SAL_CALL
getLibraryPath() override
;
81 virtual OUString SAL_CALL
getTemplatesPath() override
;
82 virtual OUString SAL_CALL
getOperatingSystem() override
;
84 virtual OUString SAL_CALL
getName() override
;
85 virtual sal_Bool SAL_CALL
getDisplayAlerts() override
;
86 virtual void SAL_CALL
setDisplayAlerts( sal_Bool displayAlerts
) override
;
87 virtual ::sal_Int32 SAL_CALL
getCalculation() override
;
88 virtual void SAL_CALL
setCalculation( ::sal_Int32 _calculation
) override
;
89 virtual css::uno::Any SAL_CALL
getSelection() override
;
90 virtual css::uno::Reference
< ov::excel::XWorkbook
> SAL_CALL
getActiveWorkbook() override
;
91 virtual css::uno::Reference
< ov::excel::XRange
> SAL_CALL
getActiveCell() override
;
92 virtual css::uno::Reference
< ov::excel::XWindow
> SAL_CALL
getActiveWindow() override
;
93 virtual css::uno::Reference
< ov::excel::XWorksheet
> SAL_CALL
getActiveSheet() override
;
94 virtual sal_Bool SAL_CALL
getDisplayFormulaBar() override
;
95 virtual void SAL_CALL
setDisplayFormulaBar(sal_Bool _displayformulabar
) override
;
97 virtual css::uno::Reference
< ov::XAssistant
> SAL_CALL
getAssistant() override
;
98 virtual css::uno::Reference
< ov::excel::XWorkbook
> SAL_CALL
getThisWorkbook() override
;
100 virtual css::uno::Any SAL_CALL
GetOpenFilename(const css::uno::Any
& FileFilter
, const css::uno::Any
& FilterIndex
, const css::uno::Any
& Title
, const css::uno::Any
& ButtonText
, const css::uno::Any
& MultiSelect
) override
;
101 virtual css::uno::Any SAL_CALL
International( sal_Int32 Index
) override
;
102 virtual css::uno::Any SAL_CALL
FileDialog( const css::uno::Any
& DialogType
) override
;
103 virtual css::uno::Any SAL_CALL
Workbooks( const css::uno::Any
& aIndex
) override
;
104 virtual css::uno::Any SAL_CALL
Worksheets( const css::uno::Any
& aIndex
) override
;
105 virtual css::uno::Any SAL_CALL
WorksheetFunction( ) override
;
106 virtual css::uno::Any SAL_CALL
Evaluate( const OUString
& Name
) override
;
107 virtual css::uno::Any SAL_CALL
Dialogs( const css::uno::Any
& DialogIndex
) override
;
108 virtual css::uno::Any SAL_CALL
getCutCopyMode() override
;
109 virtual void SAL_CALL
setCutCopyMode( const css::uno::Any
& _cutcopymode
) override
;
110 virtual css::uno::Any SAL_CALL
getStatusBar() override
;
111 virtual void SAL_CALL
setStatusBar( const css::uno::Any
& _statusbar
) override
;
112 virtual css::uno::Any SAL_CALL
getWindowState() override
;
113 virtual void SAL_CALL
setWindowState(const css::uno::Any
& rWindowState
) override
;
114 virtual ::sal_Int32 SAL_CALL
getCursor() override
;
115 virtual void SAL_CALL
setCursor( ::sal_Int32 _cursor
) override
;
116 virtual void SAL_CALL
OnKey( const OUString
& Key
, const css::uno::Any
& Procedure
) override
;
117 virtual void SAL_CALL
setScreenUpdating( sal_Bool bUpdate
) override
;
118 virtual sal_Bool SAL_CALL
getEnableEvents() override
;
119 virtual void SAL_CALL
setEnableEvents( sal_Bool bEnable
) override
;
120 virtual sal_Bool SAL_CALL
getEnableCancelKey() override
;
121 virtual void SAL_CALL
setEnableCancelKey( sal_Bool bEnable
) override
;
123 virtual sal_Bool SAL_CALL
getDisplayFullScreen() override
;
124 virtual void SAL_CALL
setDisplayFullScreen( sal_Bool bSet
) override
;
125 virtual sal_Bool SAL_CALL
getDisplayScrollBars() override
;
126 virtual void SAL_CALL
setDisplayScrollBars( sal_Bool bSet
) override
;
127 virtual sal_Bool SAL_CALL
getDisplayExcel4Menus() override
;
128 virtual void SAL_CALL
setDisplayExcel4Menus( sal_Bool bSet
) override
;
130 virtual sal_Bool SAL_CALL
getDisplayNoteIndicator() override
;
131 virtual void SAL_CALL
setDisplayNoteIndicator( sal_Bool bSet
) override
;
132 virtual sal_Bool SAL_CALL
getShowWindowsInTaskbar() override
;
133 virtual void SAL_CALL
setShowWindowsInTaskbar( sal_Bool bSet
) override
;
134 virtual sal_Bool SAL_CALL
getIteration() override
;
135 virtual void SAL_CALL
setIteration( sal_Bool bSet
) override
;
137 virtual css::uno::Any SAL_CALL
Windows( const css::uno::Any
& aIndex
) override
;
138 virtual void SAL_CALL
wait( double time
) override
;
139 virtual css::uno::Any SAL_CALL
Range( const css::uno::Any
& Cell1
, const css::uno::Any
& Cell2
) override
;
140 virtual css::uno::Any SAL_CALL
Names( const css::uno::Any
& aIndex
) override
;
141 virtual void SAL_CALL
GoTo( const css::uno::Any
& Reference
, const css::uno::Any
& Scroll
) override
;
142 virtual void SAL_CALL
Calculate() override
;
143 virtual css::uno::Reference
< ov::excel::XRange
> SAL_CALL
Intersect( const css::uno::Reference
< ov::excel::XRange
>& Arg1
, const css::uno::Reference
< ov::excel::XRange
>& Arg2
, const css::uno::Any
& Arg3
, const css::uno::Any
& Arg4
, const css::uno::Any
& Arg5
, const css::uno::Any
& Arg6
, const css::uno::Any
& Arg7
, const css::uno::Any
& Arg8
, const css::uno::Any
& Arg9
, const css::uno::Any
& Arg10
, const css::uno::Any
& Arg11
, const css::uno::Any
& Arg12
, const css::uno::Any
& Arg13
, const css::uno::Any
& Arg14
, const css::uno::Any
& Arg15
, const css::uno::Any
& Arg16
, const css::uno::Any
& Arg17
, const css::uno::Any
& Arg18
, const css::uno::Any
& Arg19
, const css::uno::Any
& Arg20
, const css::uno::Any
& Arg21
, const css::uno::Any
& Arg22
, const css::uno::Any
& Arg23
, const css::uno::Any
& Arg24
, const css::uno::Any
& Arg25
, const css::uno::Any
& Arg26
, const css::uno::Any
& Arg27
, const css::uno::Any
& Arg28
, const css::uno::Any
& Arg29
, const css::uno::Any
& Arg30
) override
;
144 virtual css::uno::Reference
< ov::excel::XRange
> SAL_CALL
Union( const css::uno::Reference
< ov::excel::XRange
>& Arg1
, const css::uno::Reference
< ov::excel::XRange
>& Arg2
, const css::uno::Any
& Arg3
, const css::uno::Any
& Arg4
, const css::uno::Any
& Arg5
, const css::uno::Any
& Arg6
, const css::uno::Any
& Arg7
, const css::uno::Any
& Arg8
, const css::uno::Any
& Arg9
, const css::uno::Any
& Arg10
, const css::uno::Any
& Arg11
, const css::uno::Any
& Arg12
, const css::uno::Any
& Arg13
, const css::uno::Any
& Arg14
, const css::uno::Any
& Arg15
, const css::uno::Any
& Arg16
, const css::uno::Any
& Arg17
, const css::uno::Any
& Arg18
, const css::uno::Any
& Arg19
, const css::uno::Any
& Arg20
, const css::uno::Any
& Arg21
, const css::uno::Any
& Arg22
, const css::uno::Any
& Arg23
, const css::uno::Any
& Arg24
, const css::uno::Any
& Arg25
, const css::uno::Any
& Arg26
, const css::uno::Any
& Arg27
, const css::uno::Any
& Arg28
, const css::uno::Any
& Arg29
, const css::uno::Any
& Arg30
) override
;
145 virtual double SAL_CALL
CentimetersToPoints( double Centimeters
) override
;
146 virtual double SAL_CALL
InchesToPoints( double Inches
) override
;
147 virtual void SAL_CALL
Volatile( const css::uno::Any
& Volatile
) override
;
148 virtual css::uno::Any SAL_CALL
MenuBars( const css::uno::Any
& aIndex
) override
;
149 virtual css::uno::Any SAL_CALL
Rows( const css::uno::Any
& aIndex
) override
;
150 virtual css::uno::Any SAL_CALL
Caller( const css::uno::Any
& aIndex
) override
;
151 virtual void SAL_CALL
Undo() override
;
154 virtual OUString
getServiceImplName() override
;
155 virtual css::uno::Sequence
<OUString
> getServiceNames() override
;
158 virtual OUString SAL_CALL
getIID() override
;
161 virtual OUString SAL_CALL
GetIIDForClassItselfNotCoclass() override
;
162 virtual ov::TypeAndIID SAL_CALL
GetConnectionPoint() override
;
163 virtual css::uno::Reference
<ov::XConnectionPoint
> SAL_CALL
FindConnectionPoint() override
;
166 virtual void SAL_CALL
CallSinks( const OUString
& Method
, css::uno::Sequence
< css::uno::Any
>& Arguments
) override
;
169 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */