merge the formfield patch from ooo-build
[ooovba.git] / sfx2 / inc / macro.hxx
blob1594e0157213c5ccf81420f1a75935b97c2242b4
1 #ifndef _SFXMACRO_HXX
2 #define _SFXMACRO_HXX
4 //====================================================================
5 #include <com/sun/star/beans/PropertyValue.hpp>
6 #include <com/sun/star/uno/Sequence.hxx>
8 #include <tools/string.hxx>
10 class SfxSlot;
11 class SfxShell;
12 struct SfxMacro_Impl;
13 class SfxMacro;
15 //====================================================================
17 class SfxMacroStatement
19 USHORT nSlotId; // ausgef"uhrte Slot-Id oder 0, wenn manuell
20 ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue > aArgs; // aktuelle Parameter, falls nSlotId != 0
21 String aStatement; // Statement in BASIC-Syntax (ggf. mit CR/LF)
22 BOOL bDone; // auskommentieren wenn kein Done() gerufen
23 void* pDummy; // f"ur alle F"alle zum kompatibel bleiben
25 #ifdef _SFXMACRO_HXX
26 private:
27 void GenerateNameAndArgs_Impl( SfxMacro *pMacro,
28 const SfxSlot &rSlot,
29 BOOL bRequestDone,
30 ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& aArgs );
31 #endif
33 public:
34 SfxMacroStatement( const SfxMacroStatement &rOrig );
36 SfxMacroStatement( const String &rTarget,
37 const SfxSlot &rSlot,
38 BOOL bRequestDone,
39 ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& aArgs );
41 SfxMacroStatement( const SfxShell &rShell,
42 const String &rTarget,
43 BOOL bAbsolute,
44 const SfxSlot &rSlot,
45 BOOL bRequestDone,
46 ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& aArgs );
48 SfxMacroStatement( const String &rStatment );
49 ~SfxMacroStatement();
51 USHORT GetSlotId() const;
52 const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& GetArgs() const;
53 BOOL IsDone() const;
54 const String& GetStatement() const;
57 //--------------------------------------------------------------------
59 inline USHORT SfxMacroStatement::GetSlotId() const
61 /* [Beschreibung]
63 Liefert die Slot-Id die das Statement beim Abspielen wieder ausf"uhren
64 soll oder 0, falls das Statement manuell (<SFX_SLOT_RECORDMANUAL>)
65 aufgezeichnet wurde.
69 return nSlotId;
72 //--------------------------------------------------------------------
74 inline const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& SfxMacroStatement::GetArgs() const
76 /* [Beschreibung]
78 Liefert die Parameter mit denen Statement ausgef"uhrt wurde oder 0,
79 falls das Statement manuell (<SFX_SLOT_RECORDMANUAL>) aufgezeichnet
80 wurde.
82 Der R"uckgabewert geh"ort dem SfxMacroStatement und ist nur im
83 unmittelbar aufrufenden Stackframe g"ultig.
87 return aArgs;
90 //--------------------------------------------------------------------
92 inline BOOL SfxMacroStatement::IsDone() const
94 /* [Beschreibung]
96 Liefert TRUE, wenn das Statement wirklich ausgef"uhrt wurde,
97 also z.B. nicht vom Benutzer abgebrochen wurde. Wurde es nicht
98 wirklich ausgef"uhrt, dann wird es im BASIC-Source auskommentiert.
102 return bDone;
105 //--------------------------------------------------------------------
107 /* [Beschreibung]
109 Liefert das Statement in BASIC-Syntax. Wurde das Makro manuell erzeugt,
110 wird genau der im Konstruktor angegebene String zur"uckgegeben, sonst
111 der generierte Source-Code.
113 Bei beiden Arten ist es m"oglich, da\s mehrere BASIC-Statements, jeweils
114 mit CR/LF getrennt in dem String enthalten sind, da ein SFx-Statement
115 ggf. in mehrere BASIC-Statements "ubersetzt wird.
117 Statements f"ur die nicht <SfxRequest::Done()> gerufen wurde, werden
118 mit einem vorangestellten 'rem' gekennzeichnet.
121 inline const String& SfxMacroStatement::GetStatement() const
123 return aStatement;
126 //====================================================================
128 enum SfxMacroMode
130 /* [Beschreibung]
132 Mit diesem enum wird bestimmt, ob eine <SfxMacro>-Instanz zum
133 absoluten oder relativen Recorden erzeugt wurde, oder um ein
134 existierendendes Makro zu Referenzieren.
138 SFX_MACRO_EXISTING, /* es handelt sich um ein bereits
139 exitistierendes Makro, welches lediglich
140 referenziert wird */
142 SFX_MACRO_RECORDINGABSOLUTE,/* dieses Makro soll aufgezeichnet werden,
143 wobei die betroffenen Objekte m"oglichst
144 direkt angesprochen werden sollen
145 (Beispiel: "[doc.sdc]") */
147 SFX_MACRO_RECORDINGRELATIVE/* dieses Makro soll aufgezeichnet werden,
148 wobei die betroffenen Objekte so
149 angesprochen werden sollen, da\s sich das
150 Abspielen auf die dann g"ultige Selektion
151 bezieht (Beispiel: "ActiveDocument()") */
154 //====================================================================
156 class SfxMacro
158 /* [Beschreibung]
160 "Uber diese Klasse (bzw. genaugenommen ihre Subklassen) wird zum
161 einen die Lokation einer BASIC-Funktion (also in welcher Library,
162 in welchem Modul sowie der Funktions-Name) beschrieben, als auch
163 ein aufzuzeichnendes Makro w"ahrend der Aufzeichnung zwischen-
164 gespeichert.
168 SfxMacro_Impl* pImp;
170 public:
171 SfxMacro( SfxMacroMode eMode = SFX_MACRO_RECORDINGRELATIVE );
172 virtual ~SfxMacro();
174 SfxMacroMode GetMode() const;
175 void Record( SfxMacroStatement *pStatement );
176 void Replace( SfxMacroStatement *pStatement );
177 void Remove();
178 const SfxMacroStatement*GetLastStatement() const;
180 String GenerateSource() const;
183 #endif