Tenesta SFWidgets.Meny

Tenesta Meny kan brukast for å laga og fjerna menyar frå menylinja i eit LibreOffice-dokumentvindauge. Kvar menyoppføring kan knytast til eit skript eller til ein UNO-kommando. Denne tenesta gjev desse funksjonane:

note

Menyar som er laga med denne tenesta er tilgjengelege berre for eit spesifisert dokumentvindauge. Dei vert ikkje lagra i dokumentet eller som programinnstillingar. Når dokumentet vert lukka og opna att, vert standardmenylinjene gjenoppretta.


warning

Når OLE-objekt, for eksempel matematiske formlar eller Calc-diagram, vert redigerte frå eit dokument, set LibreOffice menylinja opp på nytt i høve til objektet. Når dette skjer, vert menyane som er sette opp med menytenesta fjerna og vert ikkje gjenoppretta etter at OLE-objektet er redigert.


Oppkall av tenester

Før du brukar tenesta Meny, må biblioteket ScriptForge vera lasta inn eller importert:

note

• Grunnleggjande makroar krev innlasting av biblioteket ScriptForge ved hjelp av denne setninga:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python-skript krev import frå scriptforge-modulen:
from scriptforge import CreateScriptService


I Basic

Tenesta Meny vert starta ved å kalla opp metoden CreateMenu frå tenesta Dokument. Kodesnutten nedanfor lagar ein meny kalla Min meny i gjeldande dokumentvindauge med to oppføringar, Element A og Element B.


    Sub CreateMenu()
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim oDoc as Object, oMenu as Object
        Set oDoc = CreateScriptService("Document")
        Set 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

Når menyen er laga, vert det rådd til å kalla opp metoden Dispose for å frigjera ressursar som vert brukte av ein førekomst av tenesta Menu.


I eksempelet ovanfor er Element A knytt til UNO-kommandoen .uno:About, medan Element B er knytt til skriptet ItemB_Listener definert i Module1 i biblioteket Standard i behaldaren Mine makroar.

Eksempelet nedanfor definerer ItemB_Listener som vert kalla opp når det vert trykt på Item B. Denne lyttaren deler ganske enkelt opp argumentstrengen som vert sendt til Sub og viser delane i ein meldingsboks.


    Sub ItemB_Listener(args As String)
        ' Handsamar argumentstrengen som vert sendt til lyttaren
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Menynamn: " & sArgs(0) & Chr(13) & _
               "Menyelement: " & sArgs(1) & Chr(13) & _
               "Element-ID: "     & sArgs(2) & Chr(13) & _
               "Elementstatus: " & sArgs(3)
    End Sub
  

Som vist i eksempelet ovanfor, mottek menyoppføringar knytte til eit skript eit kommadelt strengargument med desse verdiane:

I Python

Eksempelet ovanfor kan skrivast slik i 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"Menunamn: {s_args[0]}\n"
        msg += f"Menyelement: {s_args[1]}\n"
        msg += f"Element-ID: {s_args[2]}\n"
        msg += f"Elementstatus: {s_args[3]}"
        bas.MsgBox(msg)
  

Eigenskapar

Name

Skriveverna

Type

Beskriving

ShortcutCharacter

Nei

String

Teikn som vert brukt for å definera tilgangsnøkkelen til eit menyelement. Standardteiknet er «~».

SubmenuCharacter

Nei

String

Teikn eller streng som definerer korleis elementa er nøsta. Standardteikn er «>».


Meny og undermenyar

For å laga ein meny med undermenyar, bruk teiknet som er definert i eigenskapen SubmenuCharacter medan du lagar menyoppføringa for å definera plasseringa av han. Tenk for eksempel på det følgjande meny-/undermeny-hierarkiet.


    ' 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 nedanfor brukar standard undermeny-teiknet ">" for å laga meny-/undermenyhierarkiet definert ovanfor:


    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 --- vert brukt for å definera skiljelinjer i menyar eller undermenyar.


Bruka ikon

Elementa i menyen kan ha ikon som er spesifiserte som argument i metodane AddCheckBox, AddItem og AddRadioButton.

Alle tilgjengelege ikon i LibreOffice kan brukast ved å spesifisera banen deira i høve til mappa der ikonfilene er plasserte i installasjonsmappa. Ikona er lagde i denne mappa:

INSTALLDIR/share/config

tip

Bruk eigenskapen InstallFolder i tenesta FileSystem for å bestemma kor LibreOffice er installert på systemet.


Denne mappa inneheld ein serie ZIP-filer som inneheld biletfiler for kvart av dei tilgjengelege ikonsetta. Bileta i desse ZIP-filene er organiserte i mapper. For å bruka eit ikon, spesifiserer du ikonfila med stien til plasseringa inne i ZIP-fila.

