Edukiak
Indizea 🔎︎

# ScriptForge.UI zerbitzua

UI zerbitzuak (erabiltzaile-interfazearenak) LibreOffice aplikazio osoa osatzen duten leiho anitzen identifikazioa eta manipulazioa sinplifikatzen du:

- Leihoen hautapena

- Leihoak lekuz eta tamainaz aldatzea

- Egoera-barraren ezarpenak

- Aurrerapen-barra mugikor bat bistaratzea

- Leiho berriak sortzea

- Azpiko "dokumentuak" atzitzea

UI zerbitzua dokumentu berriak edo lehendik daudenak erabiltzaile-script batetik irekitzeko, sortzeko edo atzitzeko abiapuntua da.

## Definizioak

### WindowName

Leiho bat adierazteko modu anitz daude:

- bide-izen eta fitxategi-izen oso bat

- fitxategi-izen osoaren azken osagaia edo baita atzizkirik gabeko azken osagaia ere

- leihoaren izenburua

- dokumentu berrietarako "Izengabea 1" bezalako zerbait

- "BASICIDE" eta "WELCOMESCREEN" leiho berezietako bat

Leiho-izenak maiuskulak/minuskulak bereizten ditu.

### Document objektua

Behean deskribatutako CreateDocument, CreateBaseDocument, GetDocument eta OpenDocument metodoek dokumentu-objektuak sortzen dituzte. Leiho batek dokumentu bat duenean, Document klasearen instantzia batek dokumentu hori ordezkatzen du. Kontrako adibide gisa, Basic IDE bat ez da dokumentu bat gure terminologian, leiho bat baizik. Aurrekoaz gain, dokumentu batek mota bat du: Calc, Impress, Writer ...

Dokumentuetan aplikatu daitezkeen propietate eta metodo espezifikoak dokumentu-klase batean inplementatzen dira.

Dokumentu-objektuen klasearen inplementazioa elkartutako SFDocuments liburutegian egiten da. Ikusi haren "Document" zerbitzua.

## Zerbitzuari deitzea

##### Basic lengoaian

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

##### Python lengoaian

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

## Propietateak

Izena | Irakurtzeko soilik | Mota | Deskribapena
ActiveWindow | Bai | String | WindowName baliozkoa eta bakarra uneko leiho aktiborako. Leihoa ezin bada identifikatu, zero luzerako kate bat itzuliko da.
Documents | Bai | String array | Unean irekitako dokumentuen zerrenda. Leiho bereziei ez ikusiarena egingo zaie. Zerrenda hori zeron oinarritutako dimentsio bakarreko matrize bat da, bai fitxategi-izenak dituena (SF_FileSystem.FileNaming notazioan) bai gorde gabeko dokumentuen leiho-izenburuak dituena.

## Konstanteak

Izena | Balioa | Deskribapena
MACROEXECALWAYS | 2 | Makroak beti exekutatzen dira
MACROEXECNEVER | 1 | Makroak ez dira inoiz exekutatzen
MACROEXECNORMAL | 0 | Makroen exekuzioa erabiltzaile-ezarpenen araberakoa da

### Adibidea:

Beheko adibideek unean irekitako dokumentu guztien izenak dituen MsgBox bat erakusten dute.

##### Basic lengoaian

          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

##### Python lengoaian

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

UI zerbitzuaren metodoen zerrenda
Activate CreateBaseDocument CreateDocument (*) GetDocument | Maximize Minimize OpenBaseDocument OpenDocument (*) | Resize SetStatusBar (*) ShowProgressBar WindowExists

Kontuan izan, salbuespen gisa, (*) markatutako metodoak ezin zaizkiela Base dokumentuei aplikatu.

## Activate

Bihurtu aktibo zehaztutako leihoa. Metodoak True itzuliko du emandako leihoa aurkitu bada eta aktibatu ahal izan bada. Ez da aldaketarik egongo uneko erabiltzaile-interfazean ez badago hautapenarekin bat datorren leihorik.

### Sintaxia:

svc.Activate(windowname: str): bool

### Parametroak:

windowname: Ikusi goiko definizioak.

### Adibidea:

##### Basic lengoaian

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

##### Python lengoaian

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

## CreateBaseDocument

Emandako motatako datu-base huts bat kapsulatuta duen LibreOffice Base dokumentu berria sortzen eta gordetzen du. Metodoak Document zerbitzuaren instantzia bat itzuliko du.

### Sintaxia:

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

### Parametroak:

filename: Sortuko den fitxategia identifikatzen du. SF_FileSystem.FileNaming notazioa jarraitu behar du. Fitxategia lehendik badago, gainidatzi egingo du inolako abisurik gabe.

embeddeddatabase: "HSQLDB" (lehenetsia), "FIREBIRD" edo "CALC".

