Storitev SFWidgets.Menu

Storitev Menu lahko uporabite za ustvarjanje in odstranjevanje menijev v menijski vrstici okna dokumenta LibreOffice. Vsak menijski vnos lahko povežete s skriptom ali ukazom UNO. Ta storitev ponuja naslednje zmogljivosti:

note

Meniji, ustvarjeni s to storitvijo, so na voljo le v navedenem oknu dokumenta. Ne shranijo se v dokument, tudi kot nastavitve programa ne. Če zaprete in odprete dokument, s tem obnovite privzete nastavitve menijske vrstice.


warning

Če predmete OLE, kot so formule programa Math ali grafikoni programa Calc, urejamo v dokumentu, LibreOffice prilagodi menijsko vrstico glede na predmet. Ko se to zgodi, se meniji, ustvarjeni s storitvijo Menu, odstranijo in se več ne obnovijo, ko je urejanje predmeta OLE zaključeno.


Priklic storitve

Pred uporabo storitve Menu je potrebno naložiti ali uvoziti knjižnico ScriptForge:

note

• Za makre Basic mora biti naložena knjižnica ScriptForge z naslednjim ukazom:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Za skripte Python mora biti opravljen uvoz iz modula scriptforge:
from scriptforge import CreateScriptService


V Basicu

Instanco storitve Menu lahko tvorite s klicem metode CreateMenu iz storitve Document. Spodnji odlomek kode ustvari meni Moj meni v oknu trenutnega dokumenta z dvema vnosoma, Element A in Element B.


    Sub CreateMenu()
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim oDoc as Object, oMenu as Object
        Set oDoc = CreateScriptService("Document")
        Set oMenu = oDoc.CreateMenu("Moj meni")
        With oMenu
            .AddItem("Element A", Command := "About")
            .AddItem("Element B", Script := "vnd.sun.star.script:Standard.Module1.ItemB_Listener?language=Basic&location=application")
            .Dispose()
        End With
    End Sub
  
note

Po izdelavi menija je priporočeno, da pokličete metodo Dispose, da sprostite vire, ki jih uporablja instanca storitve Menu.


V zgornjem primeru je Element A povezan z ukazom UNO .uno:About, medtem ko je Element B povezan s skriptom ItemB_Listener, določenim v Modul1 knjižnice Standardno vsebnika Moji Makri.

Naslednji primer določi ItemB_Listener, ki bo klican, ko je kliknjen Element B. Ta poslušalec enostavno razdeli niz, podan v Sub, na argumente in jih prikaže v pojavnem oknu.


    Sub ItemB_Listener(args As String)
        ' Obdelaj niz argumentov, podan poslušalcu
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Ime menija: " & sArgs(0) & Chr(13) & _
               "Element menija: " & sArgs(1) & Chr(13) & _
               "ID elementa= " & sArgs(2) & Chr(13) & _
               "Stanje elementa: " & sArgs(3)
    End Sub
  

Kot prikazuje zgornji primer, prejmejo menijski vnosi, povezani s skriptom, argument kot niz, ločen z vejicami, z naslednjimi vrednostmi:

V Pythonu

Zgornje primere lahko zapišemo v Pythonu na sledeč način:


    from scriptforge import CreateScriptService
    
    def create_menu(args=None):
        oDoc = CreateScriptService("Document")
        oMenu = oDoc.CreateMenu("My Menu")
        oMenu.AddItem("Item A", command="About")
        oMenu.AddItem("Item B", script="vnd.sun.star.script:my_macros.py$item_b_listener?language=Python&location=user")
        oMenu.Dispose()
  

    def item_b_listener(args):
        bas = CreateScriptService("Basic")
        s_args = args.split(",")
        msg = f"Ime menija: {s_args[0]}\n"
        msg += f"Element menija: {s_args[1]}\n"
        msg += f"ID elementa: {s_args[2]}\n"
        msg += f"Stanje elementa: {s_args[3]}"
        bas.MsgBox(msg)
  

Lastnosti

Ime

Samo za branje

Vrsta

Opis

ShortcutCharacter

Ne

String

