mf.usermenu

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

mf.usermenu

Post by Shmuel »

Вот возникли сомнения: в новой функции mf.usermenu второй параметр ("mode") и связанное с ним создание папки %farprofile%\Menus - не лишнее ли это?
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: mf.usermenu

Post by IgorZ »

А для чего вообще может понадобиться такая функциональность? Допустим, в этой папке могут лежать файлы подменю. Но тогда она уже существует. Так что переход - вполне объяснимая функциональность, а вот её создание лично мне неясно. Может, имеет смысл открывать файл, имя которого указано без пути, в %farprofile%\Menus, а если нужно открыть в текущем каталоге, явно указывать ".\<имя файла>"?

P. S. Установил последнюю сборку, посмотрел. Насчёт создания, оказывается, не так понял. В принципе, логично разбивать сложные меню на отдельные файлы и хранить всё хозяйство в спецпапке, и данный шаг после внедрения папки %farprofile%\Macros вполне логичен. Но надо бы, пожалуй, добавить явное указание запуска меню из %farhome%, например, как "~\<имя файла>". Или второй параметр расширить, если он останется. И, возможно, в этом варианте, поменять его местами с первым, все возможные варианты действия функции нагрузить на него, а имя файла сделать опциональным и чисто строкой. Где-то так:


P. P. S.
попробовал mf.usermenu(true). Выводится сообщение "Выберите тип пользовательского меню для редактирования". Может, тут стоило бы поправить .lng файлы? Меню-то выводится в обычном виде.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: mf.usermenu

Post by Smitis »

IgorZ wrote:- Если в filename опущено расширение файла, то по умолчанию берётся ".ini"
Предлагаю расширение .farmenu. Тогда на файлы можно будет повесить ассоциацию.
- Если mode равен 0 или не задан, равносильно нажатию F2 в панелях.
Если расширять в эту сторону, тогда должны быть
- 0 - аналог F2
- 1 - главное меню
- 2 - локальное меню
Сейчас, что бы однозначно вызвать главное меню приходится делать Keys('F9 C M M'), что не удобно, так как зависит от языка интерфейса.
Разум когда-нибудь победит.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: mf.usermenu

Post by Shmuel »

Ещё один момент: теперь пользовательское меню можно вызывать не только из панелей.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: mf.usermenu

Post by Shmuel »

IgorZ wrote:попробовал mf.usermenu(true). Выводится сообщение "Выберите тип пользовательского меню для редактирования". Может, тут стоило бы поправить .lng файлы? Меню-то выводится в обычном виде.
Но это не связано с функцией mf.usermenu, это то же самое, как если вызвать "Edit user menu" из меню Commands.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: mf.usermenu

Post by Smitis »

Shmuel wrote:Ещё один момент: теперь пользовательское меню можно вызывать не только из панелей.
О! Из редактора тоже запускается. Теперь можно обработку файлов в меню помещать.
Разум когда-нибудь победит.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: mf.usermenu

Post by IgorZ »

Smitis wrote:
- Если mode равен 0 или не задан, равносильно нажатию F2 в панелях.
Если расширять в эту сторону, тогда должны быть
- 0 - аналог F2
- 1 - главное меню
- 2 - локальное меню
Сейчас, что бы однозначно вызвать главное меню приходится делать Keys('F9 C M M'), что не удобно, так как зависит от языка интерфейса.
Локальное меню в предложенном мной варианте вызывается mf.usermenu(4).
Кстати, без mf.usermenu() можно вызывать глобальное меню независимо от языка так:

Code: Select all

Keys(win.SearchPath(".","FarMenu.ini") and "F2 ShiftF2" or "F2")
Вроде работает.
Shmuel wrote:
IgorZ wrote:попробовал mf.usermenu(true). Выводится сообщение "Выберите тип пользовательского меню для редактирования". Может, тут стоило бы поправить .lng файлы? Меню-то выводится в обычном виде.
Но это не связано с функцией mf.usermenu, это то же самое, как если вызвать "Edit user menu" из меню Commands.
Я в курсе. Но по факту, эта команда из главного меню вызывает не редактор меню, а само меню на исполнение. И, кстати, в русском интерфейсе она называется просто "Меню пользователя", что правильней. Так что моё предложение относится скорее не к функции, и даже не к LuaFar, а к самому FARу.
Last edited by IgorZ on Fri 01 Mar, 2013 09:45, edited 2 times in total.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: mf.usermenu

Post by Smitis »

Почему-то не проходит mf.usermenu(true) Keys("Enter")
Enter передаётся в оболочку

П.С.
А, sorry, с этим понятно. Макрос ждёт завершения функции.
Явно не хватает третьего параметра :) строкового - передать нажатие клавиш в меню
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: mf.usermenu

Post by John Doe »

IgorZ wrote:Локальное меню в предложенном мной варианте вызывается mf.usermenu(4).
Напомню что локальное меню ищется не только в текущей папке, но и в родительских.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: mf.usermenu

Post by IgorZ »

John Doe wrote:
IgorZ wrote:Локальное меню в предложенном мной варианте вызывается mf.usermenu(4).
Напомню что локальное меню ищется не только в текущей папке, но и в родительских.
Забыл. Тогда надо исправить mode=2 на локальное меню, а mode 2-4 передвинуть на 3-5. Но это потребует, возможно, бОльших переделок, тогда как остальные пункты уже есть, надо только поправить api.lua.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: mf.usermenu

Post by NightRoman »

Shmuel wrote:Ещё один момент: теперь пользовательское меню можно вызывать не только из панелей.
Хорошая новость, давно хотелось. Есть связанный тикет http://bugs.farmanager.com/view.php?id=2032
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: mf.usermenu

Post by Shmuel »

Shmuel wrote:Вот возникли сомнения: в новой функции mf.usermenu второй параметр ("mode") и связанное с ним создание папки %farprofile%\Menus - не лишнее ли это?
Хотелось бы узнать больше мнений по этому вопросу.
Smitis wrote:Почему-то не проходит mf.usermenu(true) Keys("Enter")
Enter передаётся в оболочку
Вопрос ко всем: стоит ли попытаться сделать, чтобы это работало?
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: mf.usermenu

Post by Smitis »

Shmuel wrote:Вопрос ко всем: стоит ли попытаться сделать, чтобы это работало?
Открывать меню и возвращать управление макросу? Конечно!
Возвращает:
ничего
Сделать возврат true, если файл меню найден и открыт.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: mf.usermenu

Post by John Doe »

Smitis wrote:
Shmuel wrote:Вопрос ко всем: стоит ли попытаться сделать, чтобы это работало?
Открывать меню и возвращать управление макросу? Конечно!
Почему так категорично?
Могут быть разные сценарии.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: mf.usermenu

Post by Skirda »

Есть предложение в UserMenu добавить "выбор обработчика контента" - кому отдавать содержимое (например, чтобы не юзать префикс плагина в каждой строке, а, если это Lua, то usermenu просто отдаст содержимое кому надо сам, ориентируясь на настроенный ранее обработчик), если нет обработчика - то как и раньше, в cmd.

...хотя, наверное рано я с этим. Сначала нужен DI_MEMO, потом... (и т.д.)
We are the Borg. You will be assimilated.
So Say We All!
Post Reply

Return to “Обсуждение макросов”