registrationname: Datu-base berria datu-baseen erregistroa gordetzeko erabiliko den izena. Balioa = "" bada ez da erregistrorik egingo. Izena lehendik badago, gainidatzi egingo da abisurik gabe.

calcfilename: Soilik embeddeddatabase = "CALC" denean, calcfilename aldagaiak Calc orri gisako taulak dituen fitxategia adierazten du. Fitxategiak lehendik egon behar du, bestela errore bat sortuko da.

### Adibidea:

##### Basic lengoaian

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

##### Python lengoaian

         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 (*)

Mota jakin bateko LibreOffice dokumentu berria sortzen du emandako txantiloi batean oinarrituta. Metodoak dokumentu-objektu bat itzuliko du.

### Sintaxia:

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

### Parametroak:

documenttype : "Calc", "Writer", etab. Argumentu hori falta bada, templatefile argumentuak egon behar du.

templatefile: Dokumentu berria eraikitzeko erabiliko den txantiloiaren FileName osoa. Fitxategia ez badago lehendik, argumentuari ez ikusiarena egingo zaio. FileSystem zerbitzuak TemplatesFolder eta UserTemplatesFolder propietateak ematen ditu argumentua eraikitzen laguntzeko.

hidden: True bada, ireki dokumentu berria atzeko planoan (lehenetsia = False). Erabili kontuz: geroago hura aktibatu edo itxi nahi bada, programazio bidez egin beharko da.

### Adibidea:

Beheko bi adibideetan, CreateDocument metodoari egindako lehen deiak Calc dokumentu hutsa sortzen du, eta bigarrenak txantiloi-fitxategi batetik abiatuta sortzen du dokumentu bat.

##### Basic lengoaian

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

##### Python lengoaian

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

## GetDocument

Leiho aktiboari, emandako leiho bati edo dokumentu aktiboari erreferentzia egiten dion dokumentu-objektu bat itzultzen du.

### Sintaxia:

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

svc.GetDocument(windowname: uno): svc

### Parametroak:

windowname: Ikusi goiko definizioak. Argumentu hau ez badago, leiho aktiboa erabiliko da. com.sun.star.lang.XComponent edo com.sun.star.comp.dba.ODatabaseDocument motako UNO objektuak ere onartzen dira. Beraz, ThisComponent edo ThisDatabaseDocument argumentu gisa pasatzen bada, SFDocuments.Document, Base edo Calc zerbitzu berria sortuko da.

### Adibidea:

##### Basic lengoaian

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

##### Python lengoaian

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

Uneko leiho aktiboaren izena atzitzeko, erabili ActiveWindow propietatea.

## Maximize

Leiho aktiboa edo emandako leihoa maximizatzen du.

### Sintaxia:

svc.Maximize(windowname: str)

### Parametroak:

windowname: Ikusi definizioak goian. Argumentu hau falta bada, leiho aktiboa maximizatuko da.

### Adibidea:

##### Basic lengoaian

          ui.Maximize("Untitled 1")

##### Python lengoaian

         ui.Maximize("Untitled 1")

## Minimize

Leiho aktiboa edo emandako leihoa ikonotzen du.

### Sintaxia:

svc.Minimize(windowname: str)

### Parametroak:

windowname: Ikusi definizioak goian. Argumentu hau falta bada, leiho aktiboa ikonotuko da.

### Adibidea:

##### Basic lengoaian

         ui.Minimize()

##### Python lengoaian

         ui.Minimize()

## OpenBaseDocument

Ireki lehendik dagoen LibreOffice Base dokumentu bat. Metodoak dokumentu-objektu bat itzuliko du.

### Sintaxia:

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

### Parametroak:

filename: Irekiko den fitxategia identifikatzen du. SF_FileSystem.FileNaming notazioa jarraitu behar du. Fitxategia lehendik badago, gainidatzi egingo du abisurik gabe.

registrationname: Datu-basea datu-baseen erregistroan aurkitzeko erabiliko den izena. Ez ikusiarena egingo zaio FileName <> "" bada.

macroexecution: 0 = portaera erabiltzaile-konfigurazioak definituko du, 1 = makroak ez dira exekutagarriak, 2 = makroak exekutagarriak dira.

### Adibidea:

##### Basic lengoaian

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

##### Python lengoaian

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

Kodearen irakurgarritasuna hobetzeko, konstante aurredefinituak erabili daitezke macroexecution argumentuan, goiko adibideetan erakutsi den moduan.

## OpenDocument (*)

LibreOffice dokumentu bat irekitzen du emandako aukerekin. Dokumentu-objektu bat edo haren azpiklaseetako bat itzultzen du. Metodoak Nothing (Basic lengoaian) / None (Python lengoaian) itzuliko du irekitzeak huts egin bada, baita hutsegitea erabiltzailearen erabaki batek eragin badu ere.

