diff options
Diffstat (limited to 'testautomation/global/tools/includes/optional/t_basic_organizer_tools.inc')
-rw-r--r-- | testautomation/global/tools/includes/optional/t_basic_organizer_tools.inc | 356 |
1 files changed, 356 insertions, 0 deletions
diff --git a/testautomation/global/tools/includes/optional/t_basic_organizer_tools.inc b/testautomation/global/tools/includes/optional/t_basic_organizer_tools.inc new file mode 100644 index 000000000000..83c037b83f0e --- /dev/null +++ b/testautomation/global/tools/includes/optional/t_basic_organizer_tools.inc @@ -0,0 +1,356 @@ +'encoding UTF-8 Do not remove or change this line! +'************************************************************************** +' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +' +' Copyright 2000, 2010 Oracle and/or its affiliates. +' +' OpenOffice.org - a multi-platform office productivity suite +' +' This file is part of OpenOffice.org. +' +' OpenOffice.org is free software: you can redistribute it and/or modify +' it under the terms of the GNU Lesser General Public License version 3 +' only, as published by the Free Software Foundation. +' +' OpenOffice.org is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU Lesser General Public License version 3 for more details +' (a copy is included in the LICENSE file that accompanied this code). +' +' You should have received a copy of the GNU Lesser General Public License +' version 3 along with OpenOffice.org. If not, see +' <http://www.openoffice.org/license.html> +' for a copy of the LGPLv3 License. +' +'/************************************************************************ +' ** +' ** owner : gregor.hartmann@oracle.com +' ** +' ** short description : tools for tools/macro test +' ** +'\****************************************************************************** + +function hSelectTheLastModule( bEditEnabled as Boolean ) as string + + '///<h3>Select the last (editable) module in the macro seletor treelist</li> + + use "global\tools\includes\optional\t_treelist_tools.inc" + + const CFN = "hSelectTheLastModule()::" + + dim bCloseDialog as boolean : bCloseDialog = FALSE + dim iNodeCount as integer + dim iCurrentNode as integer + + hSelectTheLastModule() = "" + + kontext "Makro" + if ( not Makro.exists() ) then ToolsMacro_uno : bCloseDialog = TRUE + + kontext "Makro" + iNodeCount = hSelectTheLastNode( MakroAus ) + + if ( bEditEnabled ) then + for iCurrentNode = iNodeCount to 1 step -1 + if ( Bearbeiten.isEnabled() ) then + printlog( CFN & "Editable module found at pos: " & iCurrentNode ) + exit for + endif + next iCurrentNode + else + printlog( CFN & "Module selected at pos: " & iNodeCount ) + endif + + if ( iCurrentNode > 1 ) then hSelectTheLastModule = MakroAus.getSelText() + +end function + +'******************************************************************************* + +function hCreateModuleForDoc( optional cName as string ) as boolean + + '///<h3>Create a new Basic module for the current document</h3> + '///<i>Starting point: Basic Macro Organizer is visible and has focus</i> + const CFN = "hCreateModuleForDoc::" + const DEFAULT_WAIT = 2 + const RETVAL_FAILURE = 0 + + if ( isMissing( cName ) ) then cName = "TTModule" + + kontext "Makro" + if ( Makro.exists() ) then + if ( hSelectTheLastNode( MakroAus ) > RETVAL_FAILURE ) then + + kontext "Makro" + if ( hClickButton( Neu ) ) then + + Kontext "NeuesModul" + if ( NeuesModul.exists( DEFAULT_WAIT ) ) then + Modulname.SetText( cName ) + hCloseDialog( NeuesModul, "ok" ) + + kontext "BasicIDE" + if ( BasicIde.exists( DEFAULT_WAIT ) ) then + hCreateModuleForDoc() = true + else + printlog( CFN & "BASIC IDE is not open" ) + hCreateModuleForDoc() = false + endif + else + warnlog( CFN & "Dialog <NeuesModul> did not open" ) + hCreateModuleForDoc() = false + endif + else + warnlog( CFN & "Failed to click <Neu> button" ) + hCreateModuleForDoc() = false + endif + else + warnlog( CFN & "Failed to select the last node" ) + hCreateModuleForDoc() = false + endif + else + warnlog( CFN & "Macro organizer is not open" ) + hCreateModuleForDoc() = false + endif + +end function + +'******************************************************************************* + +function hOpenBasicObjectOrganizer( iTabPage as integer ) as boolean + + '///<h3>Open the Basic Library/Module/Dialog Organizer</h3> + '///<i>Starting point: Basic IDE is open and has focus</i> + '///<ul> + + const CFN = "hOpenBasicObjectOrganizer::" + + ' This function opens a specified tab on the BASIC Organizer from the + ' BASIC-IDE + ' NOTE: This is the organizer for libraries, modules and dialogs, + ' not the one to run or assign macros! + '///+<li>Open the context menu of the tabbar</li> + kontext "basicide" + Tabbar.OpenContextMenu() + + '///+<li>Select the last entry of the context menu (dynamic menu!)</li> + if ( hMenuItemGetCount() = 2 ) then + printlog( " * short context menu (no edit-window)" ) + hMenuSelectNr( 2 ) + else + printlog( " * long context menu (edit-window/dialog visible)" ) + hMenuSelectNr( 5 ) + endif + + WaitSlot() + + '///+<li>On the basic object organizer switch to the Modules tab</li> + if ( hSelectBasicObjectOrganizerTab( 1 ) ) then + printlog( CFN & "Requested page is open" ) + hOpenBasicObjectOrganizer() = true + else + warnlog( CFN & "Failed to open requested Tabpage" ) + hOpenBasicObjectOrganizer() = false + endif + '///+<li>Return TRUE on success, FALSE on failure</li> + '///</ul> + + +end function + +'******************************************************************************* + +function hSelectBasicObjectOrganizerTab( iTabPage as integer ) as boolean + + const CFN = "hSelectBasicObjectOrganizerTab::" + + '///<h3>Switch between tab pages in the Basic Object Organizer</h3> + '///<i>Starting point: Masic Object Organizer is visible and has focus</i> + '///<ol> + '///+<li>1 = Modules</li> + '///+<li>2 = Dialogs</li> + '///+<li>3 = Libraries</li> + '///</ol> + '///Description: + '///<ul> + + '///+<li>Switch between tabpages 1, 2 or 3</li> + select case iTabPage + case 1 : + kontext + Active.SetPage TabModule + kontext "tabmodule" + if ( TabModule.exists() ) then + printlog( CFN & "Modules-Tab is open" + hSelectBasicObjectOrganizerTab() = true + exit function + endif + + case 2 : + kontext + Active.setPage TabDialogs + kontext "tabdialogs" + if ( TabDialogs.exists() ) then + printlog( CFN & "Dialogs-Tab is open" + hSelectBasicObjectOrganizerTab() = true + exit function + endif + case 3 : + kontext + Active.setPage TabBibliotheken + kontext "tabbibliotheken" + if ( TabBibliotheken.exists() ) then + printlog( CFN & "Libraries-Tab is open" + hSelectBasicObjectOrganizerTab() = true + exit function + endif + end select + + '///+<li>Return TRUE on success, FALSE on failure</li> + '///</ul> + hSelectBasicObjectOrganizerTab() = false + +end function + +'******************************************************************************* + +function hDeleteLibrary( iLocation as integer, cLibName as string ) as boolean + + '///<h3>Delete a library by name via Macro Object Organizer</h3> + '///<i>Starting point: Plain document</i> + '///<ul> + + const CFN = "hDeleteLibrary::" + const ITABPOS = 3 + + dim iObjectCount as integer + dim iCurrentObject as integer + dim cCurrentObjectName as string + + '///+<li>Open Macro Organizer</li> + ToolsMacro_uno + + '///+<li>Click Manage-button</li> + Kontext "Makro" + hClickButton( Verwalten ) + + '///+<li>Go to the Libraries Tab on the Macro Object Organizer</li> + hSelectBasicObjectOrganizerTab( ITABPOS ) + + '///+<li>Select the root node in the libraries treelist</li> + ' Needs to be specified to avoid touching the wrong library (e.g. a protected one) + kontext "TabBibliotheken" + Bibliothek.select( iLocation ) + iObjectCount = Bibliotheksliste.getItemCount() + + '///+<li>Find the requested item in the treelist</li> + for iCurrentObject = 1 to iObjectCount + + Bibliotheksliste.select( iCurrentObject ) + cCurrentObjectName = Bibliotheksliste.getSelText() + if ( cCurrentObjectName = cLibName ) then + + '///+<li>Click Delete</li> + hClickButton( Loeschen ) + exit for + endif + + next iCurrentObject + + '///+<li>Confirm to delete library</li> + Kontext "Active" + if ( Active.exists( 1 ) ) then + active.yes() + else + warnlog( CFN & "No confirmation for delete" ) + endif + + '///+<li>Verify that there is one item less in the treelist (object has been deleted)</li> + kontext "TabBibliotheken" + if ( Bibliotheksliste.getItemCount() = ( iObjectCount - 1 ) ) then + printlog( CFN & "Library has been deleted" ) + hDeleteLibrary() = true + else + printlog( CFN & "Library has not been deleted" ) + hDeleteLibrary() = false + endif + + '///+<li>Cancel Macro Object Organizer</li> + hCloseDialog( TabBibliotheken, "cancel" ) + + '///+<li>Cancel Basic Macro Organizer</li> + Kontext "Makro" + hCloseDialog( Makro, "cancel" ) + '///+<li>Return TRUE on success, FALSE on failure</li> + '///</ul> + +end function + +'******************************************************************************* + +function hNameBasicModule( cName as string ) as boolean + + '///<h3>Name a Basic Module</h3> + '///<i>Starting point: Clicked "New..." button in Basic Macro organizer.<br> + '///+ On success the kontext will be on the Basic IDE. In case of + '///+ failure we remain on the naming dialog so that the function can be + '///+ triggered again.</i><br> + '///<u>Input</u>: + '///<ol> + '///+<li>Name of the module (string)</li> + '///</ol> + '///<u>Returns</u>: + '///<ol> + '///+<li>Errorcondition (Boolean)</li> + '///<ul> + '///+<li>TRUE if name is valid, module has been created</li> + '///+<li>FALSE if name is invalid or naming dialog does not exist</li> + '///</ul> + '///</ol> + '///<u>Description</u>: + '///<ul> + + const CFN = "hNameBasicModule::" + + '///+<li>Verify that the naming dialog is open</li> + kontext "NeuesModul" + if ( not NeuesModul.exists() ) then + hNameBasicModule() = false + exit function + endif + + '///+<li>Insert the name into the EntryField</li> + Modulname.SetText( cName ) + + '///+<li>Accept the name with OK</li> + hCloseDialog( NeuesModul, "ok" ) + + '///+<li>If there is no warning, the name should be valid.</li> + kontext "BasicIDE" + if ( BasicIde.exists( 2 ) ) then + hNameBasicModule() = true + printlog( CFN & "Name accepted, Basic-Ide is open" ) + else + hNameBasicModule() = false + '///+<li>Look for invalid name warning, close it</li> + kontext "active" + if ( active.exists() ) then + printlog( CFN & "Msgbox: " & active.exists() ) + hCloseDialog( active, "ok" ) + endif + + '///+<li>If the name is invalid, get back to the naming-dialog</li> + kontext "NeuesModul" + if ( NeuesModul.exists() ) then + printlog( CFN & "Name not accepted, focus on naming-dialog" ) + else + warnlog( CFN & "Naming failed but we are not on the naming dialog" ) + endif + endif + '///</ul> + +end function + + + |