diff options
author | Jean-Pierre Ledure <jp@ledure.be> | 2021-06-24 13:10:30 +0200 |
---|---|---|
committer | Jean-Pierre Ledure <jp@ledure.be> | 2021-06-25 12:00:57 +0200 |
commit | 28c3228cf81f4cd29ed5a26a944796197298d1ec (patch) | |
tree | a53fe6e122b3ba9df556d417cd5f33715b3ca91a /wizards | |
parent | 8383175bd3c714c163eac40a00b1e8277d4d5307 (diff) |
ScriptForge - (SF_Platform) new Printers property
The SF_Platform.Printers property returns the list of
available printers as a zero-based array.
The default printer is put in the 1st position of the
list (index = [0]).
The property is available in Basic and Python.
Change-Id: I3f02b1b5e37aa9866491d9285683fc45d17fb664
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117776
Tested-by: Jean-Pierre Ledure <jp@ledure.be>
Tested-by: Jenkins
Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
Diffstat (limited to 'wizards')
-rw-r--r-- | wizards/source/scriptforge/SF_Platform.xba | 62 | ||||
-rw-r--r-- | wizards/source/scriptforge/SF_Root.xba | 2 | ||||
-rw-r--r-- | wizards/source/scriptforge/SF_Utils.xba | 5 | ||||
-rw-r--r-- | wizards/source/scriptforge/python/scriptforge.py | 7 |
4 files changed, 69 insertions, 7 deletions
diff --git a/wizards/source/scriptforge/SF_Platform.xba b/wizards/source/scriptforge/SF_Platform.xba index 919a8901641d..5c2970823d05 100644 --- a/wizards/source/scriptforge/SF_Platform.xba +++ b/wizards/source/scriptforge/SF_Platform.xba @@ -96,12 +96,6 @@ Property Get ObjectType As String 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: @@ -142,6 +136,15 @@ Property Get OSVersion() As String End Property ' ScriptForge.SF_Platform.OSVersion (get) REM ----------------------------------------------------------------------------- +Property Get Printers() As Variant +''' Returns the list of available printers type as a zero-based array +''' The default printer is put in the 1st position in the list (index = 0) +''' Example: +''' MsgBox join(platform.Printers, ",") + Printers = _PropertyGet("Printers") +End Property ' ScriptForge.SF_Platform.Printers (get) + +REM ----------------------------------------------------------------------------- Property Get Processor() As String ''' Returns the (real) processor name, e.g. 'amdk6'. Might return the same value as Machine ''' Example: @@ -157,6 +160,12 @@ Property Get PythonVersion() As String PythonVersion = _PropertyGet("PythonVersion") End Property ' ScriptForge.SF_Platform.PythonVersion (get) +REM ----------------------------------------------------------------------------- +Property Get ServiceName As String +''' Internal use + ServiceName = "ScriptForge.Platform" +End Property ' ScriptForge.SF_Platform.ServiceName + REM ===================================================================== METHODS REM ----------------------------------------------------------------------------- @@ -216,6 +225,7 @@ Public Function Properties() As Variant , "OSPlatform" _ , "OSRelease" _ , "OSVersion" _ + , "Printers" _ , "Processor" _ , "PythonVersion" _ ) @@ -225,6 +235,43 @@ End Function ' ScriptForge.SF_Platform.Properties REM =========================================================== PRIVATE FUNCTIONS REM ----------------------------------------------------------------------------- +Public Function _GetPrinters() as Variant +''' Returns the list of available printers. +''' The default printer is put in the 1st position (index = 0) + +Dim oPrinterServer As Object ' com.sun.star.awt.PrinterServer +Dim vPrinters As Variant ' Array of printer names +Dim sDefaultPrinter As String ' The default printer +Dim lDefault As Long ' Initial position of the default printer in the list + + On Local Error GoTo Catch ' Prevent any error + vPrinters = Array() + +Try: + ' Find printers + Set oPrinterServer = SF_Utils._GetUNOService("PrinterServer") + With oPrinterServer + vPrinters = .getPrinterNames() + sDefaultPrinter = .getDefaultPrinterName() + End With + + ' Put the default printer on top of the list + If Len(sDefaultPrinter) > 0 Then + lDefault = SF_Array.IndexOf(vPrinters, sDefaultPrinter, CaseSensitive := True) + If lDefault > 0 Then ' Invert 2 printers + vPrinters(lDefault) = vPrinters(0) + vPrinters(0) = sDefaultPrinter + End If + End If + +Finally: + _GetPrinters() = vPrinters() + Exit Function +Catch: + GoTo Finally +End Function ' ScriptForge.SF_Platform._GetPrinters + +REM ----------------------------------------------------------------------------- Public Function _GetProductName() as String ''' Returns Office product and version numbers found in configuration registry ''' Derived from the Tools library @@ -260,6 +307,7 @@ Private Function _PropertyGet(Optional ByVal psProperty As String) As Variant Dim sOSName As String ' Operating system Dim oLocale As Object ' com.sun.star.lang.Locale +Dim oPrinterServer As Object ' com.sun.star.awt.PrinterServer Const cstPyHelper = "$" & "_SF_Platform" Dim cstThisSub As String @@ -293,6 +341,8 @@ Const cstSubArgs = "" End Select EndIf _PropertyGet = sOSName + Case "Printers" + _PropertyGet = _GetPrinters() Case Else _PropertyGet = Null End Select diff --git a/wizards/source/scriptforge/SF_Root.xba b/wizards/source/scriptforge/SF_Root.xba index f553ab5f5889..6e89920a3c34 100644 --- a/wizards/source/scriptforge/SF_Root.xba +++ b/wizards/source/scriptforge/SF_Root.xba @@ -59,6 +59,7 @@ Private DispatchHelper As Object ' com.sun.star.frame.DispatchHelper Private TextSearch As Object ' com.sun.star.util.TextSearch Private SearchOptions As Object ' com.sun.star.util.SearchOptions Private Locale As Object ' com.sun.star.lang.Locale +Private PrinterServer As Object ' com.sun.star.awt.PrinterServer Private CharacterClass As Object ' com.sun.star.i18n.CharacterClassification Private FileAccess As Object ' com.sun.star.ucb.SimpleFileAccess Private FilterFactory As Object ' com.sun.star.document.FilterFactory @@ -116,6 +117,7 @@ Private Sub Class_Initialize() Set TextSearch = Nothing Set SearchOptions = Nothing Set Locale = Nothing + Set PrinterServer = Nothing Set CharacterClass = Nothing Set FileAccess = Nothing Set FilterFactory = Nothing diff --git a/wizards/source/scriptforge/SF_Utils.xba b/wizards/source/scriptforge/SF_Utils.xba index 3656b36448ed..be2a9fd91cc7 100644 --- a/wizards/source/scriptforge/SF_Utils.xba +++ b/wizards/source/scriptforge/SF_Utils.xba @@ -398,6 +398,11 @@ Dim vNodePath As Variant Set .PathSubstitution = CreateUnoService("com.sun.star.util.PathSubstitution") End If Set _GetUNOService = .PathSubstitution + Case "PrinterServer" + If IsEmpty(.PrinterServer) Or IsNull(.PrinterServer) Then + Set .PrinterServer = CreateUnoService("com.sun.star.awt.PrinterServer") + End If + Set _GetUNOService = .PrinterServer Case "ScriptProvider" If IsMissing(pvArg) Then pvArg = SF_Session.SCRIPTISAPPLICATION Select Case LCase(pvArg) diff --git a/wizards/source/scriptforge/python/scriptforge.py b/wizards/source/scriptforge/python/scriptforge.py index 57a67a0c9c3d..33b98fc491f8 100644 --- a/wizards/source/scriptforge/python/scriptforge.py +++ b/wizards/source/scriptforge/python/scriptforge.py @@ -1194,7 +1194,8 @@ class SFScriptForge: servicesynonyms = ('platform', 'scriptforge.platform') serviceproperties = dict(Architecture = False, ComputerName = False, CPUCount = False, CurrentUser = False, Locale = False, Machine = False, OfficeVersion = False, OSName = False, - OSPlatform = False, OSRelease = False, OSVersion = False, Processor = False) + OSPlatform = False, OSRelease = False, OSVersion = False, Printers = False, + Processor = False, PythonVersion = False) # Python helper functions py = ScriptForge.pythonhelpermodule + '$' + '_SF_Platform' @@ -1238,6 +1239,10 @@ class SFScriptForge: def Processor(self): return self.SIMPLEEXEC(self.py, 'Processor') + @property + def PythonVersion(self): + return self.SIMPLEEXEC(self.py, 'PythonVersion') + # ######################################################################### # SF_Session CLASS # ######################################################################### |