### Sintaxia:

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

### Parametroak:

filename: Irekiko den fitxategia identifikatzen du. FileSystem zerbitzuaren FileNaming notazioa jarraitu behar du.

password: Dokumentua babestuta dagoenean erabili beharrekoa. Okerra bada edo falta bada dokumentua babestuta dagoenean, erabiltzaileari pasahitz bat sartu dezan eskatuko zaio.

readonly: Lehenetsia = False.

hidden: True bada, ireki dokumentu berria atzeko planoan (lehenetsia = False). Erabili kontuz, geroago dokumentua aktibatzea edo ixtea programazio bidez soilik egin baitaiteke.

macroexecution: 0 = portaera erabiltzaile-konfigurazioak definitzen du, 1 = makroak ez dira exekutagarriak, 2 = makroak exekutagarriak dira.

filtername: Dokumentua kargatzeko erabili beharko den iragazki baten izena. Argumentu hau ematen bada, iragazkiak existitu behar du.

filteroptions: Iragazkiari lotutako aukerak dituen kate bat.

### Adibidea:

##### Basic lengoaian

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

##### Python lengoaian

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

## Resize

Leiho aktiboaren tamaina edo lekua aldatzen du. Argumentua ez badago edo negatiboa bada, ez ikusiarena egingo zaio. Leihoa ikonotuta edo maximizatuta badago, Resize metodoari argumenturik gabe deitzen bazaio leihoa berrezarri egingo da.

### Sintaxia:

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

### Parametroak:

left, top: Goiko ezkerreko izkinaren distantziak pantailaren goiko eta ezkerreko ertzetara, pixeletan.

width, height: Leihoaren dimentsio berriak, pixeletan.

### Adibidea:

Hurrengo adibideetan, leihoaren width eta height parametroak aldatu egingo dira, baina top eta left aldaketarik gabe utziko dira.

##### Basic lengoaian

          ui.Resize(, ,500, 500)

##### Python lengoaian

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

Aktibo ez den leiho baten tamaina aldatzeko, lehenengo hura aktibatu behar da Activate metodoa erabilita.

## SetStatusbar (*)

Bistaratu testu bat eta aurrerapen-barra bat leiho aktiboaren egoera-barran. Makro berari egindako hurrengo deiek leiho bereko egoera-barra berari egingo diote erreferentzia, baita leihoa ikusgai ez badago ere. Deia argumenturik gabe egiten bada, egoera-barra egoera normalera itzuliko da.

### Sintaxia:

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

### Parametroak:

text: Aurrerapen-barraren aurrean bistaratuko den testu bat, aukerakoa.

percentage: Aurrerapen-maila, 0 eta 100 artekoa, aukerakoa.

### Adibidea:

##### Basic lengoaian

          Dim i As Integer
          For i = 0 To 100
              ui.SetStatusbar("Progress ...", i)
              Wait 50
          Next i
          ' Egoera-barra berrezartzen du
          ui.SetStatusbar

##### Python lengoaian

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

## ShowProgressBar

Elkarrizketa-koadro ez modal bat bistaratzen du. Zehazte bere izenburua, azalpen-testua eta aurrerapen-barrak adieraziko den aurrerapen-ehunekoa. Elkarrizketa-koadroa ikusgai egongo da metodoari argumenturik gabe deitu arte edo erabiltzaileak elkarrizketa-koadroa eskuz ixten duen arte.

### Sintaxia:

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

### Parametroak:

title: Elkarrizketa-koadroaren goiko aldean agertuko den izenburua. Lehenetsia = "ScriptForge".

text: Aurrerapen-barraren gainean bistaratuko den testu bat, aukerakoa.

percentage: Aurrerapen-maila, 0 eta 100 artekoa, aukerakoa.

### Adibidea:

##### Basic lengoaian

          Dim i As Integer
          For i = 0 To 100
              ui.ShowProgressBar("Window Title", "Progress ..." & i & "/100", i)
              Wait 50
          Next i
          ' Aurrerapen-barraren leihoa ixten du
          ui.ShowProgressBar

##### Python lengoaian

         from time import sleep
         for i in range(101):
             ui.ShowProgressBar("Window Title", "Progress ... " + str(i) + "/100", i)
             sleep(0.05)
         # Aurrerapen-barraren leihoa ixten du
         ui.ShowProgressBar()

## WindowExists

True itzuliko du emandako leihoa identifikatu badaiteke.

### Sintaxia:

svc.WindowExists(windowname: str): bool

### Parametroak:

windowname: Ikusi goiko definizioak.

### Adibidea:

##### Basic lengoaian

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

##### Python lengoaian

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

Erlazionatutako gaiak

ScriptForge.Basic zerbitzua

SFDocuments.Calc zerbitzua

SFDocuments.Document zerbitzua