Tulong sa LibreOffice 25.8
Ang Menu maaaring gamitin ang serbisyo upang lumikha at mag-alis ng mga menu mula sa menubar ng isang window ng dokumento ng LibreOffice. Ang bawat entry sa menu ay maaaring iugnay sa isang script o sa isang utos ng UNO. Ang serbisyong ito ay nagbibigay ng mga sumusunod na kakayahan:
Paglikha ng mga menu na may mga custom na entry, checkbox, radio button at separator.
Dekorasyon ng mga item sa menu na may mga icon at tooltip.
Ang mga menu na ginawa gamit ang serbisyong ito ay magagamit lamang para sa isang tinukoy na window ng dokumento. Ang mga ito ay hindi nai-save sa dokumento o bilang mga setting ng application. Ang pagsasara at pagbubukas ng dokumento ay ibabalik ang mga default na setting ng menubar.
Kapag na-edit ang mga object ng OLE gaya ng Math formula o Calc chart mula sa loob ng isang dokumento, muling iko-configure ng LibreOffice ang menubar ayon sa object. Kapag nangyari ito, ang mga menu na ginawa gamit ang Menu ang serbisyo ay inalis at hindi na maibabalik pagkatapos i-edit ang OLE object.
Bago gamitin ang Menu serbisyo ang ScriptForge kailangang i-load o i-import ang library:
Ang Menu ang serbisyo ay ginagawa sa pamamagitan ng pagtawag sa CreateMenu pamamaraan mula sa Dokumento serbisyo. Ang code snippet sa ibaba ay lumilikha ng menu na pinangalanan Aking Menu sa kasalukuyang window ng dokumento na may dalawang entry Aytem A at Aytem B .
    Sub CreateMenu()
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim oDoc as Object, oMenu as Object
        Set oDoc = CreateScriptService("Document")
        Itakda ang oMenu = oDoc.CreateMenu("Aking Menu")
        With oMenu
            .AddItem("Item A", Command := "About")
            .AddItem("Item B", Script := "vnd.sun.star.script:Standard.Module1.ItemB_Listener?language=Basic&location=application")
            .Dispose()
        End With
    End Sub
  Matapos gawin ang menu, inirerekumenda na tawagan ang Itapon paraan upang mapalaya ang mga mapagkukunang ginagamit ng Menu halimbawa ng serbisyo.
Sa halimbawa sa itaas, Aytem A ay nauugnay sa utos ng UNO .uno:Tungkol sa samantalang Aytem B ay nauugnay sa script ItemB_Listener tinukoy sa Modyul1 ng Pamantayan aklatan ng Aking mga Macros lalagyan.
Ang sumusunod na halimbawa ay tumutukoy ItemB_Listener tatawagin yan kung kailan Aytem B ay nag-click. Hinahati lang ng tagapakinig na ito ang string ng argumento na ipinasa sa Sub at ipinapakita ang mga ito sa isang kahon ng mensahe.
    Sub ItemB_Listener(args As String)
        ' Iproseso ang string ng argument na ipinasa sa nakikinig
        Dim sArgs as Object
        sArgs = Split(args, ",")
        MsgBox "Pangalan ng menu: " & sArgs(0) & Chr(13) & _
               "Item sa menu: " & sArgs(1) at Chr(13) & _
               "Item ID: " & sArgs(2) at Chr(13) & _
               "Katayuan ng item: " & sArgs(3)
    End Sub
  Gaya ng ipinapakita sa halimbawa sa itaas, ang mga entry sa menu na nauugnay sa isang script ay tumatanggap ng isang comma-separated string argument na may mga sumusunod na value:
Ang toplevel na pangalan ng menu.
Ang string ID ng napiling entry sa menu.
Ang numerong ID ng napiling entry sa menu.
Ang kasalukuyang estado ng item sa menu. Ito ay kapaki-pakinabang para sa mga checkbox at radio button. Kung ang item ay nilagyan ng check, ang halagang "1" ay ibinalik, kung hindi ang "0" ay ibinalik.
Ang mga halimbawa sa itaas ay maaaring isulat sa Python tulad ng sumusunod:
    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"Pangalan ng menu: {s_args[0]}\n"
        msg += f"Item ng menu: {s_args[1]}\n"
        msg += f"Item ID: {s_args[2]}\n"
        msg += f"Katayuan ng item: {s_args[3]}"
        bas.MsgBox(msg)
  | Pangalan | Readonly | Type | Mga nilalaman | 
|---|---|---|---|
| ShortcutCharacter | Hindi | String | Character na ginamit upang tukuyin ang access key ng isang menu item. Ang default na character ay "~". | 
| SubmenuCharacter | Hindi | String | Character o string na tumutukoy kung paano naka-nest ang mga item sa menu. Ang default na character ay ">". | 
Upang lumikha ng isang menu na may mga submenu, gamitin ang character na tinukoy sa SubmenuCharacter property habang ginagawa ang menu entry para tukuyin kung saan ito ilalagay. Halimbawa, isaalang-alang ang sumusunod na hierarchy ng menu/submenu.
    ' 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
  Ang code sa ibaba ay gumagamit ng default na submenu na character na ">" upang gawin ang menu/submenu hierarchy na tinukoy sa itaas:
    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")
  Ang string --- ay ginagamit upang tukuyin ang mga linya ng separator sa mga menu o submenus.
