Tenesta ScriptForge.Services

ScriptForge-biblioteket er bygd pÄ ei utvidbar samling av sÄkalla «Tenester».
Denne samlinga vert lagd til som kategoriar av grunnleggjande bibliotek eller Python-modular:

  1. standard-biblioteket ScriptForge levert med LibreOffice

  2. ein del «tilknytte» bibliotek ogsÄ levert med LibreOffice

  3. kvar LibreOffice-utviding frÄ brukar/bidragsytar som helst som Þnskjer Ä passa inn i same rammeverk

Ei teneste er ei samling eigenskapar eller metodar som implementerer tenesta.

tip

For forfattaren av eit brukarskript kan ei teneste anten vera ein modul i eit bibliotek eller ein instance (fĂžrekomst) i ein klassemodul.


Ein event manager (hendingshandsamar) er eit skript i eit bibliotek som bind ei hending som utlþyser ein makro , som oftast definert av menyen Verktþy → Tilpass – til den aktuelle tenestefþrekomsten.

tip

Viss for eksempel fleire dokument utlÞyser den same makroen nÄr dei vert lasta inn, kan det vera nyttig Ä vite kva for dokument som utlÞyste makroen denne gongen. Det er i slike tilfelle ein hendingshandsamar kjem til nytte.


Desse metodane er kjernen i konstruksjonen ScriptForge:

tip

Konvensjonelt kan tenestene String, Array og Exception kallast direkte som SF_String, SF_Array og SF_Exception.


Liste over metodar i tenesta Service

CreateScriptService

RegisterScriptServices
RegisterService

RegisterEventManager


CreateScriptService

FĂ„ tilgang til ei av tenestene i eit bibliotek for Ă„ bruka eit bruarrskript.
Den returnerte verdien er eit Basic-objekt, eller Nothing viss det oppstod ein feil.

Ei teneste kan forstÄast som anten:

Syntaks:


       CreateScriptService(Service As String, [arg0, ...] As Variant) As Variant
      

Parametrar:

Service: Namnet pÄ den tenesta som er definert som "library.service".
Biblioteket er eit Basic-bibliotek som mÄ finnast i GlobalScope. Standardverdien er "ScriptForge".
Tenesta er ei av de tenestene som er registrert av biblioteket ved hjelp av metoden RegisterScriptServices().

arg0, 
: Ei liste over argument som krevst av den aktiverte tenesta.
Viss det fÞrste argumentet viser til ei hendingshandsaming, er arg0 obligatorisk og mÄ vera det UNO-objektet som representerer den hendinga som vart gjeven som argument til brukarmakroen.

Eksempel:


        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        ' Skal gjerast éin gong
        Dim svc As Object
        Set svc = CreateScriptService("Array")
        ' Refererer til tenesta «ScriptForge.Array» eller SF_Array
        Set svc = CreateScriptService("ScriptForge.Dictionary")
        ' Returnerer ein ny tom klassefÞrekomst av ei ordbok; «ScriptForge.» er valfri
        Set svc = CreateScriptService("SFDocuments.Calc")
        ' Refererer til Calc-tenesta, implementert i det tilknytte SFDocuments-biblioteket
        Set svc = CreateScriptService("Timer", True)
        ' Returnerer ein klassefĂžrekomst Timer, som startar med ein gong
        Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
        ' Refererer til DocumentEvent implementert i det tilknytte SFDocuments-biblioteket
        ' Returnerer den fĂžrekomsten av klassen Document som utlĂžyste hendinga
     

RegisterScriptServices

Ved Ă„ gjera ein serie av oppkall til RegisterService() og RegisterEventManager(), vil metoden RegisterScriptServices()inkorporerer et bibliotek i strukturen ScriptForge.
Kvart bibliotek knytt til strukturen, mÄ implementera sin eigen versjon av denne metoden.

warning

Metoden mÄ lagrast i ein Basic-standardmodul i motsetnad til ein klassemodul.


Ei teneste er anten:


          GlobalScope.LibraryName.ModuleName ' Objekt
          "LibraryName.ModuleName.FunctionName" ' Streng
   

Eksempel:


      Public Sub RegisterScriptServices()
      ' To be stored in library = myLibrary
          With GlobalScope.ScriptForge.SF_Services
              .RegisterService("myService1", GlobalScope.myLibrary.myModule)
              ' Referere til ein Basic standardmodul som implementerer tenesta som eit sett med metodar
              .RegisterService("myService2", "myLibrary.someModule.someFunction")
              ' Funksjonen skal returnera ein fĂžrekomst av ein Basic-objektklasse som implementerer tenesta
              ' ...
          End With
      End Sub
   

NÄr eit brukarskript inneheld eit uttrykk som for eksempel:

Set myServ = CreateScriptService("myLibrary.myService1")


ScriptForge utfÞrer desse opgÄvene:

  1. hent biblioteket myLibrary nÄr det er nÞdvendig

  2. kall opp metoden RegisterScriptServices for Ă„ henta lista over tenester i myLibrary inn i minnet

  3. initialiser variabelen myServ med den gjevne tenesta

RegisterService

Metoden returnerer Sann viss namneverdiparet gjeve som argument kunne registrerast.

Syntaks:


      GlobalScope.ScriptForge.SF_Services.RegisterService(ServiceName As String, ServiceReference As Variant) As Boolean
   

Parametrar:

ServiceName: Namnet pÄ tenesta som ein streng som ikkje skil mellom store og smÄ bokstavar. Namnet mÄ vera unikt.

ServiceReference: Ein tenestereferanse er anten:


          GlobalScope.LibraryName.ModuleName ' Objekt
          "LibraryName.ModuleName.FunctionName" ' Streng
   

Eksempel:


          With GlobalScope.ScriptForge.SF_Services
              .RegisterService("myService1", GlobalScope.myLibrary.myModule)
              ' Referere til ein Basic standardmodul som implementerer tenesta som eit sett med metodar
              .RegisterService("myService2", "myLibrary.someModule.someFunction")
              ' Funksjonen skal returnera ein fĂžrekomst av ein Basic-objektklasse som implementerer tenesta
              ' ...
          End With
   

RegisterEventManager

Metoden returnerer Sann viss namneverdiparet gjeve som argument kunne registrerast.

Syntaks:


      GlobalScope.ScriptForge.SF_Services.RegisterEventManager(ServiceName As String, ServiceReference As String) As Boolean
   

Parametrar:

ServiceName: Namnet pÄ tenesta som ein streng som ikkje skil mellom store og smÄ bokstavar. Namnet mÄ vera unikt.

ServiceReference: A string designating the function to execute to get an instance of the service. It is in fact the function containing the New keyword of a Set statement creating the instance.:

    "LibraryName.ModuleName.FunctionName" ' String

Eksempel:


          With GlobalScope.ScriptForge.SF_Services
              .RegisterEventManager("myEventMgr", "myLibrary.someModule.someFunction")
              ' The function should return an instance of a Basic object class implementing the service
              ' ...
          End With
  
warning

Alle Basic-rutinane og -identifikatorane i ScriptForge som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje tenkt brukte i Basic-makroar.