Tjenesten SFWidgets.PopupMenu

Tjenesten PopupMenu kan bruges til at oprette popup-menuer, der kan knyttes til hændelser eller udføres af scripts. Denne tjeneste giver disse muligheder:

Kald af tjeneste

Før brug af tjenesten PopupMenu skal biblioteket ScriptForge være indlæst eller importeret:

note

• Basic-makroer kræver, at biblioteket ScriptForge indlæses med følgende udtryk:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python-scripts kræver import af scriptforge-modulet:
from scriptforge import CreateScriptService


I Basic

Tjenesten PopupMenu kan instantieres på flere måder. Eksemplet herunder opretter en popup-menu uden at knytte den til en mus eller en program-hændelse.


    Sub ShowPopup
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim myPopup As Object
        Set myPopup = CreateScriptService("SFWidgets.PopupMenu", , 300, 300)
        myPopup.AddItem("Item ~A")
        myPopup.AddItem("Item ~B")
        vResponse = myPopup.Execute()
        MsgBox("Valgt element-ID: " & vResponse)
        myPopup.Dispose()
    End Sub
  

Kørsel af Sub (delprogrammet), der er defineret herover, opretter en poppu-menu med to elementer på positionen x=300 og y=300 på skærmen.

tip

Forstavelsen SFWidgets kan undertrykkes under kaldet af tjenesten PopupMenu.


Følgende eksempel definerer et Sub (delprogram), der kan knyttes til en musehændelse.


    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Udfyld popup-menuen med elementer
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Gør noget baseret på vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  
tip

Brug metoden Dispose (bortskaf) for at frigøre ressourcer, efter at popup-menuen er udført.


Det er også muligt at knytte en popup-menu til hændelser, udløst af LibreOffice-programmer, formularer og dialogkontroller. Hændelser som for eksempel "Museknap trykket" og "Museknap sluppet" knyttes almindeligvis til popup-menuer.


    Sub MyPopupClick(Optional poEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poEvent)
        ' ...
    End Sub
  
I Python

Eksemplerne herover kan skrives i Python som følger:


    from scriptforge import CreateScriptService
    
    def show_popup(args=None):
        my_popup = CreateScriptService("SFWidgets.PopupMenu", None, 300, 300)
        bas = CreateScriptService("Basic")
        my_popup.AddItem("Item ~A")
        my_popup.AddItem("Item ~B")
        response = my_popup.Execute()
        bas.MsgBox(f"Selected item ID: {response}")
        my_popup.Dispose()
  

    def my_popup_click(poEvent=None):
        my_popup = CreateScriptService("SFWidgets.PopupMenu", poEvent)
        # Udfyld popup-menuen med elementer
        response = my_popup.Execute()
        # Gør noget baseret på svar
        my_popup.Dispose()
  

Egenskaber

Navn

Skrivebeskyttet

Type

Beskrivelse

ShortcutCharacter

No

String

Character used to define the access key of a menu item. The default character is ~.

SubmenuCharacter

Nej

String

Character or string that defines how menu items are nested. The default character is >.


Menuer og undermenuer

For at oprette en popup-menu med undermenuer bruger du det tegn, der er defineret i egenskaben SubmenuCharacter (undermenu-tegn), under oprettelsen af menu-elementet for at definere, hvor det skal placeres. Overvej for eksempel det følgende menu/undermenu-hierarki.


    ' 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
  

The code below uses the default submenu character > to create the menu/submenu hierarchy defined above:


    myPopup.AddItem("Item A")
    myPopup.AddItem("Item B>Item B.1")
    myPopup.AddItem("Item B>Item B.2")
    myPopup.AddItem("---")
    myPopup.AddItem("Item C>Item C.1>Item C.1.1")
    myPopup.AddItem("Item C>Item C.1>Item C.1.2")
    myPopup.AddItem("Item C>Item C.2>Item C.2.1")
    myPopup.AddItem("Item C>Item C.2>Item C.2.2")
    myPopup.AddItem("Item C>Item C.2>---")
    myPopup.AddItem("Item C>Item C.2>Item C.2.3")
    myPopup.AddItem("Item C>Item C.2>Item C.2.4")
  
note

The string --- is used to define separator lines in menus or submenus.


Brug af ikoner

Elementer i menuen kan have ikoner, som er angivet som argumenter i metoderne AddCheckBox, AddItem og AddRadioButton.

Alle tilgængelige koder i LibreOffice kan bruges ved at angive deres sti i forhold til den mappe, hvor ikonfilerne er placeret installationsmappen. Ikoner er placeret i denne mappe:

INSTALLDIR/share/config

tip

Brug egenskaben InstallFolder (installer_mappe) i tjenesten FileSystem til at bestemme, hvor LibreOffice er installeret på dit system.


