Аналог плагина Format Menu для x64

Здесь обсуждается всё, что касается макросов.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

64-битная версия плагина Format Menu

Post by Smitis »

Latest post of the previous page:

MK wrote: Tue 14 Mar, 2023 13:47 Не знаете ли вы, существует ли какой-нибудь Lua/moon скрипт, который будет отображать (даже жестко закодированное) меню с действиями для текущего выбранного файла? Этого было бы достаточно. Спасибо за помощь
Пользовательское меню.
Разум когда-нибудь победит.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

64-битная версия плагина Format Menu

Post by buniak_a_h »

MK, про эти два префикса я уже понял, что их надо просто игнорить. Там ещё есть, по-моему, неактуальные элементы: Refresh, Quiet например. К тому же некоторые элементы при реализации через lua-макрос будут сильно тормозить (я имею в виду IDHex и IDPos). Впрочем, это не критично: не требуется или мешает - не пиши :-)
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

64-битная версия плагина Format Menu

Post by buniak_a_h »

MK wrote: Tue 14 Mar, 2023 13:47 Не знаете ли вы, существует ли какой-нибудь Lua/moon скрипт, который будет отображать (даже жестко закодированное) меню с действиями для текущего выбранного файла?
Рекомендую посмотреть ассоциации файлов: если для файла действует несколько ассоциаций, то выводится меню с возможностью выбора.
MK
Posts: 9
Joined: Tue 14 Mar, 2023 10:27

64-битная версия плагина Format Menu

Post by MK »

Вот моя текущая версия - жестко закодированная в lua, но, похоже, она работает для меня :)

BTW спасибо за помощь :)
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

64-битная версия плагина Format Menu

Post by Shmuel »

MK, быстро вы разобрались, не спасовали.
Вместо win.system можно использовать win.ShellExecute, тогда при запуске внешней программы Фар не ожидает её завершения.
То есть вместо win.system(ex) можно win.ShellExecute(nil,"open",ex).
MK
Posts: 9
Joined: Tue 14 Mar, 2023 10:27

64-битная версия плагина Format Menu

Post by MK »

Хммм, когда я меняю его на
-- win.system(ex)
win.ShellExecute(nil, "open",ex)

Ничего не происходит :( (и не знаю, в чем причина - возвращается значение 2)
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

64-битная версия плагина Format Menu

Post by HaRT »

MK wrote: Thu 16 Mar, 2023 20:10 возвращается значение 2
Сдаётся мне, что это ERROR_FILE_NOT_FOUND — ищите, что не так с исходным путём или с тем, как он передаётся. Доки по ShellExecute в помощь. У вас путь полный или только имя файла? Попробуйте с полным.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

64-битная версия плагина Format Menu

Post by Shmuel »

MK wrote: Thu 16 Mar, 2023 20:10 Ничего не происходит
Вот я запускаю с командной строки Фара - работает.
lua: win.ShellExecute(nil,"open",[[C:\Program Files (x86)\IrfanView\i_view32.exe]])
MK
Posts: 9
Joined: Tue 14 Mar, 2023 10:27

64-битная версия плагина Format Menu

Post by MK »

Извините, mea culpa :), это должно быть
win.ShellExecute(nil, "open",Items[Choice].cmd, '"'...path...\\\'...fn.FileName...''')
и это работает правильно :)
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

64-битная версия плагина Format Menu

Post by Shmuel »

Посмотрите описание этой ф-ции в luafar_manual.chm, там всего 6 параметров, может быть пригодится.
MK
Posts: 9
Joined: Tue 14 Mar, 2023 10:27

64-битная версия плагина Format Menu

Post by MK »

Вы правы,
win.ShellExecute(nil, "open", Items[Choice].cmd, fn.FileName, path)
это лучший вариант :) и я могу улучшить его позже с помощью дополнительных опций

Спасибо всем за советы
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

64-битная версия плагина Format Menu

Post by SlashNet »

