Hilfe für LibreOffice 24.8
Der Dienst PopupMenu kann verwendet werden, um Popup-Menüs zu erstellen, die Ereignissen zugeordnet oder von Skripten ausgeführt werden können. Dieser Dienst bietet die folgenden Funktionen:
Erstellung von Popup-Menüs mit benutzerdefinierten Einträgen, Markier- und Optionsfeldern.
Dekoration von Menüeinträgen mit Icons und Infotexten.
Vor der Verwendung des Dienstes PopupMenu muss die Bibliothek ScriptForge geladen oder importiert werden:
Der Service PopupMenu kann auf mehrere Arten instanziiert werden. Das folgende Beispiel erstellt ein Popup-Menü, ohne es mit einem Maus- oder Anwendungsereignis zu verknüpfen.
    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("Ausgewählte Element-ID: " & vResponse)
        myPopup.Dispose()
    End Sub
  Wenn Sie das oben definierte Sub ausführen, wird ein Popup-Menü mit zwei Einträgen an den Positionen X=300 und Y=300 auf dem Bildschirm erstellt.
Das Präfix SFWidgets kann beim Aufruf des Dienstes PopupMenu unterdrückt werden.
Das folgende Beispiel definiert ein Sub, das einem Mausereignis zugeordnet werden kann:
    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Popupmenü mit Einträgen füllen
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Etwas tun, das auf vResponse basiert
        ' ...
        myPopup.Dispose()
    End Sub
  Verwenden Sie die Methode Dispose, um Ressourcen nach dem Ausführen des Popup-Menüs freizugeben.
Es ist auch möglich, ein Popup-Menü mit Ereignissen zu verknüpfen, die von LibreOffice-Anwendungen, Formular- und Dialogsteuerungen ausgelöst werden. Ereignisse wie „Maustaste gedrückt“ und „Maustaste losgelassen“ werden üblicherweise mit Popup-Menüs in Verbindung gebracht.
    Sub MyPopupClick(Optional poEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poEvent)
        ' ...
    End Sub
  Die obigen Beispiele können wie folgt in Python geschrieben werden:
    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)
        # Popupmenü mit Elementen füllen
        response = my_popup.Execute()
        # Etwas basierend auf der Antwort machen
        my_popup.Dispose()
  | Name | Schreibgeschützt | Typ | Beschreibung | 
|---|---|---|---|
| ShortcutCharacter | Nein | String | Zeichen, das verwendet wird, um die Zugriffstaste eines Menüpunkts zu definieren. Das Standardzeichen ist ~. | 
| SubmenuCharacter | Nein | String | Zeichen oder Zeichenfolge, die definiert, wie Menüelemente verschachtelt sind. Das Standardzeichen ist >. | 
Um ein Popup-Menü mit Untermenüs zu erstellen, verwenden Sie das in der Eigenschaft SubmenuCharacter definierte Zeichen, während Sie den Menüeintrag erstellen, um zu definieren, wo er platziert wird. Betrachten Sie beispielsweise die folgende Menü-/Untermenü-Hierarchie.
    ' 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
  Der folgende Code verwendet das standardmäßige Untermenüzeichen >, um die oben definierte Menü-/Untermenühierarchie zu erstellen:
    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")
  Die Zeichenfolge --- wird verwendet, um Trennlinien in Menüs oder Untermenüs zu definieren.
Elemente im Menü können Symbole haben, die als Argumente in den Methoden AddCheckBox, AddItem und AddRadioButton angegeben werden.
Alle in LibreOffice verfügbaren Symbole können verwendet werden, indem ihr Pfad relativ zu dem Ordner festgelegt wird, in dem sich die Symboldateien im Installationsordner befinden. Symbole befinden sich im folgenden Ordner:
INSTALLDIR/share/config
Verwenden Sie die Eigenschaft InstallFolder des Dienstes FileSystem, um festzustellen, wo LibreOffice in Ihrem System installiert ist.
Dieser Ordner enthält eine Reihe von ZIP-Dateien, welche die Bilddateien jedes verfügbaren Symbolsatzes enthalten. Die Bilder in diesen ZIP-Dateien sind in Ordnern organisiert. Um ein Symbol zu verwenden, legen Sie die Symboldatei mit dem Pfad zu ihrem Speicherort in der ZIP-Datei fest.
Das folgende Beispiel verwendet das Symbol „sc_newdoc.svg“, das sich im Ordner „cmd“ befindet. Der Schrägstrich „/“ wird unabhängig vom Betriebssystem als Pfadtrennzeichen verwendet.
      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    Alle Icon-Sets haben die gleiche interne Struktur. Das tatsächlich angezeigte Symbol hängt von dem derzeit verwendeten Symbolsatz ab.
