Storitev ScriptForge.UI

Storitev UI (User Interface, angl. za uporabniški vmesnik) poenostavlja identifikacijo in ravnanje z različnimi okni, ki tvorijo celoten program LibreOffice:

tip

Storitev UI je začetna točka za odpiranje, ustvarjanje ali dostopanje do vsebine novih ali obstoječih dokumentov iz uporabniškega skripta.


Definicije

WindowName

Okno je lahko začasno imenovano na več načinov:

Pri imenih oken je pomembna velikost črk.

Predmet dokumenta

Metode CreateDocument, CreateBaseDocument, GetDocument in OpenDocument, opisane v nadaljevanju, tvorijo predmete dokumenta. Če okno vsebuje dokument, instanca razreda Document predstavlja ta dokument. Nasprotno je v terminologiji Basic IDE, v okviru katere to ni dokument, temveč okno. Poleg tega je dokument določene vrste: Calc, Impress, Writer, ...

Specifične lastnosti in metode, namenjene dokumentom, so implementiranem v razredu dokumentov.

tip

Implementacija razreda predmetov dokumenta se opravi v pridruženi knjižnici SFDocuments. Glejte njeno storitev "Document".


Priklic storitve

V Basicu

    Dim ui As Variant
    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Set ui = CreateScriptService("UI")
  
V Pythonu

    from scriptforge import CreateScriptService
    svcUI = CreateScriptService("UI")
  

Lastnosti

Ime

Samo za branje

Vrsta

Opis

ActiveWindow

Da

String

Veljavno in enkratno ime WindowName za trenutno dejavno okno. Če okna ni mogoče identificirati, vrne niz ničelne dolžine.

Documents

Da

String array

Seznam trenutno odprtih dokumentov. Posebna okna so prezrta. Ta seznam sestavlja na ničlah temelječe enodimenzionalno polje imen datotek (v notaciji SF_FileSystem.FileNaming) ali naslovi oken neshranjenih dokumentov.


Konstante

Ime

Vrednost

Opis

MACROEXECALWAYS

2

Makri se vedno izvedejo

MACROEXECNEVER

1

Makri se nikoli ne izvedejo

MACROEXECNORMAL

0

Izvajanje makrov je odvisno od uporabniških nastavitev


Primer:

Spodnji primer prikazuje MsgBox z imeni vseh trenutno odprtih dokumentov.

V Basicu

      Dim openDocs as Object, strDocs as String
     Set openDocs = ui.Documents()
     strDocs = openDocs(0)
     For i = 1 to UBound(openDocs)
         strDocs = strDocs & Chr(10) & openDocs(i)
     Next i
     MsgBox strDocs
   
V Pythonu

     svcUI = CreateScriptService("UI")
     sBasic = CreateScriptService("Basic")
     openDocs = svcUI.Documents()
     strDocs = "\n".join(openDocs)
     sBasic.MsgBox(strDocs)
   

Seznam metod storitve UI

Activate
CreateBaseDocument
CreateDocument (*)
GetDocument

Maximize
Minimize
OpenBaseDocument
OpenDocument (*)

Resize
SetStatusBar (*)
ShowProgressBar
WindowExists


warning

Upoštevajte izjemo, da metod, označenih z (*), ni mogoče uporabiti z dokumenti Base.


Activate

Naredi navedeno okno dejavno. Metoda vrne True, če je dano okno najdeno in ga je možno aktivirati. Če nobeno okno ne ustreza izboru, v dejanskem uporabniškem vmesniku ni spremembe.

Skladnja:

svc.Activate(windowname: str): bool

Parametri:

windowname: glejte zgornje definicije.

Primer:

V Basicu

      ui.Activate("C:\Documents\My file.odt")
    
V Pythonu

      svcUI.Activate(r"C:\Documents\My file.odt")
    

CreateBaseDocument

Ustvari in shrani nov dokument LibreOffice Base, ki vdela prazno zbirko podatkov dane vrste. Metoda vrne instanco storitve Document.

Skladnja:

svc.CreateBaseDocument(filename: str, embeddeddatabase: str = 'HSQLDB', registrationname: str = ''): svc

Parametri:

filename: ime datoteke, ki jo želite ustvariti. Slediti mora obliki zapisa SF_FileSystem.FileNaming. Če datoteka že obstaja, bo prepisana brez opozorila.

embeddeddatabase: možni vrsti vdelane zbirke podatkov sta "HSQLDB" (privzeto) in "FIREBIRD".

registrationname: ime, uporabljeno za hrambo nove zbirke podatkov v registru zbirk podatkov. Ko je enako "" (privzeta vrednost), ime ne bo registrirano. Če ime že obstaja, je brez opozorila prepisano.

Primer:

V Basicu

      Dim myBase As Object
      Set myBase = ui.CreateBaseDocument("C:\Databases\MyBaseFile.odb", "FIREBIRD")
   
