Page 5 of 5

Улучшение меню с дублирующимися хоткеями

Posted: Wed 17 Dec, 2014 17:59
by sToLp

Latest post of the previous page:

В моём посте приведена отсылка на правленый уже к тому времени макрос №3:
sToLp wrote:Ранее я упоминал о попытке приспособить макрос №3 ...
а это было:
sToLp wrote:Для этого я внёс следующие немудрёные дополнения в 2 его строки:
key="/^[RL]Alt[b]Shift[/b](BS|Add|Subtract|Multiply|Divide|BackSlash|ShiftBackSlash|.|Shift.[b]|Space[/b])$/";
и
local key = akey(1):match("R?Alt[b]Shift[/b](.+)").

Улучшение меню с дублирующимися хоткеями

Posted: Wed 17 Dec, 2014 18:04
by John Doe
sToLp, Бррр.
Рекомендую объединить ваши рекомендации в одном посте.

Улучшение меню с дублирующимися хоткеями

Posted: Wed 17 Dec, 2014 18:25
by sToLp
"Рекомендации" — это громко сказано. Скорее уж, мои консультации у Вас.
Добавил в свой первый сегодняшний пост (в спойлер) макрос в последней по времени используемой мною редакции.

Улучшение меню с дублирующимися хоткеями

Posted: Mon 05 Jan, 2015 18:17
by sToLp
sToLp wrote:попытки приспособить другие макросы из набора SmartMenuFilter к бесконфликтной работе с сабжевыми продолжаются

Докладываю о результатах на текущий момент.

Практика убеждает меня, что фильтрация меню по хоткеям (которую обеспечивают сабжевые макросы) существенно удобнее и быстрее других известных мне видов фильтров фаровских меню.

Следующим по удобству использования, по моему убеждению, является немодальный фильтр меню — это №3 из SmartMenuFilter (по-моему, всё-таки удобнее набирать искомый текст с нажатыми модификаторами, чем отдельно включать/выключать фильтр).

На третьем месте — штатный фильтр, вызываемый правым альтом (вполне достаточно чтобы периодически при необходимости включать\выключать его).

Автофильтр же из SmartMenuFilter я фактически не использую. Очень уж непрактичным показалось мне оставлять фильтр в режиме "авто" — мешает и работе с хоткеями, и немодальному фильтру. Но и даже если бы был возможен только один фильтр (нативный) без других вариантов, то всё равно как-то удобнее включать\выключать его, когда необходимо, чем держать его постоянно включённым.

На нижеприведённой картинке видно на какие шорткаты в конце концов оказались повешены применяемые мною макросы фильтрации в меню:
hotkey_filter.png
hotkey_filter.png (105.41 KiB) Viewed 7305 times
Может быть не лишне отметить, что поскольку сочетания CtrlAlt-key заняты в фильтре немодальных меню, то CtrlAltBS не вяжется в систему данных макросов, и поэтому этот шорткат заменён на CtrlAltShiftBS. И, между прочим, он прижился не только в фильтрах, но вообще во всех случаях применения XLat.

В целом получился замечательный комбайн. Большое Вам спасибо за разработку составляющих его макросов и их публикацию!

Улучшение меню с дублирующимися хоткеями

Posted: Mon 05 Jan, 2015 18:29
by John Doe
sToLp wrote: Автофильтр же из SmartMenuFilter я фактически не использую. Очень уж непрактичным показалось мне оставлять фильтр в режиме "авто" — мешает и работе с хоткеями, и немодальному фильтру
Хоткеям мешать может. Но напомню, что автофильтр включается раздельно для каждого меню/списка, а значит можно активировать выборочно только там, где нет хоткеев (например в историях).

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

Конец фразы я не совсем понял: зачем использовать немодальный фильтр одновременно с автофильтром?
sToLp wrote: CtrlAltL не вяжется в систему данных макросов
Там вообще-то функцию CtrlAltL выполняет макрос на LAlt.

Улучшение меню с дублирующимися хоткеями

Posted: Mon 05 Jan, 2015 18:58
by sToLp
John Doe wrote:напомню, что автофильтр включается раздельно для каждого меню/списка, а значит можно активировать выборочно только там, где нет хоткеев (например в историях).

Но даже если в меню хоткеи есть, всё зависит от того, как вы с ними хотите работать: например я даже в таких меню чаще использую фильтр (напомню что при включенном автофильтре хоткеи тоже доступны, посредством двойного нажатия).
Спасибо за разъясняющие рекомендации! Похоже, что к автофильтру надо бы ещё присмотреться.
John Doe wrote:зачем использовать немодальный фильтр одновременно с автофильтром?
Так вместе их я и не использую. Потому что пока немодальный фильтр мне кажется сподручнее автофильтра.
John Doe wrote:
sToLp wrote: CtrlAltL не вяжется в систему данных макросов
Там вообще-то функцию CtrlAltL выполняет макрос на LAlt.
LAlt у меня занят совсем другим макросом. И речь не о фиксации фильтра, а о переключении из режима модального фильтра в режим нативного фильтра и обратно. Порой это бывает полезно, когда надо отвлечься на некоторое время, например, и при опробовании и сопоставлении фильтров тоже.

Улучшение меню с дублирующимися хоткеями

