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:

Symbol za Notica

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.


Warnowanski symbol

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ć:

Symbol za Notica

• 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
  
Symbol za Notica

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")
  
Symbol za Notica

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


Using icons

Items in the menu can have icons, which are specified as arguments in the AddCheckBox, AddItem and AddRadioButton methods.

All icons available in LibreOffice can be used by specifying their path relative to the folder where icon files are located in the installation folder. Icons are located in the following folder:

INSTALLDIR/share/config

Symbol Pokiw

Use the InstallFolder property of the FileSystem service to determine where LibreOffice is installed in your system.


This folder contains a series of ZIP files containing the image files of each available icon set. The images inside these ZIP files are organized into folders. To use an icon, specify the icon file with the path to its location inside the ZIP file.

The example below uses the icon "sc_newdoc.svg" that is located inside the "cmd" folder. The forward slash "/" character is used as the path separator regardless of the operating system.

W Basic

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

      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    
Symbol za Notica

All icon sets have the same internal structure. The actual icon displayed depends on the icon set currently in use.


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.

Symbol za Notica

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


Symbol Pokiw

Č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.

Symbol za Notica

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


Symbol Pokiw

Č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.

Symbol za Notica

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


Symbol Pokiw

Č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)
    
Warnowanski symbol

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ć.


Prošu podpěrajće nas!

Prošu podpěrajće nas!