LibreOffice 25.2 Hjelp
Tjenesten Meny kan brukes til å opprette og fjerne menyer fra menylinjen i et LibreOffice-dokumentvindu. Hver menyoppføring kan knyttes til et skript eller med en UNO-kommando. Denne tjenesten gir følgende funksjoner:
Oppretting av menyer med egendefinerte oppføringer, avmerkingsbokser, radioknapper og skilletegn.
Dekorasjon av menyelementer med ikoner og verktøytips.
Menyer opprettet med denne tjenesten er kun tilgjengelig for et spesifisert dokumentvindu. De lagres ikke i dokumentet eller som programinnstillinger. Å lukke og åpne dokumentet vil gjenopprette standard menylinjeinnstillinger.
Når OLE-objekter som Math-formler eller Calc-diagrammer redigeres fra et dokument, rekonfigurerer LibreOffice menylinjen i henhold til objektet. Når dette skjer, fjernes menyene som er opprettet med Meny-tjenesten og blir ikke gjenopprettet etter redigering av OLE-objektet.
Før du bruker Meny-tjenesten, må ScriptForge-biblioteket lastes eller importeres:
Tjenesten Meny instansieres ved å anrope CreateMenu-metoden fra Dokument-tjenesten. Kodebiten nedenfor oppretter en meny kalt Min meny i det gjeldende dokumentvinduet med to oppføringer Element A og Element B.
    Sub CreateMenu()
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim oDoc as Object, oMenu as Object
        Set oDoc = CreateScriptService("Document")
        Sett oMenu = oDoc.CreateMenu("Min meny")
        With oMenu
            .AddItem("Element A", Kommando := "Om")
            .AddItem("Element B", Script := "vnd.sun.star.script:Standard.Module1.ItemB_Listener?language=Basic&location=application")
            .Dispose()
        End With
    End Sub
  Etter å ha opprettet menyen, anbefales det å kalle Kasser-metoden for å frigjøre ressursene som brukes av Meny-tjenesteforekomsten.
I eksemplet ovenfor er Item A assosiert med UNO-kommandoen .uno:About mens Item B er assosiert med skriptet ItemB_Listener definert i Module1 i Standard-biblioteket i Mine makroer-kontaineren.
Følgende eksempel definerer ItemB_Listener som vil bli kalt når Item B klikkes. Denne lytteren deler ganske enkelt argumentstrengen som sendes til Sub og viser dem i en meldingsboks.
    Sub ItemB_Listener(args As String)
        ' Behandle argumentstrengen som sendes til lytteren
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Menynavn: " & sArgs(0) & Chr(13) & _
               "Menyelement: " & sArgs(1) & Chr(13) & _
               "Item ID: " & sArgs(2) & Chr(13) & _
               "Elementstatus: " & sArgs(3)
    End Sub
  Som vist i eksempelet ovenfor, mottar menyoppføringer knyttet til et skript et kommadelt strengargument med følgende verdier:
Toppnivånavnet på menyen.
Streng-IDen til den valgte menyoppføringen.
Den numeriske ID-en til den valgte menyoppføringen.
Den nåværende tilstanden til menyelementet. Dette er nyttig for avmerkingsbokser og alternativknapper. Hvis varen er krysset av, returneres verdien "1", ellers returneres "0".
Eksemplene ovenfor kan skrives i Python som følger:
    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"Menynavn: {s_args[0]}\n"
        msg += f"Menyelement: {s_args[1]}\n"
        msg += f"Element-ID: {s_args[2]}\n"
        msg += f"Element status: {s_args[3]}"
        bas.MsgBox(msg)
  | Navn | Skrivebeskyttet | Type | Beskrivelse | 
