Słužba SFWidgets.PopupMenu

Słužba PopupMenu da so wužiwać, zo by wuskakowace menije wutworił, kotrež dadźa so z podawkami zwjazać abo přez skripty wuwjesć. Tuta słužba slědowace funkcije skići:

Słužbowe wuwołanje

Prjedy hač słužbu PopupMenu wužiwaće, dyrbiće biblioteku ScriptForge začitać abo importować:

note

• Makra Basic sej wužaduja, zo so biblioteka ScriptForge z pomocu slědowaceho přikaza začituje:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Skripty Python sej import z modula scriptforge wužaduja:
from scriptforge import CreateScriptService


W Basic

Słužba PopupMenu da so na wjacore wašnja instanciěrować. Slědowacy přikład wuskakowacy meni wutworja, bjeztoho zo by so z podawkom myški abo nałoženja zwjazał.


    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 wubraneho zapiska: " & vResponse)
        myPopup.Dispose()
    End Sub
  

Hdyž so horjeka definowany wotrězk Sub wuwjedźe, so wuskakowacy meni z dwěmaj zapiskomaj w poziciji X=300 a Y=300 na wobrazowce wutwori.

tip

Prefiks SFWidgets da so potłóčić, mjeztym zo so słužba PopupMenu wuwołuje.


Slědowacy přikład wotrězk Sub definuje, kotryž da so z podawkom myški zwjazać:


    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        'Wuskakowacy meni ze zapiskami pjelnić
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Čińće něšto, štož na vResponse bazuje
        ' ...
        myPopup.Dispose()
    End Sub
  
tip

Wužiwajće metodu Dispose, zo byšće resursy po wuwjedźenju wuskakowaceho menija wuswobodźił.


Je tež móžno, wuskakowacy meni z podawkami zwjazać, kotrež so přez nałoženja LibreOffice, formularowe a dialogowe wodźenske elementy wuwabjeja. Podawki kaž „Myška stłóčena“ a „Myška pušćena“ su zwjetša z wuskakowacymi menijemi zwjazane.


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

Přikłady horjeka dadźa so w Python kaž slěduje pisać:


    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)
        # Wuskakowacy meni ze zapiskami pjelnić
        response = my_popup.Execute()
        # Něšto na zakładźe wotmołwy činić
        my_popup.Dispose()
  

Kajkosće

Mjeno

Přećiwo pisanju škitany

Typ

Wopisanje

ShortcutCharacter

String

Znamješko, kotrež so wužiwa, zo by přistupnu tastu menijoweho zapiska definowało. Standardne znamješko je ~.

SubmenuCharacter

String

Znamješko abo znamješkowy rjećazk, kotrejž definujetej, kak so menijowe zapiski zakašćikuja. Standardne znamješko je >.


Meni a podmenije

Zo byšće wuskakowacy meni z podmenijemi wutworił, wužiwajće znamješko, kotrež je w kajkosći SubmenuCharacter definowane, mjeztym zo menijowy zapisk wutworjeće, zo byšće definował, hdźež so placěruje. Wobhladajće sej na přikład slědowacu menijowu/podmenijowu hierarchiju.


    ' 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
  

Slědowacy kod standardne podmenijowe znamješko > wužiwa, zo by menijowu/podmenijowu hierarchiju wutworił, kotraž je horjeka definowana:


    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

Znamješkowy rjećazk --- so wužiwa, zo by dźělenske linije w menijach abo podmenijach definował.


Symbole wužiwać

Zapiski w meniju móža symbole měć, kotrež so jako argumenty w metodach AddCheckBox, AddItem a AddRadioButton podawaja.

Wšě symbole, kotrež su w LibreOffice k dispoziciji dadźa so wužiwać, hdyž jich šćežku relatiwnje k rjadowakej podawaće, hdźež symbolowe dataje su w instalaciskim rjadowaku. Symbole su w slědowacym rjadowaku:

INSTALLDIR/share/config

tip

Wužiwajće kajkosć InstallFolder słužby FileSystem, zo byšće zwěsćił, hdźe je so LibreOffice we wašim systemje instalowany.


Tutón rjadowak rjad ZIP-datajow wobsahuje, kotrež wobrazowe dataje kóždeje symboloweje sadźby wobsahuje, kotrež je k dispoziciji. Wobrazy w tutych ZIP-datajach su w rjadowakach organizowane. Zo byšće symbol wužiwał, podajće symbolowu dataju ze šćežku k jeje městnu w ZIP-dataji.

Slědowacy přikład symbol „sc_newdoc.svg“ wužiwa, kotryž je w rjadowaku „cmd“. Nakósna smužka „/“ so jako šćežkowe dźělatko wužiwa, njedźiwajo na dźěłowy system.