Denne mappe indeholder en serie ZIP-filer, der indeholder hvert tilgængeligt ikonsæts billedfiler. Billederne i disse ZIP-filer er organiseret i mapper. For at bruge et ikon angiver du ikonfilen med stien til dens placering inde i ZIP-filen.

Eksemplet herunder bruger ikonet "sc_newdoc.svg", der er placeret inde i mappen "cmd". Tegnet Skråstreg "/" bruges som sti-skilletegn uanset 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 ikonsæt har den samme interne struktur. Det faktisk viste ikon afhænger af det ikonsæt, der aktuelt er brug.


Metoder

Liste over metoder i tjenesten PopupMenu

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

Indsætter et afkrydsningsfelt i popup-menuen. Returnerer en heltalsværdi, der identificerer det indsatte element.

Syntaks:

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

Parametre:

menuitem (menuelement): Definerer teksten, der skal vises i menuen. Dette argument definerer også elementets plads i menuhierarkiet ved hjælp af undermenu-tegnet.

navn: Strengværdi, der skal returneres, når der klikkes på elementet. Som standard bruges det sidste element i menuhierarkiet.

status: Definerer, om elementet er valgt, når menuen oprettes (Standard = False - falsk).

ikon: Sti til og navn på ikonet, der skal vises, uden det indledende stiskilletegn. Det faktisk viste ikon afhænger af det anvendte ikonsæt.

værktøjstip: Tekst, der skal vises som værktøjstip.

Eksempel:

I Basic

      myPopup.AddCheckBox("Option A", Status := True)
    
I Python

      my_popup.AddCheckBox("Option A", status=True)
    

AddItem

Indsætter et menuelement i popupmenuen. Returnerer en heltalsværdi, der identificerer det indsatte element.

Syntaks:

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

Parametre:

menuitem (menuelement): Definerer teksten, der skal vises i menuen. Dette argument definerer også elementets plads i menuhierarkiet ved hjælp af undermenu-tegnet.

navn: Strengværdi, der skal returneres, når der klikkes på elementet. Som standard bruges det sidste element i menuhierarkiet.

ikon: Sti til og navn på ikonet, der skal vises, uden det indledende stiskilletegn. Det faktisk viste ikon afhænger af det anvendte ikonsæt.

værktøjstip: Tekst, der skal vises som værktøjstip.

Eksempel:

I Basic

      myPopup.AddItem("Element A", Tooltip := "En beskrivende besked")
    
I Python

      my_popup.AddItem("Item A", tooltip = "En beskrivende meddelelse")
    

AddRadioButton

Indsætter et alternativknap-element i popup-menuen. Returnerer en heltalsværdi, der identificerer indsatte element.

Syntaks:

svc.AddRadioButton(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int

Parametre:

menuitem (menuelement): Definerer teksten, der skal vises i menuen. Dette argument definerer også elementets plads i menuhierarkiet ved hjælp af undermenu-tegnet.

navn: Strengværdi, der skal returneres, når der klikkes på elementet. Som standard bruges det sidste element i menuhierarkiet.

status: Definerer, om elementet er valgt, når menuen oprettes (Standard = False - falsk).

ikon: Sti til og navn på ikonet, der skal vises, uden det indledende stiskilletegn. Det faktisk viste ikon afhænger af det anvendte ikonsæt.

værktøjstip: Tekst, der skal vises som værktøjstip.

Eksempel:

I Basic

      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
I Python

      my_popup.AddRadioButton("Option A", name="A", status=True)
    

Execute

Viser popup-menuen og venter på en brugerhandling. Returnerer det element, brugeren klikkede på.

Hvis brugeren klikker uden for popup-menuen eller trykker på Esc-tasten, vælges der intet element. I disse tilfælde afhænger den returnerede af parameteren returnid. Hvis returnid = True (retur_id = Sand) og der ikke er valgt et element, returneres værdien 0 (nul). Ellers returneres en tom streng "".

Syntaks:

svc.Execute(opt returnid: bool = True): any

Parametre:

returnid: Hvis True (sand) returneres det valgte ID. Hvis metoden returnerer False (falsk), returnerer metoden elementets navn (Standard = True - sand).

Eksempel:

I eksemplet herunder oprettes en popup-menu og elementets navn returneres, fordi argumentet returnid er sat til False (falsk).

I Basic

      myPopup.AddItem("Item A", Name := "A")
      myPopup.AddItem("Item B", Name := "B")
      Dim vResponse as Variant
      vResponse = myPopup.Execute(False)
    
I Python

      my_popup.AddItem("Item A", name="A")
      my_popup.AddItem("Item B", name="B")
      response = my_popup.Execute(False)
    
warning

Alle ScriptForge Basic-rutiner eller identifikatorer, der er indledet med et understreget tegn "_" er reserveret til internt brug. Det er ikke meningen, at de skal bruges i Basic-makroer eller Python-scripts.


Støt os venligst!