ScriptForge.UI service

UI (User Interface)-tjenesten forenkler identifiseringen og manipuleringen av de forskjellige vinduene som utgjør hele Collabora Office-applikasjonen:

tip

UI-tjenesten er utgangspunktet for å åpne, opprette eller få tilgang til innholdet i nye eller eksisterende dokumenter fra et brukerskript.


Definisjoner

WindowName

Et vindu kan angitt ved hjelp av forskjellige måter:

Vindusnavnet skiller mellom store og små bokstaver.

Dokument objekt

The methods CreateDocument, CreateBaseDocument, GetDocument and OpenDocument, described below, generate document objects. When a window contains a document, an instance of the Document class represents that document. A counterexample the Basic IDE is not a document but is a window in our terminology. Additionally a document has a type: Calc, Impress, Writer, ...

De spesifikke egenskapene og metodene som gjelder for dokumenter, implementeres i en dokumentklasse.

tip

Implementeringen av dokumentobjektklassen gjøres i SFDocuments-tilknyttede bibliotek. Se «Dokument»-tjenesten.


Tjenestepåkallelse

I Basic

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

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

Egenskaper

Navn

Skrivebeskyttet

Type

Beskrivelse

ActiveWindow

Ja

String

et gyldig og unikt WindowName for det aktive vinduet. Når vinduet ikke kan identifiseres, returneres en null-lengde streng.

Documents

Ja

String array

Listen over åpne dokumenter. Spesielle vinduer ignoreres. Denne listen består av en nullbasert endimensjonal matrise enten av filnavn (i SF_FileSystem.FileName-notasjon) eller av vindustitler for ulagrede dokumenter.


Konstanter

Navn

Verdi

Beskrivelse

MACROEXECALWAYS

2

Makroer kjøres alltid

MACROEXECNEVER

1

Makroer kjøres aldri

MACROEXECNORMAL

0

Makrokjøring avhenger av brukerinnstillingene


Eksempel:

Eksemplene nedenfor viser en MsgBox med navnene på alle åpne dokumenter.

I Basic

      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
   
I Python

     ui = CreateScriptService("UI")
     bas = CreateScriptService("Basic")
     openDocs = ui.Documents()
     strDocs = "\n".join(openDocs)
     bas.MsgBox(strDocs)
   

Liste over metoder i UI-tjenesten

Activate
CreateBaseDocument
CreateDocument (*)
GetDocument

Maximize
Minimize
OpenBaseDocument
OpenDocument (*)

Resize
SetStatusBar (*)
ShowProgressBar
WindowExists


warning

Merk, som et unntak, at metodene merket (*) ikke gjelder for Base dokumenter.


Activate

Gjør det angitte vinduet aktivt. Metoden returnerer Sann hvis det gitte vinduet blir funnet og kan aktiveres. Det er ingen endring i det faktiske brukergrensesnittet hvis ingen vindu samsvarer med valget.

Syntaks:

svc.Activate(windowname: str): bool

Parametre:

vindusnavn: se definisjonene ovenfor.

Eksempel:

I Basic

      ui.Activate("C:\Documents\My file.odt")
    
I Python

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

CreateBaseDocument

Oppretter og lagrer et nytt Collabora Office Base-dokument som bygger inn en tom database av den gitte typen. Metoden returnerer en Dokument tjenesteforekomst.

Syntaks:

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

Parametre:

filnavn : Identifiserer filen som skal opprettes. Den må følge SF_FileSystem.FileNaming-notasjonen. Hvis filen allerede eksisterer, overskrives den uten forvarsel

embeddeddatabase : Enten "HSQLDB" (standard), "FIREBIRD" eller "CALC".

registreringsnavn : Navnet som brukes til å lagre den nye databasen i databaseregisteret. Når = "" (standard), finner ingen registrering sted. Hvis navnet allerede eksisterer, overskrives det uten forvarsel.

calcfilename : Bare når embeddeddatabase = "CALC", representerer calcfilename filen som inneholder tabellene som Calc-ark. Filen må eksistere, ellers oppstår det en feil.

Eksempel:

