Storitev ScriptForge.Services

Knjižnica ScriptForge je zgrajena nad razširljivo zbirko t.i. storitev, "Services".
Ta zbirka je implementirana kot kategorije knjižnic Basic ali modulov Python:

  1. standardna knjižnica ScriptForge, ki je del paketa LibreOffice;

  2. številne "povezane" knjižnice, ki so tudi del paketa LibreOffice;

  3. poljubna uporabniška razširitev LibreOffice, ki želi ustrezati istemu ogrodju.

Service je zbirka lastnosti ali metod, ki implementirajo storitev.

tip

Za avtorja uporabniškega skripta je storitev lahko modul v knjižnici ali instanca razrednega modula.


Upravitelj dogodkov je skript, vsebovan v knjižnici, ki veže dogodek, ki sproži makro – običajno definiran z menijskim ukazom Orodja – Prilagodi – s tozadevno instanco storitve.

tip

Če npr. več dokumentov ob nalaganju sproži isti makro, je smiselno vedeti, kateri dokument je tokrat sprožil makro. Tukaj svojo vlogo odigra upravitelj dogodkov.


Naslednje metode tvorijo jedro ogrodja ScriptForge:

tip

Storitve String, Array in Exception lahko na konvencionalen način prikličete neposredno kot SF_String, SF_Array in SF_Exception.


Seznam metod v storitvi Services

CreateScriptService

RegisterScriptServices
RegisterService

RegisterEventManager


CreateScriptService

Pridobi dostop do ene od storitve knjižnice za potrebe uporabniškega skripta.
Vrnjena vrednost je predmet Basic ali Nothing, če je prišlo do napake.

Storitev lahko razumemo kot:

Skladnja:


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

Parametri:

Service: ime storitve, identificirane kot "library.service".
Knjižnica je knjižnica Basic, ki mora obstajati v GlobalScope. Privzeta vrednost je "ScriptForge".
Storitev je ena od storitev, ki jih registrira knjižnica prek metode RegisterScriptServices().

arg0, ...: seznam argumentov, ki jih zahteva priklicana storitev.
Če se prvi argument sklicuje na upravitelja dogodkov, je arg0 obvezen in mora biti predmet UNO, ki predstavlja dogodek, podan kot argument za uporabniški makro.

Primer:


        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        ' To bo storjeno enkrat
        Dim svc As Object
        Set svc = CreateScriptService("Array")
        ' Sklicuje se na storitev "ScriptForge.Array" ali SF_Array
        Set svc = CreateScriptService("ScriptForge.Dictionary")
        ' Vrne novo prazno instanco razreda slovarjev; niz "ScriptForge." je neobvezen
        Set svc = CreateScriptService("SFDocuments.Calc")
        ' Sklicuje se na storitev Calc, implementirano v povezani knjižnici SFDocuments
        Set svc = CreateScriptService("Timer", True)
        ' Vrne instanco razreda Timer, ki se takoj zažene
        Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
        ' Sklicuje se na storitev DocumentEvent, implementirano v povezani knjižnici SFDocuments
        ' Vrne instanco razreda Document, ki je sprožila dogodek
     

RegisterScriptServices

Z izvajanjem niza pozivov RegisterService() in RegisterEventManager(), metoda RegisterScriptServices() vključuje knjižnico v ogrodje ScriptForge.
Vsaka knjižnica, ki se nanaša na ogrodje, mora implementirati lastno različico te metode.

warning

Metoda mora biti shranjena v standardnem modulu Basic in ne v razrednem modulu.


Storitev je lahko:


          GlobalScope.ImeKnjižnice.ImeModula ' Predmet
          "ImeKnjižnice.ImeModula.ImeFunkcije" ' Niz
   

Primer:


      Public Sub RegisterScriptServices()
      ' To be stored in library = myLibrary
          With GlobalScope.ScriptForge.SF_Services
              .RegisterService("myService1", GlobalScope.myLibrary.myModule)
              ' Glejte standardni modul Basic glede implementacije storitve kot nabora metod
              .RegisterService("myService2", "myLibrary.someModule.someFunction")
              ' Funkcija mora vrniti instanco razreda predmetov Basic, ki implementira storitev
              ' ...
          End With
      End Sub
   

Če uporabniški skript vsebuje ukaz kot npr.:

Set myServ = CreateScriptService("myLibrary.myService1")


ScriptForge izvede naslednja opravila:

  1. po potrebi naloži knjižnico myLibrary;

  2. prikliče metodo RegisterScriptServices za nalaganje seznama storitev myLibrary v pomnilnik;

  3. inicializira spremenljivko myServ z dano storitvijo.

RegisterService

Metoda vrne True, če je kot argument podani par ime-vrednost uspešno registriran.

Skladnja:


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

Parametri:

ServiceName: ime storitve, razlikuje med velikimi in malimi črkami. Ime mora biti enkratno.

ServiceReference: sklic storitve je lahko:


          GlobalScope.ImeKnjižnice.ImeModula ' Predmet
          "ImeKnjižnice.ImeModula.ImeFunkcije" ' Niz
   

Primer:


          With GlobalScope.ScriptForge.SF_Services
              .RegisterService("myService1", GlobalScope.myLibrary.myModule)
              ' Glejte standardni modul Basic glede implementacije storitve kot nabora metod
              .RegisterService("myService2", "myLibrary.someModule.someFunction")
              ' Funkcija mora vrniti instanco razreda predmetov Basic, ki implementira storitev
              ' ...
          End With
   

RegisterEventManager

Metoda vrne True, če je kot argument podani par ime-vrednost uspešno registriran.

Skladnja:


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

Parametri:

ServiceName: ime storitve, razlikuje med velikimi in malimi črkami. Ime mora biti enkratno.

ServiceReference: niz, ki opredeljuje funkcijo, ki jo je potrebno izvesti, da pridobite instanco te storitve. Dejansko je to funkcija, ki vsebuje ključno besedo New ukaza Set, ki ustvari instanco:

    "LibraryName.ModuleName.FunctionName" ' String

Primer:


          With GlobalScope.ScriptForge.SF_Services
              .RegisterEventManager("myEventMgr", "myLibrary.someModule.someFunction")
              ' Funkcija mora vrniti instanco razreda predmetov Basic, ki implementira storitev
              ' ...
          End With
  
warning

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.


Podprite nas!