Service SFWidgets.PopupMenu

De service PopupMenu kan worden gebruikt om pop-upmenu's te maken die aan gebeurtenissen kunnen worden gekoppeld of door scripts kunnen worden uitgevoerd. Deze service biedt de volgende mogelijkheden:

Service aanroep

Voordat de service PopupMenu gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geĆÆmporteerd:

note

ā€¢ Basic macro's kunnen de bibliotheek ScriptForge laden met de instructie:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

ā€¢ Python scripts kunnen de module scriptforge importeren met:
from scriptforge import CreateScriptService


In BASIC

De service PopupMenu kan op meerdere manieren worden geĆÆnstantieerd. In het onderstaande voorbeeld wordt een pop-upmenu gemaakt zonder het te associĆ«ren met een muis- of toepassingsgebeurtenis.


    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("Geselecteerd item-ID: " & vResponse)
        myPopup.Dispose()
    End Sub
  

Als u de hierboven gedefinieerde Sub uitvoert, wordt een pop-upmenu gemaakt met twee items op de positie X=300 en Y=300 op het scherm.

tip

Het voorvoegsel SFWidgets kan worden onderdrukt terwijl de service PopupMenu wordt aangeroepen.


Het volgende voorbeeld definieert een Sub die kan worden gekoppeld aan een muisgebeurtenis:


    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Pop-upmenu vullen met items
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Doe iets op basis van vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  
tip

Gebruik de methode Dispose om bronnen vrij te maken na het uitvoeren van het pop-upmenu.


Het is ook mogelijk om een pop-upmenu te associƫren met gebeurtenissen die worden geactiveerd door LibreOffice-toepassingen, formulier- en dialoogvensterbesturingselementen. Gebeurtenissen zoals "Muisknop ingedrukt" en "Muisknop losgelaten" worden vaak geassocieerd met pop-upmenu's.


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

Dezelfde voorbeelden in Python:


    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)
        # Pop-upmenu vullen met items
        response = my_popup.Execute()
        # Doe iets op basis van reactie
        my_popup.Dispose()
  

Eigenschappen

Name

AlleenLezen

Type

Beschrijving

ShortcutCharacter

Nee

String

Teken dat wordt gebruikt om de toegangssleutel van een menu-item te definiƫren. Het standaardteken is ~.

SubmenuCharacter

Nee

String

Teken of tekenreeks die bepaalt hoe menu-items worden genest. Het standaardteken is >.


Menu en submenu's

Om een pop-upmenu met submenu's te maken, gebruikt u het teken dat is gedefinieerd in de eigenschap SubmenuCharacter terwijl u het menu-item maakt om te bepalen waar het zal worden geplaatst. Beschouw bijvoorbeeld de volgende menu-/submenuhiƫrarchie.


    ' 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
  

De onderstaande code gebruikt het standaard submenuteken > om de hierboven gedefinieerde menu-/submenuhiƫrarchie te creƫren:


    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

De tekenreeks --- wordt gebruikt om scheidingslijnen te definiƫren in menu's of submenu's.


Pictogrammen gebruiken

Items in het menu kunnen pictogrammen hebben, die als argumenten worden opgegeven in de methoden AddCheckBox, AddItem en AddRadioButton.

Alle pictogrammen die beschikbaar zijn in LibreOffice kunnen worden gebruikt door hun pad op te geven ten opzichte van de map waarin de pictogrambestanden zich in de installatiemap bevinden. Pictogrammen bevinden zich in de volgende map:

INSTALLDIR/share/config

tip

Gebruik de eigenschap InstallFolder van de service FileSystem om te bepalen waar LibreOffice op uw systeem is geĆÆnstalleerd.


Deze map bevat een reeks ZIP-bestanden met de afbeeldingsbestanden van elke beschikbare pictogrammenset. De afbeeldingen in deze ZIP-bestanden zijn georganiseerd in mappen. Om een pictogram te gebruiken, specificeert u het pictogrambestand met het pad naar de locatie in het ZIP-bestand.

