Storitev SFWidgets.PopupMenu

Storitev PopupMenu lahko uporabite za ustvarjanje pojavnih menijev, ki jih lahko povežete z dogodki ali izvajate s skripti. Ta storitev ponuja naslednje zmogljivosti:

Priklic storitve

Pred uporabo storitve PopupMenu je potrebno naložiti ali uvoziti knjižnico ScriptForge:

note

• Za makre Basic mora biti naložena knjižnica ScriptForge z naslednjim ukazom:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Za skripte Python mora biti opravljen uvoz iz modula scriptforge:
from scriptforge import CreateScriptService


V Basicu

Instanco storitve PopupMenu lahko tvorite na več načinov. Spodnji primer ustvari pojavni meni brez povezovanja z dogodkom miške ali programa.


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

Izvajanje zgoraj določenega podprograma Sub ustvari pojavni meni z dvema vnosoma na položaju X=300 in Y=300 na zaslonu.

tip

Predpono SFWidgets lahko pri priklicu storitve PopupMenu izpustite.


Naslednji primer določa podprogram Sub, ki ga lahko povežete z dogodkom miške:


    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Napolni pojavni meni z elementi
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Stori nekaj na osnovi vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  
tip

Uporabite metodo Dispose, da sprostite vire po izvedbi pojavnega menija.


Možno je tudi, da pojavni meni povežete z dogodki, ki jih prožijo moduli pisarniškega paketa LibreOffice ter kontrolniki obrazcev in pogovornih oken. Dogodki, kot sta »Gumb miške pritisnjen« in »Gumb miške sproščen«, so običajno povezani s pojavnimi meniji.


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

Zgornje primere lahko zapišemo v Pythonu na sledeč način:


    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)
        # Napolni pojavni meni z elementi
        response = my_popup.Execute()
        # Stori nekaj na osnovi odziva
        my_popup.Dispose()
  

Lastnosti

Ime

Samo za branje

Vrsta

Opis

ShortcutCharacter

Ne

String

Znak, ki določa dostopno tipko za menijski element. Privzeta vrednost je ~.

SubmenuCharacter

Ne

String

Znak ali niz, ki določa, kako so elementi menija gnezdeni. Privzeti znak je >.


Meni in podmeniji

Za izdelavo pojavnega menija s podmeniji uporabite znak, določen z lastnostjo SubmenuCharacter, medtem ko ustvarjate menijski vnos z določitvijo, kam bo postavljen. Razmislite npr. o naslednji hierarhiji menija/podmenijev.


    ' 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
  

Spodnja koda uporablja privzeti znak podmenija > za tvorbo zgoraj določene hierarhije menija/podmenijev:


    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

Niz --- je uporabljen za določitev črtnih ločil v menijih in podmenijih.


Uporaba ikon

Elementi menija imajo lahko ikone, ki so določene kot argumenti metod AddCheckBox, AddItem in AddRadioButton.

Uporabite lahko vse ikone, ki so na voljo v LibreOffice, tako da določite njihovo pot relativno glede na mapo, kjer se nahajajo datoteke ikon v namestitveni mapi. Ikone se nahajajo v naslednji mapi:

INSTALLDIR/share/config

tip

Uporabite lastnost InstallFolder storitve FileSystem, da ugotovite, kje na vašem sistemu je nameščen LibreOffice.


Ta mapa vsebuje niz datotek ZIP, ki vsebujejo slikovne datoteke vseh naborov ikon, ki so na voljo. Slike v teh datotekah ZIP so organizirane v mape. Če želite uporabiti ikono, navedite datoteko ikone s potjo do njenega mesta v datoteki ZIP.

Spodnji primer uporablja ikono »sc_newdoc.svg«, ki se nahaja v mapi »cmd«. Znak poševnice »/« se uporablja kot ločilo v poteh, ne glede na uporabljeni operacijski sistem.

V Basicu

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

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

Vsi nabori ikon imajo isto interno strukturo. Dejansko prikazana ikona je odvisna od trenutno uporabljenega nabora ikon.


Metode

Seznam metod storitve PopupMenu

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

V pojavni meni vstavi potrditveno polje. Vrne celoštevilsko vrednost, ki identificira vstavljeni element.

Skladnja:

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

Parametri:

menuitem: določa besedilo, ki bo prikazano v meniju. Ta argument definira tudi hierarhijo elementa v meniju z uporabo znaka za podmeni.

name: vrednost niza, ki bo vrnjena ob kliku elementa. Privzeto je uporabljena zadnja komponenta hierarhije menija.

status: določa, ali je element izbran, ko je ustvarjen meni (privzeta vrednost je False).

icon: pot in ime ikone, ki bo prikazana, brez vodilnega ločila poti. Dejansko prikazana ikona je odvisna od uporabljenega nabora ikon.

tooltip: besedilo, ki bo prikazano kot namig.

Primer:

V Basicu

      myPopup.AddCheckBox("Option A", Status := True)
    
V Pythonu

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

AddItem

V pojavni meni vstavi menijski vnos oz. ukaz. Vrne celoštevilsko vrednost, ki identificira vstavljeni element.

Skladnja:

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

Parametri:

menuitem: določa besedilo, ki bo prikazano v meniju. Ta argument definira tudi hierarhijo elementa v meniju z uporabo znaka za podmeni.

name: vrednost niza, ki bo vrnjena ob kliku elementa. Privzeto je uporabljena zadnja komponenta hierarhije menija.

icon: pot in ime ikone, ki bo prikazana, brez vodilnega ločila poti. Dejansko prikazana ikona je odvisna od uporabljenega nabora ikon.

tooltip: besedilo, ki bo prikazano kot namig.

Primer:

V Basicu

      myPopup.AddItem("Element A", Tooltip := "Opisno sporočilo")
    
V Pythonu

      my_popup.AddItem("Element A", tooltip := "Opisno sporočilo")
    

AddRadioButton

V pojavni meni vstavi izbirni gumb. Vrne celoštevilsko vrednost, ki identificira vstavljeni element.

Skladnja:

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

Parametri:

menuitem: določa besedilo, ki bo prikazano v meniju. Ta argument definira tudi hierarhijo elementa v meniju z uporabo znaka za podmeni.

name: vrednost niza, ki bo vrnjena ob kliku elementa. Privzeto je uporabljena zadnja komponenta hierarhije menija.

status: določa, ali je element izbran, ko je ustvarjen meni (privzeta vrednost je False).

icon: pot in ime ikone, ki bo prikazana, brez vodilnega ločila poti. Dejansko prikazana ikona je odvisna od uporabljenega nabora ikon.

tooltip: besedilo, ki bo prikazano kot namig.

Primer:

V Basicu

      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
V Pythonu

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

Execute

Prikaže pojavni meni in počaka na dejanje uporabnika. Vrne element, ki ga je kliknil uporabnik.

Če uporabnik klikne izven pojavnega menija ali pritisne ubežnico, ni izbran noben element. V takšnih primerih je vrnjena vrednost odvisna od parametra returnid. Če je returnid = True in ni izbran noben element, vrne vrednost 0 (nič). Sicer vrne prazen niz »«.

Skladnja:

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

Parametri:

returnid: če je True, vrne ID izbranega elementa. Če je False, metoda vrne ime elementa (privzeta vrednost je True).

Primer:

V spodnjih primerih je ustvarjen pojavni meni, vrne pa ime elementa, saj je argument returnid nastavljen na False.

V Basicu

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

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

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic ali skriptih Python niso namenjeni.


Podprite nas!