Автовыделение последнего выполненного пункта меню

Здесь выкладываются готовые к использованию макросы и скрипты.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Автовыделение последнего выполненного пункта меню

Post by John Doe »

Есть старая тема F11 - выделение в меню плагинов предыдущего выбранного.
Набросал по мотивам макрос, используя возможности обработчика диалоговых событий.
При открытии заданных меню устанавливает курсор на пункт меню, запомненный при предыдущем выборе



Можно настроить для работы в любых списках, для примера заданы три: меню плагинов, меню конфигурации плагинов, список far:about.
Предусмотрен параметр onCancel, управляющий поведением в случае когда выбор в меню не был подтверждён (меню было закрыто по Esc и т.п.)
= "save" - запоминать пункт меню даже если выбор отменён
= "keeplast" - не запоминать при отмене, оставлять последний подтвержённый
= "reset" - при отмене выбора сбрасывать запомненный пункт

Возможно этот параметр стоило бы настраивать для каждого меню отдельно, но пока я даже не знаю в каких ещё списках вообще может быть полезен данный макрос.
Attachments
MenuAutoSelectLast.lua.7z
(882 Bytes) Downloaded 258 times
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Автовыделение последнего выполненного пункта меню

Post by John Doe »

Возможно не все знают, но для главного меню фара данная возможность предусмотрена штатно:
FarRus.hlf wrote:

Code: Select all

Выбрать последний выполненный пункт меню                 Shift-F10
Для себя я даже поменял местами значения клавиш F9/ShiftF10:

Code: Select all

local allPanels = "Shell QView Tree Info Search"

Macro { description="Selects last executed menu item";
  area=allPanels; key="F9";
  id="CEB71CD3-0507-4390-825C-64E86B07F376";
  action=function()
    Keys"ShiftF10"
  end;
}

Macro { description="Main Menu"; 
  area=allPanels; key="ShiftF10";
  id="6FD80F82-CF7D-4BBB-A466-B36BA8A66597";
  action=function()
    Keys"F9"
  end;
}

Macro { description="Close MainMenu";
  area="MainMenu"; key="F9";
  id="872925D8-D234-4A8A-AB80-A65E9352F6E9";
  action=function()
    while Area.MainMenu do Keys"F10" end
  end;
}
Last edited by John Doe on Mon 31 Oct, 2016 08:09, edited 1 time in total.
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Автовыделение последнего выполненного пункта меню

Post by Dennis_Moore »

Если в меню плагинов нажать RAlt и набрать что-то что-бы список стал пустым, а затем нажать Esc или Enter то упадет LuaMacro. FAR 86/64 4973



Без макроса Esc/Enter как и ожидается закрывают меню.
Last edited by Dennis_Moore on Tue 20 Jun, 2017 23:34, edited 1 time in total.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Автовыделение последнего выполненного пункта меню

Post by Shmuel »

Dennis_Moore wrote: Tue 20 Jun, 2017 23:32Если в меню плагинов нажать RAlt и набрать что-то что-бы список стал пустым, а затем нажать Esc или Enter то упадет LuaMacro
Падает на самом деле Фар, а не LuaMacro. Исключение возникает при попытке получить текст несуществующего пункта меню. На мой взгляд, чем падать, лучше бы DM_GETTEXT и прочие возвращали бы, например, -1 как признак неудачи.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Автовыделение последнего выполненного пункта меню

Post by DrKnS »

Dennis_Moore, это Far. 4976.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Автовыделение последнего выполненного пункта меню

Post by sToLp »

На руборде уважаемый Shmuel обнародовал свой вариант макроса по текущей теме. На мой взгляд, этот вариант ещё более удачно раскрывает тему и поэтому заслуживает и более широкой публикации.

Воспользовавшись тем, что данный вариант макроса более доступно для моего понимания структурирован и в нём также содержатся и необходимые мне пояснения, я его несколько дополнил. Вдобавок к заложенному в нём автовыделению последнего выполненного пункта в меню плагинов, в меню настроек плагинов и в far:config я включил в него также обработку меню "Ассоциации для файлов (File associations)" и "Раскраска файлов (Files highlighting)". И в такой форме он прилагается в аттаче.

Добавлено:
На том же руборде опубликован альтернативный вариант макроса Shmuel`я, авторства Alexyz21. Автор анонсировал особенности этого варианта макроса следующим образом: "просто добавляем в таблицу гуиды нужных меню без необходимости редактировать код возврата GetKey() + добавлено меню фильтров". Макрос дополнен в аттач поста.
Attachments
DialogEvent-StoreAndRestoreMenuPositions(shmuz)alt(Alexyz21).lua.7z
(2.38 KiB) Downloaded 153 times
DialogEvent-StoreAndRestoreMenuPositions(Shmuel).lua.7z
(4.86 KiB) Downloaded 172 times
Last edited by sToLp on Mon 17 Sep, 2018 20:07, edited 1 time in total.
Post Reply

Return to “Полезные макросы и скрипты”