easymacro/doc/docs/app/menus.md

4.2 KiB

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)

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

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

    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