I Basic

      Dim myBase As Object, myCalcBase As Object
      Set myBase = ui.CreateBaseDocument("C:\Databases\MyBaseFile.odb", "FIREBIRD")
      Set myCalcBase = ui.CreateBaseDocument("C:\Databases\MyCalcBaseFile.odb", _
          "CALC", , "C:\Databases\MyCalcFile.ods")
   
I Python

     myBase = ui.CreateBaseDocument(r"C:\Databases\MyBaseFile.odb", "FIREBIRD")
     myCalcBase = ui.CreateBaseDocument(r"C:\Databases\MyCalcBaseFile.odb", \
         "CALC", calcfilename = r"C:\Databases\MyCalcFile.ods")
   

CreateDocument (*)

Opprett et nytt Collabora Office-dokument av en gitt type eller basert på en gitt mal. Metoden returnerer et dokumentobjekt.

Syntaks:

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

Parametre:

documenttype : "Calc", "Writer", etc. Hvis fraværende, må templatefile argumentet være tilstede.

malfil : Hele Filnavn til malen som det nye dokumentet skal bygges på. Hvis filen ikke eksisterer, ignoreres argumentet. Tjenesten FileSystem gir egenskapene TemplatesFolder og UserTemplatesFolder for å hjelpe til med å bygge argumentet.

skjult: hvis True, åpne det nye dokumentet i bakgrunnen (standard = False). For å bruke med forsiktighet: aktivering eller stenging etterpå kan bare skje programmatisk.

Eksempel:

I begge eksemplene nedenfor oppretter det første kallet til CreateDocument-metoden et tomt Calc-dokument, mens det andre oppretter et dokument fra en malfil.

I Basic

      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"))
   
I Python

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

GetDocument

Returns a document object referring to either the active window, a given window or the active document.

Syntaks:

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

svc.GetDocument(windowname: uno): svc

Parametre:

windowname: See the definitions above. If this argument is absent, the active window is used. UNO objects of types com.sun.star.lang.XComponent or com.sun.star.comp.dba.ODatabaseDocument are also accepted. Thus passing ThisComponent or ThisDatabaseDocument as argument creates a new SFDocuments.Document, Base or Calc service.

Eksempel:

I Basic

      Dim myDoc As Object
      Set myDoc = ui.GetDocument("C:\Documents\My file.odt")
      Set myBase = ui.GetDocument(ThisDatabaseDocument)
   
I Python

     myDoc = ui.GetDocument(r"C:\Documents\My file.odt")
     from scriptforge import CreateScriptService
     bridge = CreateScriptService("Basic")
     myDoc = ui.GetDocument(bridge.ThisComponent)
   
tip

For å få tilgang til navnet på det aktive vinduet, se egenskapen ActiveWindow.


Maximize

Maksimerer det aktive vinduet eller det gitte vinduet.

Syntaks:

svc.Maximize(windowname: str)

Parametre:

windowname: see the definitions above. If this argument is absent, the active window is maximized.

Eksempel:

I Basic

      ui.Maximize("Untitled 1")
   
I Python

     ui.Maximize("Untitled 1")
   

Minimize

Minimerer det aktive vinduet eller det gitte vinduet.

Syntaks:

svc.Minimize(windowname: str)

Parametre:

windowname: see the definitions above. If this argument is absent, the active window is minimized.

Eksempel:

I Basic

     ui.Minimize()
   
I Python

     ui.Minimize()
   

OpenBaseDocument

Åpne et eksisterende Collabora Office Base-dokument. Metoden returnerer et dokumentobjekt.

Syntaks:

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

Parametre:

filename: Identifies the file to open. It must follow the SF_FileSystem.FileNaming notation. If the file already exists, it is overwritten without warning

registreringsnavn: Navnet som skal brukes for å finne databasen i databaseregisteret. Det ignoreres hvis Filnavn <> "".

makrokjøring: 0 = atferd er definert av brukerkonfigurasjonen, 1 = makroer er ikke kjørbare, 2 = makroer er kjørbare.

Eksempel:

I Basic

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

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

To improve code readability you can use predefined constants for the macroexecution argument, as in the examples above.


OpenDocument (*)

