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

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

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

Post by John Doe » Sun 02 Feb, 2014 23:59

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



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

Возможно этот параметр стоило бы настраивать для каждого меню отдельно, но пока я даже не знаю в каких ещё списках вообще может быть полезен данный макрос.
Attachments
MenuAutoSelectLast.lua.7z
(882 Bytes) Downloaded 92 times

User avatar
John Doe
Бюрократ
Posts: 11383
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

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

Post by John Doe » Mon 03 Feb, 2014 00:48

Возможно не все знают, но для главного меню фара данная возможность предусмотрена штатно:
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: 237
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 11 times

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

Post by Dennis_Moore » Tue 20 Jun, 2017 23:32

Если в меню плагинов нажать 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: 5222
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 150 times

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

Post by Shmuel » Wed 21 Jun, 2017 07:13

Dennis_Moore wrote:
Tue 20 Jun, 2017 23:32
Если в меню плагинов нажать RAlt и набрать что-то что-бы список стал пустым, а затем нажать Esc или Enter то упадет LuaMacro
Падает на самом деле Фар, а не LuaMacro. Исключение возникает при попытке получить текст несуществующего пункта меню. На мой взгляд, чем падать, лучше бы DM_GETTEXT и прочие возвращали бы, например, -1 как признак неудачи.

User avatar
DrKnS
Posts: 4637
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

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

Post by DrKnS » Wed 21 Jun, 2017 07:32

Dennis_Moore, это Far. 4976.

Post Reply

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