O principal objetivo do módulo Services é proporcionar acesso ao método CreateScriptService, que pode ser chamado em scripts do utilizador para instanciar serviços implementados utilizando a estrutura ScriptForge.
Na terminologia do ScriptForge, um serviço é um conjunto de métodos e propriedades que podem ser utilizados para um objetivo comum. Por exemplo, o serviço String disponibiliza métodos para a manipulação de cadeias de caracteres, enquanto o serviço FileSystem permite a manipulação de ficheiros e pastas.
O módulo Services da biblioteca ScriptForge disponibiliza métodos adicionais que são utilizados internamente para registar os serviços disponíveis ou por programadores interessados em ampliar as funcionalidades do ScriptForge através da criação de novos serviços. O único método relevante para os scripts do utilizador é o CreateScriptService.
Este método é utilizado para instanciar um serviço do ScriptForge, para que possa ser chamado em scripts do utilizador.
O valor devolvido é um objeto Basic ou Nothing, caso tenha ocorrido um erro.
svc.CreateScriptService(service: str, [arg0: any] ...): svc
serviço: O nome do serviço identificado como uma cadeia de caracteres no formato «library.service»:
A biblioteca é uma biblioteca Basic que deve existir no GlobalScope. O valor predefinido é «ScriptForge».
O serviço é um dos serviços registados pela biblioteca ScriptForge.
arg0, ...: Uma lista de argumentos exigidos pelo serviço invocado.
Se o primeiro argumento se referir a um gestor de eventos, então arg0 é obrigatório e deve ser o objeto UNO que representa o evento fornecido como argumento à macro do utilizador.
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
' A fazer uma vez
Dim svc As Object
Set svc = CreateScriptService("Array")
' Refere-se ao serviço «ScriptForge.Array» ou SF_Array
Set svc = CreateScriptService("ScriptForge.Dictionary")
' Devolve uma nova instância da classe de dicionário vazio; «ScriptForge.» é opcional
Set svc = CreateScriptService("SFDocuments.Calc")
' Refere-se ao serviço Calc, implementado na biblioteca SFDocuments associada
Set svc = CreateScriptService("Timer", True)
' Devolve uma instância da classe Timer que começa a funcionar imediatamente
Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
' Refere-se ao serviço DocumentEvent implementado na biblioteca SFDocuments associada
' Devolve a instância da classe Document que desencadeou o 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)
Os scripts em Python suportam argumentos-chave ao chamar o CreateScriptService. O exemplo seguinte ilustra este conceito, instanciando os serviços Timer e Document utilizando argumentos-chave.
from scriptforge import CreateScriptService
# Timer
my_timer = CreateScriptService("Timer", start = True)
# Document
my_doc = CreateScriptService("Document", windowname = "some_file.ods")
Para tornar a escrita de scripts em Python mais fluida, o ScriptForge disponibiliza o serviço Basic, que permite que os scripts em Python chamem um conjunto de métodos com a mesma sintaxe e significado que as suas funções nativas homónimas do Basic.
O exemplo seguinte instancia o serviço Basic e chama o método MsgBox, que é equivalente à função MsgBox disponível no Basic:
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello World!")
Tenha em atenção que o serviço Basic tem de ser instanciado em scripts Python utilizando o método CreateScriptService.