LibreOffice 25.2 laguntza
PopupMenu zerbitzua gertaerei lotuta dauden edo scripten bidez exekutatzen diren laster-menuak sortzeko erabili daiteke. Zerbitzu horrek honako ezaugarriak eskaintzen ditu:
Sarrera, kontrol-lauki eta aukera-botoi pertsonalizatuak dituzten laster-menuen sorrera.
Menu-elementuen apainketa ikonoekin eta aholkuekin.
PopupMenu zerbitzua erabiltzeko, ScriptForge liburutegia kargatu edo inportatu behar da:
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.
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
  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
  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()
  | 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. | 
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")
  --- katea menuetako edo azpimenuetako marra bereizleak definitzeko erabiltzen da.
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
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.
      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    Ikono multzo guztiek barneko egitura bera dute. Bistaratuko den ikonoa unean erabiltzen ari den ikono multzoaren araberakoa izango da.
| PopupMenu zerbitzuaren metodoen zerrenda | ||
|---|---|---|
Kontrol-lauki bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int
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.
      myPopup.AddCheckBox("Option A", Status := True)
    
      my_popup.AddCheckBox("Option A", status=True)
    Menu-sarrera bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str): int
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.
      myPopup.AddItem("Item A", Tooltip := "Mezu deskribatzaile bat")
    
      my_popup.AddItem("A elementua", tooltip = "Deskribapen-mezu bat")
    Aukera-botoi bat txertatzen du laster-menuan. Txertatutako elementua identifikatzen duen osoko balio bat itzultzen du.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int
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.
      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
      my_popup.AddRadioButton("Option A", name="A", status=True)
    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.
svc.Execute(opt returnid: bool = True): any
returnid: True (egia) bada, hautatutako elementuaren IDa itzuliko da. False (faltsua) bada, metodoak elementuaren izena itzuliko du (Balio lehenetsia = True).
Beheko adibideetan, returnid argumentuaren balioa False denez, laster-menu bat sortzen da eta elementuaren izena itzultzen da.
      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)