V Pythonu

     myBase = svcUI.CreateBaseDocument(r"C:\Databases\MyBaseFile.odb", "FIREBIRD")
   

CreateDocument (*)

Ustvari nov dokument LibreOffice dane vrste ali na osnovi dane predloge. Metoda vrne predmet dokumenta.

Skladnja:

svc.CreateDocument(documenttype: str = '', templatefile: str = '', hidden: bool = False): svc

Parametri:

documenttype: vrsta dokumenta, kot npr. "Calc", "Writer" itn. Če ni naveden, mora biti prisoten argument templatefile.

templatefile: polno ime predloge FileName, na temelju katere bo izdelan dokument. Če datoteka ne obstaja, je argument prezrt. Storitev FileSystem zagotavlja lastnosti TemplatesFolder in UserTemplatesFolder, ki sta v pomoč pri izdelavi argumenta.

hidden: če je True, odpre nov dokument v ozadju (privzeto = False). Pozor pri uporabi: kasnejša aktivacija in zapiranje se lahko izvedeta samo programsko.

Primer:

V obeh spodnjih primerih prvi klic metode CreateDocument ustvari prazen dokument programa Calc, medtem ko drugi ustvari dokument iz datoteke predloge.

V Basicu

      Dim myDoc1 As Object, myDoc2 As Object, FSO As Object
      Set myDoc1 = ui.CreateDocument("Calc")
      Set FSO = CreateScriptService("FileSystem")
      Set myDoc2 = ui.CreateDocument(, FSO.BuildPath(FSO.TemplatesFolder, "personal/CV.ott"))
   
V Pythonu

     myDoc1 = svcUI.CreateDocument("Calc")
     FSO = CreateScriptService("FileSystem")
     myDoc2 = svcUI.CreateDocument(templatefile = FSO.BuildPath(FSO.TemplatesFolder, "personal/CV.ott"))
   

GetDocument

Vrne predmet dokumenta, ki se sklicuje na dejavno okno ali dano okno.

Skladnja:

svc.GetDocument(windowname: str = ''): svc

Parametri:

windowname: glejte zgornje definicije. Če argument ni podan, se uporabi trenutno dejavno okno.

Primer:

V Basicu

      Dim myDoc As Object
      Set myDoc = ui.GetDocument("C:\Documents\My file.odt")
   
V Pythonu

     myDoc = svcUI.GetDocument(r"C:\Documents\My file.odt")
   
tip

Če želite dostopati do trenutno dejavnega okna, uporabite lastnost ActiveWindow.


Maximize

Poveča dejavno okno ali dano okno.

Skladnja:

svc.Maximize(windowname: str)

Parametri:

windowname: glejte zgornje definicije. Če argument ni podan, se trenutno dejavno okno poveča.

Primer:

V Basicu

      ui.Maximize("Untitled 1")
   
V Pythonu

     svcUI.Maximize("Untitled 1")
   

Minimize

Pomanjša dejavno okno ali dano okno.

Skladnja:

svc.Minimize(windowname: str)

Parametri:

windowname: glejte zgornje definicije. Če argument ni podan, se trenutno dejavno okno pomanjša.

Primer:

V Basicu

     ui.Minimize()
   
V Pythonu

     svcUI.Minimize()
   

OpenBaseDocument

Odpre obstoječi dokument programa LibreOffice Base. Metoda vrne predmet dokumenta.

Skladnja:

svc.OpenBaseDocument(filename: str = '', registrationname: str = '', macroexecution: int = 0): svc

Parametri:

filename: ime datoteke, ki jo želite odpreti. Slediti mora obliki zapisa SF_FileSystem.FileNaming. Če datoteka že obstaja, bo prepisana brez opozorila.

registrationname: ime za iskanje zbirke podatkov v registru zbirk podatkov. Prezrto, če je FileName <> "".

macroexecution: 0 = vedenje določa uporabniška prilagoditev, 1 = makrov ni možno izvajati, 2 = makre je možno izvajati.

Primer:

V Basicu

      Dim myBase As Object
      Set myBase = ui.OpenBaseDocument("C:\Documents\myDB.odb", MacroExecution := ui.MACROEXECALWAYS)
   
V Pythonu

     svcUI.OpenBaseDocument(r"C:\Documents\myDB.odb", macroexecution = svcUI.MACROEXECALWAYS)
   
tip

Za izboljšanje berljivosti kode lahko uporabite vnaprej določene konstante za argument macroexecution, kot je razvidno iz zgornjih primerov.


OpenDocument (*)

Odpre obstoječi dokument LibreOffice z danimi možnostmi. Vrne predmet dokumenta ali enega njegovih podrazredov. Metoda vrne Nothing (v Basicu) / None (v Pythonu), če odpiranje ni uspelo, tudi če je vzrok odločitev uporabnika.

Skladnja:

