# Menús

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

    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.

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

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

    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