Сам давно изыскиваю различные варианты замены этому плагину (так как много разных команд для обработки файлов было добавлено), но результат не удовлетворяет совсем.
buniak_a_h wrote: Wed 15 Mar, 2023 18:10 Рекомендую посмотреть ассоциации файлов: если для файла действует несколько ассоциаций, то выводится меню с возможностью выбора.
Пробовал использовать ассоциации файлов, но в появляющемся меню нет возможности задать хоткеи для пунктов меню. А без них неудобно, и к тому же "теряется" одна из используемых комбинаций клавиш.

Запихивать в пользовательское меню? Тоже не то. Список команд без фильтра для определённого типа файла, по использованию ещё неудобнее использования многочисленных ассоциаций.

Попробую поковырять ещё луа-скрипт.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

64-битная версия плагина Format Menu

Post by buniak_a_h »

SlashNet wrote: Fri 17 Mar, 2023 20:35 нет возможности задать хоткеи для пунктов меню
Как "нет"? В описании указать амперсанд перед акселератором
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

64-битная версия плагина Format Menu

Post by John Doe »

Кажется на форуме когда-то я предлагал такую идею:
В ассоциацию на *.* прописываем
moon:mf.usermenu 3,"!`.farmenu"
или
if exist %FARPROFILE%\Menus\!`.mnu moon:mf.usermenu 3,"!`.farmenu"
Last edited by John Doe on Sat 18 Mar, 2023 00:14, edited 1 time in total.
https://t.me/FarManager — Telegram чат
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

64-битная версия плагина Format Menu

Post by SlashNet »

John Doe, такое подойдёт если список команд довольно несложный.
У меня же есть случаи когда необходимо меню подходящее для разных типов файлов.

Например есть некоторые команды для общей обработки текстовых документов (pdf, djvu, doc, и т.п.), но в то же время есть и специфичные для конкретного типа файлов (например, обработка pdf файлов). И тогда придётся общую команду дублировать в меню для каждого расширения (а если их добрый десяток), а потом, когда захочется его подкорректировать, то править во всех меню? Слишком муторно выходит. Самый удобный вариант, это подгружать весь список команд, а потом скрывать те которые не подходят для необходимого типа файлов, но его реализовывает только плагин Format Menu.

Про множественные ассоциации файлов хочу добавить, что в появляющемся меню нет возможности добавить разделители.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

64-битная версия плагина Format Menu

Post by Smitis »

SlashNet wrote: Fri 17 Mar, 2023 20:35 Запихивать в пользовательское меню? Тоже не то. Список команд без фильтра для определённого типа файла, по использованию ещё неудобнее использования многочисленных ассоциаций.
Я не так давно тоже заморочился с дополнительными ассоциациями. В результате получился скрипт добавляющий пару префиксов (assoc и assocm), через которые делаются обычные ассоциации ФАРа, но общим списком (иногда длинным), команда на всех одна, типа assoc: "!.!" А можно обойтись даже без этого и повесить всё на отдельный макрос.
Первый префикс (assoc) формирует меню в зависимости от совпадения имени файла по маске. Меню простое, через Menu.Show.
Второй префикс (assocm) показывает пользовательское меню, но не просто так, а открывает подменю, в пункте которого присутствует расширение файла.
Через пользовательское меню в чём-то даже удобнее: горячие клавиши задаются более гибко, можно оперативно подправить меню и тут же открыть файл. А неудобно то, что многие программы (пакеты программ, например, Libre Office, Microsoft Office, SoftMaker Office) по расширениям пересекаются частично и приходится либо плодить кучу подменю, либо забить, но тогда на каком-нибудь файле tmdx (SoftMaker Office) будет в списке Microsoft Office.
Скрипт не выкладываю, так как он не закончен ("вечная альфа"), дописывается по мере необходимости. Но если есть желание ковыряться, выложу "как есть".
Разум когда-нибудь победит.
Post Reply

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