SFWidgets.PopupMenu zerbitzua

PopupMenu zerbitzua gertaerei lotuta dauden edo scripten bidez exekutatzen diren laster-menuak sortzeko erabili daiteke. Zerbitzu horrek honako ezaugarriak eskaintzen ditu:

Zerbitzuari deitzea

PopupMenu zerbitzua erabiltzeko, ScriptForge liburutegia kargatu edo inportatu behar da:

note

• Basic makroak erabiltzkeo, ScriptForge liburutegia kargatu behar da honako instrukzioa erabiliz:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python scriptak erabiltzeko, berriz, scriptforge modulu baten inportazioa behar dute:
from scriptforge import CreateScriptService


Basic lengoaian

Modu asko daude PopupMenu zerbitzuaren instantziak sortzeko. Beheko adibidean, saguaren edo aplikazio baten gertaerekin lotuta ez dagoen laster-menu bat sortzen da.


    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("Hautatutako elementuaren IDa: " & vResponse)
        myPopup.Dispose()
    End Sub
  

Goian definitutako Sub errutina exekutatzean, pantailan X=300 eta Y=300 kokagunean dagoen eta bi sarrera dituen laster-menu bat sortuko da.

tip

SFWidgets ez da derrigorrezkoa PopupMenu zerbitzuari deitzean.


Hurrengo adibidean, sagu-gertaera bati lotu dakiokeen Sub instrukzio bat definitu da:


    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Bete laster-menua elementuekin
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Egin zerbait vResponse elementuan oinarrituta
        ' ...
        myPopup.Dispose()
    End Sub
  
tip

Erabili Dispose metodoa laster-menua exekutatu ondoren baliabideak askatzeko.


Posible da, baita ere, laster-menu bat LibreOffice aplikazioek, inprimakien edo elkarrizketa-koadroen kontrolek abiarazitako gertaerekin lotzea. Adibidez, "Saguaren botoia sakatu da" eta "Saguaren botoia askatu da" moduko gertaerak sarritan laster-menuekin lotzen dira.


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

Goiko adibideak honela idatzi daitezke Python lengoaian:


    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)
        # Bete laster-menua elementuekin
        response = my_popup.Execute()
        # Egin zerbait erantzunean oinarrituta
        my_popup.Dispose()
  

Propietateak

Izena

Irakurtzeko soilik

Mota

Deskribapena

ShortcutCharacter

Ez

String

Menu-elementu bat atzitzeko erabiliko den tekla definituko duen karakterea. Karaktere lehenetsia ~ da.

SubmenuCharacter

Ez

String

Menu-elementuak nola habiaratzen diren definitzen duen karaktere edo katea. Karaktere lehenetsia > da.


Menuak eta azpimenuak

Azpimenuak dituen laster-menu bat sortzeko, erabili SubmenuCharacter propietatean definitutako karakterea menu-sarrera sortzean, azpimenua non kokatuko den definitzeko. Adibidez, hurrengo menu/azpimenu hierarkia sortu daiteke.


    ' 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
  

Beheko kodeak > azpimenu-karakterea darabil goian definitutako menuen/azpimenuen hierarkia sortzeko:


    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

--- katea menuetako edo azpimenuetako marra bereizleak definitzeko erabiltzen da.


Ikonoak erabiltzea

Menuko elementuek ikonoak eduki ditzakete. AddCheckBox, AddItem eta AddRadioButton metodoen argumentu gisa adierazten dira.

LibreOffice aplikazioak erabilgarri dituen ikono guztiak erabili daitezke, ikono-fitxategiak instalazio-karpetako zein tokitan dauden zehazten bada beren bide-izen erlatiboaren bidez. Ikonoak honako karpetan daude:

INSTALLDIR/share/config

tip

Erabili FileSystem zerbitzuaren InstallFolder propietatea LibreOffice sistemako zein tokitan dagoen instalatuta zehazteko.


Karpeta horrek ikono multzo erabilgarri bakoitzaren irudi-fitxategiak dituzten ZIP fitxategien serieak ditu. ZIP fitxategien barruko irudiak karpetatan daude antolatuta. Ikono bat erabiltzeko, zehaztu ikono-fitxategiak ZIP fitxategiaren barruan duen kokagunearen bide-izena.