|---|---|---|---|
| ShortcutCharacter | Nei | String | Tegn som brukes til å definere tilgangsnøkkelen til et menyelement. Standardtegnet er "~". | 
| SubmenuCharacter | Nei | String | Tegn eller streng som definerer hvordan menyelementer er nestet. Standardtegnet er ">". | 
For å lage en meny med undermenyer, bruk tegnet som er definert i egenskapen SubmenuCharacter mens du oppretter menyoppføringen for å definere hvor den skal plasseres. Tenk for eksempel på følgende meny-/undermenyhierarki.
    ' 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
  Koden nedenfor bruker standard undermeny-tegnet ">" for å lage meny-/undermenyhierarkiet definert ovenfor:
    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")
  Strengen --- brukes til å definere skillelinjer i menyer eller undermenyer.
| Liste over metoder i menytjenesten | ||
|---|---|---|
Setter inn en avmerkingsboks i menyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Definerer teksten som skal vises i menyen. Dette argumentet definerer også hierarkiet til elementet inne i menyen ved å bruke undermeny-tegnet.
navn: Strengverdi som brukes til å identifisere menyelementet. Som standard brukes den siste komponenten i menyhierarkiet.
status: Definerer om elementet er valgt når menyen opprettes (Standard = Usann).
ikon: Bane og navn på ikonet som skal vises uten baneskilletegn. Det faktiske ikonet som vises avhenger av ikonsettet som brukes.
verktøytips: Tekst som skal vises som verktøytips.
kommando: Navnet på en UNO-kommando uten prefikset .uno:. Hvis kommandonavnet ikke eksisterer, skjer ingenting.
script: URI for et Basic- eller Python-skript som vil bli utført når elementet klikkes.
Argumentene kommando og script utelukker hverandre, derfor kan bare ett av dem settes for hvert menyelement.
Les Scripting Framework URI Specification for å lære mer om URI-syntaksen som brukes i skript argument.
      ' Menyoppføring knyttet til kommandoen .uno:Paste
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      ' Kjører det grunnleggende skriptet Standard.Module1.MyListener som er lagret i dokumentet
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' Kjører Python-skriptet MyListener som ligger i filen myScripts.py i brukerskriptmappen
      oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    
      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")
    Setter inn en etikettoppføring i menyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Definerer teksten som skal vises i menyen. Dette argumentet definerer også hierarkiet til elementet inne i menyen ved å bruke undermeny-tegnet.
navn: Strengverdi som skal returneres når elementet klikkes. Som standard brukes den siste komponenten i menyhierarkiet.
ikon: Bane og navn på ikonet som skal vises uten baneskilletegn. Det faktiske ikonet som vises avhenger av ikonsettet som brukes.
verktøytips: Tekst som skal vises som verktøytips.
kommando: Navnet på en UNO-kommando uten prefikset .uno:. Hvis kommandonavnet ikke eksisterer, skjer ingenting.
script: URI for et Basic- eller Python-skript som vil bli utført når elementet klikkes.
      oMenu.AddItem("Element A", Verktøytips := "En beskrivende melding")
    
      oMenu.AddItem("Element A", Verktøytips := "En beskrivende melding")
    Setter inn en alternativknappoppføring i menyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Definerer teksten som skal vises i menyen. Dette argumentet definerer også hierarkiet til elementet inne i menyen ved å bruke undermeny-tegnet.
navn: Strengverdi som skal returneres når elementet klikkes. Som standard brukes den siste komponenten i menyhierarkiet.
status: Definerer om elementet er valgt når menyen opprettes (Standard = Usann).
ikon: Bane og navn på ikonet som skal vises uten baneskilletegn. Det faktiske ikonet som vises avhenger av ikonsettet som brukes.
verktøytips: Tekst som skal vises som verktøytips.
kommando: Navnet på en UNO-kommando uten prefikset .uno:. Hvis kommandonavnet ikke eksisterer, skjer ingenting.
skript: URI for et Basic- eller Python-skript som vil bli utført når elementet klikkes.
      oMenu.AddRadioButton("Item A", Name := "A", Status := True)
    
      oMenu.AddRadioButton("Item A", name="A", status=True)