Posted: Mon 09 May, 2016 15:12
by HaRT
Спасибо за удобный скрипт.
Пара багрепортов (Far Manager v3.0 build 4665 x86 (2016-05-09)):
John Doe wrote: Если использовать хоткей с модификатором Ctrl, то хоткей срабатывает независимо от того, есть ли в списке дубликаты.
1. Не то чтобы мне это было очень важно, но при нажатии Ctrl-ГорячаяКлавиша не происходит ровно ничего — ни в изначальном меню, ни в отфильтрованном по хоткею (проверял на меню Plugin commands, User menu, EMenu).
John Doe wrote: При первом нажатии в списке остаются только элементы с хоткеем, соответствующем нажатой клавише.
2. Очень странно взаимодействует с выпадающими списками в диалогах. Например (язык интерфейса английский, пользуюсь только шоткатами/хоткеями), открываю Find file (AltF7), там открываю search area (AltA), там выбираю In PATH folders (P), затем снова открываю выпадашку (CtrlDown) и вижу, что в ней , притом тот, который был в тот момент текущим. Я бы ожидал, что раз уж скрипт обслуживает этот список, то чтобы, как в меню, элементы отфильтровались, но список бы не закрылся.
В аналогичном сценарии для RESearch после выбора первого элемента (N) получается и вовсе .

Улучшение меню с дублирующимися хоткеями

Posted: Mon 09 May, 2016 16:05
by HaRT
И несколько пожеланий:
1. Как-то индицировать, что меню отфильтровано, — например, как для обычного фильтра “[ТутГорячаяКлавиша]” в заголовке меню, тем более, что использование „горячего символа“ в качестве обычного фильтра даёт именно такой результат.
2. Добавить Backspace в качестве клавиши, отменяющей фильтр по хоткею (а в идеале также предоставить возможность оставить только его). Базовую часть я себе тривиальным образом сделал; сюда же написал, чтобы дать шанс другим получить это из коробки.
3. Поддержать Alt-позиционирование на горячие клавиши, для ввода которых требуется нажатие Shift (например ‘#’, ‘_’).

Улучшение меню с дублирующимися хоткеями

Posted: Mon 09 May, 2016 18:57
by HaRT
И ещё одна неприятность: в присутствии ConcurrentHotkeys стандартный скрипт AltScreens перестаёт работать — открывается список окон, а в нём происходит всего лишь позиционирование. Добавление flags = 'NoSendKeysToPlugins'; не помогает; пришлось дописать if Area.Menu then Keys'Enter' end.

Улучшение меню с дублирующимися хоткеями

Posted: Mon 09 May, 2016 19:04
by Shmuel

Улучшение меню с дублирующимися хоткеями

Posted: Mon 09 May, 2016 22:46
by John Doe
Прежде всего, скрипт надо бы пересмотреть, т.к. в своё время было сделано немало приседаний вокруг багов фара (ссылки на мантис в коде), а в фаре кое-что правилось (билд 4640).
HaRT wrote: Очень странно взаимодействует с выпадающими списками в диалогах
Возможно связано с недавними изменениями, в данном случае скорее всего стоит запретить работу скрипта в комбобоксах.
HaRT wrote: стандартный скрипт AltScreens перестаёт работать
Кто-то добрый решил что нам это не надо

Update
Обойти можно изменив в событии D91B58E5-4C32-4384-B205-D7895A4EC037 condition на следующий:

Code: Select all

  condition=function(Event,param) return Event==F.DE_DLGPROCINIT and far.MacroGetState()==F.MACROSTATE_EXECUTING_COMMON end;
В идеале проверять также на MACROSTATE_RECORDING_COMMON.

А MACROSTATE_NOMACRO у нас не бывает никогда, извините.

Улучшение меню с дублирующимися хоткеями

Posted: Tue 27 Aug, 2019 15:35
by siberia-man
Встретился баг. Куда писать? Наверно это сюда.

Windows 7 Enterprise SP1
Far3.0.5454 x86
Стандартный плагин поиска
Стандартный FarColorer
Макрос из первого сообщения

Как воспроизвести
  1. Поиск по Alt-F7
  2. Открыть любой файл в редакторе
  3. Команды плагинов
  4. FarColorer
  5. Список типов
  6. Нажать грячую клавишу (ВАЖНО: одна горячая клавиша должна быть назначена для нескольких пунктов меню выбора синтаксиса)
Так получается, если выполнить всю последовательность, не переключаясь на другие окна


Так получается, если выполнить всю последовательность, переключится на другое окно и вернуться в ФАР между пунктами 5 и 6

Улучшение меню с дублирующимися хоткеями

Posted: Thu 29 Aug, 2019 14:32
by John Doe
Подтверждаю баг в фаре.
Минимальный пример для воспроизведения:
1. Открыть на редактирование файл из результатов поиска
2. Открыть меню плагинов F11 (например).
3. Запустить макрос

Code: Select all

local F = far.Flags
local ID = 1;
Macro { description="test"; --https://forum.farmanager.com/viewtopic.php?p=154842#p154842
  area="Menu"; key="F1";
  action=function()
    local hDlg = far.AdvControl(F.ACTL_GETWINDOWINFO).Id;
    hDlg:send(F.DM_SHOWDIALOG,0)
    local list = far.GetDlgItem(hDlg,ID)[6] --[6]  Selected/ListItems: integer/table
    local item
    for i=#list,3,-1 do
      item = list[i]
      hDlg:send(F.DM_LISTUPDATE,ID,{Index=i,Text=item.Text,Flags=bor(item.Flags,F.LIF_HIDDEN)})
    end
    hDlg:send(F.DM_SHOWDIALOG,1)
    Menu.Filter(4)
  end;
}
Если закомментировать вызовы DM_SHOWDIALOG, то будет ещё красивее.
А если убрать Menu.Filter(4), то перестаёт проявляться.

Улучшение меню с дублирующимися хоткеями

Posted: Sun 01 Sep, 2019 07:49
by siberia-man
John Doe wrote:
Thu 29 Aug, 2019 14:32
Подтверждаю баг в фаре
Уточните, пожалуйста, баг в самом фаре или только в макросе?

Улучшение меню с дублирующимися хоткеями

Posted: Sun 01 Sep, 2019 09:05
by John Doe