ScriptForge . UI serbisyo

Pinapasimple ng serbisyo ng UI (User Interface) ang pagkakakilanlan at pagmamanipula ng iba't ibang mga window na bumubuo sa buong LibreOffice application:

tip

Ang serbisyo ng UI ay ang panimulang punto upang magbukas, gumawa o mag-access sa nilalaman ng bago o umiiral na mga dokumento mula sa isang script ng user.


Mga Kahulugan

WindowName

Maaaring italaga ang isang window gamit ang iba't ibang paraan:

Case-sensitive ang pangalan ng window.

Bagay sa dokumento

Ang mga pamamaraan Lumikha ng Dokumento , CreateBaseDocument , GetDocument , OpenBaseDocument at OpenDocument , na inilarawan sa ibaba, bumuo ng mga bagay na dokumento. Kapag ang isang window ay naglalaman ng isang dokumento, isang halimbawa ng Dokumento kinakatawan ng klase ang dokumentong iyon. Ang isang counterexample na ang Basic IDE ay hindi isang dokumento ngunit isang window sa aming terminolohiya. Bilang karagdagan, ang isang dokumento ay may uri: Calc , Impress , Manunulat ,...

Ang mga partikular na katangian at pamamaraan na naaangkop sa mga dokumento ay ipinatupad sa isang klase ng dokumento.

tip

Ang pagpapatupad ng klase ng mga object ng dokumento ay ginagawa sa Mga SFDocuments nauugnay na aklatan. Tingnan mo" Dokumento "serbisyo.


Panawagan sa serbisyo

Bago gamitin ang UI serbisyo ang ScriptForge kailangang i-load o i-import ang library:

note

• Ang mga pangunahing macro ay kailangang mag-load ScriptForge aklatan gamit ang sumusunod na pahayag:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Ang mga script ng Python ay nangangailangan ng pag-import mula sa scriptforge module:
mula sa scriptforge import CreateScriptService


Sa Basic

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

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

Mga Katangian

Pangalan

ReadOnly

Type

Mga nilalaman

ActiveWindow

Mayroon

String

isang wasto at natatangi WindowName para sa kasalukuyang aktibong window. Kapag hindi matukoy ang window, ibabalik ang isang zero-length na string.

Height

Mayroon

Integer

Ibinabalik ang taas ng aktibong window sa mga pixel.

Width

Mayroon

Integer

Ibinabalik ang lapad ng aktibong window sa mga pixel.

X

Mayroon

Integer

Ibinabalik ang X coordinate ng aktibong window, na ang distansya sa kaliwang gilid ng screen sa mga pixel.

Y

Mayroon

Integer

Ibinabalik ang Y coordinate ng aktibong window, na ang distansya sa tuktok na gilid ng screen sa mga pixel. Ang halagang ito ay hindi isinasaalang-alang ang mga dekorasyon sa bintana na idinagdag ng iyong operating system, kaya kahit na ang window ay na-maximize ang halagang ito ay maaaring hindi zero.


Mga Constant

Pangalan

Halaga

Mga nilalaman

MACROEXECALWAYS

2

Ang mga macro ay palaging isinasagawa

MACROEXECNEVER

1

Ang mga macro ay hindi kailanman naisasagawa

MACROEXECNORMAL

0

Ang macro execution ay depende sa mga setting ng user


Halimbawa:

Ang mga halimbawa sa ibaba ay nagpapakita ng a MsgBox kasama ang mga pangalan ng lahat ng kasalukuyang bukas na dokumento.

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

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

Listahan ng Mga Paraan sa Serbisyo ng UI

Activate
CreateBaseDocument
CreateDocument (*)
Documents
GetDocument

Maximize
Minimize
OpenBaseDocument
OpenDocument (*)
Resize

RunCommand
SetStatusBar (*)
ShowProgressBar
WindowExists


warning

Tandaan, bilang isang pagbubukod, na ang mga pamamaraan ay minarkahan (*) ay hindi naaangkop sa mga Base na dokumento .


Activate

Gawing aktibo ang tinukoy na window. Nagbabalik ang pamamaraan totoo kung ang ibinigay na window ay natagpuan at maaaring i-activate. Walang pagbabago sa aktwal na user interface kung walang window na tumutugma sa pagpili.

Syntax:

svc.Activate(windowname: str): bool

Mga Parameter:

