update dev300-m58
[ooovba.git] / automation / source / inc / testapp.hxx
blob5f6c95e4c2dbb7390e6d76c30144fd817b9ecba9
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: testapp.hxx,v $
10 * $Revision: 1.12.24.1 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef TESTAPP_HXX
32 #define TESTAPP_HXX
34 #include <basic/sbmod.hxx>
35 #include <basic/testtool.hxx>
36 #include <vcl/smartid.hxx>
38 class CommunicationLink;
39 class CommunicationManagerClientViaSocketTT;
40 class CNames;
41 class ControlItemUId;
42 class CRevNames;
43 //class SbxTransportVariableRef;
44 class ControlsRef;
45 class CmdStream;
46 class FloatingLoadConf;
47 class TestToolObj;
48 class ControlDef;
50 class SbxTransportMethod;
51 class Application;
53 class SotStorage;
55 class ImplTestToolObj;
56 class MyBasic;
58 class ErrorEntry
60 public:
61 ErrorEntry(ULONG nNr, String aStr = String()) : nError(nNr),aText(aStr),nLine(0),nCol1(0),nCol2(0) {}
62 ErrorEntry(ULONG nNr, String aStr, xub_StrLen l, xub_StrLen c1, xub_StrLen c2 )
63 : nError(nNr),aText(aStr),nLine(l),nCol1(c1),nCol2(c2) {}
64 ULONG nError;
65 String aText;
66 xub_StrLen nLine;
67 xub_StrLen nCol1;
68 xub_StrLen nCol2;
71 SV_DECL_PTRARR_DEL(CErrors, ErrorEntry*, 1, 1)
73 struct ControlDefLoad {
74 const char* Kurzname;
75 ULONG nUId;
78 class TestToolObj: public SbxObject
80 friend class TTBasic;
81 friend class Controls;
82 public:
83 TestToolObj( String aName, String aFilePath ); // Alle Dateien in FilePath, Kein IPC
84 TestToolObj( String aName, MyBasic* pBas ); // Pfade aus INI, IPC benutzen
85 ~TestToolObj();
86 void LoadIniFile(); // Laden der IniEinstellungen, die durch den ConfigDialog geändert werden können
87 void DebugFindNoErrors( BOOL bDebugFindNoErrors );
89 private:
90 BOOL bWasPrecompilerError; // True wenn beim letzten Precompile ein Fehler auftrat
91 BOOL CError( ULONG, const String&, xub_StrLen, xub_StrLen, xub_StrLen );
92 void CalcPosition( String const &aSource, xub_StrLen nPos, xub_StrLen &l, xub_StrLen &c );
93 xub_StrLen ImplSearch( const String &aSource, const xub_StrLen nStart, const xub_StrLen nEnd, const String &aSearch, const xub_StrLen nSearchStart = 0 );
94 xub_StrLen PreCompilePart( String &aSource, xub_StrLen nStart, xub_StrLen nEnd, String aFinalErrorLabel, USHORT &nLabelCount );
95 void PreCompileDispatchParts( String &aSource, String aStart, String aEnd, String aFinalLable );
96 public:
97 String GetRevision(String const &aSourceIn); // find Revision in the sourcecode
98 String PreCompile(String const &aSourceIn); // try catch; testcase endcase ..
99 BOOL WasPrecompilerError(); // True wenn beim letzten Precompile ein Fehler auftrat
100 void SFX_NOTIFY( SfxBroadcaster&, const TypeId&, const SfxHint& rHint, const TypeId& );
101 virtual SbxVariable* Find( const String&, SbxClassType );
102 // String aKeyPlusClasses; // Pfad für keycodes & classes & res_type (Aus Configdatei)
103 DECL_LINK( ReturnResultsLink, CommunicationLink* );
104 BOOL ReturnResults( SvStream *pIn ); // Rücklieferung des Antwortstreams über IPC oder TCP/IP oder direkt
106 void SetLogHdl( const Link& rLink ) { aLogHdl = rLink; }
107 const Link& GetLogHdl() const { return aLogHdl; }
109 void SetWinInfoHdl( const Link& rLink ) { aWinInfoHdl = rLink; }
110 const Link& GetWinInfoHdl() const { return aWinInfoHdl; }
112 void SetModuleWinExistsHdl( const Link& rLink ) { aModuleWinExistsHdl = rLink; }
113 const Link& GetModuleWinExistsHdl() const { return aModuleWinExistsHdl; }
115 void SetCErrorHdl( const Link& rLink ) { aCErrorHdl = rLink; }
116 const Link& GetCErrorHdl() const { return aCErrorHdl; }
118 void SetWriteStringHdl( const Link& rLink ) { aWriteStringHdl = rLink; }
119 const Link& GetWriteStringHdl() const { return aWriteStringHdl; }
121 SfxBroadcaster& GetTTBroadcaster();
123 private:
124 ImplTestToolObj *pImpl; // Alles was von der Implementation abhängt
125 static const CErrors* GetFehlerListe() { return pFehlerListe; }
126 BOOL bUseIPC;
127 Link aLogHdl; // Zum Logen der Fehlermeldungen im Testtool
128 Link aWinInfoHdl; // Anzeigen der Windows/Controls der zu testenden App
129 Link aModuleWinExistsHdl; // Prüft ob das Modul schon im Editor geladen ist
130 Link aCErrorHdl; // Melden von Compilererror
131 Link aWriteStringHdl; // Schreiben von text (e.g. MakroRecorder)
132 BOOL bReturnOK; // Bricht WaitForAnswer ab
133 CRevNames *pShortNames; // Aktuell verwendete Controls, zur gewinnung des Namens aus Fehlermeldung
134 ULONG nSequence; // Sequence um Antwort und Anfrage zu syncronisieren
135 SmartId aNextReturnId; // Id des Returnwertes i.e. UId
136 void ReplaceNumbers(String &aText); // Zahlen im String mit speziellem Format in Namen umwandeln
138 String aLastRecordedKontext;// Keeps the last kontext recorded by the Macro Recorder
140 #define FLAT TRUE
141 String ProgPath; // Dateiname der zu Testenden APP; Gesetzt über Start
142 String aLogFileName; // Momentaner Logfilename (Wie Programmdatei aber mit .res)
143 BOOL IsBlock; // Innerhalb Begin/EndBlock
144 BOOL SingleCommandBlock; // Implizit um jedes kommando ein Begin/EndBlock
145 CmdStream *In;
147 void AddName(String &aBisher, String &aNeu ); // Name eventuell mit / anhängen
148 void AddToListByNr( CNames *&pControls, ControlItemUId *&pNewItem ); //
149 CNames *m_pControls;
150 CNames *m_pNameKontext; // Zeigt auf den aktuellen Namenskontext, der über 'Kontext' gesetzt wurde
151 CNames *m_pSIds;
152 CNames *m_pReverseSlots; // Slots mit Kurznamen nach Nummer
153 CNames *m_pReverseControls; // Controls mit Kurznamen nach Nummer
154 CNames *m_pReverseControlsSon;// Controls mit Kurznamen nach Nummer nach Fenstern (Son)
155 CNames *m_pReverseUIds; // Langnamen nach Nummer
158 USHORT nMyVar; // Wievielte Var aus Pool ist dran
160 void InitTestToolObj();
161 CommunicationManagerClientViaSocketTT *pCommunicationManager;
162 void SendViaSocket();
164 BOOL Load( String aFileName, SbModule *pMod );
166 void ReadNames( String Filename, CNames *&pNames, CNames *&pUIds, BOOL bIsFlat = FALSE );
167 void ReadFlat( String Filename, CNames *&pNames, BOOL bSortByName );
168 BOOL ReadNamesBin( String Filename, CNames *&pSIds, CNames *&pControls );
169 BOOL WriteNamesBin( String Filename, CNames *pSIds, CNames *pControls );
170 void ReadHidLstByNumber();
171 void SortControlsByNumber( BOOL bIncludeActive = FALSE );
173 String GetMethodName( ULONG nMethodId );
174 String GetKeyName( USHORT nKeyCode );
176 void WaitForAnswer ();
177 DECL_LINK( IdleHdl, Application* );
178 DECL_LINK( CallDialogHandler, Application* );
179 String aDialogHandlerName;
180 USHORT nWindowHandlerCallLevel;
182 USHORT nIdleCount;
183 // wenn DialogHandler gesetzt wird er im IdleHandler inkrementiert und
184 // in WaitForAnswer rückgesetzt. Übersteigt er einen gewissen wert, gehe ich davon aus,
185 // daß WaitForAnswer still ligt und rufe die DialogHander Sub im BASIC auf.
187 void BeginBlock();
188 void EndBlock();
190 SbTextType GetSymbolType( const String &rSymbol, BOOL bWasControl );
191 static ControlDefLoad const arR_Cmds[];
192 static CNames *pRCommands;
194 static CErrors *pFehlerListe; // Hier werden die Fehler des Testtools gespeichert
198 #endif