jl165 merging heads
[LibreOffice.git] / testautomation / framework / optional / includes / ole_tools.inc
blobfdcfb6c621663d656c9da2e39ffc4a29e24c5389
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 ' Copyright 2000, 2010 Oracle and/or its affiliates.
7 ' OpenOffice.org - a multi-platform office productivity suite
9 ' This file is part of OpenOffice.org.
11 ' OpenOffice.org is free software: you can redistribute it and/or modify
12 ' it under the terms of the GNU Lesser General Public License version 3
13 ' only, as published by the Free Software Foundation.
15 ' OpenOffice.org is distributed in the hope that it will be useful,
16 ' but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 ' GNU Lesser General Public License version 3 for more details
19 ' (a copy is included in the LICENSE file that accompanied this code).
21 ' You should have received a copy of the GNU Lesser General Public License
22 ' version 3 along with OpenOffice.org.  If not, see
23 ' <http://www.openoffice.org/license.html>
24 ' for a copy of the LGPLv3 License.
26 '/************************************************************************
28 '* owner : thorsten.bosbach@oracle.com
30 '* short description : global-level-1-test -> insert all OLE-Objects out of OLE-dialog into all doc-types
32 '\******************************************************************************
34 sub hReopenDoc
35     'Only for bughandling if closing an OLE object fails
36     Warnlog "Cannot release Chart Object -> #107005#?"
37     hCloseDocument()
38     'if Active.Exists ( 1 ) then Active.TypeKeys "<RIGHT><ENTER>"
39     hNewDocument()
40 end sub
42 '*******************************************************************************
44 sub hOleSelektieren ( xStart%, yStart%, xEnde%, yEnde% )
45     WL_TB_ZF_Auswahl
46     select case gApplication
47     case "CALC"     :Kontext "DocumentCalc"
48         DocumentCalc.MouseDown xStart%, yStart%
49         DocumentCalc.MouseMove xEnde%, yEnde%
50         DocumentCalc.MouseUp xEnde%, yEnde%
51         wait 200
52     case "DRAW"     :Kontext "DocumentDraw"
53         DocumentDraw.MouseDown xStart%, yStart%
54         DocumentDraw.MouseMove xEnde%, yEnde%
55         DocumentDraw.MouseUp xEnde%, yEnde%
56     case "WRITER"   :Kontext "DocumentWriter"
57         DocumentWriter.MouseDown xStart%, yStart%
58         DocumentWriter.MouseMove xEnde%, yEnde%
59         DocumentWriter.MouseUp xEnde%, yEnde%
60     case "IMPRESS"  :Kontext "DocumentImpress"
61         DocumentImpress.MouseDown xStart%, yStart%
62         DocumentImpress.MouseMove xEnde%, yEnde%
63         DocumentImpress.MouseUp xEnde%, yEnde%
64     case "MATH"     :Kontext "DocumentMath"
65         DocumentMath.MouseDown xStart%, yStart%
66         DocumentMath.MouseMove xEnde%, yEnde%
67         DocumentMath.MouseUp xEnde%, yEnde%
68     case "MASTERDOCUMENT":Kontext "DocumentMasterDoc"
69         DocumentMasterDoc.MouseDown xStart%, yStart%
70         DocumentMasterDoc.MouseMove xEnde%, yEnde%
71         DocumentMasterDoc.MouseUp xEnde%, yEnde%
72     end select
73 end sub
75 '*******************************************************************************
77 function hSetToStandardView ( cApplication as string ) as boolean
79     const MAX_WAIT_FOR_DIALOG = 2
81     select case ( cApplication )
82     case "WRITER"
83         gApplication = cApplication
84         Call hNewDocument
85         Kontext "DocumentWriter"
86     case "MASTERDOCUMENT"
87         gApplication = cApplication
88         Call hNewDocument
89         Kontext "DocumentMasterDoc"
90     case else
91         printlog( "Application not supported by this function: " & cApplication )
92         hSetToStandardView() = false
93         exit function
94     end select
96     hUseAsyncSlot( "ViewZoom" )
98     Kontext "Massstab"
99     if ( Massstab.exists( MAX_WAIT_FOR_DIALOG ) ) then
100         Optimal.Check()
101         hCloseDialog( Massstab, "ok" )
102     else
103         warnlog( "Zoom-Dialog did not open" )
104     endif
106     Call hCloseDocument
107     hSetToStandardView() = true
109 end sub
111 '*******************************************************************************
113 sub SendEscape(optional iTimes as Integer)
114     dim i as Integer
115     const ICWAIT as Integer = 1
116     
117     if IsMissing( iTimes ) then
118         iTimes = 1
119     endif
120     printlog( "    - send <ESCAPE> keystroke to document" )
121     select case gApplication
122     case "WRITER"
123     Kontext "DocumentWriter"
124         for i = 1 to iTimes
125             sleep( ICWAIT )
126             DocumentWriter.TypeKeys( "<ESCAPE>" , 1 , TRUE )
127         next i
128     case "CALC"
129     Kontext "DocumentCalc"
130         for i = 1 to iTimes
131             sleep( ICWAIT )
132             DocumentCalc.TypeKeys( "<ESCAPE>" , 1 , TRUE )
133         next i
134     case "MASTERDOCUMENT"
135     Kontext "DocumentMasterDoc"
136         for i = 1 to iTimes
137             sleep( ICWAIT )
138             DocumentMasterDoc.TypeKeys( "<ESCAPE>" , 1 , TRUE )
139         next i
140     case "DRAW"
141     Kontext "DocumentDraw"
142         for i = 1 to iTimes
143             sleep( ICWAIT )
144             DocumentDraw.TypeKeys( "<ESCAPE>" , 1 , TRUE )
145         next i
146     case "IMPRESS"
147     Kontext "DocumentImpress"
148         for i = 1 to iTimes
149             sleep( ICWAIT )
150             DocumentImpress.TypeKeys( "<ESCAPE>" , 1 , TRUE )
151         next i
152     case else
153     warnlog( "Invalid gApplication: " & gApplication )
154     end select
155 end sub
157 '*******************************************************************************
159 sub UncheckAutoFileExtension()
160     Kontext "SpeichernDlg"
161     if SpeichernDlg.exists(5) then
162         if AutomatischeDateinamenserweiterung.Exists() then
163             printlog("l1_ole_tools::UncheckAutoFileExtension  - unchecking automatic file extension" )
164             If AutomatischeDateinamenserweiterung.IsChecked() then
165                 AutomatischeDateinamenserweiterung.Uncheck()
166             endif
167         else
168             QAErrorLog ( "OBSOLETE: l1_ole_tools::UncheckAutoFileExtension Checkbox 'Automatic Filename Extension' unavailable" )
169         endif
170     else
171         warnlog( "l1_ole_tools::UncheckAutoFileExtension SaveAs Dialog not open." )
172     endif
173 end sub
175 '*******************************************************************************
177 function getExtension( optional sExtension as string ) as string
178     qaerrorlog( "getExtension is outdated. Use hGetSuffix( ... ) instead" )
179     printlog("l1_ole_ttols::getExtension:: - define the expected file extension" )
180     select case gApplication
181     case "WRITER"
182     sExtension = ".sxw"
183     case "DRAW"
184     sExtension = ".sxd"
185     case "IMPRESS"
186     sExtension = ".sxi"
187     case "CALC"
188     sExtension = ".sxc"
189     case "MATH"
190     sExtension = ".sxm"
191     case "MASTERDOCUMENT"
192     sExtension = ".sgl"
193     case else
194     warnlog( "Invalid gApplication: " & gApplication )
195     end select
196     getExtension = sExtension
197 end function
199 '*******************************************************************************
201 sub OLESetFocus()
202     const ICWAIT as Integer = 10
203     PrintLog "    - set focus to OLE object (edit mode)"
204     select case gApplication
205     case "WRITER"
206     printlog "      Select and deselect " + gApplication
207         Kontext "DocumentWriter"
208         DocumentWriter.TypeKeys("<F6>"           , 4 , TRUE )
209         DocumentWriter.TypeKeys("<DOWN>"         , 3 , TRUE )
210         DocumentWriter.TypeKeys("<RIGHT>"        , 1 , TRUE )
211         DocumentWriter.TypeKeys("<MOD1 RETURN>"  , 1 , TRUE )
212         DocumentWriter.TypeKeys("<TAB>"          , 1 , TRUE )
213         DocumentWriter.TypeKeys("<RETURN>"       , 1 , TRUE )
214         'DocumentWriter.MouseDoubleClick ( 50, 50 )
215         sleep( ICWAIT )
216         call SendEscape( 3 ) '(to close the float as well)
217     case "IMPRESS"
218     printlog "      Select and deselect " + gApplication
219         Kontext "DocumentImpress"
220         DocumentImpress.MouseDoubleClick ( 50, 50 )
221         sleep( ICWAIT )
222     case "CALC"
223     printlog "      Select and deselect " + gApplication
224         Kontext "DocumentCalc"
225         DocumentCalc.TypeKeys( "<F6>"            , 5 , TRUE )
226         DocumentCalc.TypeKeys( "<DOWN>"          , 3 , TRUE )
227         DocumentCalc.TypeKeys( "<MOD1 RETURN>"   , 1 , TRUE )
228         DocumentCalc.TypeKeys( "<RETURN>"        , 1 , TRUE )
229         'gMouseClick ( 20, 20 )
230         'DocumentCalc.MouseDoubleClick ( 20, 20 )
231         sleep( ICWAIT )
232         call SendEscape( 3 ) '(to close the float as well)
233     case "MASTERDOCUMENT"
234     printlog "      Select and deselect " + gApplication
235         Kontext "DocumentMasterDoc"
236         DocumentMasterDoc.MouseDown( 50 , 50 , 1 )
237         DocumentMasterDoc.MouseUp( 50 , 50 , 1 )
238         hUseAsyncSlot( "EditObjectEdit" )
239         sleep( ICWAIT )
240             case else
241     warnlog( "Invalid gApplication: " & gApplication )
243     end select
244 end sub
246 '*******************************************************************************
248 sub OLESetFocus2()
249     'default waitstate
250     const ICWAIT as Integer = 1
251     PrintLog "    - set focus to OLE object (edit mode)"
252     select case gApplication
253     case "WRITER"
254     Kontext "DocumentWriter"
255         try
256             FormatObject
257             Kontext ' This is by intention, do not change!
258             active.SetPage TabType
259             Kontext "TabType"
260             TabType.Cancel()
261             hUseAsyncSlot( "EditObjectEdit" )
262         catch
263             warnlog "Can't activate object"
264         endcatch
265         sleep( ICWAIT * 2 )
266         gMouseClick ( 5 , 5 ) 'out of edit mode
267         gMouseClick ( 5 , 5 ) 'remove focus
268     case "DRAW"
269     Kontext "DocumentDraw"
270         if OLEApp = "MATH" then
271             DocumentDraw.MouseDoubleClick ( 45, 46 )
272         else
273             DocumentDraw.MouseDoubleClick ( 50, 45 )
274         end if
275         sleep( ICWAIT * 5 )
276         gMouseClick ( 1 , 1 )
277     case "IMPRESS"
278     Kontext "DocumentImpress"
279         printlog( "    - using accessibility shortcuts for objecthandling" )
280         printlog( "      (select, activate and release object)" )
281         DocumentImpress.TypeKeys( "<F6>" , 5 , TRUE )
282         DocumentImpress.TypeKeys( "<TAB><RETURN>" )
283         sleep( ICWAIT * 2 )
284         call SendEscape()
285     case "CALC"
286     Kontext "DocumentCalc"
287         printlog( "    - using accessibility shortcuts for objecthandling" )
288         printlog( "      (select, activate and release object)" )
289         DocumentCalc.TypeKeys( "<F6>"          , 5 , TRUE )
290         DocumentCalc.TypeKeys( "<DOWN>"        , 3 , TRUE )
291         DocumentCalc.TypeKeys( "<RIGHT>"       , 1 , TRUE )
292         DocumentCalc.TypeKeys( "<MOD1 RETURN>" , 1 , TRUE )
293         DocumentCalc.TypeKeys( "<RETURN>"      , 1 , TRUE )
294         sleep( ICWAIT * 2 )
295         call sendEscape()
296     case "MASTERDOCUMENT"
297     Kontext "DocumentMasterDoc"
298         try
299             FormatObject
300             sleep( ICWAIT )
301             Kontext ' This is by intention, do not change!
302             Active.SetPage TabType
303             Kontext "TabType"
304             TabType.Cancel
305             hUseAsyncSlot( "EditObjectEdit" )
306         catch
307             qaerrorlog( "The object is not selected after reload." )
308         endcatch
309         Sleep( ICWAIT )
310         Kontext "DocumentMasterDoc"
311         DocumentMasterDoc.MouseDoubleClick ( 1 , 1 )
312     case else
313     warnlog( "Invalid gApplication: " & gApplication )
314         
315     end select
316 end sub
318 '*******************************************************************************
320 sub OLESetFocus3()
321     'TODO: Get rid of as many mousemovements as possible
322     'default waitstate
323     const ICWAIT as Integer = 1
324     printlog( "    - set focus to OLE object (edit mode)" )
325     select case gApplication
326     case "WRITER"
327     Kontext "DocumentWriter"
328         try
329             FormatObject
330             sleep( ICWAIT )
331             Kontext ' This is by intention, do not change!
332             active.SetPage TabType
333             Kontext "TabType"
334             TabType.Cancel
335             hUseAsyncSlot( "EditObjectEdit" )
336         catch
337             warnlog "Can't activate object"
338         endcatch
339         sleep( ICWAIT * 5 )
340         gMouseClick ( 1, 1 )
341     case "DRAW"
342     Kontext "DocumentDraw"
343         DocumentDraw.TypeKeys ("<Tab>")
344         DocumentDraw.MouseDoubleClick ( 50, 50 )
345         sleep( ICWAIT * 5 )
346         gMouseClick ( 1, 1 )
347     case "IMPRESS"
348     Kontext "DocumentImpress"
349         printlog( "    - Using accessibility-shortcuts to manipulate object")
350         DocumentImpress.TypeKeys( "<TAB>" )
351         sleep( ICWAIT )
352         DocumentImpress.TypeKeys( "<SHIFT RETURN>" )
353         call SendEscape( 3 )
354     case "MASTERDOCUMENT"
355     Kontext "DocumentMasterDoc"
356         try
357             FormatObject
358             sleep( ICWAIT )
359             Kontext ' This is by intention, do not change!
360             active.SetPage( TabType )
361             Kontext "TabType"
362             TabType.Cancel()
363             hUseAsyncSlot( "EditObjectEdit" )
364         catch
365             qaerrorlog( "The object is not selected after reload." )
366         endcatch
367         sleep( ICWAIT * 5 )
368         call SendEscape( 2 )
369     case else
370     warnlog( "Invalid gApplication: " & gApplication )
371         
372     end select
373 end sub
375 '*******************************************************************************
377 sub OLERemoveFocus
378     printlog( "Remove focus from OLE object for " & gApplication )
379     select case gApplication
380     case "WRITER"    : call SendEscape( 2 )
381     case "MASTERDOCUMENT" : Kontext "DocumentMasterDoc"
382         DocumentMasterDoc.MouseDoubleClick ( 1, 1 )
383     case "IMPRESS"   : gMouseClick ( 5, 99 )
384     case "CALC"      : Kontext "DocumentCalc"
385         call SendEscape()
386     end select
387 end sub
389 '*******************************************************************************
391 sub ClosePresentationFloat()
392     gApplication = "IMPRESS"
393     printlog( "Open a new document" )
394     hNewDocument
395     'use the tiny little hammer to kill the presentation float
396     printlog( "Reset the application (which closes the presentation toolbar)" )
397     resetapplication
398     printlog( "Open a new document" )
399     hNewDocument
400     Kontext "CommonTaskbar"
401     try
402         printlog( "Try to click a button on the presentation toolbar" )
403         Seiteduplizieren.click()
404         warnlog( "The presentation toolbar is open" )
405     catch
406         printlog( "Button is unavailable. Good" )
407     endcatch
408     printlog( "Close the document" )
409     hCloseDocument
410     gApplication = "WRITER" ' reset, just in case...
411 end sub
414 '*******************************************************************************
416 function hStepThroughChartWizard() as boolean
417     
418     
419     
420     
421     
422     
423     const CFN = "hStepThroughChartWizard::"
424     printlog( CFN & "Enter" )
425     dim brc as boolean 'a multi purpose boolean returnvalue
426     
427     Kontext "ChartWizard"
428     if ( not chartWizard.exists( 1 ) ) then
429         
430         warnlog( CFN & "Chart Wizard not open within reasonable time" )
431         hStepThroughChartWizard() = false
432         
433     else
434         
435         Kontext "ChartWizard"
436         GoNext.Click()
437         
438         Kontext "ChartWizard"
439         GoNext.Click()
440         
441         Kontext "ChartWizard"
442         GoNext.Click()
443         
444         Kontext "ChartWizard"
445         ChartWizard.ok()
446         Sleep( 3 )
447         
448     endif
449     
450     kontext "ChartWizard"
451     if ( ChartWizard.exists( 1 ) ) then
452         warnlog( CFN & "Chart Wizard is still open" )
453     endif
454     
455     
456     printlog( CFN & "Exit" )
457     
458     hStepThroughChartWizard() = true
459     
460 end function