mirror of
https://gitee.com/kekingcn/file-online-preview.git
synced 2026-03-15 21:53:46 +08:00
更新windows内置office目录名, 适配jodconverter
This commit is contained in:
281
server/libreoffice/share/basic/ScriptForge/SF_Platform.xba
Normal file
281
server/libreoffice/share/basic/ScriptForge/SF_Platform.xba
Normal file
@@ -0,0 +1,281 @@
|
||||
<?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>
|
||||
Reference in New Issue
Block a user