### **insert** Insertar nuevo menú en Calc. En la propiedad `CommandURL` es posible establecer tanto un comando UNO de LibreOffice, como un diccionario con los datos de una macro. El nombre del menú es importante para cuando se quiera eliminar. ```py nombre_menu = 'zaz.my.menu' menu = { 'Label': 'My menu', 'CommandURL': nombre_menu, 'Submenu': [ { 'Label': 'Open Macros Dialog...', 'CommandURL': 'MacroDialog', }, { 'Label': '-', }, { 'Label': 'My macro', 'CommandURL': {'library': 'test', 'name': 'hola'}, }, { 'Label': 'Execute macro...', 'CommandURL': 'RunMacro', 'ShortCut': 'Shift+Ctrl+Alt+E', }, ] } menus_calc = app.menus['calc'] menus_calc.insert(menu) ``` !!! tip Para controlar los menús de las demás aplicaciones, solo hay que cambiar el nombre de la aplicación.
### **remove** Eliminar un menú existente. ```py nombre_menu = 'zaz.my.menu' menus_calc = app.menus['calc'] menus_calc.remove(nombre_menu) ```
### **Insertar en menú existente** Dentro del menú Herramientas (`tools`), después de la opción `Macros...` ```py menu = app.menus['calc']['tools'] menu_nombre = 'zaz.my.menu' menu_nuevo = { 'Label': 'My menu', 'CommandURL': menu_nombre, 'Submenu': [ { 'Label': 'Open Macros Dialog...', 'CommandURL': 'MacroDialog', }, { 'Label': '-', }, { 'Label': 'My macro', 'CommandURL': {'library': 'test', 'name': 'hello'}, }, { 'Label': 'Execute macro...', 'CommandURL': 'RunMacro', 'ShortCut': 'Shift+Ctrl+Alt+E', }, ] } if menu_nombre in menu: menu.remove(menu_nombre) else: menu.insert(menu_nuevo, '.uno:MacrosMenu') ```
### **debug** Para saber los nombres de cualquier menú. ```py menu = app.menus['calc']['tools'] menu.debug() ``` ```sh (0) .uno:SpellDialog (1) .uno:SpellOnline (2) .uno:ThesaurusDialog (3) .uno:LanguageMenu ├─ (0) .uno:SetLanguageAllTextMenu ├─ (1) ---------- ├─ (2) .uno:Hyphenate ├─ (3) .uno:ChineseConversion ├─ (4) .uno:HangulHanjaConversion ├─ (5) ---------- ├─ (6) .uno:MoreDictionaries (4) ---------- (5) .uno:AutoCorrectDlg (6) .uno:AutoComplete (7) .uno:ImageMapDialog (8) ---------- (9) .uno:RedactDoc (10) .uno:AutoRedactDoc (11) ---------- (12) .uno:GoalSeekDialog (13) .uno:SolverDialog (14) .uno:AuditMenu ├─ (0) .uno:ShowPrecedents ├─ (1) .uno:ShowDependents ├─ (2) ---------- ├─ (3) .uno:ClearArrows ├─ (4) .uno:ClearArrowPrecedents ├─ (5) .uno:ClearArrowDependents ├─ (6) ---------- ├─ (7) .uno:ShowErrors ├─ (8) .uno:RefreshArrows ├─ (9) ---------- ├─ (10) .uno:AuditingFillMode ├─ (11) .uno:AutoRefreshArrows ├─ (12) .uno:ShowInvalid (15) .uno:ScenarioManager (16) ---------- (17) .uno:ToolsFormsMenu ├─ (0) .uno:SwitchControlDesignMode ├─ (1) .uno:UseWizards ├─ (2) ---------- ├─ (3) .uno:ControlProperties ├─ (4) .uno:FormProperties ├─ (5) ---------- ├─ (6) .uno:ShowFmExplorer ├─ (7) .uno:TabDialog ├─ (8) .uno:AddField ├─ (9) ---------- ├─ (10) .uno:OpenReadOnly ├─ (11) .uno:AutoControlFocus (18) ---------- (19) .uno:ShareDocument (20) .uno:Protect (21) .uno:ToolProtectionDocument (22) ---------- (23) .uno:MacrosMenu ├─ (0) .uno:MacroRecorder ├─ (1) .uno:RunMacro ├─ (2) .uno:BasicIDEAppear ├─ (3) .uno:ScriptOrganizer ├─ (4) ---------- ├─ (5) .uno:MacroSignature ├─ (6) .uno:MacroOrganizer?TabId:short=1 ├─ (7) ---------- ├─ (8) .uno:OpenXMLFilterSettings (24) .uno:DevelopmentToolsDockingWindow (25) ---------- (26) service:com.sun.star.deployment.ui.PackageManagerDialog (27) .uno:ConfigureDialog (28) .uno:OptionsTreeDialog ```