| Listahan ng Mga Paraan sa Serbisyo ng Menu | ||
|---|---|---|
Naglalagay ng check box sa menu. Nagbabalik ng integer value na tumutukoy sa ipinasok na item.
svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Tinutukoy ang tekstong ipapakita sa menu. Tinutukoy din ng argumentong ito ang hierarchy ng item sa loob ng menu sa pamamagitan ng paggamit ng submenu na character.
pangalan: String value na ginagamit para matukoy ang menu item. Bilang default, ginagamit ang huling bahagi ng hierarchy ng menu.
katayuan: Tinutukoy kung napili ang item kapag ginawa ang menu (Default = Mali ).
icon: Path at pangalan ng icon na ipapakita nang walang nangungunang path separator. Ang aktwal na icon na ipinapakita ay depende sa icon set na ginagamit.
tooltip: Tekstong ipapakita bilang tooltip.
utos: Ang pangalan ng isang UNO command na walang .uno: unlapi. Kung wala ang command name, walang mangyayari.
script: Ang URI para sa isang Basic o Python script na isasagawa kapag na-click ang item.
Ang mga argumento utos at script ay kapwa eksklusibo, kaya isa lamang sa mga ito ang maaaring itakda para sa bawat item sa menu.
Basahin Pagtutukoy ng URI Framework ng Scripting upang matuto nang higit pa tungkol sa URI syntax na ginamit sa script argumento.
      ' Menu entry na nauugnay sa .uno:Paste command
      oMenu.AddCheckBox("Item A", Status := True, ToolTip := "Paste values", Command := "Paste")
      ' Pinapatakbo ang Basic na script na Standard.Module1.MyListener na nakaimbak sa dokumento
      oMenu.AddCheckBox("Item B", Status := False, Script := "vnd.sun.star.script:Standard.Module1.MyListener?language=Basic&location=document")
      ' Pinapatakbo ang Python script na MyListener na matatagpuan sa file myScripts.py sa folder ng mga script ng user
      oMenu.AddCheckBox("Item C", Status := True, Script := "vnd.sun.star.script:myScripts.py$MyListener?language=Python&location=user")
    
      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")
    Naglalagay ng label entry sa menu. Nagbabalik ng integer value na tumutukoy sa ipinasok na item.
svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Tinutukoy ang tekstong ipapakita sa menu. Tinutukoy din ng argumentong ito ang hierarchy ng item sa loob ng menu sa pamamagitan ng paggamit ng submenu na character.
pangalan: String value na ibabalik kapag na-click ang item. Bilang default, ginagamit ang huling bahagi ng hierarchy ng menu.
icon: Path at pangalan ng icon na ipapakita nang walang nangungunang path separator. Ang aktwal na icon na ipinapakita ay depende sa icon set na ginagamit.
tooltip: Tekstong ipapakita bilang tooltip.
utos: Ang pangalan ng isang UNO command na walang .uno: unlapi. Kung wala ang command name, walang mangyayari.
script: Ang URI para sa isang Basic o Python script na isasagawa kapag na-click ang item.
      oMenu.AddItem("Item A", Tooltip := "Isang naglalarawang mensahe")
    
      oMenu.AddItem("Item A", tooltip = "Isang naglalarawang mensahe")
    Naglalagay ng entry sa radio button sa menu. Nagbabalik ng integer value na tumutukoy sa ipinasok na item.
svc.AddRadioButton(menuitem: str, opt name: str, opt status: str, opt icon: str, opt tooltip: str, opt command: str, opt script: str): int
menuitem: Tinutukoy ang tekstong ipapakita sa menu. Tinutukoy din ng argumentong ito ang hierarchy ng item sa loob ng menu sa pamamagitan ng paggamit ng submenu na character.
pangalan: String value na ibabalik kapag na-click ang item. Bilang default, ginagamit ang huling bahagi ng hierarchy ng menu.
katayuan: Tinutukoy kung napili ang item kapag ginawa ang menu (Default = Mali ).
icon: Path at pangalan ng icon na ipapakita nang walang nangungunang path separator. Ang aktwal na icon na ipinapakita ay depende sa icon set na ginagamit.
tooltip: Tekstong ipapakita bilang tooltip.
utos: Ang pangalan ng isang UNO command na walang .uno: unlapi. Kung wala ang command name, walang mangyayari.
script: Ang URI para sa isang Basic o Python script na isasagawa kapag na-click ang item.
      oMenu.AddRadioButton("Item A", Name := "A", Status := True)
    
      oMenu.AddRadioButton("Item A", name="A", status=True)