+++
title = "Menús"
weight = 2
+++

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

```python
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)
```


### remove

Eliminar un menú existente.

```python
nombre_menu = 'zaz.my.menu'
menus_calc = app.menus['calc']
menus_calc.remove(nombre_menu)
```

#### Insertar nuevo menú en uno existente.

Dentro del menú Herramientas (`tools`), después de la opción `Macros...`

```python
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ú.

```python
menu = app.menus['calc']['tools']
menu.debug()
```

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