In het onderstaande voorbeeld wordt het pictogram "sc_newdoc.svg" gebruikt dat zich in de map "cmd" bevindt. De schuine streep "/" wordt gebruikt als padscheiding, ongeacht het besturingssysteem.

In BASIC

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

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

Alle pictogrammensets hebben dezelfde interne structuur. Het daadwerkelijk weergegeven pictogram is afhankelijk van de pictogrammenset die momenteel wordt gebruikt.


Methoden

Lijst met methoden in de service PopupMenu

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

Voegt een selectievakje in het pop-upmenu in. Retourneert een geheel getal dat het ingevoegde item identificeert.

Syntaxis:

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

Parameters:

menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiƫrarchie van het item in het menu met behulp van het submenuteken.

name: Tekenreeks die moet worden geretourneerd wanneer op het item wordt geklikt. Standaard wordt het laatste onderdeel van de menuhiƫrarchie gebruikt.

status: Definieert of het item is geselecteerd wanneer het menu wordt gemaakt (standaard = False).

icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.

tooltip: Tekst die moet worden weergegeven als helptip.

Voorbeeld:

In BASIC

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

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

AddItem

Voegt een menu-item in het pop-upmenu in. Retourneert een geheel getal dat het ingevoegde item identificeert.

Syntaxis:

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

Parameters:

menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiƫrarchie van het item in het menu met behulp van het submenuteken.

name: Tekenreeks die moet worden geretourneerd wanneer op het item wordt geklikt. Standaard wordt het laatste onderdeel van de menuhiƫrarchie gebruikt.

icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.

tooltip: Tekst die moet worden weergegeven als helptip.

Voorbeeld:

In BASIC

      myPopup.AddItem("Item A", Tooltip := "Een beschrijvend bericht")
    
In Python

      my_popup.AddItem("Item A", tooltip = "Een beschrijvend bericht")
    

AddRadioButton

Voegt een keuzerondje in het pop-upmenu in. Retourneert een geheel getal dat het ingevoegde item identificeert.

Syntaxis:

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

Parameters:

menuitem: Definieert de tekst die in het menu moet worden weergegeven. Dit argument definieert ook de hiƫrarchie van het item in het menu met behulp van het submenuteken.

name: Tekenreeks die moet worden geretourneerd wanneer op het item wordt geklikt. Standaard wordt het laatste onderdeel van de menuhiƫrarchie gebruikt.

status: Definieert of het item is geselecteerd wanneer het menu wordt gemaakt (standaard = False).

icon: Pad en naam van het pictogram dat moet worden weergegeven zonder het voorlooppadscheidingsteken. Het getoonde pictogram hangt af van de pictogrammenset die wordt gebruikt.

tooltip: Tekst die moet worden weergegeven als helptip.

Voorbeeld:

In BASIC

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

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

Execute

Toont het pop-upmenu en wacht op een actie van de gebruiker. Retourneert het item waarop de gebruiker heeft geklikt.

Als de gebruiker buiten het pop-upmenu klikt of op de toets Esc drukt, wordt er geen item geselecteerd. In dergelijke gevallen is de geretourneerde waarde afhankelijk van de parameter returnid. Als returnid = True en er is geen item geselecteerd, dan wordt de waarde 0 (nul) geretourneerd. Anders wordt een lege tekenreeks "" geretourneerd.

Syntaxis:

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

Parameters:

returnid: Indien True wordt de geselecteerde item-ID geretourneerd. Als False retourneert de methode de naam van het item (standaard = True).

Voorbeeld:

In de onderstaande voorbeelden wordt een pop-upmenu gemaakt en wordt de naam van het item geretourneerd omdat het argument returnid is ingesteld op False.

In BASIC

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

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

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.


Help ons, alstublieft!