Application =========== Remember, always import library. .. code-block:: python import easymacro as app Create instances ---------------- * Instances without context .. code-block:: python toolkit = app.create_instance('com.sun.star.awt.Toolkit') * Instances with context .. code-block:: python service = 'com.sun.star.awt.DialogProvider2' dialog = app.create_instance(service, True) * Get desktop .. code-block:: python desktop = app.create_instance('com.sun.star.frame.Desktop', True) Or .. code-block:: python desktop = app.lo.desktop Fonst ----- * Get all fonts .. code-block:: python fonts = app.lo.fonts() for f in fonts: print(f'Name: {f.Name} - StyleName: {f.StyleName}') Filters ------- * Get all `support filters`_ .. code-block:: python filters = app.lo.filters() ds = [] for f in filters: data = f"UI Name: {f['UIName']} - Name: {f['Name']} - Type: {f['Type']}" app.debug(data) Call dispatch ------------- You can call any `dispatch command`_ used only if property or method no exists in original object or in `easymacro.py` .. code-block:: python doc = app.docs.active command = 'Gallery' app.lo.dispatch(doc, command) Method automatically add `.uno:` ClipBoard --------- * Set text in clipboard .. code-block:: python app.clipboard.set('My Text') * Get content of clipboard .. code-block:: python content = app.clipboard.content app.debug(content) Disable or enabled commands --------------------------- You can disable any command. .. code-block:: python cmd = 'OpenFromCalc' result = app.command.disable(cmd) app.debug(result) And enabled. .. code-block:: python result = app.command.enabled(cmd) app.debug(result) `OpenFromCalc` is options for open documents in calc, disable or enabled menu entry and icon toolbar. LibreOffice configuration ------------------------- Get value ^^^^^^^^^ Some values are read only. .. code-block:: python node_name = '/org.openoffice.Office.Common/Help' key = 'System' value = app.get_app_config(node_name, key) app.debug(value) node_name = '/org.openoffice.Office.Common/Misc/' key = 'FirstRun' value = app.get_app_config(node_name, key) app.debug(value) key = 'UseSystemFileDialog' value = app.get_app_config(node_name, key) app.debug(value) Set value ^^^^^^^^^ .. code-block:: python node_name = '/org.openoffice.Office.UI/ColorScheme' key = 'CurrentColorScheme' new_value = 'LibreOffice Dark' result = app.set_app_config(node_name, key, new_value) app.debug(result) .. warning:: Caution with modify registry, not all nodes we can change. Some nodes and keys: * `/org.openoffice.Office.Common/Save/Document` * AutoSave * AutoSaveTimeIntervall Shortcuts --------- Global ^^^^^^ Iter in all shortcuts. Shortcuts for all applications. .. code-block:: python for shortcut, command in app.shortcuts: app.debug(shortcut, command) If you want all info. .. code-block:: python sc = app.shortcuts data = sc.get_all() app.debug(data) Verify if exists shortcut. .. code-block:: python sc = app.shortcuts shortcut = 'Shift+Ctrl+Alt+T' app.debug(shortcut in sc) Add new shortcut for execute uno command. .. code-block:: python sc = app.shortcuts shortcut = 'Shift+Ctrl+Alt+T' command = 'MacroDialog' sc.set(shortcut, command) Add new shortcut for execute macro. .. code-block:: python sc = app.shortcuts shortcut = 'Shift+Ctrl+Alt+M' macro = {'library': 'test', 'name': 'main'} sc.set(shortcut, macro) Get `command` by `shortcut`. .. code-block:: python sc = app.shortcuts shortcut = 'Shift+Ctrl+Alt+M' command = sc.get_by_shortcut(shortcut) app.debug(command) Get `shortcut` by `command`. Could be more than one. .. code-block:: python sc = app.shortcuts command = 'MacroDialog' shortcuts = sc.get_by_command(command) app.debug(shortcuts) Remove by shortcut. .. code-block:: python sc = app.shortcuts shortcut = 'Shift+Ctrl+Alt+M' sc.remove_by_shortcut(shortcut) Remove by command. .. code-block:: python sc = app.shortcuts macro = {'library': 'test', 'name': 'main'} sc.remove_by_command(macro) Reset all editions. .. code-block:: python app.shortcuts.reset() For applications ^^^^^^^^^^^^^^^^ Get shortcuts for application. For Calc. .. code-block:: python sc = app.shortcuts['calc'] All methods some the same. For other applications: `writer`, `draw`, `impress`, `math` Menus ----- Add new ^^^^^^^ Insert new menu in Calc. .. code-block:: python menu_name = 'zaz.my.menu' menu = { 'Label': 'My menu', 'CommandURL': menu_name, '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', }, ] } menu_bar = app.menus['calc'] menu_bar.insert(menu) Remove ^^^^^^ .. code-block:: python menu_name = 'zaz.my.menu' menu_bar = app.menus['calc'] menu_bar.remove(menu_name) Insert in exists menu ^^^^^^^^^^^^^^^^^^^^^ Insert if not exists in menu Tools, after submenu Macros. .. code-block:: python menu = app.menus['calc']['tools'] menu_name = 'zaz.my.menu' menu_new = { 'Label': 'My menu', 'CommandURL': menu_name, '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_name in menu: menu.remove(menu_name) else: menu.insert(menu_new, '.uno:MacrosMenu') .. _dispatch command: https://wiki.documentfoundation.org/Development/DispatchCommands .. _support filters: https://help.libreoffice.org/latest/en-US/text/shared/guide/convertfilters.html