| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <script:module xmlns:script="http://openoffice.org/2000/script" script:name="SF_Platform" script:language="StarBasic" script:moduleType="normal">REM =======================================================================================================================
- REM === The ScriptForge library and its associated libraries are part of the LibreOffice project. ===
- REM === Full documentation is available on https://help.libreoffice.org/ ===
- REM =======================================================================================================================
- Option Compatible
- Option Explicit
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- ''' SF_Platform
- ''' ===========
- ''' Singleton class implementing the "ScriptForge.Platform" service
- ''' Implemented as a usual Basic module
- '''
- ''' A collection of properties about the execution environment:
- ''' - HW platform
- ''' - Operating System
- ''' - current user
- ''' - LibreOffice version
- '''
- ''' Service invocation example:
- ''' Dim platform As Variant
- ''' platform = CreateScriptService("Platform")
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- REM ================================================================== EXCEPTIONS
- REM ============================================================ MODULE CONSTANTS
- REM ===================================================== CONSTRUCTOR/DESTRUCTOR
- REM -----------------------------------------------------------------------------
- Public Function Dispose() As Variant
- Set Dispose = Nothing
- End Function ' ScriptForge.SF_Array Explicit destructor
- REM ================================================================== PROPERTIES
- REM -----------------------------------------------------------------------------
- Property Get Architecture() As String
- ''' Returns the actual bit architecture
- ''' Example:
- ''' MsgBox platform.Architecture ' 64bit
- Architecture = _PropertyGet("Architecture")
- End Property ' ScriptForge.SF_Platform.Architecture (get)
- REM -----------------------------------------------------------------------------
- Property Get ComputerName() As String
- ''' Returns the computer's network name
- ''' Example:
- ''' MsgBox platform.ComputerName
- ComputerName = _PropertyGet("ComputerName")
- End Property ' ScriptForge.SF_Platform.ComputerName (get)
- REM -----------------------------------------------------------------------------
- Property Get CPUCount() As Integer
- ''' Returns the number of Central Processor Units
- ''' Example:
- ''' MsgBox platform.CPUCount ' 4
- CPUCount = _PropertyGet("CPUCount")
- End Property ' ScriptForge.SF_Platform.CPUCount (get)
- REM -----------------------------------------------------------------------------
- Property Get CurrentUser() As String
- ''' Returns the name of logged in user
- ''' Example:
- ''' MsgBox platform.CurrentUser
- CurrentUser = _PropertyGet("CurrentUser")
- End Property ' ScriptForge.SF_Platform.CurrentUser (get)
- REM -----------------------------------------------------------------------------
- Property Get Machine() As String
- ''' Returns the machine type like 'i386' or 'x86_64'
- ''' Example:
- ''' MsgBox platform.Machine
- Machine = _PropertyGet("Machine")
- End Property ' ScriptForge.SF_Platform.Machine (get)
- REM -----------------------------------------------------------------------------
- Property Get ObjectType As String
- ''' Only to enable object representation
- ObjectType = "SF_Platform"
- End Property ' ScriptForge.SF_Platform.ObjectType
- REM -----------------------------------------------------------------------------
- Property Get ServiceName As String
- ''' Internal use
- ServiceName = "ScriptForge.Platform"
- End Property ' ScriptForge.SF_Platform.ServiceName
- REM -----------------------------------------------------------------------------
- Property Get OfficeVersion() As String
- ''' Returns the office software version in the form 'LibreOffice w.x.y.z (The Document Foundation)'
- ''' Example:
- ''' MsgBox platform.OfficeVersion
- OfficeVersion = _PropertyGet("OfficeVersion")
- End Property ' ScriptForge.SF_Platform.OfficeVersion (get)
- REM -----------------------------------------------------------------------------
- Property Get OSName() As String
- ''' Returns the name of the operating system like 'Linux' or 'Windows'
- ''' Example:
- ''' MsgBox platform.OSName
- OSName = _PropertyGet("OSName")
- End Property ' ScriptForge.SF_Platform.OSName (get)
- REM -----------------------------------------------------------------------------
- Property Get OSPlatform() As String
- ''' Returns a single string identifying the underlying platform with as much useful and human-readable information as possible
- ''' Example:
- ''' MsgBox platform.OSPlatform ' Linux-4.15.0-117-generic-x86_64-with-Ubuntu-18.04-bionic
- OSPlatform = _PropertyGet("OSPlatform")
- End Property ' ScriptForge.SF_Platform.OSPlatform (get)
- REM -----------------------------------------------------------------------------
- Property Get OSRelease() As String
- ''' Returns the operating system's release
- ''' Example:
- ''' MsgBox platform.OSRelease ' 4.15.0-117-generic
- OSRelease = _PropertyGet("OSRelease")
- End Property ' ScriptForge.SF_Platform.OSRelease (get)
- REM -----------------------------------------------------------------------------
- Property Get OSVersion() As String
- ''' Returns the name of the operating system build or version
- ''' Example:
- ''' MsgBox platform.OSVersion ' #118-Ubuntu SMP Fri Sep 4 20:02:41 UTC 2020
- OSVersion = _PropertyGet("OSVersion")
- End Property ' ScriptForge.SF_Platform.OSVersion (get)
- REM -----------------------------------------------------------------------------
- Property Get Processor() As String
- ''' Returns the (real) processor name, e.g. 'amdk6'. Might return the same value as Machine
- ''' Example:
- ''' MsgBox platform.Processor
- Processor = _PropertyGet("Processor")
- End Property ' ScriptForge.SF_Platform.Processor (get)
- REM ===================================================================== METHODS
- REM -----------------------------------------------------------------------------
- Public Function GetProperty(Optional ByVal PropertyName As Variant) As Variant
- ''' Return the actual value of the given property
- ''' Args:
- ''' PropertyName: the name of the property as a string
- ''' Returns:
- ''' The actual value of the property
- ''' If the property does not exist, returns Null
- ''' Exceptions:
- ''' ARGUMENTERROR The property does not exist
- Const cstThisSub = "Platform.GetProperty"
- Const cstSubArgs = ""
- If SF_Utils._ErrorHandling() Then On Local Error GoTo Catch
- GetProperty = Null
- Check:
- If SF_Utils._EnterFunction(cstThisSub, cstSubArgs) Then
- If Not SF_Utils._Validate(PropertyName, "PropertyName", V_STRING, Properties()) Then GoTo Catch
- End If
- Try:
- GetProperty = _PropertyGet(PropertyName)
- Finally:
- SF_Utils._ExitFunction(cstThisSub)
- Exit Function
- Catch:
- GoTo Finally
- End Function ' ScriptForge.SF_Platform.GetProperty
- REM -----------------------------------------------------------------------------
- Public Function Methods() As Variant
- ''' Return the list of public methods of the Model service as an array
- Methods = Array( _
- )
- End Function ' ScriptForge.SF_Platform.Methods
- REM -----------------------------------------------------------------------------
- Public Function Properties() As Variant
- ''' Return the list or properties of the Platform class as an array
- Properties = Array( _
- "Architecture" _
- , "ComputerName" _
- , "CPUCount" _
- , "CurrentUser" _
- , "Machine" _
- , "OfficeVersion" _
- , "OSName" _
- , "OSPlatform" _
- , "OSRelease" _
- , "OSVersion" _
- , "Processor" _
- )
- End Function ' ScriptForge.SF_Platform.Properties
- REM =========================================================== PRIVATE FUNCTIONS
- REM -----------------------------------------------------------------------------
- Public Function _GetProductName() as String
- ''' Returns Office product and version numbers found in configuration registry
- ''' Derived from the Tools library
- Dim oProdNameAccess as Object ' configmgr.RootAccess
- Dim sProdName as String
- Dim sVersion as String
- Dim sVendor As String
- On Local Error GoTo Catch ' Prevent any error
- _GetProductName = ""
- Try:
- Set oProdNameAccess = SF_Utils._GetRegistryKeyContent("org.openoffice.Setup/Product")
- sProdName = oProdNameAccess.ooName
- sVersion = oProdNameAccess.ooSetupVersionAboutBox
- sVendor = oProdNameAccess.ooVendor
- _GetProductName = sProdName & " " & sVersion & " (" & sVendor & ")"
- Finally:
- Exit Function
- Catch:
- GoTo Finally
- End Function ' ScriptForge.SF_Platform._GetProductName
- REM -----------------------------------------------------------------------------
- Private Function _PropertyGet(Optional ByVal psProperty As String) As Variant
- ''' Return the value of the named property
- ''' Args:
- ''' psProperty: the name of the property
- Dim sOSName As String ' Operating system
- Const cstPyHelper = "$" & "_SF_Platform"
- Dim cstThisSub As String
- Const cstSubArgs = ""
- cstThisSub = "Platform.get" & psProperty
- SF_Utils._EnterFunction(cstThisSub, cstSubArgs)
- Select Case psProperty
- Case "Architecture", "ComputerName", "CPUCount", "CurrentUser", "Machine" _
- , "OSPlatform", "OSRelease", "OSVersion", "Processor"
- With ScriptForge.SF_Session
- _PropertyGet = .ExecutePythonScript(.SCRIPTISSHARED, _SF_.PythonHelper & cstPyHelper, psProperty)
- End With
- Case "OfficeVersion"
- _PropertyGet = _GetProductName()
- Case "OSName"
- ' Calc INFO function preferred to Python script to avoid ScriptForge initialization risks when Python is not installed
- sOSName = _SF_.OSName
- If sOSName = "" Then
- sOSName = SF_Session.ExecuteCalcFunction("INFO", "system")
- Select Case sOSName
- Case "WNT" : sOSName = "Windows"
- Case "MACOSX" : sOSName = "macOS"
- Case "LINUX" : sOSName = "Linux"
- Case "SOLARIS" : sOSName = "Solaris"
- Case Else : sOSName = SF_String.Capitalize(sOSName)
- End Select
- EndIf
- _PropertyGet = sOSName
- Case Else
- _PropertyGet = Null
- End Select
- Finally:
- SF_Utils._ExitFunction(cstThisSub)
- Exit Function
- End Function ' ScriptForge.SF_Platform._PropertyGet
- REM ============================================ END OF SCRIPTFORGE.SF_PLATFORM
- </script:module>
|