Eksempelet nedanfor brukar ikonet "sc_newdoc.svg" som ligg i mappa "cmd". Teiknet skråstrek "/" vert brukt som stiskiljeteikn same kva operativsystem som er i bruk.

I Basic

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

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

Alle ikonsetta har den same interne strukturen. Kva for ikon som vert vist er avhengig av kva ikonsett som er i bruk.


Metodar

Liste over metodar i tenesta «Menu»

AddCheckBox

AddItem

AddRadioButton


AddCheckBox

Set inn ein avkryssingsboks i menyen. Returnerer ein heiltalsverdi som identifiserer det innsette 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

Parametrar:

menuitem: Definerer teksten som skal visast i menyen. Dette argumentet definerer også hierarkiet til elementet inne i menyen ved å bruka undermeny-teiknet.

name: Strengverdien som vert brukt for å identifisera elementet. Som standard vert det siste elementet i menyhierakiet brukt.

status: Definerer om elementet er vald når menyen vert laga (Standard = Usann).

ikon: Stien til og namnet på ikonet som skal visast utan det innleiande stiskiljeteiknet. Kva ikon som vert vist er avhengig av kva ikonsett som er i bruk.

tooltip: Teksten som skal visast som verktøytips.

command: Namnet på ein UNO-kommando utan prefikset .uno:. Viss namnet ikkje finst, skjer ingenting.

script: URI for eit Basic- eller Python-skript som vert utført når det vert klikka på elementet.

note

Argumenta command og script utelukkar kvarandre, difor kan berre eitt av dei setjast for kvart menyelement.


tip

Sjå Scripting Framework URI Specification for å læra meir om URI-syntaksen som vert brukt i script-argument.


Eksempel:

I Basic

      ' Menyoppføring knytt til kommandoen .uno:Paste
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      ' Køyrer Basic-skriptet «Standard.Module1.MyListener» som er lagra i dokumentet
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' Køyrer Python-skriptet MyListener som ligg i fila myScripts.py i brukarskriptmappa
      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

Set inn ein merkelapp i menyen. Returnerer ein heiltalsverdi som identifiserer det innsette elementet.

Syntaks:

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

Parametrar:

menuitem: Definerer teksten som skal visast i menyen. Dette argument definerer også plassen elementet har i menyhierarkiet ved hjelp av undermeny-teiknet.

name: Strengverdien som skal returnerast når det vert trykt på elementet. Som standard vert det siste elementet i menyhierakiet brukt.

ikon: Sti til og namn på ikonet som skal visast utan det innleiande stiskiljeteiknet. Kva ikon som vert vist er avhengig av kva ikonsett som er i bruk.

tooltip: Teksten som skal visast som verktøytips.

command: Namnet på ein UNO-kommando utan prefikset .uno:. Viss namnet ikkje finst, skjer ingenting.

script: URI for eit Basic- eller Python-skript som vert utført når det vert klikka på elementet.

note

Argumenta command og script utelukkar kvarandre, difor kan berre eitt av dei setjast for kvart menyelement.


tip

Sjå Scripting Framework URI Specification for å læra meir om URI-syntaksen som vert brukt i script-argument.


Eksempel:

I Basic

      oMenu.AddItem("Element A", Tooltip := "Ei beskrivande melding")
    
I Python

      oMenu.AddItem("Element A", Tooltip = "Ei beskrivande melding")
    

AddRadioButton

Set inn ein radioknapp i menyen. Returnerer ein heiltalsverdi som identifiserer det innsette 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

Parametrar:

menuitem: Definerer teksten som skal visast i menyen. Dette argument definerer også plassen elementet har i menyhierarkiet ved hjelp av undermeny-teiknet.

name: Strengverdien som skal returnerast når det vert trykt på elementet. Som standard vert det siste elementet i menyhierakiet brukt.

status: Definerer om elementet er vald når menyen vert laga (Standard = Usann).

ikon: Stien til og namnet på ikonet som skal visast utan det innleiande stiskiljeteiknet. Kva ikon som vert vist er avhengig av kva ikonsett som er i bruk.

tooltip: Teksten som skal visast som verktøytips.

command: Namnet på ein UNO-kommando utan prefikset .uno:. Viss namnet ikkje finst, skjer ingenting.

script: URI for eit Basic- eller Python-skript som vert utført når det vert klikka på elementet.

note

Argumenta command og script utelukkar kvarandre, difor kan berre eitt av dei setjast for kvart menyelement.


tip

Sjå Scripting Framework URI Specification for å læra meir om URI-syntaksen som vert brukt i script-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 Basic-rutinane og -identifikatorane som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje meint brukte i Basic-makroar.


Støtt oss!