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.