Guida di Collabora Office 24.04
Lo scopo principale del modulo Services è quello di fornire l'accesso al metodo CreateScriptService, che può essere chiamato negli script dell'utente per istanziare servizi implementati usando il framework ScriptForge.
Nella terminologia di ScriptForge un servizio è una raccolta di metodi e proprietà utilizzabili per una finalità comune. Per esempio, il servizio String fornisce metodi per la manipolazione della stringhe, mentre il servizio FileSystem consente la manipolazione di file e cartelle.
Il modulo Services della libreria ScriptForge fornisce metodi aggiuntivi da usare sia internamente, per registrare i servizi disponibili, o dagli sviluppatori interessati a estendere ScriptForge creando nuovi servizi. L'unico metodo rilevante per gli script degli utenti è CreateScriptService.
Questo metodo istanzia un servizio ScriptForge in modo da poterlo richiamare negli script utente.
Il valore restituito è un oggetto Basic, o Nothing se si verifica un errore.
svc.CreateScriptService(service: str, [arg0: any] ...): svc
service: il nome del servizio identificato da un stringa nel formato "libreria.servizio":
La libreria è una libreria di Basic che deve esistere in GlobalScope. Il valore predefinito è "ScriptForge".
Il servizio è uno dei servizi registrati dalla libreria ScriptForge.
arg0, ...: l'elenco di argomenti richiesti dal servizio invocato.
Se il primo argomento si riferisce ad un gestore di eventi, l'arg0 è obbligatorio e deve essere un oggetto UNO che rappresenta l'evento passato come argomento alla macro dell'utente.
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
'Da eseguire una volta
Dim svc As Object
Set svc = CreateScriptService("Array")
'Fa riferimento al servizio "ScriptForge.Array" o SF_Array
Set svc = CreateScriptService("ScriptForge.Dictionary")
'Restituisce una nuova istanza alla classe di un nuovo dizionario vuoto; "ScriptForge." è opzionale
Set svc = CreateScriptService("SFDocuments.Calc")
'Fa riferimento al servizio Calc, implementato nella libreria associata SFDocuments
Set svc = CreateScriptService("Timer", True)
'Restituisce un'istanza della classe Timer che si avvia immediatamente
Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
'Fa riferimento al servizio DocumentEvent implementato nella libreria associata SFDocuments
'Restituisce un'istanza della classe Document che ha innescato l'evento
from scriptforge import CreateScriptService
svc = CreateScriptService("Array")
svc = CreateScriptService("ScriptForge.Dictionary")
svc = CreateScriptService("SFDocuments.Calc")
svc = CreateScriptService("Timer", True)
svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
Gli script in Python supportano argomenti con parole chiave per richiamare CreateScriptService. L'esempio seguente illustra questo concetto istanziando i servizi Timer e Document usando degli argomenti con parole chiave.
from scriptforge import CreateScriptService
# Timer
my_timer = CreateScriptService("Timer", start = True)
# Document
my_doc = CreateScriptService("Document", windowname = "some_file.ods")
Per rendere più fluida la scrittura di script in Python, ScriptForge mette a disposizione il servizio Basic che permette agli script in Python di richiamare una raccolta di metodi con la stessa sintassi e lo stesso significato delle loro omonime funzioni native di Basic.
L'esempio seguente istanzia il servizio Basic e richiama il metodo MsgBox, equivalente alla funzione MsgBox disponibile in Basic:
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello World!")
È bene notare che il servizio Basic deve essere istanziato dagli script in Python usando il metodo CreateScriptService.