Update ooo320-m1
[ooovba.git] / testautomation / framework / optional / includes / filedlg_tools.inc
blob67626c2a6cc5960855acee72dfc9c56aa2ef54a8
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 '* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 '* 
5 '* Copyright 2008 by Sun Microsystems, Inc.
6 '*
7 '* OpenOffice.org - a multi-platform office productivity suite
8 '*
9 '* $RCSfile: filedlg_tools.inc,v $
11 '* $Revision: 1.1 $
13 '* last change: $Author: jsi $ $Date: 2008-06-16 12:18:14 $
15 '* This file is part of OpenOffice.org.
17 '* OpenOffice.org is free software: you can redistribute it and/or modify
18 '* it under the terms of the GNU Lesser General Public License version 3
19 '* only, as published by the Free Software Foundation.
21 '* OpenOffice.org is distributed in the hope that it will be useful,
22 '* but WITHOUT ANY WARRANTY; without even the implied warranty of
23 '* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 '* GNU Lesser General Public License version 3 for more details
25 '* (a copy is included in the LICENSE file that accompanied this code).
27 '* You should have received a copy of the GNU Lesser General Public License
28 '* version 3 along with OpenOffice.org.  If not, see
29 '* <http://www.openoffice.org/license.html>
30 '* for a copy of the LGPLv3 License.
32 '/************************************************************************
34 '* owner : joerg.skottke@sun.com
36 '* short description : check the internal file dialog ( 1. part )
38 '\***************************************************************************
40 sub CheckDirectoryName( dirname as string )
41     
42     ' Try to create a folder twice and make sure a warning comes up that the
43     ' folder already exists
44     
45     dim i as integer
46     dim FULLPATH as string
47     FULLPATH = gOfficePath + "user\work\" + dirname + "\"
48     
49     printlog( " - Create the folder and verify it's existence" )
50     
51     try
52         
53         for i=1 to 2
54             
55             printlog( " - creating folder for the " + i + ". time" )
56             
57             Kontext "OeffnenDlg"
58             printlog( " - press 'new folder' button" )
59             NeuerOrdner.Click()
60             
61             Kontext "NeuerOrdner"
62             if ( NeuerOrdner.exists( 2 ) ) then
63                 printlog( " - name the folder" )
64                 OrdnerName.SetText( dirname )
65                 printlog( " - press OK")
66                 NeuerOrdner.OK()
67             else
68                 warnlog( "New Folder dialog not displayed" )
69             endif
70             
71             ' Take care of the File Exists Dialog
72             printlog( " - check for 'File Exists'-Dialog" )
73             Kontext "Active"
74             If Active.Exists() then
75                 Active.OK()
76                 
77                 'if the file exists during first run of the test: just go on
78                 if i =  1 then
79                     warnlog( "File exists. Did you clean the output-dir?" )
80                 end if
81                 
82                 'if the active exists, we will return to the 'new folder' dialog
83                 'it must be closed as well
84                 Kontext "NeuerOrdner"
85                 NeuerOrdner.Cancel()
86             else
87                 'this should only be displayed on second run
88                 if i = 2 then
89                     warnlog( "No message that the folder '" + dirname + "' exists!" )
90                 end if
91             end if
92             
93         next i
94         
95         printlog( " - verify the existence of the new directory" )
96         if App.Dir ( ConvertPath ( FULLPATH ), 16 ) = "" then
97             Warnlog( "The directory'" + dirname + "' wasn't created!" )
98         else
99             printlog( " - delete it")
100             App.RmDir ( ConvertPath ( FULLPATH ) )
101         end if
102         
103         
104     catch
105         
106         warnlog( "Could not create the directory. Bugid: #108256# or #106510# ?" )
107         
108     endcatch
109     
110 end sub
112 '*******************************************************************************
114 sub CreateInvalidDirectory( dirname as string )
115     
116     'Try to create a directory with a name that is invalid by using characters
117     'that are not allowed for a filesystems. An errormessage is expected.
118     
119     dim i as integer
120     dim FULLPATH as string
121     FULLPATH = gOfficePath + "user\work\" + dirname + "\" 'experimental
122     
123     printlog( " - Trying to create directory <" + FULLPATH + ">" )
124     
125     try
126         
127         Kontext "OeffnenDlg"
128         if ( OeffnenDlg.exists( 2 ) ) then
129             
130             NeuerOrdner.Click()
131             
132             Kontext "NeuerOrdner"
133             if ( NeuerOrdner.exists( 2 ) ) then
134                 
135                 OrdnerName.SetText( dirname )
136                 NeuerOrdner.OK()
137             else
138                 warnlog( "New Folder dialog did not open" )
139             endif
140             
141             
142             if gPlatgroup() = "unx" then
143                 
144                 'unx allows weird filenames
145                 if App.Dir ( ConvertPath ( FULLPATH ), 16 ) = "" then
146                     Warnlog "  the '" + dirname + "'-dir wasn't created!"
147                 else
148                     App.RmDir ( ConvertPath ( FULLPATH ) )
149                 end if
150                 
151             else
152                 
153                 'windows
154                 Kontext "Active"
155                 if Active.Exists( 2 ) then
156                     
157                     printlog( " - handle the 'Active' dialog" )
158                     Active.OK()
159                     
160                     Kontext "Active"
161                     if Active.Exists( 2 ) then
162                         warnlog( "Double errormessage displayed, one expected." )
163                         Active.OK()
164                     end if
165                     
166                     Kontext "NeuerOrdner"
167                     NeuerOrdner.Cancel()
168                     
169                 else
170                     
171                     warnlog( "No warning that the folder can't be created!" )
172                     
173                 end if
174                 
175                 if App.Dir( ConvertPath ( FULLPATH ), 16 ) <> "" then
176                     Warnlog "The directory '"+ dirname + "' contains invalid chars"
177                     App.RmDir( ConvertPath ( FULLPATH ) )
178                 end if
179                 
180             end if
181             
182         endif
183             
184     catch
185         
186         warnlog( "Could not create the directory. Bugid: #108256# or #106510# ?" )
187         
188     endcatch
189         
190 end sub
192 '*******************************************************************************
194 sub CreateValidDirectory( dirname as string )
195     
196     'Create a directory that has a valid name at a valid location
197     'The directory should not exist.
198     'It will be created in the user's directory
199     
200     dim FULLPATH as string
201     FULLPATH = gOfficePath() + "user\work\" + dirname + "\" 'experimental
202     
203     
204     printlog( " - Trying to create directory: <" + FULLPATH + ">" )
205     
206     try
207         
208         printlog( " - Open the file-open dialog" )
209         Kontext "OeffnenDlg"
210         NeuerOrdner.Click()
211         
212         printlog( " - name the folder" )
213         Kontext "NeuerOrdner"
214         OrdnerName.SetText( dirname )
215         NeuerOrdner.OK()
216         
217         printlog( " - check if the directory has been created" )
218         if App.Dir ( ConvertPath ( FULLPATH ) , 16 ) = "" then
219             warnlog( "The '" + dirname + "' has not been created!" )
220         else
221             App.RmDir( ConvertPath ( FULLPATH ) )
222             printlog( " - existing file was successfully deleted" )
223         end if
224         
225     catch
226         
227         warnlog( "Could not create the directory. Bugid: #108256# or #106510# ?" )
228         
229     endcatch
230     
231 end sub
233 '*******************************************************************************
235 sub CreateValidDirectoryCrop( dirname as string , cropname as string)
236     
237     'Create a directory that has a name with leading or trailing spaces.
238     'Those names are valid but must be cropped.
239     'The directory should not exist.
240     'It will be created in the user's directory.
241     
242     dim FULLPATH as string
243     FULLPATH = gOfficePath + "user\work\" + dirname + "\" 'experimental
244     dim CROPPATH as string
245     CROPPATH = gOfficePath + "user\work\" + cropname + "\" 'experimental
246     
247     printlog( " - Trying to create directory: <" + FULLPATH + ">" )
248     
249     try
250         
251         printlog( " - open the file-open dialog" )
252         Kontext "OeffnenDlg"
253         NeuerOrdner.Click()
254         
255         printlog( " - name the folder" )
256         Kontext "NeuerOrdner"
257         OrdnerName.SetText( dirname )
258         NeuerOrdner.OK()
260         
261         printlog( " - check if the directory has been created" )
262         if App.Dir( ConvertPath ( CROPPATH ), 16 ) = "" then
263             
264             warnlog( "The leading or trailing spaces have not been deleted!" )
265             
266         else
267             
269             App.RmDir( ConvertPath ( CROPPATH ) )
270             printlog( " - existing directory was successfully deleted." )
271             
272         end if
273         
274     catch
275         
276         warnlog( "Could not create the directory. Bugid: #108256# or #106510# ?" )
277         
278     endcatch
279     
280 end sub
282 '*******************************************************************************
284 function LoadDocumentReadOnly ( sDatei as String, TypeOfDocument as Integer, ReadOnlyFlag as Boolean ) as Boolean
285     
286     LoadDocumentReadOnly = TRUE
287     
288     FileOpen
289     
290     Kontext "OeffnenDlg"
291     Dateiname.SetText sDatei
292     
293     if ReadOnlyFlag = TRUE then
294         NurLesen.Check()
295     endif
296     
297     Oeffnen.Click
298     IsItLoaded
299     
300     Kontext "Active"
301     if Active.Exists( 2 ) then
302         LoadDocumentReadOnly = FALSE
303         Warnlog Active.GetText
304         Active.OK
306         if Active.Exists( 1 ) then
307             Warnlog "A second messagebox is active!"
308             Active.OK
309         end if
310         
311         Kontext "Filterauswahl"
312         If FilterAuswahl.Exists( 2 ) then
313             Warnlog "Filterbox is also active!"
314             FilterAuswahl.Cancel
315         end if
316     end if
317     
318     'printlog( " - check for (unexpected) filter-dialog" )
319     Kontext "Filterauswahl"
320     
321     If ( FilterAuswahl.Exists( 2 ) ) then
322         Warnlog( "Filterbox is active, this is not expected" )
323         FilterAuswahl.Cancel()
324         
325         qaerrorlog( "TODO: There is no way that this function can handle " & _
326         "the filterdialog correctly, rewrite it!" )
327         warnlog( "The test will most likely fail!" )
328         
329         LoadDocumentReadOnly() = false
330         exit function
331         
332     endif
333     
334     
335     
336     kontext "OeffnenDlg"
337     
338     if ( OeffnenDlg.exists( 2 ) ) then
339         warnlog( "File-Open dialog is open, this is not expected at this point" )
340         printlog( "Exiting routine to recover" )
341         
342         OeffnenDlg.cancel()
343         
344         LoadDocumentReadOnly() = false
345         exit function
346         
347     endif
348     
349     try
350         
351         select case TypeOfDocument
352             
353         case 1  : InsertSection                           ' Writer
354             Kontext
355             Active.Setpage TabBereiche
356             Kontext "TabBereiche"
357             TabBereiche.Cancel
358         case 2  : FormatCells                             ' Calc
359             Kontext
360             Active.SetPage TabZahlen
361             Kontext "TabZahlen"
362             TabZahlen.Cancel
363         case 3  : SlideShowPresentationSettings           ' Impress
364             Kontext "Bildschirmpraesentation"
365             Bildschirmpraesentation.Cancel
366         case 4  : InsertLayer                             ' Draw
367             Kontext "EbeneEinfuegenDlg"
368             EbeneEinfuegenDlg.Cancel
369         case 5  : FormatLegend                            ' Chart
370             Kontext "TabUmrandungChart" :
371             TabUmrandungChart.Cancel
372         case 6  : FormatFonts                             ' Math
373             Kontext "Schriftarten"
374             Schriftarten.Cancel
375         end select
376         
377         if LoadDocumentReadOnly = TRUE then
378             Warnlog "The document wasn't loaded read only"
379         endif
380         
381     catch
382         
383     endcatch
384     
385 end function
387 '*******************************************************************************
389 sub hSetUNIXAttributes()
390     
391     ' NOTE: Requested by TBO
392     ' This sub tries to set the file-attributes on the qatesttool-snapshot on
393     ' mahler.germany.
394     ' Since all BASIC commands are platform independent, it cannot be checked
395     ' exactly.
396     ' If you are not the owner of the testtool snapshot, this is *not* going to
397     ' work.
398     
399     '///Make sure the file-attributes are correct for the next tests.
400     
401     dim cFullPath as string
402     dim cParameter as string
403     dim cCommand as string
404     dim rc as integer
405     
406     if ( gPLatGroup = "unx" ) then
407         
408         cCommand = "chmod" ' Fallback, if no following definition matches
409         if ( gPlatform = "sol" ) then
410             cCommand = "/usr/bin/chmod"
411         endif
412         if ( gPlatform = "x86" ) then
413             cCommand = "/usr/bin/chmod"
414         endif
415         if ( gPlatform = "lin" ) then
416             cCommand = "/bin/chmod"
417         endif
418         
419         cFullPath = convertpath( gTesttoolPath + "framework/filedlg/input/noentry" )
420         printlog( "Trying to set attributes for "  + cFullPath )
421         cParameter = "-R 000 " + cFullPath
422         rc = shell( cCommand , 0 , cParameter , false )
423         
424         ' the readentry-directory must be readonly, the files as well
425         cFullPath = convertpath( gTesttoolPath + "framework/filedlg/input/readentry" )
426         printlog( "Trying to set attributes for " + cFullPath )
427         cParameter = "-R 444 " + cFullPath
428         rc = shell( cCommand , 0 , cParameter , false )
429         'need to remove the "S" attribute
430         cParameter = "-R -s " + cFullPath
431         rc = shell( cCommand , 0 , cParameter , false )
432         
433         ' the readonly-directory: Only the directory is read-only, the files are rw
434         cFullPath = convertpath( gTesttoolPath + "framework/filedlg/input/readonly/*.*" )
435         printlog( "Trying to set attributes for " + cFullPath )
436         cParameter = "444 " + cFullPath
437         rc = shell( cCommand , 0 , cParameter , false )
438         
439     else
440         
441         printlog( "No file-attribute setting for non-UNIX platforms" )
442         
443     endif
444     
445 end sub
448 '*******************************************************************************
450 function hGetFirstNameFromFileList() as string
451     
452     
453     '///<h3>Retrieve the first valid ffilename from the filepickers filelist</h3><br>
454     
455     '///<u>Parameter(s):</u><br>
456     '///<ol>
457     '///+<li>No input parameters</li>
458     '///</ol>
459     
460     
461     '///<u>Returns:</u><br>
462     '///<ol>
463     '///+<li>First valid filename from filelist (either first or second item)</li>
464     '///<ul>
465     '///+<li>Eliminates directory &quot;CVS&quot;</li>
466     '///</ul>
467     '///</ol>
468     
469     const CFN = "hGetFirstNameFromFileList()::"
470     dim brc as boolean 'a multi purpose boolean returnvalue
471     dim cFileName as string
472     
473     '///<u>Description:</u>
474     '///<ul>
475     '///+<li>Select the first item in the filelist of the File Open Dialog</li>
476     
477     Kontext "OeffnenDlg"
478     Dateiauswahl.typeKeys( "<HOME>" )
479     Dateiauswahl.typeKeys( "<SPACE>" )
480     
481     '///+<li>Retrieve the current name (First entry, usually this is <CVS>)</li>
482     cFileName =lcase( Dateiauswahl.GetSelText() )
483     printlog( CFN & "File: " & cFileName )
484     
485     '///+<li>Intercept blank filename (might be a timing issue)</li>
486     if ( cFileName = "" ) then
487         warnlog( CFN & "Filename is empty, probably a timing issue" )
488     endif
489     
490     '///+<li>Move one down if we are on the CVS directory</li>
491     if ( cFileName = "cvs" ) then
492         printlog( CFN & "Skipping CVS directory" )
493         Dateiauswahl.TypeKeys( "<Down>" )
494         
495         '///+<li>Retrieve the filename at pos. 2</li>
496         cFileName = lcase ( Dateiauswahl.GetSelText() )
497         printlog( CFN & "File: " & cFileName )
498     endif
499     
500     '///+<li>Return the filename</li>
501     hGetFirstNameFromFileList() = cFileName
502     
503     '///</ul>
504     
505 end function