'encoding UTF-8 Do not remove or change this line!
'**************************************************************
'
' Licensed to the Apache Software Foundation (ASF) under one
' or more contributor license agreements. See the NOTICE file
' distributed with this work for additional information
' regarding copyright ownership. The ASF licenses this file
' to you under the Apache License, Version 2.0 (the
' "License"); you may not use this file except in compliance
' with the License. You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing,
' software distributed under the License is distributed on an
' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
' KIND, either express or implied. See the License for the
' specific language governing permissions and limitations
' under the License.
'
'**************************************************************
'*
'* short description : selecting objects in calc
'*
'**************************************************************************************************
'*
' #1 fCalcSelectRange
' #1 fCalcNameRange
' #1 fCalcSelectCell
' #1 fCalcGetSelectionString
' #1 fCalcSelectSheet
' #1 fNavigatorSelectObject
'*
'\************************************************************************************************
function fCalcSelectRange ( sSelectThis ) as boolean
'///Select a range in calc and check success
'///+Valid cell reference and name should work here
'///+RETURNS: BOOLEAN
fCalcSelectRange = FALSE
'///
'///- Check if 'formula bar' is visible
///
Kontext "RechenleisteCalc"
if not RechenleisteCalc.isvisible then
'///- -> Throw warning and Invoke 'formula bar' if invisible
///
'///- -> NOTE: The testcase developer has to take care herself that function is entered correctly
///
warnlog "Formula bar was expected to be visible"
ViewToolbarsFormulaBar
end if
sleep(2)
'///- Select the desired range
///
Kontext "RechenleisteCalc"
Bereich.TypeKeys ""
Bereich.TypeKeys ( sSelectThis )
sleep(1)
Bereich.TypeKeys ""
sleep(2)
'///- Check if input leads to success
///
kontext
'///- If a MsgBox is in the way the selection must have failed
///
if active.exists then
if active.getRT = 304 then
'///- -> NOTE: Only throw a PrintLog if selection fails because failture may be the desired result!
///
'///- -> FURTHER NOTE: We retrun FALSE to check this in the calling routine
///
printlog "Selecting the range failed due to known reason, e.g. wrong selection or invalid name"
Active.OK
else
'///- Only throw a waring if a dialog of unexpected resource type appears
///
warnlog "OOPS, don't know what's disturbing now -> CHECK IT OUT!"
end if
else
'///- Everything OK? -> TRUE
///
fCalcSelectRange = TRUE
end if
end function
'///
'-------------------------------------------------------------------------
function fCalcNameRange ( sNameThis ) as boolean
'///This is just an alias function to avoid confusion -> see 'fCalcSelectRange'
'///With the integration of CWS 'rangename' the function 'fCalcSelectRange'
'///+could also be used to name a previous selected range
fCalcNameRange = fCalcSelectRange ( sNameThis )
end function
'
'--------------------------------------------------------------------
'
function fCalcSelectCell ( sSelectThisCell ) as boolean
'///This is just an alias function to avoid confusion -> see 'fCalcSelectRange'
fCalcSelectCell = fCalcSelectRange ( sSelectThisCell )
end function
'
'--------------------------------------------------------------------
'
function fCalcGetSelectionString() as String
'///Obtain range (e.g. 'A1:E10') or range name in 'formula bar'
'///+RETURNS: STRING///
'///
'///- Check if 'formula bar' is visible
///
Kontext "RechenleisteCalc"
if not RechenleisteCalc.isvisible then
'///- -> Throw warning and Invoke 'formula bar' if invisible
///
'///- -> NOTE: The testcase developer has to take care herself that function is entered correctly
///
warnlog "Formula bar was expected to be visible"
ViewToolbarsFormulaBar
end if
sleep(2)
'///- Get and return string in range selection list box
///
Kontext "RechenleisteCalc"
fCalcGetSelectionString = Bereich.GetSelText
'///
end function
'
'--------------------------------------------------------------------
'
function fCalcSelectSheet ( sSelectThisSheet ) as boolean
'///Select a sheet by name (STRING) or number (INTEGER)///
'///+RETURNS: boolean (success)///
fCalcSelectSheet = FALSE
'///
try
Kontext "DocumentCalc"
'///- Invoke Edit::Sheet::Select
///
EditSheetSelect
Kontext "SelectSheets"
'///- Select sheet no. or sheet name in listbox
///
SheetSelectionBox.Select ( sSelectThisSheet )
'///- OK
///
SelectSheets.OK
'///- Return true
///
fCalcSelectSheet = TRUE
catch
warnlog "Something went wrong while selecting a sheet by name"
'///- In case of failture lookup 'Select sheets' dialog andd close it if exists
///
Kontext "SelectSheets"
if SelectSheets.exists(2) then
SelectSheets.Cancel
end if
endcatch
'///
end function
'
'-------------------------------------------------------------------------
'
function fNavigatorSelectObject ( sWhatObject as STRING , iObjectPosition as INTEGER )
'///Select any Object in Navigator
'///STRING: sWhatObject - A keyword to choose desired obeject category
'///+Posible values: sheets, range names, database ranges, linked areas, graphics, ole objects, notes, drawing objects
'///INTEGER: iObjectPosition - Position of object (>=1) within 'sWhatObject'
'///+NOTE:You're moving within a treelistbox which is quite messy to handle.
'///+In case 'iObjectPosition' is larger than the real number of objects in category you're end up in another categories.
'///+WITHOUT ANY WARNING!
'///RETURNS: BOOLEAN (success)
'///-----
'///
dim bNavigatorWasVisible as boolean
bNavigatorWasVisible = FALSE
dim iIndex
dim iCategoryPosition as INTEGER
fNavigatorSelectObject = FALSE
'///- Translate 'sWhatObject' to postion number of desired object category
///
select case lcase ( sWhatObject )
case "sheets" : iCategoryPosition = 1
case "range names" : iCategoryPosition = 2
case "database ranges" : iCategoryPosition = 3
case "linked areas" : iCategoryPosition = 4
case "graphics" : iCategoryPosition = 5
case "ole objects" : iCategoryPosition = 6
case "notes" : iCategoryPosition = 7
case "drawing objects" : iCategoryPosition = 8
case else
warnlog "Invalid keyword -> Aborting fNavigatorSelectObject()"
exit function
end select
'///- Check if Navigator is visible
///
Kontext "NavigatorCalc"
if NavigatorCalc.exists (3) then
'///- Remember state of visibiliy TRUE/FALSE
///
bNavigatorWasVisible = TRUE
else
'///- Invoke navigator if not visible
///
ViewNavigator
end if
try
Kontext "NavigatorCalc"
'///- Go to Top in Navigator
///
liste.TypeKeys ""
'///- Travel top to bottom through all categories
///
for iIndex = 1 to 8
'///- Make sure all elements in category are hidden, apply '-' key
///
liste.TypeKeys "-"
next iIndex
'///- Select desired category
///
liste.select ( iCategoryPosition )
'///- Unfold elements of selected category
///
liste.TypeKeys "+"
'///- Select desired position within category
///
liste.select ( iCategoryPosition + iObjectPosition )
'///- Hit 'RETURN' key to select element in document
///
liste.TypeKeys ""
'///- Return 'TRUE' for 'fNavigatorSelectObject'
///
fNavigatorSelectObject = TRUE
catch
warnlog "Selecting the desired object failed. Perhaps your input wasn't valid"
endcatch
'///- Close navigator if it wasn't visible before entering this function
///
if bNavigatorWasVisible = TRUE then
printlog "Leaving navigator open as initially found"
else
ViewNavigator
printlog "Closing navigator as initially found"
end if
'///
end function