Управление меню расширения из макроса

Автор Борис_С, 20 ноября 2025, 18:27

0 Пользователи и 1 гость просматривают эту тему.

Борис_С

Всем доброго дня.
Мне нужно делать пункты меню расширения активными или неактивными в зависимости от условия.
Нашел на форуме тему Управление главным меню из макроса.
Можно ли сделать что-то аналогичное для пунктов меню расширения?
Спасибо.

economist

Все LO-расширения с богатыми настройками и историей плавно эволюционировали до собственных Диалогов. В меню всё еще сложнее. Плюс UX-дизайнеры в один голос твердят что в главном меню у пользователей слепая зона, не отличают они неактивный пункт от активного. А длинные пункты - вообще пронафталинены. 

Если б я сейчас делал прикладной софт под Либру - то диалоги бахнул бы на чем-нить современном web-нутом, ну типа flet, nicegui, kivy, remi итд (там везде Python, но он дергает ReactJS или что-то похожее). Безупречный вид, кроссплатформенность, удаленный интерфейс, модно-молодежно, вайб-кодинг готов к копипасте. Нарисовать и закодить удобный современный диалог средствами LibreOffice, кмк, невероятно сложно. Легко испортить впечатление от результата. Говорю об этом с искренним сожалением, проходил на себе.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Борис_С

Может быть есть возможность достучаться до пункта меню? В файле addons.xcu для каждого пункта меню есть параметр <node oor:name="<имя>" oor:op="replace">
<имя> уникально для каждого пункта меню.
Может быть можно через параметр oor:name выйти на нужный пункт меню?

Борис_С

Другая идея. В файле description.xml есть параметр <platform value="windows" />
Может быть можно для пункта меню в файле addons.xcu установить platform для нужного пункта меню?

sokol92

Цитата: Борис_С от 20 ноября 2025, 18:27Мне нужно делать пункты меню расширения активными или неактивными в зависимости от условия.

Расширение после старта может само динамически дополнять меню, инструментальные линейки, горячие клавиши.

В тех расширениях, которые я использую, я не замечал реализацию поставленной Вами задачи.
Владимир.

Борис_С


sokol92

Как обычно, первый источник примеров макросов - книги Питоньяка.

1. В книге AndrewMacro.odt есть раздел "5.44. Toolbars".
2. Посмотрите на нашем форуме и ask.libreoffice.org сообщения, содержащие "getUIConfigurationManager". Вот пример.

Владимир.

Борис_С

Если я правильно понимаю, у Питоньяка рассматривается возможность добавить свой пункт меню в Toolbar.
А есть ли возможность подключиться к уже готовому пункту меню из расширения и сделать его активным или неактивным?

sokol92

Мне не известен механизм работы с пунктами меню, добавленными при установке расширения. Эти пункты меню "не видны" в Настройке меню модуля (Calc, Writer, ...).
В качестве альтернативы можно при первом старте расширения добавить необходимые пункты в меню модуля и далее применять стандартные методы для работы с меню.
Владимир.