xref: /aoo42x/main/sfx2/inc/macro.hxx (revision 353d8f4d)
1*353d8f4dSAndrew Rist /**************************************************************
2*353d8f4dSAndrew Rist  *
3*353d8f4dSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*353d8f4dSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*353d8f4dSAndrew Rist  * distributed with this work for additional information
6*353d8f4dSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*353d8f4dSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*353d8f4dSAndrew Rist  * "License"); you may not use this file except in compliance
9*353d8f4dSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*353d8f4dSAndrew Rist  *
11*353d8f4dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*353d8f4dSAndrew Rist  *
13*353d8f4dSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*353d8f4dSAndrew Rist  * software distributed under the License is distributed on an
15*353d8f4dSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*353d8f4dSAndrew Rist  * KIND, either express or implied.  See the License for the
17*353d8f4dSAndrew Rist  * specific language governing permissions and limitations
18*353d8f4dSAndrew Rist  * under the License.
19*353d8f4dSAndrew Rist  *
20*353d8f4dSAndrew Rist  *************************************************************/
21*353d8f4dSAndrew Rist 
22cdf0e10cSrcweir #ifndef _SFXMACRO_HXX
23cdf0e10cSrcweir #define _SFXMACRO_HXX
24cdf0e10cSrcweir 
25cdf0e10cSrcweir //====================================================================
26cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp>
27cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include <tools/string.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir class SfxSlot;
32cdf0e10cSrcweir class SfxShell;
33cdf0e10cSrcweir struct SfxMacro_Impl;
34cdf0e10cSrcweir class SfxMacro;
35cdf0e10cSrcweir 
36cdf0e10cSrcweir //====================================================================
37cdf0e10cSrcweir 
38cdf0e10cSrcweir class SfxMacroStatement
39cdf0e10cSrcweir {
40cdf0e10cSrcweir 	sal_uInt16				nSlotId;	// ausgef"uhrte Slot-Id oder 0, wenn manuell
41cdf0e10cSrcweir     ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue > aArgs;      // aktuelle Parameter, falls nSlotId != 0
42cdf0e10cSrcweir 	String				aStatement; // Statement in BASIC-Syntax (ggf. mit CR/LF)
43cdf0e10cSrcweir 	sal_Bool				bDone;  	// auskommentieren wenn kein Done() gerufen
44cdf0e10cSrcweir 	void*				pDummy;		// f"ur alle F"alle zum kompatibel bleiben
45cdf0e10cSrcweir 
46cdf0e10cSrcweir #ifdef _SFXMACRO_HXX
47cdf0e10cSrcweir private:
48cdf0e10cSrcweir 	void				GenerateNameAndArgs_Impl( SfxMacro *pMacro,
49cdf0e10cSrcweir 												  const SfxSlot &rSlot,
50cdf0e10cSrcweir 												  sal_Bool bRequestDone,
51cdf0e10cSrcweir                                                   ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& aArgs );
52cdf0e10cSrcweir #endif
53cdf0e10cSrcweir 
54cdf0e10cSrcweir public:
55cdf0e10cSrcweir 						SfxMacroStatement( const SfxMacroStatement &rOrig );
56cdf0e10cSrcweir 
57cdf0e10cSrcweir 						SfxMacroStatement( const String &rTarget,
58cdf0e10cSrcweir 										   const SfxSlot &rSlot,
59cdf0e10cSrcweir 										   sal_Bool bRequestDone,
60cdf0e10cSrcweir                                            ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& aArgs );
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 						SfxMacroStatement( const SfxShell &rShell,
63cdf0e10cSrcweir 										   const String &rTarget,
64cdf0e10cSrcweir 										   sal_Bool bAbsolute,
65cdf0e10cSrcweir 										   const SfxSlot &rSlot,
66cdf0e10cSrcweir 										   sal_Bool bRequestDone,
67cdf0e10cSrcweir                                            ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& aArgs );
68cdf0e10cSrcweir 
69cdf0e10cSrcweir 						SfxMacroStatement( const String &rStatment );
70cdf0e10cSrcweir 						~SfxMacroStatement();
71cdf0e10cSrcweir 
72cdf0e10cSrcweir 	sal_uInt16				GetSlotId() const;
73cdf0e10cSrcweir     const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& GetArgs() const;
74cdf0e10cSrcweir 	sal_Bool				IsDone() const;
75cdf0e10cSrcweir 	const String&		GetStatement() const;
76cdf0e10cSrcweir };
77cdf0e10cSrcweir 
78cdf0e10cSrcweir //--------------------------------------------------------------------
79cdf0e10cSrcweir 
GetSlotId() const80cdf0e10cSrcweir inline sal_uInt16 SfxMacroStatement::GetSlotId() const
81cdf0e10cSrcweir 
82cdf0e10cSrcweir /*  [Beschreibung]
83cdf0e10cSrcweir 
84cdf0e10cSrcweir 	Liefert die Slot-Id die das Statement beim Abspielen wieder ausf"uhren
85cdf0e10cSrcweir 	soll oder 0, falls das Statement manuell (<SFX_SLOT_RECORDMANUAL>)
86cdf0e10cSrcweir 	aufgezeichnet wurde.
87cdf0e10cSrcweir */
88cdf0e10cSrcweir 
89cdf0e10cSrcweir {
90cdf0e10cSrcweir 	return nSlotId;
91cdf0e10cSrcweir }
92cdf0e10cSrcweir 
93cdf0e10cSrcweir //--------------------------------------------------------------------
94cdf0e10cSrcweir 
GetArgs() const95cdf0e10cSrcweir inline const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& SfxMacroStatement::GetArgs() const
96cdf0e10cSrcweir 
97cdf0e10cSrcweir /*  [Beschreibung]
98cdf0e10cSrcweir 
99cdf0e10cSrcweir 	Liefert die Parameter mit denen Statement ausgef"uhrt wurde oder 0,
100cdf0e10cSrcweir 	falls das Statement	manuell (<SFX_SLOT_RECORDMANUAL>) aufgezeichnet
101cdf0e10cSrcweir 	wurde.
102cdf0e10cSrcweir 
103cdf0e10cSrcweir 	Der R"uckgabewert geh"ort dem SfxMacroStatement und ist nur im
104cdf0e10cSrcweir 	unmittelbar aufrufenden Stackframe g"ultig.
105cdf0e10cSrcweir */
106cdf0e10cSrcweir 
107cdf0e10cSrcweir {
108cdf0e10cSrcweir     return aArgs;
109cdf0e10cSrcweir }
110cdf0e10cSrcweir 
111cdf0e10cSrcweir //--------------------------------------------------------------------
112cdf0e10cSrcweir 
IsDone() const113cdf0e10cSrcweir inline sal_Bool	SfxMacroStatement::IsDone() const
114cdf0e10cSrcweir 
115cdf0e10cSrcweir /*  [Beschreibung]
116cdf0e10cSrcweir 
117cdf0e10cSrcweir 	Liefert TRUE, wenn das Statement wirklich ausgef"uhrt wurde,
118cdf0e10cSrcweir 	also z.B. nicht vom Benutzer abgebrochen wurde. Wurde es nicht
119cdf0e10cSrcweir 	wirklich ausgef"uhrt, dann wird es im BASIC-Source auskommentiert.
120cdf0e10cSrcweir */
121cdf0e10cSrcweir 
122cdf0e10cSrcweir {
123cdf0e10cSrcweir 	return bDone;
124cdf0e10cSrcweir }
125cdf0e10cSrcweir 
126cdf0e10cSrcweir //--------------------------------------------------------------------
127cdf0e10cSrcweir 
128cdf0e10cSrcweir /*  [Beschreibung]
129cdf0e10cSrcweir 
130cdf0e10cSrcweir 	Liefert das Statement in BASIC-Syntax. Wurde das Makro manuell erzeugt,
131cdf0e10cSrcweir 	wird genau der im Konstruktor angegebene String zur"uckgegeben, sonst
132cdf0e10cSrcweir 	der generierte Source-Code.
133cdf0e10cSrcweir 
134cdf0e10cSrcweir 	Bei beiden Arten ist es m"oglich, da\s mehrere BASIC-Statements, jeweils
135cdf0e10cSrcweir 	mit CR/LF getrennt in dem String enthalten sind, da ein SFx-Statement
136cdf0e10cSrcweir 	ggf. in mehrere BASIC-Statements "ubersetzt wird.
137cdf0e10cSrcweir 
138cdf0e10cSrcweir 	Statements f"ur die nicht <SfxRequest::Done()> gerufen wurde, werden
139cdf0e10cSrcweir 	mit einem vorangestellten 'rem' gekennzeichnet.
140cdf0e10cSrcweir */
141cdf0e10cSrcweir 
GetStatement() const142cdf0e10cSrcweir inline const String& SfxMacroStatement::GetStatement() const
143cdf0e10cSrcweir {
144cdf0e10cSrcweir 	return aStatement;
145cdf0e10cSrcweir }
146cdf0e10cSrcweir 
147cdf0e10cSrcweir //====================================================================
148cdf0e10cSrcweir 
149cdf0e10cSrcweir enum SfxMacroMode
150cdf0e10cSrcweir 
151cdf0e10cSrcweir /*	[Beschreibung]
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 	Mit diesem enum wird bestimmt, ob eine <SfxMacro>-Instanz zum
154cdf0e10cSrcweir 	absoluten oder relativen Recorden erzeugt wurde, oder um ein
155cdf0e10cSrcweir 	existierendendes Makro zu Referenzieren.
156cdf0e10cSrcweir */
157cdf0e10cSrcweir 
158cdf0e10cSrcweir {
159cdf0e10cSrcweir 	SFX_MACRO_EXISTING,			/*	es handelt sich um ein bereits
160cdf0e10cSrcweir 									exitistierendes Makro, welches lediglich
161cdf0e10cSrcweir 									referenziert wird */
162cdf0e10cSrcweir 
163cdf0e10cSrcweir 	SFX_MACRO_RECORDINGABSOLUTE,/*	dieses Makro soll aufgezeichnet werden,
164cdf0e10cSrcweir 									wobei die betroffenen Objekte m"oglichst
165cdf0e10cSrcweir 									direkt angesprochen werden sollen
166cdf0e10cSrcweir 									(Beispiel: "[doc.sdc]") */
167cdf0e10cSrcweir 
168cdf0e10cSrcweir 	SFX_MACRO_RECORDINGRELATIVE/*   dieses Makro soll aufgezeichnet werden,
169cdf0e10cSrcweir 									wobei die betroffenen Objekte so
170cdf0e10cSrcweir 									angesprochen werden sollen, da\s sich das
171cdf0e10cSrcweir 									Abspielen auf die dann g"ultige Selektion
172cdf0e10cSrcweir 									bezieht (Beispiel: "ActiveDocument()") */
173cdf0e10cSrcweir };
174cdf0e10cSrcweir 
175cdf0e10cSrcweir //====================================================================
176cdf0e10cSrcweir 
177cdf0e10cSrcweir class SfxMacro
178cdf0e10cSrcweir 
179cdf0e10cSrcweir /*	[Beschreibung]
180cdf0e10cSrcweir 
181cdf0e10cSrcweir 	"Uber diese Klasse (bzw. genaugenommen ihre Subklassen) wird zum
182cdf0e10cSrcweir 	einen die Lokation einer BASIC-Funktion (also in welcher Library,
183cdf0e10cSrcweir 	in welchem Modul sowie der Funktions-Name) beschrieben, als auch
184cdf0e10cSrcweir 	ein aufzuzeichnendes Makro w"ahrend der Aufzeichnung zwischen-
185cdf0e10cSrcweir 	gespeichert.
186cdf0e10cSrcweir */
187cdf0e10cSrcweir 
188cdf0e10cSrcweir {
189cdf0e10cSrcweir 	SfxMacro_Impl*			pImp;
190cdf0e10cSrcweir 
191cdf0e10cSrcweir public:
192cdf0e10cSrcweir                             SfxMacro( SfxMacroMode eMode = SFX_MACRO_RECORDINGRELATIVE );
193cdf0e10cSrcweir 	virtual 				~SfxMacro();
194cdf0e10cSrcweir 
195cdf0e10cSrcweir 	SfxMacroMode			GetMode() const;
196cdf0e10cSrcweir 	void					Record( SfxMacroStatement *pStatement );
197cdf0e10cSrcweir 	void					Replace( SfxMacroStatement *pStatement );
198cdf0e10cSrcweir 	void					Remove();
199cdf0e10cSrcweir 	const SfxMacroStatement*GetLastStatement() const;
200cdf0e10cSrcweir 
201cdf0e10cSrcweir 	String					GenerateSource() const;
202cdf0e10cSrcweir };
203cdf0e10cSrcweir 
204cdf0e10cSrcweir #endif
205