summaryrefslogtreecommitdiff
path: root/testautomation/global/system/includes/iniinfo.inc
diff options
context:
space:
mode:
Diffstat (limited to 'testautomation/global/system/includes/iniinfo.inc')
-rwxr-xr-xtestautomation/global/system/includes/iniinfo.inc1157
1 files changed, 1157 insertions, 0 deletions
diff --git a/testautomation/global/system/includes/iniinfo.inc b/testautomation/global/system/includes/iniinfo.inc
new file mode 100755
index 000000000000..aa305b9a1a21
--- /dev/null
+++ b/testautomation/global/system/includes/iniinfo.inc
@@ -0,0 +1,1157 @@
+'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 : helge.delfs@sun.com
+'*
+'* short description : get information for startup a test out of important ini-files
+'*
+'\***********************************************************************
+
+sub GetIniInformation
+ '/// Set all important variables.
+ '/// Some of them are get only out of the </i>testtool.ini</i>.
+ '/// <b>gPathSigne</b>: Pathsign for the OfficePLatform Operating System
+ '/// <b>gPort</b>: Portnummer for communication between testtool and StarOffice
+ '/// <b>gSystemPath</b>: Systempath from where StarOffice executes.
+ '/// <b>gOfficePath</b>: Path where StarOffice is installed.
+ '/// <b>gTesttoolPath</b>: Root directory from the <i>TestTool environment</i>.
+ '/// <b>oTesttoolPath</b>: Root directory from the <i>TestTool environment</i> (<u>Windows styleed only!</u>)
+ '/// <b>gClient</b>: <b>1</b> when you run a Server/Client-Test (Sun&trade; ONE Webtop)
+ '/// <b>gClientLaden</b>: <b>0</b> if Load/Save on Client-side, otherwise on Server-side (<u>UNIX only!</u>)
+ '/// <b>gNetzInst</b>: <b>1</b> if you test a network- / workstation installaion.
+ dim sSoffice(3) as string ' array, because they might all get evaluated sometime
+ dim bOOo(3) as string
+ dim iSoffice(3) as integer
+ dim sTemp as string
+
+ gPathSigne = hGetPathSigne(gPLatform)
+
+ gTTProfileName = hfGetTTProfileName()
+ gSystemPath = gtSystemPath
+ oTesttoolPath = GetIniValue ( gTesttoolIni, gTTProfileName, "BaseDir" )
+ if (right(oTesttoolPath,1) <> gPathSigne) then
+ oTesttoolPath = oTesttoolPath + gPathSigne
+ end if
+ gTesttoolPath = oTesttoolPath
+ if gSamePC = FALSE then
+ gOfficePath = GetIniValue ( gTesttoolIni, "Office IniPath", "Current" ) + gPathSigne
+ gRemotePath = GetIniValue ( gTesttoolIni, "RemoteBaseDir", "Current" ) + gPathSigne
+ else
+ '/// The part of getting the location of the executable OOo is put into seperated functions.
+ '/// The first OOo executeable is being used.
+ '///+ <ol><li>Entry in TestTool control file (.testtoolrc on UNIX; testtool.ini on Win32)</li>
+ '///+ <li>or<ul><li><b>Win32</b>: Entry in registry</li><li><b>UNIX</b>: If link <pre>/usr/bin/soffice</pre> or <pre>$HOME/soffice</pre> exists</li></ul></li></ol>
+ sSoffice(0) = getSofficeTesttool() : bOOO(0) = gOOO
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "RESULT from TestTool: '" + sSoffice(0) + "' - OOo? " + bOOO(0)
+ if (sSoffice(0) = "") then
+ sSoffice(0) = getSofficeNative() : bOOO(0) = gOOO
+ if (sSoffice(0) <> "") then
+ gOfficePath = sSoffice(0)
+ gVersionsnummer = FindBuildID()
+ call hSetBuildVersionInformation(TRUE)
+ iSoffice(0) = gBuild
+ end if
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "RESULT from Native : '" + sSoffice(0) + "' - OOo? " + bOOO(0) + " - BuildID: " + iSoffice(0)
+ if sSoffice(0) = "" then
+ warnlog "No OOo version found on this computer. - Please look into documentation, how to select an OOo version to test."
+ end if
+ else
+ printlog "----------------------------------------------------------------------------------------------------"
+ printlog "** Using [OOoProgramDir] value : " & sSoffice(0)
+ printlog "----------------------------------------------------------------------------------------------------"
+ end if
+ gOfficePath = sSoffice(0)
+ gOOO = bOOO(0)
+ end if
+ if ((gSamePC = TRUE) AND (gOfficePath = "")) then
+ MsgBox ("The test ends, because no OOo version was found on this computer. - Please look into documentation, how to select an OOo version to test.", 1, "No OOo program installed")
+ end
+ end if
+
+ gtHidLstPath = GetIniValue ( gTesttoolIni, gTTProfileName, "HIDDir" ) + hGetPathSigne(gtPlatform)
+ gPort = GetIniValue ( gTesttoolIni, "Communication", "TTPort" )
+ '--------
+ gPCName = GetIniValue ( gTesttoolIni, "Others", "PCname" )
+ if (gPCName = "NOT_SET!" OR gPCName = "") then
+ gPCName = environ ( "HOSTNAME" )
+ if (gPCName = "") then
+ gPCName = environ ( "COMPUTERNAME" )
+ if (gPCName = "") then
+ gPCName = environ ( "hostname" )
+ ' If testtool.ini/rc is unmodified, the default value is NOT_SET!
+ if gPCName = "" then
+ qaErrorLog "Please insert the computername in section [Others] on the line 'PCname=' in the TestTool confguration file at: '" + gTesttoolIni + "'"
+ end if
+ end if
+ end if
+ end if
+ '--------
+
+ call GetTheInstallationType ' gNetzInst and gNetzOfficePath will be set if StarOffice is a Network-Installation
+ gOfficeBasisPath = getOfficeBasisPath()
+ gOOoStartupTimeOut = fgetOOoStartupTimeOut()
+ gOOoShutdownTimeOut = fgetOOoShutdownTimeOut()
+ call sCheckValgrindStatus()
+ ' set a global path for custom scripts, like basepath, but outside of current environment
+ gPrivateEnvironmentLocation = getIniValue(gTesttoolIni, "PrivateEnvironment", "Current")
+ if (gPrivateEnvironmentLocation <> "" AND gPrivateEnvironmentLocation <> ".") then
+ if NOT fileExists(gPrivateEnvironmentLocation) then
+ qaErrorLog "[PrivateEnvironment] defined in: '"+gTesttoolIni+"', but the path '"+gPrivateEnvironmentLocation+"'does not exist!"
+ gPrivateEnvironmentLocation = ""
+ end if
+ else
+ gPrivateEnvironmentLocation = ""
+ end if
+end sub
+
+'-------------------------------------------------------------------------
+
+sub GetOfficeInformation
+ '/// Generates the path to the StarOffice executable.
+ '/// <u>Output</u>: <b>sAppExe</b> variable is the StarOffice executable or the client executable (StarOffice server, StarPortal&trade;, Sun&trade; ONE Webtop, ...)
+ Dim sProgramNeu as String
+ Dim iClient as Integer
+ Dim sPlatformProgramPath as string
+ Dim sPlatformBinExt as string
+
+ if ( lcase( gPlatform ) = "osx" ) then
+ sPlatformProgramPath = "MacOS"
+ sPlatformBinExt = ""
+ else
+ sPlatformProgramPath = "program"
+ if gPlatGroup <> "unx" then
+ sPlatformBinExt = ".exe"
+ else
+ sPlatformBinExt = ""
+ end if
+ end if
+
+ 'if it's a client on the same PC
+ if gClient = TRUE AND gClientUser <> "" then
+ if gtPlatform <> "w95" AND gtPlatform <> "wnt" AND gPlatform <> "w2k" AND gtPlatform <> "os2" AND gtPlatform <> "os4" then
+ sAppExe = gsClient + "/bin/sclient"
+ else
+ if right( lcase ( sAppExe ), 3 ) <> "exe" then sAppExe = gsClient + "\sclient.exe"
+ end if
+ sAppParameter = " -remote -connect=portal,service=soffice,host=" + gHost + ",port=8208,user=" + gClientUser + ",password=" + gClientUserPWD + ",type=compressed_secure"
+ else
+ if gNetzInst = TRUE then ' wenn es sich um eine Netzwerkinstallation handelt
+ select case UCase(gApplication)
+ case "WRITER" : sAppExe = gNetzOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-writer"
+ case "CALC" : sAppExe = gNetzOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-calc"
+ case "IMPRESS" : sAppExe = gNetzOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "private:factory/simpress"
+ case "DRAW" : sAppExe = gNetzOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-draw"
+ case "MASTERDOCUMENT": sAppExe = gNetzOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-global"
+ case "MATH" : sAppExe = gNetzOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-math"
+ case "HTML" : sAppExe = gNetzOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-web"
+ case else : sAppExe = gNetzOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ end select
+ 'If it's a normal (FAT) office
+ else
+ 'If it's a RVP-Office
+ if gClient = TRUE then
+ if gPlatgroup <> "unx" then
+ sAppExe = gOfficePath + "client\sclient.exe"
+ else
+ sAppExe = gOfficePath + "client/sclient"
+ end if
+ else
+ select case ( gApplication )
+ case "WRITER" : sAppExe = gOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-writer"
+ case "CALC" : sAppExe = gOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-calc"
+ case "IMPRESS" : sAppExe = gOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "private:factory/simpress"
+ case "DRAW" : sAppExe = gOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-draw"
+ case "MASTERDOCUMENT": sAppExe = gOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-global"
+ case "MATH" : sAppExe = gOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-math"
+ case "HTML" : sAppExe = gOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ sFactory = "-web"
+ case else : sAppExe = gOfficePath & sPlatformProgramPath & gPathSigne & "soffice" & sPlatformBinExt
+ end select
+ end if
+ end if
+ end if
+end sub
+
+'-------------------------------------------------------------------------
+
+function hGetPathSigne(sPlatform as string) as string
+ '/// Seperators for the different platforms.
+ '/// <u>Input</u>: string of class gPlatform
+ '/// <u>Output</u>: string which can be used as seperator in directories
+
+ select case sPlatform
+ case "w95" : hGetPathSigne = "\"
+ case "w98" : hGetPathSigne = "\"
+ case "wnt" : hGetPathSigne = "\"
+ case "wme" : hGetPathSigne = "\"
+ case "wse" : hGetPathSigne = "\"
+ case "w2k" : hGetPathSigne = "\"
+ case "wxp" : hGetPathSigne = "\"
+ case "ecs" : hGetPathSigne = "\"
+ case "os4" : hGetPathSigne = "\"
+ case "os5" : hGetPathSigne = "\"
+ case "osx" : hGetPathSigne = "/"
+ case "ppc" : hGetPathSigne = "/"
+ case "sol" : hGetPathSigne = "/"
+ case "lin" : hGetPathSigne = "/"
+ case "x86" : hGetPathSigne = "/"
+ case "fbsd": hGetPathSigne = "/"
+ case "nbsd": hGetPathSigne = "/"
+ case "lin64": hGetPathSigne= "/"
+ case "linsparc": hGetPathSigne = "/"
+ case else : hGetPathSigne = ""
+ qaErrorLog " No pathseperator is defined for this platform : " + sPlatform
+ end select
+end function
+
+'-------------------------------------------------------------------------
+
+function ConvertPath( sPath as string ) as string
+
+ if ( getPathSeparator = "/" ) then
+ ConvertPath() = hStringReplaceChar( sPath, "\", "/" )
+ else
+ ConvertPath() = hStringReplaceChar( sPath, "/", "\" )
+ endif
+
+end function
+
+'-------------------------------------------------------------------------------
+
+function hStringReplaceChar( byval myString as string, old_char as string, new_char as string ) as string
+
+ dim iChar as integer
+ for iChar = 1 to len( myString )
+ if ( mid( myString, iChar, 1 ) = old_char ) then mid( myString, iChar, 1, new_char )
+ next iChar
+ hStringReplaceChar() = myString
+
+end function
+
+'-------------------------------------------------------------------------------
+
+sub GetLanguageInformation
+ '/// Extracts the language information from <i>Setup.xcu</i>.
+ '/// <u>note</u>: It uses the <b>fgetL10Nvalue</b>.
+ Dim sLanOutIni as string
+
+ ' function 'fgetL10Nvalue' is also in this library
+ sLanOutIni = fgetL10Nvalue()
+ ' BugID 98315 -> looking in networkpath for the language until bug will be fixed.
+
+ if sLanOutIni = "" then
+ warnlog "=> default is now 01 = en_US"
+ end if
+
+ 'language Code ISO 639 (and ISO 3166 for en language) is now gLangCode
+ 'ISO 639 http://www.oasis-open.org/cover/iso639a.html
+ 'ISO 3166: http://xml.coverpages.org/country3166.html
+
+ gISOLang = sLanOutIni
+
+ select case lcase ( sLanOutIni )
+ case "en_us", "en-us", "en" : iSprache = 01 ' English (USA)
+ case "pt_pt", "pt-pt", "pt" : iSprache = 03 ' Portuguese
+ case "ru_ru", "ru-ru", "ru" : iSprache = 07 ' Russian
+ case "el_gr", "el-gr", "el" : iSprache = 30 ' Greek
+ case "nl_nl", "nl-nl", "nl" : iSprache = 31 ' Dutch
+ case "fr_fr", "fr-fr", "fr" : iSprache = 33 ' French
+ case "es_es", "es-es", "es" : iSprache = 34 ' Spanish
+ case "fi_fi", "fi-fi", "fi" : iSprache = 35 ' Finnish
+ case "hu_hu", "hu-hu", "hu" : iSprache = 36 ' Hungaria
+ case "ca_ad", "ca-ad", "ca" : iSprache = 37 ' Catalan
+ case "it_it", "it-it", "it" : iSprache = 39 ' Italian
+ case "cs_cz", "cs-cz", "cs" : iSprache = 42 ' Czech
+ case "sk_sk", "sk-sk", "sk" : iSprache = 43 ' Slowak
+ case "en_gb", "en-gb" : iSprache = 44 ' English (GB)
+ case "da_dk", "da-dk", "da" : iSprache = 45 ' Danish
+ case "sv_se", "sv-se", "sv" : iSprache = 46 ' Swedish
+ case "no_no", "no-no", "no" : iSprache = 47 ' Norwegian
+ case "pl_pl", "pl-pl", "pl" : iSprache = 48 ' Polish
+ case "de_de", "de-de", "de" : iSprache = 49 ' German
+ case "sl_si", "sl-si", "sl" : iSprache = 50 ' Slovenian
+ case "sr_rs", "sr-rs", "sr" : iSprache = 51 ' Serbian (Cyrillic)
+ case "sh_rs", "sh-rs", "sh" : iSprache = 52 ' Serbian (Latin)
+ case "pt_br", "pt-br", "br" : iSprache = 55 ' Portuguese (Brazil)
+ case "th_th", "th-th", "th" : iSprache = 66 ' Thai
+ case "ja_jp", "ja-jp", "ja" : iSprache = 81 ' Japanese
+ case "ko_kr", "ko-kr", "ko" : iSprache = 82 ' Korean
+ case "vi_vi", "vi-vi", "vi" : iSprache = 84 ' Vietnamese
+ case "zh_cn", "zh-cn", "zh" : iSprache = 86 ' Chinese (simplified)
+ case "zh_tw", "zh-tw" : iSprache = 88 ' Chinese (traditional)
+ case "tr_tr", "tr-tr", "tr" : iSprache = 90 ' Turkish
+ case "hi_in", "hi-in", "hi" : iSprache = 91 ' Hindi
+ case "ar_ar", "ar-ar", "ar" : iSprache = 96 ' Arabic
+ case "he_he", "he-he", "he" : iSprache = 97 ' Hebrew
+ case "zz_zz", "zz-zz", "zz" : iSprache = 01 ' unknown
+ warnlog "iniinfo.inc::GetLanguageInformation()"
+ warnlog "- sLanOutIni = " & sLanOutIni & " (unknown language)"
+ warnlog "- iSprache has been set 01!"
+ case "" : iSprache = 01 ' empty
+ warnlog "iniinfo.inc::GetLanguageInformation()"
+ warnlog "- empty sLanOutIni = " & sLanOutIni
+ warnlog "- iSprache has been set 01!"
+ case else : iSprache = 01
+ warnlog "iniinfo.inc::GetLanguageInformation()"
+ warnlog "- sLanOutIni = " & sLanOutIni & " (fallback mode; unknown language)"
+ warnlog "- iSprache has been set 01!"
+ end select
+
+ if iSprache = 81 OR iSprache = 82 OR iSprache = 86 OR iSprache = 88 then
+ bAsianLan = TRUE
+ else
+ bAsianLan = FALSE
+ end if
+ if ((iSprache = 66) OR (iSprache = 91) OR (iSprache = 96) OR (iSprache = 97)) then
+ bCTLLan = TRUE
+ else
+ bCTLLan = FALSE
+ end if
+ gLanguage = GetLanguageText ( iSprache )
+end sub
+
+'-------------------------------------------------------------------------
+
+function ConvertLanguage ( Sprache as String ) as Integer
+ '/// Sets international language code for the whole language name.
+
+ select case lCase ( Sprache )
+ case "deutsch", "german" : ConvertLanguage = 49
+ case "englisch", "english" : ConvertLanguage = 01
+ case "portugisisch", "portugiesisch", "portuguese" : ConvertLanguage = 03
+ case "russisch", "russian" : ConvertLanguage = 07
+ case "czech", "tschechisch" : ConvertLanguage = 29
+ case "griechisch", "greek" : ConvertLanguage = 30
+ case "niederlaendisch", "hollaendisch", "netherlands" : ConvertLanguage = 31
+ case "franzoesisch", "french" : ConvertLanguage = 33
+ case "spanisch", "spanish" : ConvertLanguage = 34
+ case "finisch", "finnish" : ConvertLanguage = 35
+ case "hungaria", "ungarisch" : ConvertLanguage = 36
+ case "italienisch", "italian" : ConvertLanguage = 39
+ case "slowak", "slovakisch" : ConvertLanguage = 43
+ case "daenisch", "danish" : ConvertLanguage = 45
+ case "schwedisch", "swedish" : ConvertLanguage = 46
+ case "norwegian", "norwegisch" : ConvertLanguage = 47
+ case "polnisch", "polish" : ConvertLanguage = 48
+ case "slovenian", "slovenisch" : ConvertLanguage = 50
+ case "serbisch kyrillisch", "serbian cyrillic" : ConvertLanguage = 51
+ case "serbisch latein", "serbian latin" : ConvertLanguage = 52
+ case "japanisch", "japanese" : ConvertLanguage = 81
+ case "koreanisch", "korean" : ConvertLanguage = 82
+ case "vietnamesisch", "vietnamese" : ConvertLanguage = 84
+ case "chinesisch", "chinese" : ConvertLanguage = 86
+ case "chinesisch trad.", "chinese trad." : ConvertLanguage = 88
+ case "tuerkisch", "turkish" : ConvertLanguage = 90
+ case "arabisch", "arab" : ConvertLanguage = 96
+ case "catalan", "katalanisch" : ConvertLanguage = 99
+ end select
+end function
+
+'-------------------------------------------------------------------------
+
+function GetLanguageText ( iLan ) as String
+'/// Sets the language name for the international language-code.
+ select case iLan
+ case 01 : GetLanguageText = "English (USA)"
+ case 03 : GetLanguageText = "Portuguese"
+ case 07 : GetLanguageText = "Russian"
+ case 30 : GetLanguageText = "Greek"
+ case 31 : GetLanguageText = "Dutch"
+ case 33 : GetLanguageText = "French"
+ case 34 : GetLanguageText = "Spanish"
+ case 35 : GetLanguageText = "Finnish"
+ case 36 : GetLanguageText = "Hungarian"
+ case 37 : GetLanguageText = "Catalan"
+ case 39 : GetLanguageText = "Italian"
+ case 42 : GetLanguageText = "Czech"
+ case 43 : GetLanguageText = "Slowak"
+ case 44 : GetLanguageText = "English (GB)"
+ case 45 : GetLanguageText = "Danish"
+ case 46 : GetLanguageText = "Swedish"
+ case 47 : GetLanguageText = "Norwegian"
+ case 48 : GetLanguageText = "Polnish"
+ case 49 : GetLanguageText = "German"
+ case 50 : GetlanguageText = "Slovenian"
+ case 51 : GetlanguageText = "Serbian (Cyrillic)"
+ case 52 : GetlanguageText = "Serbian (Latin)"
+ case 55 : GetLanguageText = "Portuguese (Brazil)"
+ case 66 : GetLanguageText = "Thai"
+ case 81 : GetLanguageText = "Japanese"
+ case 82 : GetLanguageText = "Korean"
+ case 84 : GetLanguageText = "Vietnamese"
+ case 86 : GetLanguageText = "Chinese (simplified)"
+ case 88 : GetLanguageText = "Chinese (traditional)"
+ case 90 : GetLanguageText = "Turkish"
+ case 91 : GetLanguageText = "Hindi"
+ case 96 : GetLanguageText = "Arabic"
+ case 97 : GetLanguageText = "Hebrew"
+ case 99 : GetLanguageText = "Unknown"
+ case else : GetLanguageText = "detection failed"
+ end select
+end function
+
+'-------------------------------------------------------------------------
+
+function ConvertLanguage2 ( sSprache as String, optional bExact ) as Integer
+'/// Sets the international language code for the international language shortcut.
+'/// <i>optional <b>bExact</i></b>: If language not available, 'shut up' and return '0'
+ select case lCase ( sSprache )
+ case "en_us", "en-us", "en" : ConvertLanguage2 = 01 ' English (USA)
+ case "pt_pt", "pt-pt", "pt" : ConvertLanguage2 = 03 ' Portuguese
+ case "ru_ru", "ru-ru", "ru" : ConvertLanguage2 = 07 ' Russian
+ case "el_gr", "el-gr", "el" : ConvertLanguage2 = 30 ' Greek
+ case "nl_nl", "nl-nl", "nl" : ConvertLanguage2 = 31 ' Dutch
+ case "fr_fr", "fr-fr", "fr" : ConvertLanguage2 = 33 ' French
+ case "es_es", "es-es", "es" : ConvertLanguage2 = 34 ' Spanish
+ case "fi_fi", "fi-fi", "fi" : ConvertLanguage2 = 35 ' Finnish
+ case "hu_hu", "hu-hu", "hu" : ConvertLanguage2 = 36 ' Hungaria
+ case "ca_ad", "ca-ad", "ca" : ConvertLanguage2 = 37 ' Catalan
+ case "it_it", "it-it", "it" : ConvertLanguage2 = 39 ' Italian
+ case "cs_cz", "cs-cz", "cs" : ConvertLanguage2 = 42 ' Czech
+ case "sk_sk", "sk-sk", "sk" : ConvertLanguage2 = 43 ' Slowak
+ case "en_gb", "en-gb" : ConvertLanguage2 = 44 ' English (GB)
+ case "da_dk", "da-dk", "da" : ConvertLanguage2 = 45 ' Danish
+ case "sv_se", "sv-se", "sv" : ConvertLanguage2 = 46 ' Swedish
+ case "no_no", "no-no", "no" : ConvertLanguage2 = 47 ' Norwegian
+ case "pl_pl", "pl-pl", "pl" : ConvertLanguage2 = 48 ' Polish
+ case "de_de", "de-de", "de" : ConvertLanguage2 = 49 ' German
+ case "sl_si", "sl-si", "sl" : ConvertLanguage2 = 50 ' Slovenian
+ case "sr_rs", "sr_rs", "sr" : ConvertLanguage2 = 51 ' Serbian (Cyrillic)
+ case "sh_rs", "sh_rs", "sh" : ConvertLanguage2 = 52 ' Serbian (Latin)
+ case "pt_br", "pt-br", "br" : ConvertLanguage2 = 55 ' Portuguese (Brazil)
+ case "th_th", "th-th", "th" : ConvertLanguage2 = 66 ' Thai
+ case "ja_jp", "ja-jp", "ja" : ConvertLanguage2 = 81 ' Japanese
+ case "ko_kr", "ko-kr", "ko" : ConvertLanguage2 = 82 ' Korean
+ case "vi_vi", "vi_vi", "vi" : ConvertLanguage2 = 84 ' Vietnamese
+ case "zh_cn", "zh-cn", "zh" : ConvertLanguage2 = 86 ' Chinese (simplified)
+ case "zh_tw", "zh-tw" : ConvertLanguage2 = 88 ' Chinese (traditional)
+ case "tr_tr", "tr-tr", "tr" : ConvertLanguage2 = 90 ' Turkish
+ case "hi_in", "hi-in", "hi" : ConvertLanguage2 = 91 ' Hindi
+ case "ar_ar", "ar-ar", "ar" : ConvertLanguage2 = 96 ' Arabic
+ case "he_he", "he-he", "he" : ConvertLanguage2 = 97 ' Hebrew
+ case "zz_zz", "zz-zz", "zz" : ConvertLanguage2 = 01 ' unknown
+ case else : if isMissing (bExact) then
+ printlog "iniinfo.inc::ConvertLanguage2(): Unknown systemlanguage '" & sSprache & "'!"
+ printlog "Default will be set to 01!"
+ ConvertLanguage2 = 01
+ else
+ printlog "iniinfo.inc::ConvertLanguage2(): Unknown systemlanguage '" & sSprache & "'!"
+ if bExact = TRUE then
+ printlog "Default will be set to 00!"
+ ConvertLanguage2 = 00
+ end if
+ end if
+ end select
+end function
+
+'-------------------------------------------------------------------------
+
+function ConvertCodeToLanguage ( sSprache as String ) as Integer
+ '/// Converts the old language code to international language code
+
+ select case lCase ( sSprache )
+ case "1033" : ConvertCodeToLanguage = 01 ' English (USA)
+ case "2070" : ConvertCodeToLanguage = 03 ' Portuguese
+ case "1049" : ConvertCodeToLanguage = 07 ' Russian
+ case "1032" : ConvertCodeToLanguage = 30 ' Greek
+ case "1043" : ConvertCodeToLanguage = 31 ' Dutch
+ case "1036" : ConvertCodeToLanguage = 33 ' French
+ case "3082" : ConvertCodeToLanguage = 34 ' Spanish
+ case "1034" : ConvertCodeToLanguage = 34 ' Spanish
+ case "1035" : ConvertCodeToLanguage = 35 ' Finnish
+ case "1038" : ConvertCodeToLanguage = 36 ' Hungaria
+ case "2099" : ConvertCodeToLanguage = 37 ' Catalan
+ case "1040" : ConvertCodeToLanguage = 39 ' Italian
+ case "1029" : ConvertCodeToLanguage = 42 ' Czech
+ case "1051" : ConvertCodeToLanguage = 43 ' Slowak
+ case "2057" : ConvertCodeToLanguage = 44 ' English (GB)
+ case "1030" : ConvertCodeToLanguage = 45 ' Danish
+ case "1053" : ConvertCodeToLanguage = 46 ' Swedish
+ case "2047" : ConvertCodeToLanguage = 47 ' Norwegian
+ case "1045" : ConvertCodeToLanguage = 48 ' Polish
+ case "1031" : ConvertCodeToLanguage = 49 ' German
+ case "1060" : ConvertCodeToLanguage = 50 ' Slovenian
+ case " " : ConvertCodeToLanguage = 55 ' Portuguese (Brazil)
+ case "3098" : ConvertCodeToLanguage = 51 ' Serbian (Cyriliic)
+ case "2074" : ConvertCodeToLanguage = 52 ' Serbian (Latin)
+ case " " : ConvertCodeToLanguage = 66 ' Thai
+ case "1041" : ConvertCodeToLanguage = 81 ' Japanese
+ case "1042" : ConvertCodeToLanguage = 82 ' Korean
+ case "1066" : ConvertCodeToLanguage = 84 ' Vietnamese
+ case "2052" : ConvertCodeToLanguage = 86 ' Chinese (simplified)
+ case "1028" : ConvertCodeToLanguage = 88 ' Chinese (traditional)
+ case "1055" : ConvertCodeToLanguage = 90 ' Turkish
+' case " " : ConvertCodeToLanguage = 91 ' Hindi
+ case "1025" : ConvertCodeToLanguage = 96 ' Arabic
+' case " " : ConvertCodeToLanguage = 97 ' Hebrew
+ case else : printlog "iniinfo.inc::ConvertCodeToLanguage(): Num. Code could not be detect or is unknown and will be set to 01 (English (USA))!"
+ ConvertCodeToLanguage = 01
+ end select
+end function
+
+'-------------------------------------------------------------------------
+
+sub GetTheInstallationType
+ '/// If StarOffice is installed as a network installation the global variable 'gNetzInst' and 'gNetzOfficePath' will be set here.
+ Dim sCommonXML as String, sDummy as String, sDestPath as String, sSourcePath as String, sMode as String
+ Dim FileNum%
+ dim sTemp as string
+ dim sURL as string
+ dim aTemp
+ dim aTemp2
+ dim aTemp3
+ dim i,x as integer
+ dim sPlatformProgramPath as string
+
+ if ( lcase( gPlatform ) = "osx" ) then
+ sPlatformProgramPath = "MacOS"
+ else
+ sPlatformProgramPath = "program"
+ endif
+
+ if gSamePC = TRUE then
+ gNetzInst = TRUE
+ gNetzOfficePath = gOfficePath
+ if (gSamePC = TRUE) then
+ if gPlatgroup = "unx" then
+ sTemp = GetIniValue (gOfficePath & sPlatformProgramPath & "/bootstraprc", "Bootstrap", "UserInstallation")
+ else
+ sTemp = GetIniValue (gOfficePath & sPlatformProgramPath & "\bootstrap.ini", "Bootstrap", "UserInstallation")
+ end if
+ end if
+ sURL = convertFromURL(sTemp) ' to get the % encoded chars decoded! and to remove "file://" if somebody provides a URL
+ ' Formerly I had to fake the string with a starting "file://" to use the function; nowadays it works without it
+ if inStr(sURL,"$SYSUSERCONFIG") > 0 then
+ gOfficePath = gtSystemPath + right(sURL, len(sURL) - (inStr(sURL,"$SYSUSERCONFIG")+len("$SYSUSERCONFIG"))) + gPathSigne
+ else
+ if inStr(sURL,"$ORIGIN") > 0 then
+ gOfficePath = gOfficePath & sPlatformProgramPath & gPathSigne + right(sURL, len(sURL) - (inStr(sURL,"$ORIGIN")+len("$ORIGIN"))) + gPathSigne
+ else
+ if inStr(sTemp,"file://") > 0 then
+ ' file:// had to get removed on calling convertFromURL() sTemp -> sURL
+ gOfficePath = sURL + gPathSigne
+ else
+ if inStr(sURL,"$BRAND_BASE_DIR") > 0 then
+ gOfficePath = gOfficePath & right(sURL, len(sURL) - (inStr(sURL,"$BRAND_BASE_DIR")+len("$BRAND_BASE_DIR")))
+ else
+ qaErrorLog "ininfo.inc::GetTheInstallationType:: Unexpected entry in bootstrap file.(Entry UserInstallation not starting with: $SYSUSERCONFIG or $ORIGIN or file://; Using entry as absolute path!)"
+ printlog "ininfo.inc::GetTheInstallationType:: original UserInstallation entry from 'bootstrap' file: '" + sTemp + "'"
+ printlog "ininfo.inc::GetTheInstallationType:: using now converted from URL for 'gOfficePath': '" + sURL + "'"
+ gOfficePath = sURL + gPathSigne
+ end if
+ end if
+ end if
+ end if
+ ' make unique platform path seperators
+ gOfficePath = convertPath(gOfficePath)
+ ' to support some developer bootstraprc/ini's:
+ gOfficePath = fRelativeToAbsolutePath(gOfficePath)
+ gOfficePath = fRemoveDoubleCharacter(gOfficePath + gPathSigne, gPathSigne)
+ else
+ gNetzInst = GetIniValue ( gTesttoolIni, "Network", "Net" )
+ gNetzOfficePath = GetIniValue ( gTesttoolIni, "Network", "Current" )
+ if Right ( gNetzOfficePath,1 ) <> gPathSigne then gNetzOfficePath = gNetzOfficePath + gPathSigne
+ end if
+end sub
+
+'-------------------------------------------------------------------------
+
+function ReplaceCharacter(stringToChange$, charToReplace$, replaceWith$) As String
+ '/// Replaces a specified character in a string with another character that you specify
+ '///+ INPUT: &lt;string&gt; , &lt;which characterto replace&gt; , &lt;which caracter the old one should be replaced&gt;
+ Dim ln, n As Long
+ Dim NextLetter As String
+ Dim FinalString As String
+ Dim txt, char, rep As String
+
+ txt = stringToChange$ 'store all arguments in
+ char = charToReplace$ 'new variables
+ rep = replaceWith$
+ ln = Len(txt)
+
+ for n = 1 To ln Step 1
+ NextLetter = Mid(txt, n, 1)
+ if NextLetter = char Then
+ NextLetter = rep
+ end if
+ FinalString = FinalString & NextLetter
+ next n
+ ReplaceCharacter = FinalString
+ '///+</ul>
+End Function
+
+'-------------------------------------------------------------------------
+
+function FileURLToNormalFile ( sFileURL as String ) as String
+ '/// Converts a file URL to a system specific URL.
+ FileURLToNormalFile = convertFromURL( sFileURL )
+end function
+
+'-------------------------------------------------------------------------
+
+function fgetL10Nvalue() as string
+ dim args(0) as new com.sun.star.beans.NamedValue
+ args(0).Name = "nodepath"
+ args(0).Value = "/org.openoffice.Setup/L10N"
+ fgetL10Nvalue = hGetUNOService().createInstance("com.sun.star.configuration.DefaultProvider").createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", args()).getByName("ooLocale")
+end function
+
+'-------------------------------------------------------------------------
+
+function hPlatformToGroup(sPLatform as string) as string
+ '/// <u>Input</u>: string of class gPlatform
+ '/// <u>Output</u>: string of class gPlatGroup
+ select case sPLatform
+ case "w95":hPlatformToGroup = "w95"
+ case "w98":hPlatformToGroup = "w95"
+ case "wse":hPlatformToGroup = "w95"
+ case "wme":hPlatformToGroup = "w95"
+ case "wnt":hPlatformToGroup = "w95"
+ case "w2k":hPlatformToGroup = "w95"
+ case "wxp":hPlatformToGroup = "w95"
+ case "mac":hPlatformToGroup = "mac"
+ case "ppc":hPlatformToGroup = "unx"
+ case "sol":hPlatformToGroup = "unx"
+ case "x86":hPlatformToGroup = "unx"
+ case "lin":hPlatformToGroup = "unx"
+ case "fbsd":hPlatformToGroup= "unx"
+ case "nbsd":hPlatformToGroup= "unx"
+ case "lin64":hPlatformToGroup= "unx"
+ case "linsparc":hPlatformToGroup = "unx"
+ case "ecs":hPlatformToGroup = "ecs"
+ end select
+end function
+
+'-------------------------------------------------------------------------
+
+sub sGetCrashreporterValues as boolean
+ '/// This routine reads the values of the [Crashreporter] section
+ '///+ in the TestTool control file (testtool.ini / .testtoolrc).
+ '///It returns FALSE if one of the required
+ '///+ information is missing in testtool.ini.
+
+ sGetCrashreporterValues = FALSE
+ '/// <i>gUseProxy</i> should be TRUE if you need a proxy or FALSE
+ '///+ if you have a direct connection to the (inter)net.
+ gUseProxy = GetIniValue ( gTesttoolIni, "Crashreporter" , "UseProxy" )
+ 'If there's no value (=no entries at all...) exit the routine.
+ 'sGetCrashreporterValues = FALSE so the routine in master.inc
+ 'will stop testing.
+ if gUseProxy = "" then
+ exit sub
+ else
+ 'Making a boolean value from it.
+ gUseProxy = cBool(gUseProxy)
+ '/// <i>gConnectiontype</i> has the value DIRECT or MANUALPROXY in dependency
+ '///+ of <i>gUseProxy</i>. If <i>gUseProxy</i> = TRUE then the value of
+ '///+ <i>gConnectiontype</i> is MANUALPROXY otherwiese DIRECT.
+ if gUseProxy = FALSE then
+ gConnectionType = "DIRECT"
+ sGetCrashreporterValues = TRUE
+ else
+ gConnectionType = "MANUALPROXY"
+ end if
+
+ if gUseProxy then
+ '/// <i>gProxyServer</i> should be the proxy server which is needed to send
+ '///+ the crashreporter data via the net.
+ gProxyServer = GetIniValue ( gTesttoolIni, "Crashreporter" , "ProxyServer" )
+ 'Verifying that a proxy server has been entered if
+ 'gUseProxy has been set to TRUE.
+ if gUseProxy = TRUE AND gProxyServer = "" then
+ warnlog "qatesttool::global::system::inc::iniinfo.inc::sGetCrashReporterValue: " & "In the [Crashreporter]-section of TestTool control file 'UseProxy=true' but 'ProxyServer=' (empty). Please correct it!"
+ sGetCrashreporterValues = FALSE
+ else
+ sGetCrashreporterValues = TRUE
+ end if
+
+ '/// <i>gProxyPort</i> should be the proxy server port which is needed to send
+ '///+ the crashreporter data via the net.
+ gProxyPort = GetIniValue ( gTesttoolIni, "Crashreporter" , "ProxyPort" )
+ 'Verifying that a proxy server port has been entered if
+ 'gUseProxy has been set to TRUE.
+ if gUseProxy = TRUE AND gProxyPort = "" then
+ sGetCrashreporterValues = FALSE
+ warnlog "qatesttool::global::system::inc::iniinfo.inc::sGetCrashReporterValue: " & "In the [Crashreporter]-section of TestTool control file 'UseProxy=true' but 'ProxyPort=' (empty). Please correct it!"
+ end if
+ else
+ ' to workaround issue i94779 set server and port to empty in case of direkt access
+ gProxyServer = ""
+ gProxyPort = ""
+ endif
+
+ '/// <i>gAllowContact</i> should be TRUE or FALSE
+ gAllowContact = GetIniValue ( gTesttoolIni, "Crashreporter" , "AllowContact" )
+ gAllowContact = cBool(gAllowContact)
+
+ '/// <i>gReturnAddress</i> should be the E-Mail address which can be used
+ '///+ to contact the user who has run the test scripts for additional information .
+ gReturnAddress = GetIniValue ( gTesttoolIni, "Crashreporter" , "ReturnAddress" )
+ 'Verifying that a mail address has been entered if
+ 'gAllowContact has been set to TRUE.
+ if gAllowContact = TRUE AND gReturnAddress = "" then
+ warnlog "qatesttool::global::system::inc::iniinfo.inc::sGetCrashReporterValue: " & "In the [Crashreporter]-section of TestTool control file 'AllowContact=true' but 'ReturnAddress=' (empty). Please correct it!"
+ sGetCrashreporterValues = FALSE
+ end if
+ end if
+end sub
+
+'-------------------------------------------------------------------------
+
+function getSofficeNative() as string
+ '/// Entry in Win32-registry or either link exist: /usr/bin/soffice - $HOME/soffice (aka Native Installer (OOo > SRC680m49)) ///'
+ dim sVendor(50) as string
+ dim sOffice(50) as string
+ dim sVersion(50) as string
+ dim iVendorEntries as integer
+ dim iVersionEntries as integer
+ dim iOfficeEntries as integer
+ dim iOOoVersionBorder as integer
+ dim i,x,y,z,j as integer
+ dim iVendor(2) as integer
+ dim iVersion(2) as integer
+ dim iOffice(2) as integer
+ dim sOfficePath(2) as string
+ dim sTemp, sTemp2 as string
+ dim sSVersionIni(2) as string
+ dim iSversion as integer
+ dim sCandidates(2) as string
+ dim sKey as string
+ dim sPath(2) as string
+ dim iBuildId(2) as string
+ dim slVersion() as string
+ dim ilVersion as integer
+ dim sLastVersion as string
+ dim iPosA, iPosB as integer
+ dim bError as boolean
+
+ bError = false
+
+ '/// separated handling between Linux/Unix and Win32 platforms ///'
+ if ("unx" = gPlatGroup) then
+ '/// on Linux/Unix systems we need to check/resolv 2 possible links which point to the directory with the 'soffice' executable ///'
+ try
+ '/// created by an installation from the root user: //usr//bin//soffice ///'
+ sCandidates(1) = getLinkDestination("/usr/bin/soffice") ' command fails, if link doesn't exist
+ if (left(sCandidates(1),2)="..") then
+ ' If the link is relative, make it absolute
+ sCandidates(1) = "/usr/bin/" + sCandidates(1)
+ sCandidates(1) = fRelativeToAbsolutePath(sCandidates(1))
+ sCandidates(1) = fRemoveDoubleCharacter(sCandidates(1), gPathSigne)
+ end if
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "getSofficeNative() - : /usr/bin/soffice: '" + sCandidates(1) + "' destination exists?: " +fileExists(sCandidates(1))
+ catch
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "getSofficeNative() - : /usr/bin/soffice: NOT AVAILABLE"
+ sCandidates(1) = ""
+ endcatch
+ try
+ '/// HAS TO GET created by installation from NON root user: $HOME/soffice ///'
+ sTemp = Environ("HOME")
+ sCandidates(2) = getLinkDestination(sTemp+"/soffice")
+ if (left(sCandidates(2),1) <> "/") then
+ ' relative path in $HOME directory!
+ sCandidates(2) = sTemp + "/" + sCandidates(2)
+ end if
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "getSofficeNative() - : $HOME/soffice : '" + sCandidates(2) + "' destination exists?: " +fileExists(sCandidates(2))
+ catch
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "getSofficeNative() - : $HOME/soffice : NOT AVAILABLE"
+ sCandidates(2) = ""
+ endcatch
+ for i = 1 to 2
+ if fileExists(sCandidates(i)) then
+ '/// cut off program//soffice from link destination ///'
+ y = instr(sCandidates(i), "program/soffice")
+ if ( lcase( gPlatform ) = "osx" AND y < 1 ) then
+ ' Accept also MacOS in link to soffice binary
+ y = instr(sCandidates(i), "MacOS/soffice")
+ end if
+ if (y > 0) then
+ sCandidates(i) = left(sCandidates(i), y-1)
+ else
+ qaErrorLog "master.inc::getSofficeNative():: expected 'program/soffice' at end of link destination: '" + sCandidates(i) + "'"
+ sCandidates(i) = ""
+ end if
+ end if
+ next i
+ if (("" = sCandidates(1)) or ("" = sCandidates(2))) then
+ ' if one candidate doesn't exist
+ '/// If only one candidate exist, take him. ///'
+ gOfficePath = sCandidates(1) + sCandidates(2)
+ else
+ ' both candidates exist
+ '/// If both candidates exits... ///'
+ for i = 1 to 2
+ '/// - Check if link destination exists; No: drop candidate ///'
+ if fileExists(sCandidates(i)) then
+ iBuildId(i) = i
+ else
+ ' link destination doesn't exist: drop candidate
+ sCandidates(i) = ""
+ iBuildId(i) = 0
+ end if
+ next i
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "getSofficeNative() - : BildId (1): " + iBuildId(1) + " (2): " + iBuildId(2)
+ '/// - Take the candidate which exists and comes from $HOME ///'
+ if (iBuildId(1) > iBuildId(2)) then
+ gOfficePath = sCandidates(1)
+ else
+ '/// - If BuildIds are equal, the candidate from $HOME wins ///'
+ gOfficePath = sCandidates(2)
+ end if
+ end if
+ if (not fileExists(gOfficePath)) then
+ '/// - check if resulting candidate exist; No: error ///'
+ bError = true
+ end if
+ else
+ '/// On win32 systems we need to check the registry for two paths with the key 'Path': ///'
+ sKey = "Path"
+ ' "--K--\Software\--Vendor--\--Product--\--Version--"
+ '/// If User installs, the path 'HKEY_CURRENT_USER\\Software\\' got set.///'
+ sPath(1) = "HKEY_CURRENT_USER\Software\"
+ '/// If Administrator installs, the path 'HKEY_LOCAL_MACHINE\\Software\\' got set.///'
+ sPath(2) = "HKEY_LOCAL_MACHINE\Software\"
+
+ '/// An entry in the registry consists of 2 parts: 1st the Office, 2nd the version-number ///'
+ '/// There may be several entries, but only the newest version is used. ///'
+ '/// There may exist both Paths HKCU and HKLM///'
+ '/// Which version is used? ///'
+ '/// From both Paths the newest version is chosen: from the lowest sOffice() the lowest sVersion() ///'
+ '/// If in both paths the entries are equal, the HKCU wins. ///'
+ iVendorEntries = 1
+ sVendor(iVendorEntries) = "Sun Microsystems": inc (iVendorEntries)
+ sVendor(iVendorEntries) = "OpenOffice.org" : inc (iVendorEntries)
+ sVendor(iVendorEntries) = "Oracle" : inc (iVendorEntries)
+
+ iOfficeEntries = 1
+ sOffice(iOfficeEntries) = "Oracle Open Office" : inc (iOfficeEntries)
+ sOffice(iOfficeEntries) = "StarOffice" : inc (iOfficeEntries)
+ sOffice(iOfficeEntries) = "StarSuite" : inc (iOfficeEntries)
+ sOffice(iOfficeEntries) = "OpenOffice.org": inc (iOfficeEntries)
+
+ iVersionEntries = 1
+ sVersion(iVersionEntries) = "9" : inc (iVersionEntries)
+ sVersion(iVersionEntries) = "8" : inc (iVersionEntries)
+ sVersion(iVersionEntries) = "3" : inc (iVersionEntries)
+ iOOoVersionBorder = iVersionEntries
+ sVersion(iVersionEntries) = "2.0.0" : inc (iVersionEntries)
+ sVersion(iVersionEntries) = "680" : inc (iVersionEntries)
+ sVersion(iVersionEntries) = "2.2" : inc (iVersionEntries)
+
+ ' put new versions ABOVE THIS LINE! ^^^^^^^^^^^
+ sVersion(iVersionEntries) ="NotFound": inc (iVersionEntries) ' HAS TO Stay at LAST
+
+ ' I have to walk over both sPath(z),
+ ' over all sOffice(y)-1
+ ' over all sVersion(x)-2
+ ' the first one found in each sPath(z) wins.
+ for z = 1 to 2
+ sOfficePath(z) = ""
+ for j =1 to iVendorEntries-1
+ for y =1 to iOfficeEntries-1
+ for x =1 to iVersionEntries-2
+ 'collect all entries != "" (empty string)
+ if sOfficePath(z) = "" then ' if no version found right now, set it
+ sTemp = sPath(z) + sVendor(j) + "\" + sOffice(y) + "\" + sVersion(x)
+ sOfficePath(z) = getRegistryValue(sTemp, sKey)
+ iOffice(z) = z*1000 + j*100 + y*10 + x
+ if (sOfficePath(z) <> "") AND fileExists(sOfficePath(z)) then
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "getSofficeNative() - : A " + z + ":" + j + ":" + y + ":" + x + " " + sTemp + " +++++++++++ " + sOfficePath(z)
+ else
+ ' printlog "getSofficeNative() - : C " + z + ":" + j + ":" + y + ":" + x + " " + sTemp + " +++++++++++ " + sOfficePath(z)
+ sOfficePath(z) = ""
+ iOffice(z) = 0
+ end if
+ else
+ ' This is just for completeness. B has no effect, A counts.
+ sTemp = sPath(z) + sVendor(j) + "\" + sOffice(y) + "\" + sVersion(x)
+ if sTemp <> "" then
+ sTemp2 = getRegistryValue(sTemp, sKey)
+ if (sTemp2 <> "") then
+ ' DEBUG: If you need more detailed information about the installation environment
+ ' enable the next line.
+ ' printlog "getSofficeNative() - : B " + z + ":" + j + ":" + y + ":" + x + " " + sTemp + " +++++++++++ "+sTemp2
+ end if
+ end if
+ end if
+ next x
+ next y
+ next j
+ next z
+
+ ' remove path, if destination doesn't exist
+ if (NOT fileExists(sOfficePath(1))) then
+ sOfficePath(1) = ""
+ end if
+ if (NOT fileExists(sOfficePath(2))) then
+ sOfficePath(2) = ""
+ end if
+ ' compute version to be used
+ if (sOfficePath(1) = "") or (sOfficePath(2) = "") then
+ gOfficePath = sOfficePath(1) + sOfficePath(2)
+ else
+ if (iOffice(1) > iOffice(2)) then
+ gOfficePath = sOfficePath(2)
+ else
+ gOfficePath = sOfficePath(1)
+ end if
+ end if
+
+ if (gOfficePath = "" or not fileExists(gOfficePath)) then
+ ' Error of no office is found
+ bError = true
+ else
+ ' cut of the executable name
+ i = instr(gOfficePath, "program\soffice.exe")
+ if i > 0 then
+ gOfficePath = left(gOfficePath, i-1)
+ else
+ qaErrorLog "master.inc::getSofficeNative():: expected 'program/soffice.exe' at end of link destination: '" + gOfficePath + "'"
+ end if
+ end if
+ end if
+ ' now we have gOfficePath set.
+
+ if (not bError) then
+ ' needed input for function: fGetProductName()
+ '/// Look, if we got an OpenOffice.org version ///'
+ gNetzOfficePath = gOfficePath
+ '/// Setting the global <i>gProductName</i> variable here.
+ gProductName = fGetProductName
+ ' A special build of OpenOffice.org is OOo-dev; #i56804#
+ if (gProductName = "OOo-dev") then
+ gProductName = "OpenOffice.org"
+ PrintLog "This is a 'OOo-dev' product build."
+ endif
+ if (instr(gProductName, "OpenOffice.org") > 0) then
+ gOOO = TRUE
+ else
+ gOOO = FALSE
+ end if
+ getSofficeNative = gOfficePath ' set return value
+ else
+ '/// If error occured, set returnvalue to "" - empty srting ///'
+ getSofficeNative = "" ' set return value
+ end if
+end function
+
+'-------------------------------------------------------------------------
+
+function getSofficeTesttool() as string
+ dim sTemp as string
+
+ sTemp = ""
+ '/// <ol><li>Look into the current profile section of the TestTool control file </li>
+ '/// deprecated, just kept here for compatibility
+ sTemp = GetIniValue ( gTesttoolIni, gTTProfileName, "OOoProgramDir" )
+ if (sTemp = "") then
+ '///+ <li>Look into the global section of the TestTool control file OOoProgramDir section</li></ol>
+ sTemp = GetIniValue ( gTesttoolIni, "OOoProgramDir", "Current" )
+ end if
+ ' Throw error, if the default '.' from first startup is found
+ if fileExists(sTemp) AND NOT (sTemp = "." )then
+ ' make sure path ends with path seperator
+ if (right(sTemp,1) <> gPathSigne) then
+ sTemp = sTemp + gPathSigne
+ end if
+ ' be tolerant to the chosen path
+ ' we just need the base directory, cut of possible "program" at end
+ if ( lcase( gPlatform ) = "osx" ) then
+ ' to get all possibile directories:
+ ' path could be: ...app/Contents/MacOS
+ if (right(sTemp,6) = "MacOS"+gPathSigne) then
+ sTemp = left(sTemp,len(sTemp)-6)
+ end if
+ if (right(sTemp,5) = ".app"+gPathSigne) then
+ sTemp = sTemp + "Contents/"
+ end if
+ else
+ if (right(sTemp,8) = "program"+gPathSigne) then
+ sTemp = left(sTemp,len(sTemp)-8)
+ end if
+ end if
+ getSofficeTesttool = sTemp
+ gOfficePath = sTemp
+ gNetzOfficePath = gOfficePath
+ '/// Setting the global <i>gProductName</i> variable here because GetSofficeNative()
+ '///+ won't fill this global variable if [OOoProgramDir] is being used.
+ gProductName = fGetProductName
+ ' A special build of OpenOffice.org is OOo-dev; #i56804#
+ if (gProductName = "OOo-dev") then
+ gProductName = "OpenOffice.org"
+ PrintLog "This is a 'OOo-dev' product build."
+ endif
+ if (instr(gProductName, "OpenOffice.org") > 0) then
+ gOOO = TRUE
+ else
+ gOOO = FALSE
+ end if
+ getSofficeTesttool = sTemp
+ else
+ '/// No valid path will return an empty string.
+ getSofficeTesttool = ""
+ end if
+end function
+
+'-------------------------------------------------------------------------
+
+function sGetScreenshotValue as boolean
+ '/// Read the entry [Screenshot] in the TestTool control file (testtool.ini / .testtoolrc).
+ '///It returns FALSE if no screenshots are taken (default)
+ '///+ TRUE if the entry in the file exists and is TRUE or 1 ///'
+ dim sScreenshotValue as string
+ dim bScreenshotValue as boolean
+
+ sScreenshotValue = GetIniValue ( gTesttoolIni, "Screenshot" , "Current" )
+ if sScreenshotValue <> "" then
+ bScreenshotValue = cBool(sScreenshotValue)
+ if bScreenshotValue then
+ printlog "** There will be screenshots taken from every dialog"
+ end if
+ else
+ bScreenshotValue = FALSE
+ end if
+ sGetScreenshotValue = bScreenshotValue
+end function
+
+'-------------------------------------------------------------------------
+
+function fgetOOoStartupTimeOut as integer
+ '/// Read the entry [OOoStartupTimeOut] in the TestTool control file (testtool.ini / .testtoolrc).
+ '///It returns 0 if the entry doesn't exist (default)
+ '///+ >0 if the entry in the file exists and is >0 ///'
+ dim sOOoStartupTimeOut as string
+ dim iOOoStartupTimeOut as integer
+
+ sOOoStartupTimeOut = getIniValue ( gTesttoolIni, "OOoStartupTimeOut" , "Current" )
+ if sOOoStartupTimeOut <> "" then
+ iOOoStartupTimeOut = cInt(sOOoStartupTimeOut)
+ if iOOoStartupTimeOut > 0 then
+ printlog "** OOo will be given extra time for startup: '" + iOOoStartupTimeOut + "' seconds"
+ end if
+ else
+ iOOoStartupTimeOut = 0
+ end if
+ fgetOOoStartupTimeOut = iOOoStartupTimeOut
+end function
+
+'-------------------------------------------------------------------------
+
+function fgetOOoShutdownTimeOut as integer
+ '/// Read the entry [OOoShutdownTimeOut] in the TestTool control file (testtool.ini / .testtoolrc).
+ '///It returns 0 if the entry doesn't exist (default)
+ '///+ >0 if the entry in the file exists and is >0 ///'
+ dim sOOoShutdownTimeOut as string
+ dim iOOoShutdownTimeOut as integer
+
+ sOOoShutdownTimeOut = GetIniValue ( gTesttoolIni, "OOoShutdownTimeOut" , "Current" )
+ if sOOoShutdownTimeOut <> "" then
+ iOOoShutdownTimeOut = cInt(sOOoShutdownTimeOut)
+ if iOOoShutdownTimeOut >0 then
+ printlog "** OOo will be given extra time for shutdown: '" + iOOoShutdownTimeOut + "' seconds"
+ end if
+ else
+ iOOoShutdownTimeOut = FALSE
+ end if
+ fgetOOoShutdownTimeOut = iOOoShutdownTimeOut
+end function
+
+'-------------------------------------------------------------------------
+
+function getOfficeBasisPath as string
+
+ const CFN = "global::system::iniinfo.inc:getOfficeBasisPath: "
+ 'get the basis directory from the information of basis-link
+ dim ltemp(5) as string
+ dim sFile as string
+ dim sTemp as string
+ dim sPath as string
+
+ sTemp = gNetzOfficePath
+ sFile = gNetzOfficePath & "basis-link"
+
+ if FileExists( sFile ) then
+ if ( lcase( gPlatform ) = "osx" ) then
+ 'MacOS X
+ sTemp = sFile
+ else
+ if ( gPlatGroup = "unx" ) then
+ 'Unixes
+ sPath = getLinkDestination( sFile )
+ sTemp = fRelativeToAbsolutePath( gNetzOfficePath & sPath )
+ if ( NOT FileExists( sTemp ) ) then
+ sTemp = fRelativeToAbsolutePath( sPath )
+ endif
+
+ else
+ 'all other platforms are Windows/DOS style
+ ListRead( lTemp, sFile )
+ if lTemp(1) <> "" then
+ stemp = lTemp(1)
+ sTemp = fRelativeToAbsolutePath( gNetzOfficePath & sTemp )
+ endif
+ endif
+ endif
+ else
+ warnlog( CFN & "Basis-link could not be found" )
+ endif
+
+ if ( NOT FileExists( sTemp ) ) then
+ warnlog( CFN & "Retrieved invalid path" )
+ endif
+
+ getOfficeBasisPath = sTemp & gPathSigne
+end function