Скрипт реализует фильтр панели. Действие скрипта аналогично действию плагина panelfilter от jbak. Как это работает: После запуска фильтра над панелью (над пунктом ..) появляется область, отображающая текущее состояние фильтра. Фильтрация элементов панели осуществляется после добавления к фильтру любого символа. Esc выходит из режима фильтрации, выключает и удаляет фильтр. Enter закрывает диалог, но оставляет фильтр включенным. После любого изменения строки фильтра скрипт закрывает свой диалог и вызывает список фильтров, создает/изменяет фильтр _luafilter_ и вызывает свой диалог снова.
PanelFilter — фильтр панели
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
PanelFilter — фильтр панели
Это скрипт из комплекта fl_scripts, адаптированный в макрос и несколько усовершенствованный.
Last edited by Shmuel on Tue 31 Dec, 2019 12:00, edited 4 times in total.
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
PanelFilter - фильтр панели
Обновление в шапке:
1. Клавиши Left и Right более не перенаправляются: они нужны для редактирования фильтра.
2. Fix: курсор прыгал в конец после каждого изменения в строке фильтра.
1. Клавиши Left и Right более не перенаправляются: они нужны для редактирования фильтра.
2. Fix: курсор прыгал в конец после каждого изменения в строке фильтра.
- Dennis_Moore
- Posts: 298
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
PanelFilter — фильтр панели
Спасибо за скрипт Shmuel! У меня похоже сегодня день багов.
Вызываю скрипт и пробую ввести, например, слово target но фильтр идет только по одной букве т.к. после ввода каждой делается выделение строки. Таким образом для фильтрации более чем одной буквы нужно после ввода каждой нажимать "Right".
Буду благодарен за исправление.
Вызываю скрипт и пробую ввести, например, слово target но фильтр идет только по одной букве т.к. после ввода каждой делается выделение строки. Таким образом для фильтрации более чем одной буквы нужно после ввода каждой нажимать "Right".
Буду благодарен за исправление.
Last edited by Dennis_Moore on Sat 18 Feb, 2017 15:32, edited 1 time in total.
- Dennis_Moore
- Posts: 298
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
PanelFilter — фильтр панели
Макросы не виноваты, а вот если убрать все плагины кроме luamacro то проблема исчезает. Как узнаю кто плагин-виновник напишу сюда.
- Dennis_Moore
- Posts: 298
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
PanelFilter — фильтр панели
Виновник был определен быстро: DlgSelect. Можно ли подружить макрос с плагином или плагин придется убрать?
P.S. Прошу прощения за ложный баг-репорт.
P.S. Прошу прощения за ложный баг-репорт.
Last edited by Dennis_Moore on Sat 18 Feb, 2017 15:56, edited 1 time in total.
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
PanelFilter — фильтр панели
Вставьте после строки
if Coord ...
следующую строку:mf.postmacro(handle.send,handle,F.DM_SETSELECTION,1,{BlockType=0})
- Dennis_Moore
- Posts: 298
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
PanelFilter — фильтр панели
Дописал в конце скрипта макрос удаления фильтра:
и теперть при нажатии Ctrl-Shift-P выводится меню с выбором действия. Удобно что не занимает дополнительное сочетание.
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;
}
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
PanelFilter — фильтр панели
Нажали Ctrl-Shift-P и шорткат из меню - два нажатия. В исходном варианте нужно нажать Ctrl-Shift-P и Esc - те же 2 нажатия. Поэтому не очень ясно, что мы выигрываем этой модификацией.
- Dennis_Moore
- Posts: 298
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
PanelFilter — фильтр панели
Если отфильтровать и нажать Enter то фильтр потом можно снять или удалением его из списка или повторным вызовом скрипта и очисткой строки фильтрации. Мне показалось удобнее сделать так как выше поскольку во время фильтрации не работают функциональные клавиши, а по Esc фильтр убирается (Esc если просто смотрю наличие элементов, Enter если хочу провести операции над отфильтрованными элементами).
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
PanelFilter — фильтр панели
Обычно стараются минимизировать число нажатий. Ваш вариант не уменьшает число нажатий при отключении, а при включении фильтра - увеличивает с 1 до 2. Хотя - дело вкуса.
- Dennis_Moore
- Posts: 298
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
PanelFilter — фильтр панели
Я не знаю как еще это можно сделать. Разве что после 34-й строки дописать delfilter(),
тогда можно будет удалить фильтр нажав Ctrl-Shift-P, Enter/Esc (правда немного пострадает функционал - не будет подставлен текущий фильтр). Но если у вас есть предложение как это сделать изящнее буду рад (Ctrl-Shift-P, 2 по-моему удобнее нажимать чем Ctrl+I Del Enter Enter (это если _luafilter_ первый в списке))
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
PanelFilter — фильтр панели
Dennis_Moore, или я туплю, или вы неясно выражаетесь.
Вы дописали макрос удаления фильтра. Получили при вызове меню с 2-мя пунктами: включить и удалить. В оригинальном варианте для удаления надо активизировать фильтр (если он не активен) и нажать Esc. Для этого вовсе не требуется очищать строку, а только нужно нажать Esc.
Вы дописали макрос удаления фильтра. Получили при вызове меню с 2-мя пунктами: включить и удалить. В оригинальном варианте для удаления надо активизировать фильтр (если он не активен) и нажать Esc. Для этого вовсе не требуется очищать строку, а только нужно нажать Esc.
- Dennis_Moore
- Posts: 298
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
PanelFilter — фильтр панели
Фильтрую панель, встаю на нужный элемент, хочу отредактировать или скопировать, а F4/F5 не работают пока вызван скрипт. Нажимаю Enter (т.е. выхожу из скрипта и оставляю фильтр), редактирую/копирую/перемещаю/удаляю все что нужно после чего нужно удалить фильтр.Shmuel wrote: Dennis_Moore, или я туплю, или вы неясно выражаетесь.
Вы дописали макрос удаления фильтра. Получили при вызове меню с 2-мя пунктами: включить и удалить. В оригинальном варианте для удаления надо активизировать фильтр (если он не активен) и нажать Esc. Для этого вовсе не требуется очищать строку, а только нужно нажать Esc.
Остановился на варианте с добавлением delfilter() (свой макрос естественно убираю) т.к. так даже удобнее - вон быстрый поиск в панелях тоже не сохраняет строку и никто вроде-бы не жалуется.
Upd. Похоже день дурака не прошел для меня бесследно. Все работает как вы и написали, извините. Но delfilter() пожалуй оставлю - не придется очищать строку, да и фильтр можно будет удалять еще и по Enter.
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
PanelFilter — фильтр панели
Ну я в этом раскладе нажимаю
CtrlShiftP Esc
- фильтр снят и удалён. Это у вас не работает? ... я до сих пор не врубаюсь в потаённый смысл