SFWidgets.Meny tjeneste

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:

note

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.


warning

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.


Tjenestepåkallelse

Før du bruker Meny-tjenesten, må ScriptForge-biblioteket lastes eller importeres:

note

• Grunnleggende makroer krever å laste ScriptForge-biblioteket ved hjelp av følgende setning:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python-skript krever import fra scriptforge-modulen:
fra scriptforge import CreateScriptService


I Basic

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
  
note

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:

I Python

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)
  

Egenskaper

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


Meny og undermenyer

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")
  
note

Strengen --- brukes til å definere skillelinjer i menyer eller undermenyer.


Ved hjelp av ikoner

Elementer i menyen kan ha ikoner, som er spesifisert som argumenter i metodene AddCheckBox, AddItem og AddRadioButton.

Alle ikoner som er tilgjengelige i LibreOffice kan brukes ved å spesifisere banen deres i forhold til mappen der ikonfilene er plassert i installasjonsmappen. Ikoner er plassert i følgende mappe:

INSTALLDIR/share/config

tip

Bruk egenskapen InstallFolder til FileSystem-tjenesten for å finne ut hvor LibreOffice er installert i systemet ditt.


Denne mappen inneholder en serie ZIP-filer som inneholder bildefilene til hvert tilgjengelige ikonsett. Bildene i disse ZIP-filene er organisert i mapper. For å bruke et ikon, spesifiser ikonfilen med banen til plasseringen i ZIP-filen.

Eksemplet nedenfor bruker ikonet "sc_newdoc.svg" som ligger inne i "cmd"-mappen. Skråstreken "/" brukes som baneskilletegn uavhengig av operativsystemet.

I Basic

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

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

Alle ikonsett har samme interne struktur. Det faktiske ikonet som vises avhenger av ikonsettet som er i bruk.


Metoder

Liste over metoder i menytjenesten

AddCheckBox

AddItem

AddRadioButton


AddCheckBox

Setter inn en avmerkingsboks i menyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.

Syntaks:

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

Parametre:

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.

note

Argumentene kommando og script utelukker hverandre, derfor kan bare ett av dem settes for hvert menyelement.


tip

Les Scripting Framework URI Specification for å lære mer om URI-syntaksen som brukes i skript argument.


Eksempel:

I Basic

      ' 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")
    
I 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

Setter inn en etikettoppføring i menyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.

Syntaks:

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

Parametre:

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.

note

Argumentene kommando og script utelukker hverandre, derfor kan bare ett av dem settes for hvert menyelement.


tip

Les Scripting Framework URI Specification for å lære mer om URI-syntaksen som brukes i skript argument.


Eksempel:

I Basic

      oMenu.AddItem("Element A", Verktøytips := "En beskrivende melding")
    
I Python

      oMenu.AddItem("Element A", Verktøytips := "En beskrivende melding")
    

AddRadioButton

Setter inn en alternativknappoppføring i menyen. Returnerer en heltallsverdi som identifiserer det innsatte elementet.

Syntaks:

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

Parametre:

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.

note

Argumentene kommando og script utelukker hverandre, derfor kan bare ett av dem settes for hvert menyelement.


tip

Les Scripting Framework URI Specification for å lære mer om URI-syntaksen som brukes i skript argument.


Eksempel:

I Basic

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

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

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment å brukes i grunnleggende makroer eller Python-skript.


Supporter oss!