Znak, ki določa dostopno tipko za menijski element. Privzeta vrednost je »~«.

SubmenuCharacter

Ne

String

Znak ali niz, ki določa, kako so elementi menija gnezdeni. Privzeti znak je »>«.


Meni in podmeniji

Za izdelavo menija s podmeniji uporabite znak, določen z lastnostjo SubmenuCharacter, medtem ko ustvarjate menijski vnos z določitvijo, kam bo postavljen. Razmislite npr. o naslednji hierarhiji menija/podmenijev.


    ' Item A
    ' Item B > Item B.1
    '          Item B.2
    ' ------ (line separator)
    ' Item C > Item C.1 > Item C.1.1
    '                     Item C.1.2
    ' Item C > Item C.2 > Item C.2.1
    '                     Item C.2.2
    '                     ------ (line separator)
    '                     Item C.2.3
    '                     Item C.2.4
  

Spodnja koda uporablja privzeti znak podmenija »>« za tvorbo zgoraj določene hierarhije menija/podmenijev:


    oMenu.AddItem("Item A")
    oMenu.AddItem("Item B>Item B.1")
    oMenu.AddItem("Item B>Item B.2")
    oMenu.AddItem("---")
    oMenu.AddItem("Item C>Item C.1>Item C.1.1")
    oMenu.AddItem("Item C>Item C.1>Item C.1.2")
    oMenu.AddItem("Item C>Item C.2>Item C.2.1")
    oMenu.AddItem("Item C>Item C.2>Item C.2.2")
    oMenu.AddItem("Item C>Item C.2>---")
    oMenu.AddItem("Item C>Item C.2>Item C.2.3")
    oMenu.AddItem("Item C>Item C.2>Item C.2.4")
  
note

Niz --- je uporabljen za določitev črtnih ločil v menijih in podmenijih.


Uporaba ikon

Elementi menija imajo lahko ikone, ki so določene kot argumenti metod AddCheckBox, AddItem in AddRadioButton.

Uporabite lahko vse ikone, ki so na voljo v LibreOffice, tako da določite njihovo pot relativno glede na mapo, kjer se nahajajo datoteke ikon v namestitveni mapi. Ikone se nahajajo v naslednji mapi:

INSTALLDIR/share/config

tip

Uporabite lastnost InstallFolder storitve FileSystem, da ugotovite, kje na vašem sistemu je nameščen LibreOffice.


Ta mapa vsebuje niz datotek ZIP, ki vsebujejo slikovne datoteke vseh naborov ikon, ki so na voljo. Slike v teh datotekah ZIP so organizirane v mape. Če želite uporabiti ikono, navedite datoteko ikone s potjo do njenega mesta v datoteki ZIP.

Spodnji primer uporablja ikono »sc_newdoc.svg«, ki se nahaja v mapi »cmd«. Znak poševnice »/« se uporablja kot ločilo v poteh, ne glede na uporabljeni operacijski sistem.

V Basicu

      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
V Pythonu

      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    
note

Vsi nabori ikon imajo isto interno strukturo. Dejansko prikazana ikona je odvisna od trenutno uporabljenega nabora ikon.


Metode

Seznam metod storitve Menu

AddCheckBox

AddItem

AddRadioButton


AddCheckBox

V meni vstavi potrditveno polje. Vrne celoštevilsko vrednost, ki identificira vstavljeni element.

Skladnja:

svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int

Parametri:

menuitem: določa besedilo, ki bo prikazano v meniju. Ta argument definira tudi hierarhijo elementa v meniju z uporabo znaka za podmeni.

name: vrednost niza, ki identificira element menija. Privzeto je uporabljena zadnja komponenta hierarhije menija.

status: določa, ali je element izbran, ko je ustvarjen meni (privzeta vrednost je False).

icon: pot in ime ikone, ki bo prikazana, brez vodilnega ločila poti. Dejansko prikazana ikona je odvisna od uporabljenega nabora ikon.

tooltip: besedilo, ki bo prikazano kot namig.

command: ime ukaza UNO brez predpone .uno:. Če ime ukaza ne obstaja, se ne zgodi nič.

