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