diff options
author | Jean-Pierre Ledure <jp@ledure.be> | 2021-07-22 10:34:16 +0200 |
---|---|---|
committer | Jean-Pierre Ledure <jp@ledure.be> | 2021-07-22 12:03:20 +0200 |
commit | 2d7c0af3c36c6613e4028ed44484f5f021f85deb (patch) | |
tree | e24978fa7693fd638b3b1fbf5ced4cfd6f1e1d84 /wizards | |
parent | 7f7dad7018c874542e0ab6a0fb0f05f21d112b53 (diff) |
ScriptForge - (scriptforge.py/CreateScriptService) allow keyword arguments
For Python scripts only:
the CreateScriptService() method accepts now both positional
(as before) and keyword arguments.
The impacted services are:
- l10n
- timer
Done with the ReviewServiceArgs() class method that returns the
input arguments as a tuple in the correct sequence. This method
is inserted in each of the impacted service definitions.
Implied a review of the creation of the L10N service to
replace absent arguments by zero-length default arguments
Change-Id: I3cc3b98847a395a2fd9f5e5bb15f45b398858b12
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119359
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_Services.xba | 19 | ||||
-rw-r--r-- | wizards/source/scriptforge/python/scriptforge.py | 22 |
2 files changed, 29 insertions, 12 deletions
diff --git a/wizards/source/scriptforge/SF_Services.xba b/wizards/source/scriptforge/SF_Services.xba index 4bd57c9e1b64..9533a4741b23 100644 --- a/wizards/source/scriptforge/SF_Services.xba +++ b/wizards/source/scriptforge/SF_Services.xba @@ -535,16 +535,17 @@ Dim sEncoding As String ' Alias for Encoding Check: If IsMissing(pvArgs) Then pvArgs = Array() - If UBound(pvArgs) < 0 Then - sPOFile = "" - sEncoding = "" - Else - If Not SF_Utils._ValidateFile(pvArgs(0), "Folder (Arg0)") Then GoTo Catch + sPOFile = "" + sEncoding = "" + If UBound(pvArgs) >= 0 Then + If Not SF_Utils._ValidateFile(pvArgs(0), "Folder (Arg0)", , True) Then GoTo Catch sFolderName = pvArgs(0) + sLocale = "" If UBound(pvArgs) >= 1 Then If Not SF_Utils._Validate(pvArgs(1), "Locale (Arg1)", V_STRING) Then GoTo Catch sLocale = pvArgs(1) - Else + End If + If Len(sLocale) = 0 Then ' Called from Python, the Locale argument may be the zero-length string Set oLocale = SF_Utils._GetUNOService("Locale") sLocale = oLocale.Language & "-" & oLocale.Country End If @@ -554,8 +555,10 @@ Check: Else sEncoding = "UTF-8" End If - sPOFile = SF_FileSystem.BuildPath(sFolderName, sLocale & ".po") - If Not SF_FileSystem.FileExists(sPOFile) Then GoTo CatchNotExists + If Len(sFolderName) > 0 Then + sPOFile = SF_FileSystem.BuildPath(sFolderName, sLocale & ".po") + If Not SF_FileSystem.FileExists(sPOFile) Then GoTo CatchNotExists + End If End If Try: diff --git a/wizards/source/scriptforge/python/scriptforge.py b/wizards/source/scriptforge/python/scriptforge.py index 16dbca2b4fd2..d22d5d832d9a 100644 --- a/wizards/source/scriptforge/python/scriptforge.py +++ b/wizards/source/scriptforge/python/scriptforge.py @@ -1166,9 +1166,16 @@ class SFScriptForge: # Mandatory class properties for service registration serviceimplementation = 'basic' servicename = 'ScriptForge.L10N' - servicesynonyms = () + servicesynonyms = ('l10n', 'scriptforge.l10n') serviceproperties = dict(Folder = False, Languages = False, Locale = False) + @classmethod + def ReviewServiceArgs(cls, foldername = '', locale = '', encoding = 'UTF-8'): + """ + Transform positional and keyword arguments into positional only + """ + return foldername, locale, encoding + def AddText(self, context = '', msgid = '', comment = ''): return self.ExecMethod(self.vbMethod, 'AddText', context, msgid, comment) @@ -1429,12 +1436,19 @@ class SFScriptForge: # Mandatory class properties for service registration serviceimplementation = 'basic' servicename = 'ScriptForge.Timer' - servicesynonyms = () + servicesynonyms = ('timer', 'scriptforge.timer') serviceproperties = dict(Duration = False, IsStarted = False, IsSuspended = False, SuspendDuration = False, TotalDuration = False) # Force for each property to get its value from Basic forceGetProperty = True + @classmethod + def ReviewServiceArgs(cls, start = False): + """ + Transform positional and keyword arguments into positional only + """ + return (start,) + def Continue(self): return self.ExecMethod(self.vbMethod, 'Continue') @@ -1661,7 +1675,7 @@ class SFDialogs: # Mandatory class properties for service registration serviceimplementation = 'basic' servicename = 'SFDialogs.DialogControl' - servicesynonyms = ('dialogcontrol', 'sfdialogs.dialog') + servicesynonyms = () serviceproperties = dict(Cancel = True, Caption = True, ControlType = False, CurrentNode = True, Default = True, Enabled = True, Format = True, ListCount = False, ListIndex = True, Locked = True, MultiSelect = True, Name = False, @@ -1779,7 +1793,7 @@ class SFDocuments: # Mandatory class properties for service registration serviceimplementation = 'basic' servicename = 'SFDocuments.Base' - servicesynonyms = () + servicesynonyms = ('base', 'scriptforge.base') serviceproperties = dict(DocumentType = False, IsBase = False, IsCalc = False, IsDraw = False, IsImpress = False, IsMath = False, IsWriter = False, XComponent = False) |