SFWidgets.Menu-service

De service Menu kan worden gebruikt om menu's te maken en te verwijderen uit de menubalk van een LibreOffice-documentvenster. Elk menu-item kan worden gekoppeld aan een script of aan een UNO-opdracht. Deze service biedt de volgende mogelijkheden:

note

Menu's die met deze service zijn gemaakt, zijn alleen beschikbaar voor een bepaald documentvenster. Ze worden niet opgeslagen in het document of als applicatie-instellingen. Als u het document sluit en opent, worden de standaard menubalkinstellingen hersteld.


warning

Wanneer OLE-objecten zoals wiskundige formules of Calc-diagrammen worden bewerkt vanuit een document, configureert LibreOffice de menubalk opnieuw volgens het object. Wanneer dit gebeurt, worden de menu's die zijn gemaakt met de service Menu verwijderd en niet hersteld na het bewerken van het OLE-object.


Service aanroep

Voordat de service Menu gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geĆÆmporteerd:

note

ā€¢ Basic macro's kunnen de bibliotheek ScriptForge laden met de instructie:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

ā€¢ Python scripts kunnen de module scriptforge importeren met:
from scriptforge import CreateScriptService


In BASIC

Een instantie van de service Menu wordt aangemaakt met het aanroepen van de methode CreateMenu van de service Document. In onderstaand stukje code wordt een menu My Menu in het huidige document aangemaakt met twee menu-regels Item A en Item B.


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

Nadat u het menu hebt gemaakt, wordt aanbevolen om de methode Dispose aan te roepen om de bronnen vrij te maken die worden gebruikt door de service-instantie Menu.


In het bovenstaande voorbeeld is Item A gekoppeld aan het UNO-commando .uno:About terwijl Item B is gekoppeld aan het script ItemB_Listener gedefinieerd in Module1 van de Standard-bibliotheek van de container Mijn macro's.

Het volgende voorbeeld definieert ItemB_Listener dat wordt aangeroepen wanneer op Item B wordt geklikt. Deze listener splitst eenvoudig de argumentreeks die aan de Sub is doorgegeven en toont deze in een berichtvenster.


    Sub ItemB_Listener(args As String)
        ' Verwerk de argumentreeks die aan de luisteraar is doorgegeven
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Menunaam: "   & sArgs(0) & Chr(13) & _
               "Menu-item: "   & sArgs(1) & Chr(13) & _
               "Item-ID: "     & sArgs(2) & Chr(13) & _
               "Itemstatus: " & sArgs(3)
    End Sub
  

Zoals in het bovenstaande voorbeeld wordt getoond, ontvangen menu-items die aan een script zijn gekoppeld een door komma's gescheiden tekenreeksargument met de volgende waarden:

In Python

Dezelfde voorbeelden in Python:


    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"Menunaam: {s_args[0]}\n"
        msg += f"Menu-item: {s_args[1]}\n"
        msg += f"Item-ID: {s_args[2]}\n"
        msg += f"Itemstatus: {s_args[3]}"
        bas.MsgBox(msg)
  

Eigenschappen

Name

AlleenLezen

Type

Beschrijving

ShortcutCharacter

Nee

String

Teken dat wordt gebruikt om de toegangssleutel van een menu-item te definiƫren. Het standaardteken is "~".

SubmenuCharacter

Nee

String

Teken of tekenreeks die bepaalt hoe menu-items worden genest. Het standaardteken is ">".


Menu en submenu's

Om een menu met submenu's te maken, gebruikt u het teken dat is gedefinieerd in de eigenschap SubmenuCharacter terwijl u het menu-item maakt om te bepalen waar het zal worden geplaatst. Beschouw bijvoorbeeld de volgende menu-/submenuhiƫrarchie.


    ' 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
  

De onderstaande code gebruikt het standaard submenu-teken ">" om de hierboven gedefinieerde menu-/submenuhiƫrarchie te creƫren:


    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

De tekenreeks --- wordt gebruikt om scheidingslijnen te definiƫren in menu's of submenu's.


Pictogrammen gebruiken

Items in het menu kunnen pictogrammen hebben, die als argumenten worden opgegeven in de methoden AddCheckBox, AddItem en AddRadioButton.

Alle pictogrammen die beschikbaar zijn in LibreOffice kunnen worden gebruikt door hun pad op te geven ten opzichte van de map waarin de pictogrambestanden zich in de installatiemap bevinden. Pictogrammen bevinden zich in de volgende map:

INSTALLDIR/share/config

tip

Gebruik de eigenschap InstallFolder van de service FileSystem om te bepalen waar LibreOffice op uw systeem is geĆÆnstalleerd.