Beheko adibidean, "cmd" karpetaren barruan dagoen "sc_newdoc.svg" ikonoa erabiltzen da. Barraren karakterea, "/", bide-izenaren bereizle gisa erabiltzen da, berdin dio sistema eragilea zein den.

Basic lengoaian

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

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

Ikono multzo guztiek barneko egitura bera dute. Bistaratuko den ikonoa unean erabiltzen ari den ikono multzoaren araberakoa izango da.


Metodoak

PopupMenu zerbitzuaren metodoen zerrenda

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

Kontrol-lauki bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.

Sintaxia:

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

Parametroak:

menuitem: Menuan bistaratuko den testua definitzen du. Argumentu honek elementuak menuaren barruan duen hierarkia ere definitzen du, horretarako azpimenuen karakterea erabiliz.

name: Elementuan klik egiten denean itzuliko den kate-balioa. Balio lehenetsia menu-hierarkiaren azken osagaia da.

status: Menua sortzen denean elementua hautatuta agertuko den ala ez definitzen du (Balio lehenetsia = False).

icon: Bistaratuko den ikonoaren bidea eta izena, ezkerreko bide-bereizlerik gabe. Erakutsiko den ikonoa erabilitako ikono multzoaren araberakoa izango da.

tooltip: Aholku gisa bistaratuko den testua.

Adibidea:

Basic lengoaian

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

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

AddItem

Menu-sarrera bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.

Sintaxia:

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

Parametroak:

menuitem: Menuan bistaratuko den testua definitzen du. Argumentu honek elementuak menuaren barruan duen hierarkia ere definitzen du, horretarako azpimenuen karakterea erabiliz.

name: Elementuan klik egiten denean itzuliko den kate-balioa. Balio lehenetsia menu-hierarkiaren azken osagaia da.

icon: Bistaratuko den ikonoaren bidea eta izena, ezkerreko bide-bereizlerik gabe. Erakutsiko den ikonoa erabilitako ikono multzoaren araberakoa izango da.

tooltip: Aholku gisa bistaratuko den testua.

Adibidea:

Basic lengoaian

      myPopup.AddItem("Item A", Tooltip := "Mezu deskribatzaile bat")
    
Python lengoaian

      my_popup.AddItem("A elementua", tooltip = "Deskribapen-mezu bat")
    

AddRadioButton

Aukera-botoi bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.

Sintaxia:

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

Parametroak:

menuitem: Menuan bistaratuko den testua definitzen du. Argumentu honek elementuak menuaren barruan duen hierarkia ere definitzen du, horretarako azpimenuen karakterea erabiliz.

name: Elementuan klik egiten denean itzuliko den kate-balioa. Balio lehenetsia menu-hierarkiaren azken osagaia da.

status: Menua sortzen denean, elementua hautatuta dagoen ala ez definitzen du (Balio lehenetsia = False).

icon: Bistaratuko den ikonoaren bidea eta izena, ezkerreko bide-bereizlerik gabe. Erakutsiko den ikonoa erabilitako ikono multzoaren araberakoa izango da.

tooltip: Aholku gisa bistaratuko den testua.

Adibidea:

Basic lengoaian

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

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

Execute

Laster-menua bistaratzen du eta erabiltzailearen ekintza baten zain geratzen da. Erabiltzaileak sakatu duen elementua itzultzen du.

Erabiltzaileak laster-leihotik kanpo egiten badu klik edo Esc tekla sakatzen badu, ez da elementurik hautatuko. Kasu horietan, itzulitako balioa returnid parametroaren araberakoa da. returnid = True bada eta ez badago elementurik hautatuta, 0 (zero) balioa itzuliko da. Bestela, hutsik dagoen kate bat, "", itzuliko da.

Sintaxia:

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

Parametroak:

returnid: True (egia) bada, hautatutako elementuaren IDa itzuliko da. False (faltsua) bada, metodoak elementuaren izena itzuliko du (Balio lehenetsia = True).

Adibidea:

Beheko adibideetan, returnid argumentuaren balioa False denez, laster-menu bat sortzen da eta elementuaren izena itzultzen da.

Basic lengoaian

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

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

Azpimarraren karaktere bat, "_", aurrizki gisa duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez dira Basic makroetan edo Python scriptetan erabili behar.


Emaguzu laguntza!