ScriptForge.UI zerbitzua

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

tip

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


Definizioak

WindowName

Leiho bat adierazteko modu anitz daude:

Leiho-izenak maiuskulak/minuskulak bereizten ditu.

Document objektua

Behean deskribatutako CreateDocument, CreateBaseDocument, GetDocument, OpenBaseDocument eta OpenDocument metodoek dokumentu-objektuak sortzen dituzte. Leiho batek dokumentu bat duenean, Document klasearen instantzia batek dokumentu hori ordezkatzen du. Basic IDEaren pareko adibidea ez da dokumentu bat, baizik eta leiho bat, gure terminologian. Horrez gain, dokumentuek mota bat dute: Calc, Impress, Writer...

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

tip

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


Zerbitzuari deitzea

UI zerbitzua erabiltzeko, ScriptForge liburutegia kargatu edo inportatu behar da:

note

• Basic makroak erabiltzkeo, ScriptForge liburutegia kargatu behar da honako instrukzioa erabiliz:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python scriptak erabiltzeko, berriz, scriptforge modulu baten inportazioa behar dute:
from scriptforge import CreateScriptService


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.

Height

Bai

Integer

Leiho aktiboaren altuera, pixeletan, itzultzen du.

Width

Bai

Integer

Leiho aktiboaren zabalera, pixeletan, itzultzen du.

X

Bai

Integer

Leiho aktiboaren X koordenatua itzultzen du. Pantailaren ezkerreko ertzeraino dagoen distantzia da, pixeletan.

Y

Bai

Integer

Leiho aktiboaren Y koordenatua itzultzen du. Pantailaren goiko ertzeraino dagoen distantzia da, pixeletan. Balio horrek ez du kontuan hartzen sistema eragileak erantsitako leiho-apaingarriak; beraz, leihoa maximizatuta egon arren, balio horrek ez du zertan zero izan behar.


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

Maximize
Minimize
OpenBaseDocument
OpenDocument (*)
Resize

RunCommand
SetStatusBar (*)
ShowProgressBar
WindowExists


warning

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 : Identifies the file to create. It must follow the SF_FileSystem.FileNaming notation. If the file already exists, it is overwritten without warning.

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

Create a new LibreOffice document of a given type or based on a given template. The method returns an instance of the document class or one of its subclasses (Calc, Writer).

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")
fs = CreateScriptService("FileSystem")
myDoc2 = ui.CreateDocument(templatefile = fs.BuildPath(fs.TemplatesFolder, "personal/CV.ott"))

Documents

The list of the currently open documents. Special windows are ignored. This list consists of a zero-based one dimensional array either of filenames - using ScriptForge.FileSystem.FileNaming notation - or of window titles for unsaved documents.

Sintaxia:

svc.Documents(): str[1..*]

Adibidea:

In both examples below, the method may return an empty array if there are no documents open.

Basic lengoaian
Dim docList As Variant
docList = ui.Documents
Python lengoaian
docList = ui.Documents()

GetDocument

Returns an instance of the Document class or one of its subclasses (Calc, Writer, Base, FormDocument) referring to either a given window or the active document.

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
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
myDoc = ui.GetDocument(r"C:\Documents\My file.odt")
myDoc = ui.GetDocument(bas.ThisComponent)
tip

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

Open an existing LibreOffice Base document. The method returns a Base object.

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.

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

macroexecution: 0 = behaviour is defined by the user configuration, 1 = macros are not executable, 2 = macros are executable. Default is 0.

Adibidea:

Basic lengoaian
Dim myBase As Object
Set myBase = ui.OpenBaseDocument("C:\Documents\myDB.odb", MacroExecution := ui.MACROEXECALWAYS)
Python lengoaian
myBase = 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 (*)

Lehendik dagoen LibreOffice dokumentu bat irekitzen du emandako aukerekin. Dokumentu objektu bat edo haren azpiklaseetako bat itzultzen du. Metodoak Nothing (Basic lengoaian) edo None (Python lengoaian) itzultzen du irekitzeak huts egiten badu, baita huts egitea 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 = behaviour is defined by the user configuration, 1 = macros are not executable, 2 = macros are executable. Default is 0.

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
myDoc = 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(Width := 500, Height := 500)
Python lengoaian
ui.Resize(width = 500, height = 500)
tip

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


RunCommand

UNO komando bat exekutatzen du uneko leihoan. Komando arruntenetako batzuk: Save, SaveAs, ExportToPDF, Undo, Copy, Paste, etab.

Komandoak argumentuekin edo argumenturik gabe exekutatu daitezke. Argumentuak ez dira balioztatzen exekuzioaren aurretik. Komandoa edo bere argumentuak baliogabeak badira, ez da ezer gertatuko.

tip

LibreOffice aplikazioan exekutatu daitezkeen UNO komandoen zerrenda osoa ezagutzeko, begiratu wikiko Development/DispatchCommands orria.


Sintaxia:

svc.RunCommand(command: str, [args: any])

Parametroak:

command: UNO komandoaren izena duen katea, maiuskulak/minuskulak bereizten dituena. Komandoan ".uno:" aurrizkia sartu daiteke. Ez da egiaztatzen komandoa bera zuzena denik. Komandoari deitu ondoren ez bada ezer gertatzen, seguru asko komandoa gaizki idatzita dago.

args: Komandoari pasatutako argumentu bakoitzeko, zehaztu argumentuaren izena eta balioa dituen bikote bat.

Adibidea:

Basic lengoaian

Hurrengo adibidean .uno:About komandoa erabiltzen da uneko leihoan.

Set ui = CreateScriptService("UI")
ui.RunCommand("About")

Beheko adibidean, .uno:BasicIDEAppear UNO komandoa exekutatzen da eta modulu baten lerro zehatz batean Basic IDE bat irekitzeko behar diren argumentuak pasatzen dira.

' Komandoari pasatutako argumentuak:
' Document  = "LibreOffice Macros & Dialogs"
' LibName = "ScriptForge"
' Name = "SF_Session"
' Line = 600
ui.RunCommand(".uno:BasicIDEAppear", "Document", "LibreOffice Macros & Dialogs", _
              "LibName", "ScriptForge", "Name", "SF_Session", "Line", 600)

Kontuan izan BasicIDEAppear komandoari argumenturik gabe deitzen bazaio Basic IDEa irekiko dela.

Python lengoaian
ui = CreateScriptService("UI")
ui.RunCommand("About")
ui.RunCommand(".uno:BasicIDEAppear", "Document", "LibreOffice Macros & Dialogs", \
              "LibName", "ScriptForge", "Name", "SF_Session", "Line", 600)

Python lengoaian RunCommand komandoari deitu dakioke honako gako-hitzak erabiliz:

ui.RunCommand(".uno:BasicIDEAppear", Document = "LibreOffice Macros & Dialogs", \
              LibName = "ScriptForge", Name = "SF_Session", Line = 600)
tip

LibreOffice osagai bakoitzak bere komando multzoa du. Komandoak erraz ikasteko, joan Tresnak - Pertsonalizatu - Teklatua aukerara. Sagua Funtzioa zerrendako funtzio baten gainean kokatzean, aholku bat agertuko da hari dagokion UNO komandoa erakutsiz.


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: int = -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"):
    # ...

Emaguzu laguntza!