Edukiak

# SFWidgets.Menu zerbitzua

Menu zerbitzua LibreOffice dokumentu-leiho bateko menu-barraren menuak sortu eta kentzeko erabili daiteke. Menu-sarrera bakoitza script batekin edo UNO komando batekin lotu daiteke. Zerbitzuak honako kapazitateak eskaintzen ditu:

- Sarrera pertsonalizatuak, kontrol-laukiak, biratze-botoiak eta bereizleak dituzten menuen sorrera.

- Menu-elementuak ikonoekin eta aholkuekin apaintzea.

Zerbitzu honekin sortutako menuak dokumentu-leiho jakin baterako soilik daude erabilgarri. Ez dira dokumentuan edo aplikazio-ezarpen gisa gordetzen. Dokumentua ixten eta irekitzen bada, menu-barraren ezarpen lehenetsiak berrezarriko dira.

Math formulak, Calc grafikoak edo beste edozein OLE objektu dokumentu baten barruan editatzen direnean, LibreOfficek objektuaren arabera moldatzen du menu-barra. Hori gertatzen denean, Menu zerbitzuaren bidez sortutako menuak kendu egiten dira eta ez dira berrezartzen OLE objektuaren edizioa amaitu arte.

## Zerbitzuari deitzea

Menu 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

Menu zerbitzuaren instantzia bat sortzeko, deitu Document zerbitzuaren CreateMenu metodoari. Beheko kode-zatiak Nire menua izeneko menu bat sortzen du uneko dokumentu-leihoan, eta bi sarrera gehitzen dizkio, A elementua eta B elementua.

        Sub CreateMenu()
            GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
            Dim oDoc as Object, oMenu as Object
            Set oDoc = CreateScriptService("Document")
            Set oMenu = oDoc.CreateMenu("Nire menua")
            With oMenu
                .AddItem("A elementua", Command := "About")
                .AddItem("B elementua", Script := "vnd.sun.star.script:Standard.Module1.ItemB_Listener?language=Basic&location=application")
                .Dispose()
            End With
        End Sub

Menua sortu ondoren, gomendagarria daDispose metodoari deitzea Menu zerbitzu-instantziak erabili dituen baliabideak askatzeko.

Goiko adibidean, A elementua .uno:About UNO komandoari lotuta dago, eta B elementua My Macros edukiontziko Standard liburutegiaren Module1 moduluan definitutako ItemB_Listener scriptari lotuta dago.

Hurrengo adibideak B elementua sakatzean deituko den ItemB_Listener funtzioa definitzen du. Entzule horrek zera egiten du, Sub elementuari pasatutako argumentu-katea zatitzen du eta mezu-koadro batean erakusten du.

        Sub ItemB_Listener(args As String)
            ' Entzuleari pasatutako argumentu-katea prozesatzen du
            Dim sArgs as Object
            sArgs = Split(args, ",")
            MsgBox "Menu-izena: "   & sArgs(0) & Chr(13) & _
                   "Menu-elementua: "   & sArgs(1) & Chr(13) & _
                   "Elementuaren IDa: "     & sArgs(2) & Chr(13) & _
                   "Elementuaren egoera: " & sArgs(3)
        End Sub

Goiko adibidean erakutsi den moduan, script bati lotutako menu-sarrerek komaz bereizitako kate-argumentu bat jasotzen dute, honako balioekin:

- Menuaren goi mailako izena.

- Hautatutako menu-sarreraren kate IDa.

- Hautatutako menu-sarreraren zenbakizko IDa.

- Menu-elementuaren uneko egoera. Kontrol-laukien eta biratze-botoien kasuan da erabilgarria. Elementua markatuta badago, "1" balioa itzuliko da; bestela, "0" itzuliko da.

##### Python lengoaian

Goiko adibideak Python lengoaian ere idatzi daitezke, honako moduan:

        from scriptforge import CreateScriptService

        def create_menu(args=None):
            oDoc = CreateScriptService("Document")
            oMenu = oDoc.CreateMenu("My Menu")
            oMenu.AddItem("Item A", command="About")
            oMenu.AddItem("Item B", script="vnd.sun.star.script:my_macros.py$item_b_listener?language=Python&location=user")
            oMenu.Dispose()

        def item_b_listener(args):
            bas = CreateScriptService("Basic")
            s_args = args.split(",")
            msg = f"Menu-izena: {s_args[0]}\n"
            msg += f"Menu-elementua: {s_args[1]}\n"
            msg += f"Elementuaren IDa: {s_args[2]}\n"
            msg += f"Elementuaren egoera: {s_args[3]}"
            bas.MsgBox(msg)

## Propietateak

Izena | Irakurtzeko soilik | Mota | Deskribapena
--- | --- | --- | ---
ShortcutCharacter | Ez | String | Menu-elementu baten atzitze-tekla definitzeko erabiltzen den karakterea. Karaktere lehenetsia "~" da.
SubmenuCharacter | Ez | String | Menu-elementuak nola habiaratzen diren definitzen duen karakterea edo katea. Karaktere lehenetsia ">" da.

## Menuak eta azpimenuak

