Предлагаемый набор макросов реализует в панелях автофильтр, применяющийся динамически, по мере набора текста.
В качестве поля ввода используется панель Быстрого поиска (Search). Автофильтр может использоваться как вместо Быстрого поиска, так и независимо от него.
Использование:
Клавиша активации: Alt(одиночное нажатие) в панелях — открывает панельку автофильтра.
— Если в активной панели в настоящий момент не установлен фильтр, то подставляется маска *.
— Если панель уже отфильтрована, то подставляется строка активного фильтра (по возможности:
Если на панели нет ни одного подходящего под фильтр элемента, то открываются установки текущего фильтра. Этот диалог можно открыть и явно, комбинацией CtrlF4
).
По умолчанию действия левой и правой клавиши несколько отличаются:
LAlt запускает автофильтр в "немодальном" режиме, удобном для использования вместо Быстрого поиска: NB! При закрытии панельки (по Esc, или после выполнения какого-либо действия) фильтр панели сразу снимается.
Можно выйти из режима автофильтра, сохранив фильтр панели, для этого следует использовать ту же комбинацию, что активирует автофильтр (любой Alt).
Даже если фильтр панели уже сброшен, его легко восстановить двукратным нажатием клавиши активации автофильтра (первое нажатие запускает пустой автофильтр, второе восстанавливает предыдущее его значение).
RAlt запускает автофильтр в "постоянном" режиме, т.е. фильтр панели панели не сбросится до тех пор, пока пользователь не снимет его явно. NB! Для быстрого снятия фильтра достаточно нажать Esc в панелях.
Любое из действий (или оба) можно переназначить на другую комбинацию клавиш:
Клавиши задаются в options (в начале скрипта): keyClearOnCommand = "LAlt", keyPermanent = "RAlt"
В панельке автофильтра действуют те же клавиши, что и при Быстром поиске, в частности:
— работает вставка по ShiftIns/CtrlV;
— для циклического перемещения между элементами можно использовать CtrlEnter/CtrlShiftEnter.
Большинство остальных клавиш передаются в панели, выполняя соответствующие действия в панелях, при этом панелька автофильтра закрывается. NB: есть возможность в options задать список клавиш, которые не будут закрывать автофильтр:
например (в начале скрипта):TransitKeys = "Ins Up Down PgUp PgDn CtrlMultiply"
Дополнительно:
CtrlF4 — открывает установки текущего фильтра в диалоге;
/,\ — отключает/включает фильтр папок;
Ctrl — переключает между режимом автофильтра, и обычной функциональностью панели Search;
Del — очищает строку автофильтра;
CtrlShiftDel — полностью удаляет автофильтры обеих панелей.
Кроме того:
Tab(в панели Search) — Открыть Быстрый поиск/автофильтр на противоположной панели.
Tab(в списке фильтров) — Открыть список фильтров для противоположной панели.
Кто мешает в начале работы запомнить цвет, а вместо установки голубого восстанавливать запомненный?
Автофильтр вместо быстрого поиска
Posted: Thu 18 Jun, 2015 09:23
by John Doe
IgorZ wrote: Кто мешает в начале работы запомнить цвет, а вместо установки голубого восстанавливать запомненный?
Сначала именно так и сделал, оказалось ненадёжно, т.к. при сохранении настроек сохраняется и цветовая схема.
Можно записывать значение в базу, и предоставить пользователю возможность изменять его интерактивно.
Возможно добавлю, вместе с прочими настройками (это если вообще буду развивать скрипт: идеи есть, но где ж взять столько времени...)
Автофильтр вместо быстрого поиска
Posted: Fri 19 Jun, 2015 15:07
by HaRT
LuaCheck пишет “accessing undefined variable 'TransitKeys'”, но если я в начало добавляю local TransitKeys, то рапортует “variable 'TransitKeys' is never set”. Приходится писать local TransitKeys = nil. Есть ли более элегантный способ?
local TransitKeys --= "Ins Up Down PgUp PgDn CtrlMultiply"
Но мне кажется вы не в ту тему пишите (есть и другие способы убрать ненужные предупреждения, например добавив в конец "проблемной" строки комментарий --luacheck: ignore TransitKeys, и т.п.).
Автофильтр вместо быстрого поиска
Posted: Thu 25 Jun, 2015 14:58
by DV
Нашёл пару странных "багов" в этом замечательном скрипте. Как воспроизвести:
1. Заходим в папку Addons (которая в папке с FAR3)
2. Нажимаем Alt, вводим фильтр "co" (остаётся видна только папка "Colors")
3. Не закрывая панель Search, нажимаем F1
4. Нажимаем Esc для скрытия окна помощи - в результате панель файлов перерисовалась не полностью:
Второй "баг" связан с тем, что иногда после закрытия панели Search (нажатием Esc) фильтр остаётся активным (то есть на файловой панели видны только отфильтрованные элементы), а иногда - нет (на файловой панели видны все элементы). С чем это связано, так и не понял.
- (обновлено) сорри, это не баг! Это разная реакция на активацию нажатием LAlt и RAlt.
Версия макроса - из "шапки" темы, FAR 3.0 build 4391 x86.
Macro {
description="Use Esc to toggle panels on/off";
area="Shell Info QView Tree";
key="Esc";
action = function() Keys('CtrlO') end;
}
2) Добавляем макрос PanelAutoFilter.lua
3) В любой файловой панели нажимаем Ctrl+I, активируем любой фильтр, Enter
4) В панели с активным фильтром нажимаем Esc - ожидается гашение панелей - в реальности ничего не происходит
5) Убираем макрос PanelAutoFilter.lua, перезапускаем FAR, повторяем пункты 3 и 4 - панели гасятся
local function clearFilter() --Очистка автофильтра активной панели
Color("COL_PANELBOX","Normal")
local done
for filter in AllFilters(filtername) do
if band(Menu.ItemStatus(),0x2)~=0 then
Keys"BS"; done = true
else
Keys"Down"
end
end
return done
end;
drkns 21.06.2019 20:40:14 +0100 - build 5416
...
2. Атрибуты в диалогах фильтров & групп раскраски/сортировки вынесены в отдельный диалог, т.к. в основной пихать уже некуда.
...
Атрибут Directory теперь труднодоступен, при том что с ним и так нелегко.
(почему нелегко см. выше по теме, и viewtopic.php?p=153831#p153831)
Нет ли у вас соответствующего изменения для PanelAutoFilter? А то теперь он ломается на Dlg.GetValue(DirsPos,0))%3.
Автофильтр вместо быстрого поиска
Posted: Wed 10 Jul, 2019 08:54
by John Doe
HaRT wrote: ↑Tue 09 Jul, 2019 21:32
Нет ли у вас соответствующего изменения
В шапке.
Автофильтр вместо быстрого поиска
Posted: Wed 28 Aug, 2019 05:02
by DimTim
Дико удобный плагин, спасибо!
Автофильтр вместо быстрого поиска
Posted: Mon 02 Dec, 2019 18:23
by Xerox
Я так понял тут эмулируeтся "Folder Panel Filter"
Неплохо, но это как лечить зубы с другого конца туловища, имхо .
T.е. - круто, и за неимением лучшего выбора - очень даже круто.
А может быть лучшим выбором могло бы быть:
1.) запоминание элементов панели, как тупо визуальных элементов, - DlgItems or whatever
2.) при задании/изменении фильтра - выводим список соответствующих элементов
3.) При отмене фильтра - вернуть то что было изначально на место, или просто обновить панель
предыстория вопроса -
Я хотел найти что-то подобное стандартному замечательному Ctrl+Alt+F для файловых панелей,
и/или любых другиих панелей где нет Ctrl+Alt+F.
Cтал искать и нашел этот скрипт.
по функционалу кажется что близко, но реализация, как мне кажется какая-то грустная,
- ломает другую функциональность, имеет ограничения.
А хотелось бы что-то до ужаса простое и удобное как Ctrl+Alt+F для файловых панелей
Который есть кажется что везде, кроме, почему-то, файловых панелей.
Кто-нибудь может обьяснить в чем причина вышеизложенного, и/или в чем я не прав?
Автофильтр вместо быстрого поиска
Posted: Mon 02 Dec, 2019 19:44
by zg
Xerox wrote: ↑Mon 02 Dec, 2019 18:23Кто-нибудь может обьяснить в чем причина вышеизложенного, и/или в чем я не прав?
никто не сделал.
Автофильтр вместо быстрого поиска
Posted: Tue 03 Dec, 2019 08:09
by John Doe
Xerox wrote: ↑Mon 02 Dec, 2019 18:23
Я так понял тут эмулируeтся "Folder Panel Filter"
А что это?
Xerox wrote: ↑Mon 02 Dec, 2019 18:23
- ломает другую функциональность, имеет ограничения.
Какие ограничения вас гнетут, и что именно у вас сломалось?