PanelFilter — фильтр панели

Здесь выкладываются готовые к использованию макросы и скрипты.
Shmuel
Posts: 6059
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 30 times
Been thanked: 298 times

PanelFilter — фильтр панели

Post by Shmuel »

Это скрипт из комплекта fl_scripts, адаптированный в макрос и несколько усовершенствованный.
Скрипт реализует фильтр панели. Действие скрипта аналогично действию плагина panelfilter от jbak. Как это работает: После запуска фильтра над панелью (над пунктом ..) появляется область, отображающая текущее состояние фильтра. Фильтрация элементов панели осуществляется после добавления к фильтру любого символа. Esc выходит из режима фильтрации, выключает и удаляет фильтр. Enter закрывает диалог, но оставляет фильтр включенным. После любого изменения строки фильтра скрипт закрывает свой диалог и вызывает список фильтров, создает/изменяет фильтр _luafilter_ и вызывает свой диалог снова.
panelfilter_20191231.7z
(1.83 KiB) Downloaded 36 times
Last edited by Shmuel on Tue 31 Dec, 2019 12:00, edited 4 times in total.

Shmuel
Posts: 6059
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 30 times
Been thanked: 298 times

PanelFilter - фильтр панели

Post by Shmuel »

Обновление в шапке:
1. Клавиши Left и Right более не перенаправляются: они нужны для редактирования фильтра.
2. Fix: курсор прыгал в конец после каждого изменения в строке фильтра.

User avatar
Dennis_Moore
Posts: 287
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 14 times

PanelFilter — фильтр панели

Post by Dennis_Moore »

Спасибо за скрипт Shmuel! У меня похоже сегодня день багов.

Вызываю скрипт и пробую ввести, например, слово target но фильтр идет только по одной букве т.к. после ввода каждой делается выделение строки. Таким образом для фильтрации более чем одной буквы нужно после ввода каждой нажимать "Right".
Буду благодарен за исправление.
Last edited by Dennis_Moore on Sat 18 Feb, 2017 15:32, edited 1 time in total.

Shmuel
Posts: 6059
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 30 times
Been thanked: 298 times

PanelFilter — фильтр панели

Post by Shmuel »

Dennis_Moore wrote: после ввода каждой делается выделение строки
Исправлю, если смогу воспроизвести. У меня выделения не происходит.

User avatar
Dennis_Moore
Posts: 287
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 14 times

PanelFilter — фильтр панели

Post by Dennis_Moore »

Shmuel wrote:
Dennis_Moore wrote: после ввода каждой делается выделение строки
Исправлю, если смогу воспроизвести. У меня выделения не происходит.
Макросы не виноваты, а вот если убрать все плагины кроме luamacro то проблема исчезает. Как узнаю кто плагин-виновник напишу сюда.

User avatar
Dennis_Moore
Posts: 287
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 14 times

PanelFilter — фильтр панели

Post by Dennis_Moore »

Виновник был определен быстро: DlgSelect. Можно ли подружить макрос с плагином или плагин придется убрать?

P.S. Прошу прощения за ложный баг-репорт.
Last edited by Dennis_Moore on Sat 18 Feb, 2017 15:56, edited 1 time in total.

Shmuel
Posts: 6059
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 30 times
Been thanked: 298 times

PanelFilter — фильтр панели

Post by Shmuel »

Dennis_Moore wrote: Можно ли подружить макрос с плагином
Вставьте после строки if Coord ... следующую строку:
mf.postmacro(handle.send,handle,F.DM_SETSELECTION,1,{BlockType=0})

User avatar
Dennis_Moore
Posts: 287
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 14 times

PanelFilter — фильтр панели

Post by Dennis_Moore »

Дописал в конце скрипта макрос удаления фильтра:

Code: Select all

Macro {
  description="Remove <Panel Filter> filtration";
  area="Shell"; key="CtrlShiftP";
  action=function() Keys("CtrlI RAlt _ l u a f i l t e r _ Del Enter Esc"); end;
}
и теперть при нажатии Ctrl-Shift-P выводится меню с выбором действия. Удобно что не занимает дополнительное сочетание.

Shmuel
Posts: 6059
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 30 times
Been thanked: 298 times

PanelFilter — фильтр панели

Post by Shmuel »

Dennis_Moore wrote: при нажатии Ctrl-Shift-P выводится меню с выбором действия. Удобно что не занимает дополнительное сочетание.
Нажали Ctrl-Shift-P и шорткат из меню - два нажатия. В исходном варианте нужно нажать Ctrl-Shift-P и Esc - те же 2 нажатия. Поэтому не очень ясно, что мы выигрываем этой модификацией.

