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.PopupMenu zerbitzua

SFDocuments.Document zerbitzua

Emaguzu laguntza!