| Liste der Methoden im Dienst PopupMenu | ||
|---|---|---|
Fügt ein Markierfeld in das Popup-Menü ein. Gibt einen ganzzahligen Wert zurück, der das eingefügte Element identifiziert.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int
menuitem: Definiert den im Menü anzuzeigenden Text. Dieses Argument definiert auch die Hierarchie des Elements innerhalb des Menüs, indem es das Untermenüzeichen verwendet.
name: Zeichenfolge, die zurückgegeben wird, wenn auf das Element geklickt wird. Standardmäßig wird die letzte Komponente der Menühierarchie verwendet.
status: Legt fest, ob das Element ausgewählt ist, wenn das Menü erstellt wird (Standard = False).
icon: Pfad und Name des anzuzeigenden Symbols ohne führenden Pfadtrenner. Das tatsächlich angezeigte Symbol hängt vom verwendeten Symbolsatz ab.
tooltip: Text, der als Infotext angezeigt werden soll.
      myPopup.AddCheckBox("Option A", Status := True)
    
      my_popup.AddCheckBox("Option A", status=True)
    Fügt einen Menüeintrag in das Popup-Menü ein. Gibt einen ganzzahligen Wert zurück, der das eingefügte Element identifiziert.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str): int
menuitem: Definiert den im Menü anzuzeigenden Text. Dieses Argument definiert auch die Hierarchie des Elements innerhalb des Menüs, indem es das Untermenüzeichen verwendet.
name: Zeichenfolge, die zurückgegeben wird, wenn auf das Element geklickt wird. Standardmäßig wird die letzte Komponente der Menühierarchie verwendet.
icon: Pfad und Name des anzuzeigenden Symbols ohne führenden Pfadtrenner. Das tatsächlich angezeigte Symbol hängt vom verwendeten Symbolsatz ab.
tooltip: Text, der als Infofeld angezeigt werden soll.
      myPopup.AddItem("Element A", Tooltip := "Eine beschreibende Nachricht")
    
      my_popup.AddItem("Eintrag A", Tooltip = "Eine beschreibende Nachricht")
    Fügt einen Optionsfeld-Eintrag in das Popup-Menü ein. Gibt einen ganzzahligen Wert zurück, der das eingefügte Element identifiziert.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int
menuitem: Definiert den im Menü anzuzeigenden Text. Dieses Argument definiert auch die Hierarchie des Elements innerhalb des Menüs, indem es das Untermenüzeichen verwendet.
name: Zeichenfolge, die zurückgegeben wird, wenn auf das Element geklickt wird. Standardmäßig wird die letzte Komponente der Menühierarchie verwendet.
status: Definiert, ob das Element ausgewählt ist, wenn das Menü erstellt wird (Standard = False).
icon: Pfad und Name des anzuzeigenden Symbols ohne führenden Pfadtrenner. Das tatsächlich angezeigte Symbol hängt vom verwendeten Symbolsatz ab.
tooltip: Text der als Infobox angezeigt werden soll.
      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
      my_popup.AddRadioButton("Option A", name="A", status=True)
    Zeigt das Popup-Menü an und wartet auf eine Benutzeraktion. Gibt das Element zurück, auf das der Benutzer geklickt hat.
Wenn der Benutzer außerhalb des Popup-Menüs klickt oder die Taste Esc drückt, wird kein Element ausgewählt. In solchen Fällen hängt der zurückgegebene Wert vom Parameter returnid ab. Wenn returnid = True und kein Eintrag ausgewählt ist, dann wird der Wert 0 (Null) zurückgegeben. Andernfalls wird eine leerer Zeichenfolge "" zurückgegeben.
svc.Execute(opt returnid: bool = True): any
returnid: Bei True wird die ausgewählte Element-ID zurückgegeben. Wenn False, gibt die Methode den Namen des Elements zurück (Standard = True).
In den folgenden Beispielen wird ein Popup-Menü erstellt und der Name des Elements zurückgegeben, da das Argument returnid auf False gesetzt ist.
      myPopup.AddItem("Item A", Name := "A")
      myPopup.AddItem("Item B", Name := "B")
      Dim vResponse as Variant
      vResponse = myPopup.Execute(False)
    
      my_popup.AddItem("Item A", name="A")
      my_popup.AddItem("Item B", name="B")
      response = my_popup.Execute(False)