script: URI za skript Basic oz. Python, ki bo izvršen, ko se zgodi klik elementa.

note

Argumenta command in script sta vzajemno izključujoča, zato lahko za vsak element menija nastavite le enega izmed njiju.


tip

Če želite izvedeti več o skladnji URI, uporabljeni v argumentu script, si oglejte specifikacijo URI na wiki-strani specifikacije URI za ogrodje skriptanja (v angl.).


Primer:

V Basicu

      ' Menijski vnos, povezan z ukazom .uno:Paste
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      ' Zažene skript Basic Standard.Module1.MyListener, shranjen v dokumentu
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' Zažene skript Python MyListener, ki se nahaja v datoteki myScripts.py v mapi uporabniških skriptov
      oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    
V Pythonu

      oMenu.AddCheckBox("Item A", status=True, tooltip="Paste values", command="Paste")
      oMenu.AddCheckBox("Item B", status=False, script="vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      oMenu.AddCheckBox("Item C", Status=True, Script="vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    

AddItem

V meni vstavi oznako kot vnos. Vrne celoštevilsko vrednost, ki identificira vstavljeni element.

Skladnja:

svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int

Parametri:

menuitem: določa besedilo, ki bo prikazano v meniju. Ta argument definira tudi hierarhijo elementa v meniju z uporabo znaka za podmeni.

name: vrednost niza, ki bo vrnjena ob kliku elementa. Privzeto je uporabljena zadnja komponenta hierarhije menija.

icon: pot in ime ikone, ki bo prikazana, brez vodilnega ločila poti. Dejansko prikazana ikona je odvisna od uporabljenega nabora ikon.

tooltip: besedilo, ki bo prikazano kot namig.

command: ime ukaza UNO brez predpone .uno:. Če ime ukaza ne obstaja, se ne zgodi nič.

script: URI za skript Basic oz. Python, ki bo izvršen, ko se zgodi klik elementa.

note

Argumenta command in script sta vzajemno izključujoča, zato lahko za vsak element menija nastavite le enega izmed njiju.


tip

Če želite izvedeti več o skladnji URI, uporabljeni v argumentu script, si oglejte specifikacijo URI na wiki-strani specifikacije URI za ogrodje skriptanja (v angl.).


Primer:

V Basicu

      oMenu.AddItem("Element A", Tooltip := "Opisno sporočilo")
    
V Pythonu

      oMenu.AddItem("Element A", tooltip := "Opisno sporočilo")
    

AddRadioButton

V meni vstavi izbirni gumb. Vrne celoštevilsko vrednost, ki identificira vstavljeni element.

Skladnja:

svc.AddRadioButton(menuitem: str, opt name: str, opt status: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int

Parametri:

menuitem: določa besedilo, ki bo prikazano v meniju. Ta argument definira tudi hierarhijo elementa v meniju z uporabo znaka za podmeni.

name: vrednost niza, ki bo vrnjena ob kliku elementa. Privzeto je uporabljena zadnja komponenta hierarhije menija.

status: določa, ali je element izbran, ko je ustvarjen meni (privzeta vrednost je False).

icon: pot in ime ikone, ki bo prikazana, brez vodilnega ločila poti. Dejansko prikazana ikona je odvisna od uporabljenega nabora ikon.

tooltip: besedilo, ki bo prikazano kot namig.

command: ime ukaza UNO brez predpone .uno:. Če ime ukaza ne obstaja, se ne zgodi nič.

script: URI za skript Basic oz. Python, ki bo izvršen, ko se zgodi klik elementa.

note

Argumenta command in script sta vzajemno izključujoča, zato lahko za vsak element menija nastavite le enega izmed njiju.


tip

Če želite izvedeti več o skladnji URI, uporabljeni v argumentu script, si oglejte specifikacijo URI na wiki-strani specifikacije URI za ogrodje skriptanja (v angl.).


Primer:

V Basicu

      oMenu.AddRadioButton("Item A", Name := "A", Status := True)
    
V Pythonu

      oMenu.AddRadioButton("Item A", name="A", status=True)
    
warning

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic ali skriptih Python niso namenjeni.


Podprite nas!