windowname : tingnan ang mga kahulugan sa itaas.

Halimbawa:

Sa Basic

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

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

CreateBaseDocument

Gumagawa at nag-iimbak ng bagong LibreOffice Base na dokumento na nag-e-embed ng walang laman na database ng ibinigay na uri. Ang pamamaraan ay nagbabalik a Dokumento halimbawa ng serbisyo.

Syntax:

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

Mga Parameter:

filename : Tinutukoy ang file na gagawin. Dapat itong sundin ang SF_FileSystem.FileNaming notasyon. Kung ang file ay mayroon na, ito ay mapapatungan nang walang babala.

embeddeddatabase : Alinman sa "HSQLDB" (default), "FIREBIRD" o "CALC".

pangalan ng pagpaparehistro : Ang pangalan na ginamit upang iimbak ang bagong database sa rehistro ng mga database. Kapag = "" (default), walang pagpaparehistro na nagaganap. Kung ang pangalan ay mayroon na ito ay na-overwrite nang walang babala.

calcfilename : Kailan lang embeddeddatabase = "CALC", calcfilename kumakatawan sa file na naglalaman ng mga talahanayan bilang mga Calc sheet. Ang file ay dapat na umiiral o isang error ay nakataas.

Halimbawa:

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

Gumawa ng bagong LibreOffice na dokumento ng isang partikular na uri o batay sa isang ibinigay na template. Ang pamamaraan ay nagbabalik ng isang halimbawa ng klase ng dokumento o isa sa mga subclass nito (Calc, Writer).

Syntax:

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

Mga Parameter:

uri ng dokumento : "Calc", "Writer", atbp. Kung wala, ang templatefile dapat na naroroon ang argumento.

templatefile : Ang puno FileName ng template kung saan buuin ang bagong dokumento. Kung ang file ay hindi umiiral, ang argumento ay hindi papansinin. Ang FileSystem nagbibigay ng serbisyo ang TemplatesFolder at UserTemplatesFolder mga katangian upang makatulong sa pagbuo ng argumento.

nakatago : kung totoo , buksan ang bagong dokumento sa background (default = Mali ). Upang gamitin nang may pag-iingat: ang pag-activate o pagsasara pagkatapos ay maaari lamang mangyari sa pamamagitan ng program.

Halimbawa:

Sa parehong mga halimbawa sa ibaba, ang unang tawag sa Lumikha ng Dokumento paraan ay lumilikha ng isang blangkong dokumento ng Calc, samantalang ang pangalawa ay lumilikha ng isang dokumento mula sa isang template file.

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

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

Documents

Ang listahan ng mga kasalukuyang bukas na dokumento. Ang mga espesyal na bintana ay hindi pinapansin. Ang listahang ito ay binubuo ng zero-based one dimensional array alinman sa mga filename - gamit ScriptForge.FileSystem.FileNaming notasyon - o ng mga pamagat ng window para sa mga hindi na-save na dokumento.

Syntax:

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

Halimbawa:

Sa parehong mga halimbawa sa ibaba, ang pamamaraan ay maaaring magbalik ng isang walang laman na array kung walang mga dokumentong bukas.

Sa Basic

      Dim docList As Variant
      docList = ui.Documents
   
Sa Python

     docList = ui.Documents()
   

GetDocument

Nagbabalik ng isang instance ng klase ng Dokumento o isa sa mga subclass nito (Calc, Writer, Base, FormDocument) na tumutukoy sa alinman sa ibinigay na window o sa aktibong dokumento.

Syntax:

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

svc.GetDocument(windowname: uno): svc

Mga Parameter:

windowname : Tingnan ang mga kahulugan sa itaas . Kung ang argument na ito ay wala, ang aktibong window ay ginagamit. Mga bagay ng UNO ng mga uri com.sun.star.lang.XComponent o com.sun.star.comp.dba.ODatabaseDocument tinatanggap din. Kaya dumaan ThisComponent o ThisDatabaseDocument habang lumilikha ng bago ang argumento SFDocuments.Document , Base o Calc serbisyo.

Halimbawa:

Sa Basic

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

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

Upang ma-access ang pangalan ng kasalukuyang aktibong window, sumangguni sa ActiveWindow ari-arian.


Maximize

Pina-maximize ang aktibong window o ang ibinigay na window.

Syntax:

svc.Maximize(windowname: str)

Mga Parameter:

windowname : tingnan ang mga kahulugan sa itaas . Kung wala ang argumentong ito, ang aktibong window ay ma-maximize.

Halimbawa:

Sa Basic

      ui.Maximize("Untitled 1")
   
Sa Python

     ui.Maximize("Untitled 1")
   

Minimize

Pinaliit ang aktibong window o ang ibinigay na window.

Syntax:

svc.Minimize(windowname: str)

Mga Parameter:

windowname : tingnan ang mga kahulugan sa itaas . Kung wala ang argumentong ito, mababawasan ang aktibong window.

Halimbawa:

Sa Basic

     ui.Minimize()
   
Sa Python

     ui.Minimize()
   

OpenBaseDocument

Magbukas ng kasalukuyang LibreOffice Base na dokumento. Ang pamamaraan ay nagbabalik a Base bagay.

Syntax:

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

Mga Parameter:

filename : Tinutukoy ang file na bubuksan. Dapat itong sundin ang SF_FileSystem.FileNaming notasyon.

pangalan ng pagpaparehistro : Ang pangalan na gagamitin upang mahanap ang database sa rehistro ng mga database. Hindi pinapansin kung FileName <> "".

macroexecution : 0 = ang pag-uugali ay tinukoy ng configuration ng user, 1 = macros ay hindi maipapatupad, 2 = macros ay executable. Ang default ay 0.

Halimbawa:

Sa Basic

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

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

Upang mapabuti ang pagiging madaling mabasa ng code na magagamit mo paunang-natukoy na mga pare-pareho para sa macroexecution argumento, tulad ng sa mga halimbawa sa itaas.


OpenDocument (*)

Nagbubukas ng isang umiiral na dokumento ng LibreOffice na may mga ibinigay na opsyon. Nagbabalik ng object ng dokumento o isa sa mga subclass nito. Ang pamamaraan ay nagbabalik wala (sa BASIC) o wala (sa Python) kung nabigo ang pagbubukas, kahit na ang pagkabigo ay sanhi ng desisyon ng user.

Syntax:

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

Mga Parameter:

filename : Tinutukoy ang file na bubuksan. Dapat itong sundin ang FileNaming notasyon ng FileSystem serbisyo.

password : Upang gamitin kapag ang dokumento ay protektado. Kung mali o wala habang protektado ang dokumento, ipo-prompt ang user na magpasok ng password.

readonly : Default = Mali .

nakatago : kung totoo , buksan ang bagong dokumento sa background (default = Mali ). Upang gamitin nang may pag-iingat: ang pag-activate o pagsasara pagkatapos ay maaari lamang mangyari sa pamamagitan ng program.

macroexecution : 0 = ang pag-uugali ay tinukoy ng configuration ng user, 1 = macros ay hindi maipapatupad, 2 = macros ay executable. Ang default ay 0.

filtername : Ang pangalan ng isang filter na dapat gamitin para sa pag-load ng dokumento. Kung mayroon, ang filter ay dapat na umiiral.

mga pagpipilian sa filter : Isang opsyonal na string ng mga opsyon na nauugnay sa filter.

Halimbawa:

Sa Basic

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

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

Resize

Binabago ang laki at/o inililipat ang aktibong window. Ang wala at negatibong mga argumento ay binabalewala. Kung ang window ay pinaliit o pinalaki, tumatawag Baguhin ang laki walang argumento ibinabalik ito.

Syntax:

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

Mga Parameter:

kaliwa, itaas : Mga distansya ng kaliwang sulok sa itaas mula sa itaas at kaliwang gilid ng screen, sa mga pixel.

lapad, taas : Mga bagong sukat ng window, sa mga pixel.

Halimbawa:

Sa mga sumusunod na halimbawa, ang lapad at taas ng bintana ay binago habang itaas at umalis ay naiwang hindi nagbabago.

Sa Basic

      ui.Resize(Width := 500, Height := 500)
   
Sa Python

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

Upang baguhin ang laki ng isang window na hindi aktibo, i-activate muna ito gamit ang I-activate paraan.


RunCommand

Nagpapatakbo ng UNO command sa kasalukuyang window. Ang ilang karaniwang mga utos ay: Save, SaveAs, ExportToPDF, Undo, Copy, Paste, atbp.

