Edukiak

# SFWidgets.PopupMenu zerbitzua

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.

## Zerbitzuari deitzea

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

• 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.

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

##### 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")

--- 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

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")

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)

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.

Erlazionatutako gaiak

SFDialogs.Dialog zerbitzua

SFDialogs.DialogControl zerbitzua

SFWidgets.Menu zerbitzua

Emaguzu laguntza!