Služba ScriptForge.Services

Knihovna ScriptForge je založena na rozšířitelné sadě takzvaných „služeb“.
Tato sada je implementována v podobě těchto kategorií knihoven Basicu nebo modulů Pythonu:

  1. standardní knihovna ScriptForge instalovaná v rámci LibreOffice

  2. řada „přidružených“ knihoven rovněž instalovaných v rámci LibreOffice

  3. rozšíření LibreOffice od jakéhokoliv uživatele/přispěvatele, který chce používat stejné prostředí jako tyto knihovny

Služba je soubor vlastností a metod, které službu implementují.

tip

Pro autora uživatelského skriptu může být službou buď modul v knihovně, nebo instance modulu třídy.


Správce událostí je skript obsažený v knihovně, který spojuje událost spouštějící marko - obvykle definovanou v nabídce Nástroje - Přizpůsobit s dotčenou instancí služby.

tip

Pokud například několik dokumentů spouští při načítání totéž makro, může být užitečné znát, který dokument v daném případě makro spustil. To je úloha správce událostí.


Následující metody tvoří jádro prostředí ScriptForge:

tip

Konvencí je, že služby String, Array a Exception mohou být volány přímo, resp. jako SF_String, SF_Array a SF_Exception.


Seznam metod služby Services

CreateScriptService

RegisterScriptServices
RegisterService

RegisterEventManager


CreateScriptService

Získá přístup k některé službě knihovny pro účely uživatelského skriptu.
Návratovou hodnotou je objekt Basicu nebo objekt Nothing, pokud nastane chyba.

Službu je možné chápat jako:

Syntaxe:


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

Parametry:

Service: Název služby ve formátu "knihovna.služba".
Knihovna je knihovna jazyka Basic, která musí existovat v oblasti GlobalScope. Výchozí hodnotou je "ScriptForge".
Služba je některá ze služeb zaregistrovaných knihovnou prostřednictvím metody RegisterScriptServices().

arg0, ...: Seznam argumentů vyžadovaných vytvářenou službou.
Pokud první argument odkazuje na správce událostí, poté je arg0 povinný a musí se jednat o objekt UNO představující událost, která byla předána jako argument uživatelskému makru.

Příklad:


        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        ' Stačí provést jednou
        Dim svc As Object
        Set svc = CreateScriptService("Array")
        ' Odkazuje na službu "ScriptForgeArray" či SF_Array
        Set svc = CreateScriptService("ScriptForge.Dictionary")
        ' Vrátí novou, prázdnou instanci třídy slovník; část "ScriptForge." je nepovinná
        Set svc = CreateScriptService("SFDocuments.Calc")
        ' Odkazuje na službu Calc, implementovanou v připojené knihovně SFDocuments
        Set svc = CreateScriptService("Timer", True)
        ' Vrátí instanci třídy Timer, která se okamžitě spustí
        Set svc = CreateScriptService("SFDocuments.DocumentEvent", oEvent)
        ' Odkazuje na službu DocumentEvent, implementovanou v připojené knihovně SFDocuments
        ' Vrátí instanci třídy dokument, která událost spustila
     

RegisterScriptServices

Metoda RegisterScriptServices() začlení knihovnu do prostředí ScriptForge, a to pomocí volání metod RegisterService() and RegisterEventManager().
Každá knihovny příslušná k tomuto prostředí musí implementovat vlastní verzi této metody.

warning

Na rozdíl od modulu třídy je nutné, aby byla tato metoda uložena v modulu Basicu standard.


Služba je:


          GlobalScope.LibraryName.ModuleName ' Objekt
          "LibraryName.ModuleName.FunctionName" ' Řetězec
   

Příklad:


      Public Sub RegisterScriptServices()
      ' To be stored in library = myLibrary
          With GlobalScope.ScriptForge.SF_Services
              .RegisterService("myService1", GlobalScope.myLibrary.myModule)
              ' Odkazuje na standardní modul Basicu implementující službu jako sadu metod
              .RegisterService("myService2", "myLibrary.someModule.someFunction")
              ' Funkce by měla vrátit instanci třídy s objektem Basicu, která implementuje službu
              ' ...
          End With
      End Sub
   

Pokud uživatelský skript obsahuje například tento příkaz:

Set myServ = CreateScriptService("myLibrary.myService1")


Knihovna ScriptForge provede tyto kroky:

  1. Je-li to nutné, načte knihovnu myLibrary.

  2. Zavolá metodu RegisterScriptServices, kterou se načte do paměti seznam služeb myLibrary.

  3. Inicializuje proměnnou myServ danou službou.

RegisterService

Metoda vrátí True, pokud může být dvojice název a hodnota, zadaná jako argument, úspěšně zaregistrována.

Syntaxe:


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

Parametry:

ServiceName: Název služby jako řetězec, u něhož se nerozlišuje velikost písmen. Musí být jedinečný.

ServiceReference: Odkaz na službu je:


          GlobalScope.LibraryName.ModuleName ' Objekt
          "LibraryName.ModuleName.FunctionName" ' Řetězec
   

Příklad:


          With GlobalScope.ScriptForge.SF_Services
              .RegisterService("myService1", GlobalScope.myLibrary.myModule)
              ' Odkazuje na standardní modul Basicu implementující službu jako sadu metod
              .RegisterService("myService2", "myLibrary.someModule.someFunction")
              ' Funkce by měla vrátit instanci třídy s objektem Basicu, která implementuje službu
              ' ...
          End With
   

RegisterEventManager

Metoda vrátí True, pokud může být dvojice název a hodnota, zadaná jako argument, úspěšně zaregistrována.

Syntaxe:


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

Parametry:

ServiceName: Název služby jako řetězec, u něhož se nerozlišuje velikost písmen. Musí být jedinečný.

ServiceReference: Nebo řetězec označující funkci, která se má spustit, aby se získala instance služby. Jedná se o funkci obsahující klíčové slovo New pro příkaz Set, který instanci vytváří.

    "LibraryName.ModuleName.FunctionName" ' String

Příklad:


          With GlobalScope.ScriptForge.SF_Services
              .RegisterEventManager("myEventMgr", "myLibrary.someModule.someFunction")
              ' Funkce by měla vrátit instanci třídy s objektem Basicu, která implementuje službu
              ' ...
          End With
  
warning

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu.