Słužba SFWidgets.Menu

Słužba Menu da so wužiwać, zo by menije z menijoweje lajsty dokumentoweho wokna LibreOffice wutworiła a wotstroniła. Kóždy menijowy zapisk da so ze skriptom abo z přikazom UNO zwjazać. Tuta słužba slědowace móžnosće skići:

note

Menije, kotrež su so z tutej słužbu wutworili, su jenož za podate dokumentowe wokno k dispoziciji. Njeskładuja w dokumenće abo jako nałoženske nastajenja. Hdyž dokument začinjeće a wočinjeće, so standardne nastajenja menijoweje lajsty wobnowjeja.


warning

Hdyž so objekty OLE kaž formle Math abo diagramy Calc w dokumenće wobdźěłuja, LibreOffice menijowu lajstu po objekće znowa konfiguruje. Hdyž so to stawa, so menije, kotrež su so ze słužbu Menu wutworili, wotstronjeja a so po wobdźěłowanju objekta OLE njewobnowjeja.


Słužbowe wuwołanje

Před wužiwanjom słužby Menu dyrbi so biblioteka ScriptForge začitać abo importować:

note

• Makra Basic sej wužaduja, zo so biblioteka ScriptForge z pomocu slědowaceho přikaza začituje:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Skripty Python sej import z modula scriptforge wužaduja:
from scriptforge import CreateScriptService


W Basic

Słužba Menu instancuje, hdyž so metoda CreateMenu ze słužby Document wuwołuje. Slědowaca kodowa šlipka meni z mjenom Mój meni w aktualnym dokumentowym woknje z dwěmaj zapiskomaj Zapisk A a Zapisk B wutworja.


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

Po wutworjenju menija so poruča, metodu Dispose wuwołać, zo bychu so resursy wuswobodźili, kotrež so přez słužbowu instancu Menu wužiwaja.


W přikładźe horjeka je Zapisk A z přikazom UNO .uno:About zwjazany, mjeztym zo Zapisk B je ze skriptom ItemB_Listener, kotryž je w Module1 biblioteki Standard kontejnera My Macros definowany.

Slědowacy přikład ItemB_Listener definuje, kotryž so wuwołuje, hdyž so na Zapisk B klika. Tutón posłuchar prosće znamješkowy rjećazk argumenta rozdźěluje, kotryž so Sub přepodawa a pokazuje je w zdźělenskim polu.


    Sub ItemB_Listener(args As String)
        ' Znamješkowy rjećazk předźěłać, kotryž so posłucharjej přepodawa
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Menijowe mjeno: " & sArgs(0) & Chr(13) & _
               "Menijowy zapisk: " & sArgs(1) & Chr(13) & _
               "Zapiskowy ID: " & sArgs(2) & Chr(13) & _
               "Zapiskowy status: " & sArgs(3)
    End Sub
  

Kak so w přikładźe horjeka pokazuje, dóstawaja menijowe zapiski, kotrež su ze skriptom zwjazane, přez komu dźěleny znamješkowy rjećazk argumenta ze slědowacymi hódnotami:

W Python

Přikłady horjeka hodźa so w Python takle pisać:


    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"Menijowe mjeno: {s_args[0]}\n"
        msg += f"Menijowe zapisk: {s_args[1]}\n"
        msg += f"Zapiskowy ID: {s_args[2]}\n"
        msg += f"Zapiskowy status: {s_args[3]}"
        bas.MsgBox(msg)
  

Kajkosće

Mjeno

Přećiwo pisanju škitany

Typ

Wopisanje

ShortcutCharacter

String

Znamješko, kotrež so wužiwa, zo by přistupnu tastu menijoweho zapiski definowało. Standardne znamješko je "~".

SubmenuCharacter

String

Znamješko abo znamješkowy rjećazk, kotrejž definujetej, kak so menijowe zapiski kašćikuja. Standardne znamješko je ">".


Meni a podmenije

Zo byšće meni z podmenijemi wutworił, wužiwajće znamješko, kotrež je w kajkosći SubmenuCharacter definowane, mjeztym zo menijowy zapisk wutworjeće, zo byšće definował, hdźež so placěruje. Wobhladajće sej na přikład slědowacu menijowu/podmenijowu hierarchiju.


    ' 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
  

Slědowacy kod standardne podmenijowe znamješko „>“ wužiwa, zo by menijowu/podmenijowu hierarchiju wutworił, kotraž je horjeka definowana:


    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

Znamješkowy rjećazk --- so wužiwa, zo by dźělenske linije w menijach abo podmenijach definował.


Symbole wužiwać

Zapiski w meniju móža symbole měć, kotrež so jako argumenty w metodach AddCheckBox, AddItem a AddRadioButton podawaja.

Wšě symbole, kotrež su w LibreOffice k dispoziciji dadźa so wužiwać, hdyž jich šćežku relatiwnje k rjadowakej podawaće, hdźež symbolowe dataje su w instalaciskim rjadowaku. Symbole su w slědowacym rjadowaku:

INSTALLDIR/share/config

tip

Wužiwajće kajkosć InstallFolder słužby FileSystem, zo byšće zwěsćił, hdźe je so LibreOffice we wašim systemje instalowany.


Tutón rjadowak rjad ZIP-datajow wobsahuje, kotrež wobrazowe dataje kóždeje symboloweje sadźby wobsahuje, kotrež je k dispoziciji. Wobrazy w tutych ZIP-datajach su w rjadowakach organizowane. Zo byšće symbol wužiwał, podajće symbolowu dataju ze šćežku k jeje městnu w ZIP-dataji.

Slědowacy přikład symbol „sc_newdoc.svg“ wužiwa, kotryž je w rjadowaku „cmd“. Nakósna smužka „/“ so jako šćežkowe dźělatko wužiwa, njedźiwajo na dźěłowy system.

W Basic

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

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

Wšě symbolowe sadźby maja samsnu internu strukturu. Woprawdźity symbol, kotryž so pokazuje, wot symboloweje sadźby wotwisuje, kotraž so tuchwilu wužiwa.


Metody

Lisćina metodow w słužbje Menu

AddCheckBox

AddItem

AddRadioButton


AddCheckBox

Zasadźuje kontrolny kašćik do menija. Wróći cyłoličbowu hódnotu, kotraž zasadźeny zapisk identifikuje.

Syntaksa:

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

Parametry:

menuitem: Definuje tekst, kotryž so ma w meniju pokazać. Tutón argument tež hierarchiju zapiska w meniju z pomocu podmenijoweho znamješka.

name: Znamješkowy rjećazk, kotryž so wužwa, zo by menijowy zapisk identifikował. Po standardźe so poslednja komponenta menijoweje hierarchije wužiwa.

status: Definuje, hač so zapisk wuběra, hdyž so meni wutworja (standard = False).

icon: Šćežka a mjeno symbola, kotryž so ma bjez načolneho šćežkoweho dźělatka pokazać. Poprawny symbol, kotryž so pokazuje, wot symboloweje sadźby wotwisuje, kotryž so wužiwa.

tooltip: Tekst, kotryž so ma jako pomocny tekst pokazać.

command: Mjeno přikaza UNO bjez prefiksa .uno:. Jeli mjeno přikaza njeeksistuje, so ničo njestawa.

script: IRI za skript Basic abo Python, kotryž so wuwjedźe, hdyž so na zapisk klika.

note

Argumentaj command a script mjez sobu wuzamkujetej, tohodla jenož jedyn z njeju da so z kóždy menijowy zapisk stajić.


tip

Čitajće Scripting Framework URI Specification, zo byšće wjace wo syntaksy URI zhonił, kotraž so w argumenće script wužiwa.


Přikład:

W Basic

      ' Menijowy zapisk, kotryž je z přikazom .uno:Paste zwjazany
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      ' Wuwjedźe skript Basic Standard.Module1.MyListener, kotryž je w dokumenće składowany
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' Wuwjedźe skript Python MyListener, kotryž je w dataji myScripts.py w rjadowaku wužiwarskich skriptow
      oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    
W Python

      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

Zasadźuje zapisk popisa do menija. Wróći cyłoličbowu hódnotu, kotraž zasadźeny zapisk identifikuje.

Syntaksa:

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

Parametry:

menuitem: Definuje tekst, kotryž so ma w meniju pokazać. Tutón argument tež hierarchiju zapiska w meniju z pomocu podmenijoweho znamješka.

name: Znamješkowy rjećazk, kotryž so ma wróćić, hdyž so na zapisk klika. Po standardźe so poslednja komponenta menijoweje hierarchije wužiwa.

icon: Šćežka a mjeno symbola, kotryž so ma bjez načolneho šćežkoweho dźělatka pokazać. Poprawny symbol, kotryž so pokazuje, wot symboloweje sadźby wotwisuje, kotryž so wužiwa.

tooltip: Tekst, kotryž so ma jako pomocny tekst pokazać.

command: Mjeno přikaza UNO bjez prefiksa .uno:. Jeli mjeno přikaza njeeksistuje, so ničo njestawa.

script: IRI za skript Basic abo Python, kotryž so wuwjedźe, hdyž so na zapisk klika.

note

Argumentaj command a script mjez sobu wuzamkujetej, tohodla jenož jedyn z njeju da so z kóždy menijowy zapisk stajić.


tip

Čitajće Scripting Framework URI Specification, zo byšće wjace wo syntaksy URI zhonił, kotraž so w argumenće script wužiwa.


Přikład:

W Basic

      oMenu.AddItem("Zapisk A", Tooltip := "Wopisowaca powěsć")
    
W Python

      oMenu.AddItem("Zapisk A", tooltip = "Wopisowaca powěsć")
    

AddRadioButton

Zasadźuje zapisk opciskeho tłóčatka w meniju. Wróći cyłoličbowu hódnotu, kotraž zasadźeny zapisk identifikuje.

Syntaksa:

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

Parametry:

menuitem: Definuje tekst, kotryž so ma w meniju pokazać. Tutón argument tež hierarchiju zapiska w meniju z pomocu podmenijoweho znamješka.

name: Znamješkowy rjećazk, kotryž so ma wróćić, hdyž so na zapisk klika. Po standardźe so poslednja komponenta menijoweje hierarchije wužiwa.

status: Definuje, hač so zapisk wuběra, hdyž so meni wutworja (standard = False).

icon: Šćežka a mjeno symbola, kotryž so ma bjez načolneho šćežkoweho dźělatka pokazać. Poprawny symbol, kotryž so pokazuje, wot symboloweje sadźby wotwisuje, kotryž so wužiwa.

tooltip: Tekst, kotryž so ma jako pomocny tekst pokazać.

command: Mjeno přikaza UNO bjez prefiksa .uno:. Jeli mjeno přikaza njeeksistuje, so ničo njestawa.

script: IRI za skript Basic abo Python, kotryž so wuwjedźe, hdyž so na zapisk klika.

note

Argumentaj command a script mjez sobu wuzamkujetej, tohodla jenož jedyn z njeju da so z kóždy menijowy zapisk stajić.


tip

Čitajće Scripting Framework URI Specification, zo byšće wjace wo syntaksy URI zhonił, kotraž so w argumenće script wužiwa.


Přikład:

W Basic

      oMenu.AddRadioButton("Item A", Name := "A", Status := True)
    
W Python

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

Wšě rutiny Basic ScriptForge abo identifikatory, kotrež so z podsmužku „_“ započinaja, su za interne wužiwanje wuměnjene. Njejsu za to myslene, so w makrach Basic abo skriptach Python wužiwać.