svc.Opendocument(filename: str, password: str = '', readonly: bool = False, hidden: bool = False, macroexecution: int = 0, filtername: str = '', filteroptions: str = ''): svc

Parametri:

filename: ime datoteke, ki jo želite odpreti. Slediti mora pravilom zapisa FileNaming storitve FileSystem.

password: geslo, potrebno za odpiranje, če je dokument zaščiten. Če je napačno ali ni prisotno, ko je dokument zaščiten, bo uporabnik povprašan za vnos gesla.

readonly: določa, ali je dokument namenjen samo branju, privzeto = False.

hidden: če je True, odpre nov dokument v ozadju (privzeto = False). Pozor pri uporabi: kasnejša aktivacija in zapiranje se lahko izvedeta samo programsko.

macroexecution: 0 = vedenje določa uporabniška prilagoditev, 1 = makrov ni možno izvajati, 2 = makre je možno izvajati.

filtername: ime filtra, ki naj bo uporabljen za nalaganje dokumenta. Če ta argument podate, mora filter obstajati.

filteroptions: neobvezen niz možnosti, povezanih s filtrom.

Primer:

V Basicu

      Dim myDoc As Object, FSO As Object
      Set myDoc = ui.OpenDocument("C:\Documents\myFile.odt", ReadOnly := True)
   
V Pythonu

     svcUI.OpenDocument(r"C:\Documents\myFile.odt", readonly = True)
   

Resize

Dejavnemu oknu spremeni velikost in/ali ga premakne. Odsotni in negativni argumenti so prezrti. Če je okno pomanjšano ali povečano, ga s klicem Resize brez argumentov obnovite.

Skladnja:

svc.Resize(left: int = -1, top: int = -1, width: int = -1, height: int = -1)

Parametri:

left, top: razdalje levega vrhnjega kota od levega in vrhnjega roba zaslona, v slikovnih točkah.

width, height: nove mere okna, v slikovnih točkah.

Primer:

V naslednjih primerih se width in height okna se spremenita, top in left pa ostaneta nespremenjena.

V Basicu

      ui.Resize(, ,500, 500)
   
V Pythonu

     svcUI.Resize(width = 500, height = 500)
   
tip

Če želite spremeniti mere okna, ki ni dejavno, ga najprej aktivirajte z metodo Activate.


SetStatusbar (*)

Prikaže besedilo in stolpec napredka v vrstici stanja dejavnega okna. Vsi naslednji klici iz istega izvajanja makra se nanašajo na isto vrstico stanja istega okna, tudi če okno ni več vidno. Klic brez argumentov ponastavi vrstico stanja v njeno navadno stanje.

Skladnja:

svc.SetStatusbar(text: str = '', percentage: int = -1)

Parametri:

text: neobvezno besedilo, prikazano pred vrstico napredka.

percentage: neobvezna stopnja napredka med 0 in 100 (odstotek).

Primer:

V Basicu

      Dim i As Integer
      For i = 0 To 100
          ui.SetStatusbar("Progress ...", i)
          Wait 50
      Next i
      ' Ponastavi vrstico stanja
      ui.SetStatusbar
   
V Pythonu

     from time import sleep
     for i in range(101):
         svcUI.SetStatusbar("Test:", i)
         sleep(0.05)
     svcUI.SetStatusbar()
   

ShowProgressBar

Prikaže glavno, nepodrejeno oz. ne-modalno okno. Določa njegov naslov, razlagalno besedilo in odstotek napredka, predstavljen v vrstici napredka. Pogovorno okno ostane vidno do klica metode brez argumenta ali do uporabnikovega ročnega zaprtja pogovornega okna.

Skladnja:

svc.ShowProgressBar(title: str = '', text: str = '', percentage: str = -1)

Parametri:

title: naslov, ki se pojavi na vrhu pogovornega okna. Privzeto = "ScriptForge".

text: neobvezno besedilo, prikazano nad vrstico napredka.

percentage: neobvezna stopnja napredka med 0 in 100 (odstotek).

Primer:

V Basicu

      Dim i As Integer
      For i = 0 To 100
          ui.ShowProgressBar("Window Title", "Progress ..." & i & "/100", i)
          Wait 50
      Next i
      ' Zapre okno vrstice napredka
      ui.ShowProgressBar
   
V Pythonu

     from time import sleep
     for i in range(101):
         svcUI.ShowProgressBar("Window Title", "Progress ... " + str(i) + "/100", i)
         sleep(0.05)
     # Zapre okno vrstice napredka
     svcUI.ShowProgressBar()
   

WindowExists

Vrne True, če je dano okno mogoče identificirati.

Skladnja:

svc.WindowExists(windowname: str): bool

Parametri:

windowname: glejte zgornje definicije.

Primer:

V Basicu

      If ui.WindowExists("C:\Document\My file.odt") Then
          ' ...
   
V Pythonu

     if svcUI.WindowExists(r"C:\Document\My file.odt"):
         # ...
   

Podprite nas!