jl165 merging heads
[LibreOffice.git] / testautomation / framework / optional / includes / filedlg_tools.inc
blob06c86bce75aa926854de4da3db41533cd4247b43
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 : gregor.hartmann@oracle.com
30 '* short description : check the internal file dialog ( 1. part )
32 '\***************************************************************************
34 sub CheckDirectoryName( dirname as string )
35     
36     ' Try to create a folder twice and make sure a warning comes up that the
37     ' folder already exists
38     
39     dim i as integer
40     dim FULLPATH as string
41     FULLPATH = gOfficePath + "user\work\" + dirname + "\"
42     
43     printlog( " - Create the folder and verify it's existence" )
44     
45     try
46         
47         for i=1 to 2
48             
49             printlog( " - creating folder for the " + i + ". time" )
50             
51             Kontext "OeffnenDlg"
52             printlog( " - press 'new folder' button" )
53             NeuerOrdner.Click()
54             
55             Kontext "NeuerOrdner"
56             if ( NeuerOrdner.exists( 2 ) ) then
57                 printlog( " - name the folder" )
58                 OrdnerName.SetText( dirname )
59                 printlog( " - press OK")
60                 NeuerOrdner.OK()
61             else
62                 warnlog( "New Folder dialog not displayed" )
63             endif
64             
65             ' Take care of the File Exists Dialog
66             printlog( " - check for 'File Exists'-Dialog" )
67             Kontext "Active"
68             If Active.Exists() then
69                 Active.OK()
70                 
71                 'if the file exists during first run of the test: just go on
72                 if i =  1 then
73                     warnlog( "File exists. Did you clean the output-dir?" )
74                 end if
75                 
76                 'if the active exists, we will return to the 'new folder' dialog
77                 'it must be closed as well
78                 Kontext "NeuerOrdner"
79                 NeuerOrdner.Cancel()
80             else
81                 'this should only be displayed on second run
82                 if i = 2 then
83                     warnlog( "No message that the folder '" + dirname + "' exists!" )
84                 end if
85             end if
86             
87         next i
88         
89         printlog( " - verify the existence of the new directory" )
90         if App.Dir ( ConvertPath ( FULLPATH ), 16 ) = "" then
91             Warnlog( "The directory'" + dirname + "' wasn't created!" )
92         else
93             printlog( " - delete it")
94             App.RmDir ( ConvertPath ( FULLPATH ) )
95         end if
96         
97         
98     catch
99         
100         warnlog( "Could not create the directory. Bugid: #108256# or #106510# ?" )
101         
102     endcatch
103     
104 end sub
106 '*******************************************************************************
108 sub CreateInvalidDirectory( dirname as string )
109     
110     'Try to create a directory with a name that is invalid by using characters
111     'that are not allowed for a filesystems. An errormessage is expected.
112     
113     dim i as integer
114     dim FULLPATH as string
115     FULLPATH = gOfficePath + "user\work\" + dirname + "\" 'experimental
116     
117     printlog( " - Trying to create directory <" + FULLPATH + ">" )
118     
119     try
120         
121         Kontext "OeffnenDlg"
122         if ( OeffnenDlg.exists( 2 ) ) then
123             
124             NeuerOrdner.Click()
125             
126             Kontext "NeuerOrdner"
127             if ( NeuerOrdner.exists( 2 ) ) then
128                 
129                 OrdnerName.SetText( dirname )
130                 NeuerOrdner.OK()
131             else
132                 warnlog( "New Folder dialog did not open" )
133             endif
134             
135             
136             if gPlatgroup() = "unx" then
137                 
138                 'unx allows weird filenames
139                 if App.Dir ( ConvertPath ( FULLPATH ), 16 ) = "" then
140                     Warnlog "  the '" + dirname + "'-dir wasn't created!"
141                 else
142                     App.RmDir ( ConvertPath ( FULLPATH ) )
143                 end if
144                 
145             else
146                 
147                 'windows
148                 Kontext "Active"
149                 if Active.Exists( 2 ) then
150                     
151                     printlog( " - handle the 'Active' dialog" )
152                     Active.OK()
153                     
154                     Kontext "Active"
155                     if Active.Exists( 2 ) then
156                         warnlog( "Double errormessage displayed, one expected." )
157                         Active.OK()
158                     end if
159                     
160                     Kontext "NeuerOrdner"
161                     NeuerOrdner.Cancel()
162                     
163                 else
164                     
165                     warnlog( "No warning that the folder can't be created!" )
166                     
167                 end if
168                 
169                 if App.Dir( ConvertPath ( FULLPATH ), 16 ) <> "" then
170                     Warnlog "The directory '"+ dirname + "' contains invalid chars"
171                     App.RmDir( ConvertPath ( FULLPATH ) )
172                 end if
173                 
174             end if
175             
176         endif
177             
178     catch
179         
180         warnlog( "Could not create the directory. Bugid: #108256# or #106510# ?" )
181         
182     endcatch
183         
184 end sub
186 '*******************************************************************************
188 sub CreateValidDirectory( dirname as string )
189     
190     'Create a directory that has a valid name at a valid location
191     'The directory should not exist.
192     'It will be created in the user's directory
193     
194     dim FULLPATH as string
195     FULLPATH = gOfficePath() + "user\work\" + dirname + "\" 'experimental
196     
197     
198     printlog( " - Trying to create directory: <" + FULLPATH + ">" )
199     
200     try
201         
202         printlog( " - Open the file-open dialog" )
203         Kontext "OeffnenDlg"
204         NeuerOrdner.Click()
205         
206         printlog( " - name the folder" )
207         Kontext "NeuerOrdner"
208         OrdnerName.SetText( dirname )
209         NeuerOrdner.OK()
210         
211         printlog( " - check if the directory has been created" )
212         if App.Dir ( ConvertPath ( FULLPATH ) , 16 ) = "" then
213             warnlog( "The '" + dirname + "' has not been created!" )
214         else
215             App.RmDir( ConvertPath ( FULLPATH ) )
216             printlog( " - existing file was successfully deleted" )
217         end if
218         
219     catch
220         
221         warnlog( "Could not create the directory. Bugid: #108256# or #106510# ?" )
222         
223     endcatch
224     
225 end sub
227 '*******************************************************************************
229 sub CreateValidDirectoryCrop( dirname as string , cropname as string)
230     
231     'Create a directory that has a name with leading or trailing spaces.
232     'Those names are valid but must be cropped.
233     'The directory should not exist.
234     'It will be created in the user's directory.
235     
236     dim FULLPATH as string
237     FULLPATH = gOfficePath + "user\work\" + dirname + "\" 'experimental
238     dim CROPPATH as string
239     CROPPATH = gOfficePath + "user\work\" + cropname + "\" 'experimental
240     
241     printlog( " - Trying to create directory: <" + FULLPATH + ">" )
242     
243     try
244         
245         printlog( " - open the file-open dialog" )
246         Kontext "OeffnenDlg"
247         NeuerOrdner.Click()
248         
249         printlog( " - name the folder" )
250         Kontext "NeuerOrdner"
251         OrdnerName.SetText( dirname )
252         NeuerOrdner.OK()
254         
255         printlog( " - check if the directory has been created" )
256         if App.Dir( ConvertPath ( CROPPATH ), 16 ) = "" then
257             
258             warnlog( "The leading or trailing spaces have not been deleted!" )
259             
260         else
261             
263             App.RmDir( ConvertPath ( CROPPATH ) )
264             printlog( " - existing directory was successfully deleted." )
265             
266         end if
267         
268     catch
269         
270         warnlog( "Could not create the directory. Bugid: #108256# or #106510# ?" )
271         
272     endcatch
273     
274 end sub
276 '*******************************************************************************
278 function LoadDocumentReadOnly ( sDatei as String, TypeOfDocument as Integer, ReadOnlyFlag as Boolean ) as Boolean
279     
280     LoadDocumentReadOnly = TRUE
281     
282     FileOpen
283     
284     Kontext "OeffnenDlg"
285     Dateiname.SetText sDatei
286     
287     if ReadOnlyFlag = TRUE then
288         NurLesen.Check()
289     endif
290     
291     Oeffnen.Click
292     hFileWait( FALSE )
293     
294     Kontext "Active"
295     if Active.Exists( 2 ) then
296         LoadDocumentReadOnly = FALSE
297         Warnlog Active.GetText
298         Active.OK
300         if Active.Exists( 1 ) then
301             Warnlog "A second messagebox is active!"
302             Active.OK
303         end if
304         
305         Kontext "Filterauswahl"
306         If FilterAuswahl.Exists( 2 ) then
307             Warnlog "Filterbox is also active!"
308             FilterAuswahl.Cancel
309         end if
310     end if
311     
312     'printlog( " - check for (unexpected) filter-dialog" )
313     Kontext "Filterauswahl"
314     
315     If ( FilterAuswahl.Exists( 2 ) ) then
316         Warnlog( "Filterbox is active, this is not expected" )
317         FilterAuswahl.Cancel()
318         
319         qaerrorlog( "TODO: There is no way that this function can handle " & _
320         "the filterdialog correctly, rewrite it!" )
321         warnlog( "The test will most likely fail!" )
322         
323         LoadDocumentReadOnly() = false
324         exit function
325         
326     endif
327     
328     
329     
330     kontext "OeffnenDlg"
331     
332     if ( OeffnenDlg.exists( 2 ) ) then
333         warnlog( "File-Open dialog is open, this is not expected at this point" )
334         printlog( "Exiting routine to recover" )
335         
336         OeffnenDlg.cancel()
337         
338         LoadDocumentReadOnly() = false
339         exit function
340         
341     endif
342     
343     try
344         
345         select case TypeOfDocument
346             
347         case 1  : InsertSection                           ' Writer
348             Kontext
349             Active.Setpage TabBereiche
350             Kontext "TabBereiche"
351             TabBereiche.Cancel
352         case 2  : FormatCells                             ' Calc
353             Kontext
354             Active.SetPage TabZahlen
355             Kontext "TabZahlen"
356             TabZahlen.Cancel
357         case 3  : SlideShowPresentationSettings           ' Impress
358             Kontext "Bildschirmpraesentation"
359             Bildschirmpraesentation.Cancel
360         case 4  : InsertLayer                             ' Draw
361             Kontext "EbeneEinfuegenDlg"
362             EbeneEinfuegenDlg.Cancel
363         case 5  : FormatLegend                            ' Chart
364             Kontext "TabUmrandungChart" :
365             TabUmrandungChart.Cancel
366         case 6  : FormatFonts                             ' Math
367             Kontext "Schriftarten"
368             Schriftarten.Cancel
369         end select
370         
371         if LoadDocumentReadOnly = TRUE then
372             Warnlog "The document wasn't loaded read only"
373         endif
374         
375     catch
376         
377     endcatch
378     
379 end function
381 '*******************************************************************************
383 sub hSetUNIXAttributes()
384     
385     ' NOTE: Requested by TBO
386     ' This sub tries to set the file-attributes on the qatesttool-snapshot on
387     ' mahler.germany.
388     ' Since all BASIC commands are platform independent, it cannot be checked
389     ' exactly.
390     ' If you are not the owner of the testtool snapshot, this is *not* going to
391     ' work.
392     
393     
394     dim cFullPath as string
395     dim cParameter as string
396     dim cCommand as string
397     dim rc as integer
398     
399     if ( gPLatGroup = "unx" ) then
400         
401         cCommand = "chmod" ' Fallback, if no following definition matches
402         if ( gPlatform = "sol" ) then
403             cCommand = "/usr/bin/chmod"
404         endif
405         if ( gPlatform = "x86" ) then
406             cCommand = "/usr/bin/chmod"
407         endif
408         if ( gPlatform = "lin" ) then
409             cCommand = "/bin/chmod"
410         endif
411         
412         cFullPath = convertpath( gTesttoolPath + "framework/filedlg/input/noentry" )
413         printlog( "Trying to set attributes for "  + cFullPath )
414         cParameter = "-R 000 " + cFullPath
415         rc = shell( cCommand , 0 , cParameter , false )
416         
417         ' the readentry-directory must be readonly, the files as well
418         cFullPath = convertpath( gTesttoolPath + "framework/filedlg/input/readentry" )
419         printlog( "Trying to set attributes for " + cFullPath )
420         cParameter = "-R 444 " + cFullPath
421         rc = shell( cCommand , 0 , cParameter , false )
422         'need to remove the "S" attribute
423         cParameter = "-R -s " + cFullPath
424         rc = shell( cCommand , 0 , cParameter , false )
425         
426         ' the readonly-directory: Only the directory is read-only, the files are rw
427         cFullPath = convertpath( gTesttoolPath + "framework/filedlg/input/readonly/*.*" )
428         printlog( "Trying to set attributes for " + cFullPath )
429         cParameter = "444 " + cFullPath
430         rc = shell( cCommand , 0 , cParameter , false )
431         
432     else
433         
434         printlog( "No file-attribute setting for non-UNIX platforms" )
435         
436     endif
437     
438 end sub
441 '*******************************************************************************
443 function hGetFirstNameFromFileList() as string
444     
445     
446     
447     
448     
449     
450     const CFN = "hGetFirstNameFromFileList()::"
451     dim brc as boolean 'a multi purpose boolean returnvalue
452     dim cFileName as string
453     
454     
455     Kontext "OeffnenDlg"
456     Dateiauswahl.typeKeys( "<HOME>" )
457     Dateiauswahl.typeKeys( "<SPACE>" )
458     
459     cFileName =lcase( Dateiauswahl.GetSelText() )
460     printlog( CFN & "File: " & cFileName )
461     
462     if ( cFileName = "" ) then
463         warnlog( CFN & "Filename is empty, probably a timing issue" )
464     endif
465     
466     if ( cFileName = "cvs" ) then
467         printlog( CFN & "Skipping CVS directory" )
468         Dateiauswahl.TypeKeys( "<Down>" )
469         
470         cFileName = lcase ( Dateiauswahl.GetSelText() )
471         printlog( CFN & "File: " & cFileName )
472     endif
473     
474     hGetFirstNameFromFileList() = cFileName
475     
476     
477 end function