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 Collabora Office-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 Collabora Office 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 Collabora Office 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!