Deze map bevat een reeks ZIP-bestanden met de afbeeldingsbestanden van elke beschikbare pictogrammenset. De afbeeldingen in deze ZIP-bestanden zijn georganiseerd in mappen. Om een pictogram te gebruiken, specificeert u het pictogrambestand met het pad naar de locatie in het ZIP-bestand.

In het onderstaande voorbeeld wordt het pictogram "sc_newdoc.svg" gebruikt dat zich in de map "cmd" bevindt. De schuine streep "/" wordt gebruikt als padscheiding, ongeacht het besturingssysteem.

In BASIC

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

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

Alle pictogrammensets hebben dezelfde interne structuur. Het daadwerkelijk weergegeven pictogram is afhankelijk van de pictogrammenset die momenteel wordt gebruikt.


Methoden

Lijst met methoden in de menuservice

AddCheckBox

AddItem

AddRadioButton


AddCheckBox

Voegt een selectievakje in het menu in. Retourneert een geheel getal dat het ingevoegde item identificeert.

Syntaxis:

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

Parameters:

menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiƫrarchie van het item in het menu met behulp van het submenuteken.

name: Tekenreekswaarde die wordt gebruikt om het menu-item te identificeren. Standaard wordt het laatste onderdeel van de menuhiƫrarchie gebruikt.

status: Definieert of het item is geselecteerd wanneer het menu wordt gemaakt (standaard = False).

icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.

tooltip: Tekst die moet worden weergegeven als helptip.

command: De naam van een UNO-opdracht zonder het voorvoegsel .uno:. Als de opdrachtnaam niet bestaat, gebeurt er niets.

script: De URI voor een Basic- of Python-script dat wordt uitgevoerd wanneer op het item wordt geklikt.

note

De argumenten command en script sluiten elkaar uit, dus er kan er maar Ć©Ć©n voor elk menu-item worden ingesteld.


tip

Raadpleeg Scripting Framework URI-specificatie voor meer informatie over de URI-syntaxis die wordt gebruikt in het argument script.


Voorbeeld:

In BASIC

      'Menu-item geassocieerd met de opdracht .uno:Paste
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      ' Voert het basisscript Standard.Module1.MyListener uit dat in het document is opgeslagen
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' Voert het Python-script MyListener uit dat zich bevindt in het bestand myScripts.py in de map met gebruikersscripts
      oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    
In 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

Voegt een labelitem in het menu in. Retourneert een geheel getal dat het ingevoegde item identificeert.

Syntaxis:

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

Parameters:

menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiƫrarchie van het item in het menu met behulp van het submenuteken.

name: Tekenreeks die moet worden geretourneerd wanneer op het item wordt geklikt. Standaard wordt het laatste onderdeel van de menuhiƫrarchie gebruikt.

icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.

tooltip: Tekst die moet worden weergegeven als helptip.

command: De naam van een UNO-opdracht zonder het voorvoegsel .uno:. Als de opdrachtnaam niet bestaat, gebeurt er niets.

script: De URI voor een Basic- of Python-script dat wordt uitgevoerd wanneer op het item wordt geklikt.

note

De argumenten command en script sluiten elkaar uit, dus er kan er maar Ć©Ć©n voor elk menu-item worden ingesteld.


tip

Raadpleeg Scripting Framework URI-specificatie voor meer informatie over de URI-syntaxis die wordt gebruikt in het argument script.


Voorbeeld:

In BASIC

      oMenu.AddItem("Item A", Tooltip := "Een beschrijvend bericht")
    
In Python

      oMenu.AddItem("Item A", tooltip = "Een beschrijvend bericht")
    

AddRadioButton

Voegt een keuzerondje in het menu in. Retourneert een geheel getal dat het ingevoegde item identificeert.

Syntaxis:

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

Parameters:

menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiƫrarchie van het item in het menu met behulp van het submenuteken.

name: Tekenreeks die moet worden geretourneerd wanneer op het item wordt geklikt. Standaard wordt het laatste onderdeel van de menuhiƫrarchie gebruikt.

status: Definieert of het item is geselecteerd wanneer het menu wordt gemaakt (standaard = False).

icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.

tooltip:Tekst die moet worden weergegeven als helptip.

command: De naam van een UNO-opdracht zonder het voorvoegsel .uno:. Als de opdrachtnaam niet bestaat, gebeurt er niets.

script: De URI voor een Basic- of Python-script dat wordt uitgevoerd wanneer op het item wordt geklikt.

note

De argumenten command en script sluiten elkaar uit, dus er kan er maar Ć©Ć©n voor elk menu-item worden ingesteld.


tip

Raadpleeg Scripting Framework URI-specificatie voor meer informatie over de URI-syntaxis die wordt gebruikt in het argument script.


Voorbeeld:

In BASIC

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

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

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.


Help ons, alstublieft!