Ang mga utos ay maaaring patakbuhin nang may mga argumento o walang. Ang mga argumento ay hindi napatunayan bago patakbuhin ang utos. Kung ang utos o ang mga argumento nito ay hindi wasto, kung gayon walang mangyayari.

tip

Para sa kumpletong listahan ng mga utos ng UNO na maaaring patakbuhin sa LibreOffice, sumangguni sa pahina ng Wiki Development/DispatchCommands .


Syntax:

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

Mga Parameter:

utos : Case-sensitive na string na naglalaman ng UNO command name. Opsyonal ang pagsasama ng prefix na ".uno:" sa command. Ang utos mismo ay hindi sinusuri para sa kawastuhan. Kung walang nangyari pagkatapos ng command call, malamang na mali ang command.

args : Para sa bawat argument na ipapasa sa command, tukuyin ang isang pares na naglalaman ng pangalan ng argumento at halaga.

Halimbawa:

Sa Basic

Ang sumusunod na halimbawa ay nagpapatakbo ng .uno:Tungkol sa command sa kasalukuyang window.


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

Nasa ibaba ang isang halimbawa na nagpapatakbo ng UNO command .uno:BasicIDEAppear at ipinapasa ang mga argumentong kinakailangan upang buksan ang Basic IDE sa isang partikular na linya ng isang module.


    ' Ang mga argumento ay ipinasa sa utos:
    ' 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)
  

Tandaan na ang pagtawag sa command BasicIDEAppear walang argumento ay magbubukas lamang ng Pangunahing IDE .

Sa Python

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

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

Sa Python posible ring tumawag RunCommand gamit ang mga argumento ng keyword:


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

Ang bawat bahagi ng LibreOffice ay may sariling hanay ng mga command na magagamit. Ang isang madaling paraan upang matutunan ang mga utos ay pupunta Mga Tool - I-customize - Keyboard . Kapag ipinwesto mo ang iyong mouse sa ibabaw ng isang function sa Function list, lalabas ang isang tooltip kasama ang kaukulang utos ng UNO.


SetStatusbar (*)

Magpakita ng text at progressbar sa status bar ng aktibong window. Anumang mga kasunod na tawag sa parehong macro run ay tumutukoy sa parehong status bar ng parehong window, kahit na ang window ay hindi na nakikita. Ang isang tawag na walang argumento ay nire-reset ang status bar sa normal nitong estado.

Syntax:

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

Mga Parameter:

text : Isang opsyonal na text na ipapakita sa harap ng progress bar.

porsyento : isang opsyonal na antas ng pag-unlad sa pagitan ng 0 at 100.

Halimbawa:

Sa Basic

      Dim i As Integer
      For i = 0 To 100
          ui.SetStatusbar("Progress ...", i)
          Wait 50
      Next i
      ' Nire-reset ang statusbar
      ui.SetStatusbar
   
Sa Python

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

ShowProgressBar

Nagpapakita ng non-modal na dialog box. Tukuyin ang pamagat nito, isang paliwanag na teksto at isang porsyento ng progreso na ipapakita sa isang progressbar. Ang dialog ay mananatiling nakikita hanggang sa isang tawag sa pamamaraan na walang mga argumento o hanggang sa manu-manong isara ng user ang dialog.

Syntax:

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

Mga Parameter:

pamagat : Ang pamagat na lumalabas sa ibabaw ng dialog box. Default = "ScriptForge".

text : Isang opsyonal na text na ipapakita sa itaas ng progress bar.

porsyento : isang opsyonal na antas ng pag-unlad sa pagitan ng 0 at 100.

Halimbawa:

Sa Basic

      Dim i As Integer
      For i = 0 To 100
          ui.ShowProgressBar("Window Title", "Progress ..." & i & "/100", i)
          Wait 50
      Next i
      ' Isinasara ang window ng Progress Bar
      ui.ShowProgressBar
   
Sa Python

     from time import sleep
     for i in range(101):
         ui.ShowProgressBar("Window Title", "Progress ... " + str(i) + "/100", i)
         sleep(0.05)
     # Isinasara ang window ng Progress Bar
     ui.ShowProgressBar()
   

WindowExists

Nagbabalik totoo kung makikilala ang ibinigay na window.

Syntax:

svc.WindowExists(windowname: str): bool

Mga Parameter:

windowname : tingnan ang mga kahulugan sa itaas.

Halimbawa:

Sa Basic

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

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

Mangyaring suportahan kami!