Opens an existing Collabora Office document with the given options. Returns a document object or one of its subclasses. The method returns Nothing (in Basic) / None (in Python) if the opening failed, even when the failure is caused by a user decision.

Syntaks:

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

Parametre:

filnavn: Identifiserer filen som skal åpnes. Den må følge FileName-notasjonen til FileSystem-tjenesten.

passord: Brukes når dokumentet er beskyttet. Hvis det er feil eller fraværende mens dokumentet er beskyttet, vil brukeren bli bedt om å angi et passord.

skrivebeskyttet: Standard = Usann.

skjult: hvis Sann, åpne det nye dokumentet i bakgrunnen (standard = Usann). For å bruke med forsiktighet: aktivering eller stenging etterpå kan bare skje programmatisk.

makrokjøring: 0 = atferd er definert av brukerkonfigurasjonen, 1 = makroer er ikke kjørbare, 2 = makroer er kjørbare.

filternavn: Navnet på et filter som skal brukes for å laste dokumentet. Hvis det finnes, må filteret eksistere.

filteralternativer: En valgfri streng med alternativer knyttet til filteret.

Eksempel:

I Basic

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

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

Resize

Endre størrelse og/eller flytte det aktive vinduet. Fraværende og negative argumenter ignoreres. Hvis vinduet er minimert eller maksimert, gjenopprettes det ved å ringe Endre størrelse uten argumenter.

Syntaks:

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

Parametre:

venstre, øverst: Avstander fra øverste venstre hjørne fra øvre og venstre kant av skjermen, i piksler.

bredde, høyde: Nye dimensjoner for vinduet, i piksler.

Eksempel:

I de følgende eksemplene endres bredden og høyden av vinduet mens top og venstre forblir uendret.

I Basic

      ui.Resize(, ,500, 500)
   
I Python

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

For å endre størrelse på et vindu som ikke er aktivt, aktiverer du det først ved å bruke Aktiver-metoden.


SetStatusbar (*)

Vis en tekst og en fremdriftslinje i statuslinjen i det aktive vinduet. Alle påfølgende anrop i samme makrokjøring refererer til den samme statuslinjen i det samme vinduet, selv om vinduet ikke er synlig lenger. Et anrop uten argumenter tilbakestiller statuslinjen til normal tilstand.

Syntaks:

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

Parametre:

tekst: En valgfri tekst som skal vises foran fremdriftslinjen.

prosent: en valgfri grad av fremgang mellom 0 og 100.

Eksempel:

I Basic

      Dim i As Integer
      For i = 0 To 100
          ui.SetStatusbar("Progress ...", i)
          Wait 50
      Next i
      ' Tilbakestiller statuslinjen
      ui.SetStatusbar
   
I Python

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

ShowProgressBar

Viser en ikke-modal dialogboks. Spesifiser tittelen, en forklarende tekst og en prosentandel av fremdriften som skal representeres på en fremdriftslinje. Dialogen vil forbli synlig inntil et kall til metoden uten argumenter eller til brukeren lukker dialogen manuelt.

Syntaks:

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

Parametre:

tittel : Tittelen som vises øverst i dialogboksen. Standard = "ScriptForge".

tekst: En valgfri tekst som skal vises over fremdriftslinjen.

prosent: en valgfri grad av fremgang mellom 0 og 100.

Eksempel:

I Basic

      Dim i As Integer
      For i = 0 To 100
          ui.ShowProgressBar("Window Title", "Progress ..." & i & "/100", i)
          Wait 50
      Next i
      ' Lukker fremdriftslinjevinduet
      ui.ShowProgressBar
   
I Python

     from time import sleep
     for i in range(101):
         ui.ShowProgressBar("Window Title", "Progress ... " + str(i) + "/100", i)
         sleep(0.05)
     # Lukker fremdriftslinjevinduet
     ui.ShowProgressBar()
   

WindowExists

Returnerer Sann hvis det gitte vinduet kunne identifiseres.

Syntaks:

svc.WindowExists(windowname: str): bool

Parametre:

vindusnavn: se definisjonene ovenfor.

Eksempel:

I Basic

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

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

Supporter oss!