W Basic

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

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

Wšě symbolowe sadźby maja samsnu internu strukturu. Woprawdźity symbol, kotryž so pokazuje, wot symboloweje sadźby wotwisuje, kotraž so tuchwilu wužiwa.


Metody

Lisćina metodow w słužbje PopupMenu

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

Zasadźuje kontrolny kašćik we wuskakowacym meniju. Wróći cyłoličbowu hódnotu, kotraž zasadźeny zapisk identifikuje.

Syntaksa:

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

Parametry:

menuitem: Definuje tekst, kotryž so ma w meniju pokazać. Tutón argument tež hierarchiju zapiska w meniju z pomocu podmenijoweho znamješka.

name: Znamješkowy rjećazk, kotryž so ma wróćić, hdyž so na zapisk klika. Po standardźe so poslednja komponenta menijoweje hierarchije wužiwa.

status: Definuje, hač so zapisk wuběra, hdyž so meni wutworja (standard = False).

icon: Šćežka a mjeno symbola, kotryž so ma bjez načolneho šćežkoweho dźělatka pokazać. Poprawny symbol, kotryž so pokazuje, wot symboloweje sadźby wotwisuje, kotryž so wužiwa.

tooltip: Tekst, kotryž so ma jako pomocny tekst pokazać.

Přikład:

W Basic

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

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

AddItem

Zasadźuje menijowy zapisk do wuskakowaceho menija. Wróći cyłoličbowu hódnotu, kotraž zasadźeny zapisk identifikuje.

Syntaksa:

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

Parametry:

menuitem: Definuje tekst, kotryž so ma w meniju pokazać. Tutón argument tež hierarchiju zapiska w meniju z pomocu podmenijoweho znamješka.

name: Znamješkowy rjećazk, kotryž so ma wróćić, hdyž so na zapisk klika. Po standardźe so poslednja komponenta menijoweje hierarchije wužiwa.

icon: Šćežka a mjeno symbola, kotryž so ma bjez načolneho šćežkoweho dźělatka pokazać. Poprawny symbol, kotryž so pokazuje, wot symboloweje sadźby wotwisuje, kotryž so wužiwa.

tooltip: Tekst, kotryž so ma jako pomocny tekst pokazać.

Přikład:

W Basic

      myPopup.AddItem("Zapisk A", Tooltip := "Wopisowaca powěsć")
    
W Python

      my_popup.AddItem("Zapisk A", tooltip = "Wopisowaca powěsć")
    

AddRadioButton

Zasadźuje zapisk opciskeho pola do wuskakowaceho menija. Wróći cyłoličbowu hódnotu, kotraž zasadźeny zapisk identifikuje.

Syntaksa:

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

Parametry:

menuitem: Definuje tekst, kotryž so ma w meniju pokazać. Tutón argument tež hierarchiju zapiska w meniju z pomocu podmenijoweho znamješka.

name: Znamješkowy rjećazk, kotryž so ma wróćić, hdyž so na zapisk klika. Po standardźe so poslednja komponenta menijoweje hierarchije wužiwa.

status: Definuje, hač so zapisk wuběra, hdyž so meni wutworja (standard = False).

icon: Šćežka a mjeno symbola, kotryž so ma bjez načolneho šćežkoweho dźělatka pokazać. Poprawny symbol, kotryž so pokazuje, wot symboloweje sadźby wotwisuje, kotryž so wužiwa.

tooltip: Tekst, kotryž so ma jako pomocny tekst pokazać.

Přikład:

W Basic

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

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

Execute

Pokazuje wuskakowacy meni a čaka na akciju wužiwarja. Wróći zapisk, na kotryž je wužiwar kliknył.

Jeli wužiwar zwonka wuskakowaceho menija klika abo tastu Esc tłóči, so žadyn zapisk njewuběra. W tajkich padach wróćena hódnota wo parametra returnid wotwisuje. Jeli returnid = True a žadyn zapisk wubrany njeje, so hódnota 0 (nul) wróći. Hewak so prózdny znamješkowy rjećazk "" wróći.

Syntaksa:

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

Parametry:

returnid: Jeli True, so ID wubraneho zapiska wróći. Jeli False, metoda mjeno zapiska wróći (Standard = True).

Přikład:

W slědowacych přikładach so wuskakowacy meni wutworja a mjeno zapiska so wróća, dokelž argument returnid so na False staja.

W Basic

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

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

Wšě rutiny Basic ScriptForge abo identifikatory, kotrež so z podsmužku „_“ započinaja, su za interne wužiwanje wuměnjene. Njejsu za to myslene, so w makrach Basic abo skriptach Python wužiwać.