User avatar
Dennis_Moore
Posts: 287
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 14 times

PanelFilter — фильтр панели

Post by Dennis_Moore »

Shmuel wrote:
Dennis_Moore wrote: при нажатии Ctrl-Shift-P выводится меню с выбором действия. Удобно что не занимает дополнительное сочетание.
Нажали Ctrl-Shift-P и шорткат из меню - два нажатия. В исходном варианте нужно нажать Ctrl-Shift-P и Esc - те же 2 нажатия. Поэтому не очень ясно, что мы выигрываем этой модификацией.
Если отфильтровать и нажать Enter то фильтр потом можно снять или удалением его из списка или повторным вызовом скрипта и очисткой строки фильтрации. Мне показалось удобнее сделать так как выше поскольку во время фильтрации не работают функциональные клавиши, а по Esc фильтр убирается (Esc если просто смотрю наличие элементов, Enter если хочу провести операции над отфильтрованными элементами).

Shmuel
Posts: 6059
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 30 times
Been thanked: 298 times

PanelFilter — фильтр панели

Post by Shmuel »

Обычно стараются минимизировать число нажатий. Ваш вариант не уменьшает число нажатий при отключении, а при включении фильтра - увеличивает с 1 до 2. Хотя - дело вкуса.

User avatar
Dennis_Moore
Posts: 287
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 14 times

PanelFilter — фильтр панели

Post by Dennis_Moore »

Shmuel wrote: Обычно стараются минимизировать число нажатий. Ваш вариант не уменьшает число нажатий при отключении, а при включении фильтра - увеличивает с 1 до 2. Хотя - дело вкуса.
Я не знаю как еще это можно сделать. Разве что после 34-й строки дописать delfilter(),
тогда можно будет удалить фильтр нажав Ctrl-Shift-P, Enter/Esc (правда немного пострадает функционал - не будет подставлен текущий фильтр). Но если у вас есть предложение как это сделать изящнее буду рад (Ctrl-Shift-P, 2 по-моему удобнее нажимать чем Ctrl+I Del Enter Enter (это если _luafilter_ первый в списке))

Shmuel
Posts: 6059
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 30 times
Been thanked: 298 times

PanelFilter — фильтр панели

Post by Shmuel »

Dennis_Moore, или я туплю, или вы неясно выражаетесь.
Вы дописали макрос удаления фильтра. Получили при вызове меню с 2-мя пунктами: включить и удалить. В оригинальном варианте для удаления надо активизировать фильтр (если он не активен) и нажать Esc. Для этого вовсе не требуется очищать строку, а только нужно нажать Esc.

User avatar
Dennis_Moore
Posts: 287
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 14 times

PanelFilter — фильтр панели

Post by Dennis_Moore »

Shmuel wrote: Dennis_Moore, или я туплю, или вы неясно выражаетесь.
Вы дописали макрос удаления фильтра. Получили при вызове меню с 2-мя пунктами: включить и удалить. В оригинальном варианте для удаления надо активизировать фильтр (если он не активен) и нажать Esc. Для этого вовсе не требуется очищать строку, а только нужно нажать Esc.
Фильтрую панель, встаю на нужный элемент, хочу отредактировать или скопировать, а F4/F5 не работают пока вызван скрипт. Нажимаю Enter (т.е. выхожу из скрипта и оставляю фильтр), редактирую/копирую/перемещаю/удаляю все что нужно после чего нужно удалить фильтр.

Остановился на варианте с добавлением delfilter() (свой макрос естественно убираю) т.к. так даже удобнее - вон быстрый поиск в панелях тоже не сохраняет строку и никто вроде-бы не жалуется.

Upd. Похоже день дурака не прошел для меня бесследно. Все работает как вы и написали, извините. Но delfilter() пожалуй оставлю - не придется очищать строку, да и фильтр можно будет удалять еще и по Enter.

Shmuel
Posts: 6059
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 30 times
Been thanked: 298 times

PanelFilter — фильтр панели

Post by Shmuel »

Dennis_Moore wrote: редактирую/копирую/перемещаю/удаляю все что нужно после чего нужно удалить фильтр.
Ну я в этом раскладе нажимаю CtrlShiftP Esc - фильтр снят и удалён. Это у вас не работает? ... я до сих пор не врубаюсь в потаённый смысл :(

Post Reply

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