Azpimenuak dituen menu bat sortzeko, erabili SubmenuCharacter propietatean definitutako karakterea menua sortzen denean, non kokatuko den definitzeko. Adibidez, begiratu hurrengo menuen/azpimenuen hierarkia.

        ' 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 azpimenuen ">" karaktere lehenetsia darabil goian definitutako menuen/azpimenuen hierarkia sortzeko:

        oMenu.AddItem("Item A")
        oMenu.AddItem("Item B>Item B.1")
        oMenu.AddItem("Item B>Item B.2")
        oMenu.AddItem("---")
        oMenu.AddItem("Item C>Item C.1>Item C.1.1")
        oMenu.AddItem("Item C>Item C.1>Item C.1.2")
        oMenu.AddItem("Item C>Item C.2>Item C.2.1")
        oMenu.AddItem("Item C>Item C.2>Item C.2.2")
        oMenu.AddItem("Item C>Item C.2>---")
        oMenu.AddItem("Item C>Item C.2>Item C.2.3")
        oMenu.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

Menu zerbitzuaren metodoen zerrenda
AddCheckBox | AddItem | AddRadioButton

## AddCheckBox

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

### Sintaxia:

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

### Parametroak:

menuitem: Menuan bistaratuko den testua definitzen du. Argumentu horrek elementuak menuaren barruan duen hierarkia ere definitzen du, azpimenuen karakterearen bidez.

name: Menu-elementua identifikatzeko erabiltzen den kate-balioa. Aukera lehenetsia menu-hierarkiaren azken osagaia erabiltzea da.

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

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

tooltip: Aholku gisa bistaratuko den testua.

command: UNO komandoaren izena, .uno: aurrizkirik gabe. Komando-izena existitzen ez bada, ez da ezer gertatuko.

script: Elementuan klik egitean exekutatutako den Basic edo Python script baten URIa.

command eta script argumentuek elkar baztertzen dute; beraz, horietako bakarra ezarri daiteke menu-elementu bakoitzean.

Irakurri scriptgintzako lan-markoaren URI espezifikazioa script argumentuan erabilitako URI sintaxiari buruz gehiago jakiteko.

### Adibidea:

##### Basic lengoaian

          ' .uno:Paste komandoari lotutako menu-sarrera
          oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
          ' Dokumentuan biltegiratutako Standard.Module1.MyListener izeneko Basic scripta exekutatzen du
          oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
          ' Erabiltzailearen scripten karpetan gordetako myScripts.py fitxategian dagoen MyListener izeneko Python scripta exekutatzen du
          oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")

##### Python lengoaian

          oMenu.AddCheckBox("Item A", status=True, tooltip="Paste values", command="Paste")
          oMenu.AddCheckBox("Item B", status=False, script="vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
          oMenu.AddCheckBox("Item C", Status=True, Script="vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")

## AddItem

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

### Sintaxia:

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

### Parametroak:

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

name: Elementuan klik egitean itzuliko den kate-balioa. Modu lehenetsian, menu-hierarkiaren azken osagaia erabiliko da.

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

tooltip: Aholku gisa bistaratuko den testua.

command: UNO komandoaren izena, .uno: aurrizkirik gabe. Komandoa existitzen ez bada, ez da ezer gertatuko.

script: Elementuan klik egitean exekutatuko den Basic edo Python script baten URIa.

command eta script argumentuek elkar baztertzen dute; beraz, horietako bakarra ezarri daiteke menu-elementu bakoitzean.

Irakurri scriptgintzako lan-markoaren URI espezifikazioa script argumentuan erabilitako URI sintaxiari buruz gehiago jakiteko.

### Adibidea:

##### Basic lengoaian

          oMenu.AddItem("A elementua", Tooltip := "Deskribapen-mezu bat")

##### Python lengoaian

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

## AddRadioButton

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

### Sintaxia:

svc.AddRadioButton(menuitem: str, opt name: str, opt status: str, opt icon: str, opt tooltip: str, opt command: str, opt script: 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 egin ondoren 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 bide-izena eta izena, ezkerreko bide-bereizlerik gabe. Erakutsiko den ikonoa erabilitako ikono multzoaren araberakoa izango da.

tooltip: Aholku gisa bistaratuko den testua.

command: UNO komando baten izena, .uno: aurrizkirik gabe. Komandoa existitzen ez bada, ez da ezer gertatuko.

script: Elementuan klik egitean exekutatuko den Basic edo Python script baten URIa.

command eta script argumentuek elkar baztertzen dute; beraz, horietako bakarra ezarri daiteke menu-elementu bakoitzean.

Irakurri scriptgintzako lan-markoaren URI espezifikazioa script argumentuan erabilitako URI sintaxiari buruz gehiago jakiteko.

### Adibidea:

##### Basic lengoaian

          oMenu.AddRadioButton("Item A", Name := "A", Status := True)

##### Python lengoaian

          oMenu.AddRadioButton("Item A", name="A", status=True)

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

SFWidgets.ContextMenu service

SFWidgets.PopupMenu zerbitzua

SFDocuments.Document zerbitzua

Emaguzu laguntza!