Автофильтр вместо быстрого поиска

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

Автофильтр вместо быстрого поиска

Post by John Doe » Mon 22 Dec, 2014 20:53

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

Использование:
  • Клавиша активации: Alt (одиночное нажатие) в панелях — открывает панельку автофильтра.
    — Если в активной панели в настоящий момент не установлен фильтр, то подставляется маска *.
    — Если панель уже отфильтрована, то подставляется строка активного фильтра (по возможности: ).
  • По умолчанию действия левой и правой клавиши несколько отличаются:
    • LAlt запускает автофильтр в "немодальном" режиме, удобном для использования вместо Быстрого поиска:
      NB! При закрытии панельки (по Esc, или после выполнения какого-либо действия) фильтр панели сразу снимается.
    • RAlt запускает автофильтр в "постоянном" режиме, т.е. фильтр панели панели не сбросится до тех пор, пока пользователь не снимет его явно.
      NB! Для быстрого снятия фильтра достаточно нажать Esc в панелях.
    • Любое из действий (или оба) можно переназначить на другую комбинацию клавиш:
  • В панельке автофильтра действуют те же клавиши, что и при Быстром поиске, в частности:
    Большинство остальных клавиш передаются в панели, выполняя соответствующие действия в панелях, при этом панелька автофильтра закрывается.
    NB: есть возможность в options задать список клавиш, которые не будут закрывать автофильтр:
Дополнительно:

Credits:

Требования: FAR 3.0 build >= 5416
Attachments
PanelAutoFilter.lua
v2.9.3
(10.76 KiB) Downloaded 115 times
Last edited by John Doe on Wed 10 Jul, 2019 08:50, edited 1 time in total.

IgorZ
Posts: 647
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 11 times
Been thanked: 48 times

Автофильтр вместо быстрого поиска

Post by IgorZ » Thu 18 Jun, 2015 09:07

Latest post of the previous page:

Кто мешает в начале работы запомнить цвет, а вместо установки голубого восстанавливать запомненный?

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

Автофильтр вместо быстрого поиска

Post by John Doe » Thu 18 Jun, 2015 09:23

IgorZ wrote: Кто мешает в начале работы запомнить цвет, а вместо установки голубого восстанавливать запомненный?
Сначала именно так и сделал, оказалось ненадёжно, т.к. при сохранении настроек сохраняется и цветовая схема.

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

User avatar
HaRT
Moderator
Posts: 9167
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 177 times

Автофильтр вместо быстрого поиска

Post by HaRT » Fri 19 Jun, 2015 15:07

LuaCheck пишет “accessing undefined variable 'TransitKeys'”, но если я в начало добавляю local TransitKeys, то рапортует “variable 'TransitKeys' is never set”. Приходится писать local TransitKeys = nil. Есть ли более элегантный способ?
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Автофильтр вместо быстрого поиска

Post by John Doe » Fri 19 Jun, 2015 15:19

HaRT wrote: Есть ли более элегантный способ?

Code: Select all

local TransitKeys
или

Code: Select all

local TransitKeys --= "Ins Up Down PgUp PgDn CtrlMultiply"
Но мне кажется вы не в ту тему пишите (есть и другие способы убрать ненужные предупреждения, например добавив в конец "проблемной" строки комментарий --luacheck: ignore TransitKeys, и т.п.).

DV
Posts: 376
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 12 times
Been thanked: 12 times

Автофильтр вместо быстрого поиска

Post by DV » Thu 25 Jun, 2015 14:58

Нашёл пару странных "багов" в этом замечательном скрипте. Как воспроизвести:
1. Заходим в папку Addons (которая в папке с FAR3)
2. Нажимаем Alt, вводим фильтр "co" (остаётся видна только папка "Colors")
3. Не закрывая панель Search, нажимаем F1
4. Нажимаем Esc для скрытия окна помощи - в результате панель файлов перерисовалась не полностью:


Второй "баг" связан с тем, что иногда после закрытия панели Search (нажатием Esc) фильтр остаётся активным (то есть на файловой панели видны только отфильтрованные элементы), а иногда - нет (на файловой панели видны все элементы). С чем это связано, так и не понял.
- (обновлено) сорри, это не баг! Это разная реакция на активацию нажатием LAlt и RAlt.

Версия макроса - из "шапки" темы, FAR 3.0 build 4391 x86.

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

Автофильтр вместо быстрого поиска

Post by John Doe » Thu 25 Jun, 2015 18:35

DV wrote: Как воспроизвести:
http://bugs.farmanager.com/view.php?id=3014
Но в макросе тоже баг: не надо обрабатывать F1 (добавил исключение в condition).

goran
Posts: 4
Joined: Thu 19 May, 2016 23:07

Автофильтр вместо быстрого поиска

Post by goran » Mon 13 Jun, 2016 14:37

Скажите пожалуйста, решение для пропуска комбинации AltTab вы в макрос так и не добавили, или в шапке не последняя версия?
Я имею ввиду вот это: http://forum.farmanager.com/viewtopic.p ... 52#p128252

И может подскажете, как заставить заработать такое условие:

Code: Select all

  condition=function() return APanel.Visible and APanel.FilePanel and SkipAltTab() end;
А то у меня не получилось, много времени на разбирательства не тратил, сделал по быстрому без функции SkipAltTab:

Code: Select all

  condition=function()
    LostFocus = false
    mf.waitkey(1)
    return APanel.Visible and APanel.FilePanel and (not LostFocus)
  end;

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

Автофильтр вместо быстрого поиска

Post by John Doe » Mon 13 Jun, 2016 15:58

goran wrote: решение для пропуска комбинации AltTab вы в макрос так и не добавили, или в шапке не последняя версия?
Угу, в шапке нет. А надо? У вас XP?
goran wrote: И может подскажете, как заставить заработать такое условие:
Может и подскажу, если объясните в чём именно проблема.

DV
Posts: 376
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 12 times
Been thanked: 12 times

Автофильтр вместо быстрого поиска

Post by DV » Sat 22 Jul, 2017 00:41

Версия макроса в шапке конфликтует с гашением панелей, назначенным на Esc :(
Как воспроизвести:
1) Добавляем макрос

Code: Select all

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 - панели гасятся
Last edited by DV on Sat 22 Jul, 2017 00:43, edited 1 time in total.

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

Автофильтр вместо быстрого поиска

Post by John Doe » Mon 24 Jul, 2017 12:12

Замените функцию clearFilter на эту:

Code: Select all

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;

User avatar
HaRT
Moderator
Posts: 9167
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 177 times

Автофильтр вместо быстрого поиска

Post by HaRT » Tue 09 Jul, 2019 21:32

John Doe wrote:
Mon 24 Jun, 2019 12:40

Code: Select all

drkns 21.06.2019 20:40:14 +0100 - build 5416
...
2. Атрибуты в диалогах фильтров & групп раскраски/сортировки вынесены в отдельный диалог, т.к. в основной пихать уже некуда.
...
Атрибут Directory теперь труднодоступен, при том что с ним и так нелегко.
(почему нелегко см. выше по теме, и viewtopic.php?p=153831#p153831)
Нет ли у вас соответствующего изменения для PanelAutoFilter? А то теперь он ломается на Dlg.GetValue(DirsPos,0))%3. :(
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Автофильтр вместо быстрого поиска

Post by John Doe » Wed 10 Jul, 2019 08:54

HaRT wrote:
Tue 09 Jul, 2019 21:32
Нет ли у вас соответствующего изменения
В шапке.

DimTim
Posts: 8
Joined: Fri 25 Jan, 2013 06:42

Автофильтр вместо быстрого поиска

Post by DimTim » Wed 28 Aug, 2019 05:02

Дико удобный плагин, спасибо! :)

User avatar
Xerox
Posts: 282
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 265 times
Been thanked: 2 times

Автофильтр вместо быстрого поиска

Post by Xerox » Mon 02 Dec, 2019 18:23

Я так понял тут эмулируeтся "Folder Panel Filter"
Неплохо, но это как лечить зубы с другого конца туловища, имхо .
T.е. - круто, и за неимением лучшего выбора - очень даже круто.

А может быть лучшим выбором могло бы быть:

1.) запоминание элементов панели, как тупо визуальных элементов, - DlgItems or whatever
2.) при задании/изменении фильтра - выводим список соответствующих элементов
3.) При отмене фильтра - вернуть то что было изначально на место, или просто обновить панель

предыстория вопроса -
Я хотел найти что-то подобное стандартному замечательному Ctrl+Alt+F для файловых панелей,
и/или любых другиих панелей где нет Ctrl+Alt+F.
Cтал искать и нашел этот скрипт.
по функционалу кажется что близко, но реализация, как мне кажется какая-то грустная,
- ломает другую функциональность, имеет ограничения.

А хотелось бы что-то до ужаса простое и удобное как Ctrl+Alt+F для файловых панелей
Который есть кажется что везде, кроме, почему-то, файловых панелей.

Кто-нибудь может обьяснить в чем причина вышеизложенного, и/или в чем я не прав?
Last edited by Xerox on Mon 02 Dec, 2019 18:39, edited 2 times in total.

User avatar
zg
zero-gravity
Posts: 5667
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 115 times
Contact:

Автофильтр вместо быстрого поиска

Post by zg » Mon 02 Dec, 2019 19:44

Xerox wrote:
Mon 02 Dec, 2019 18:23
Кто-нибудь может обьяснить в чем причина вышеизложенного, и/или в чем я не прав?
никто не сделал.

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

Автофильтр вместо быстрого поиска

Post by John Doe » Tue 03 Dec, 2019 08:09

Xerox wrote:
Mon 02 Dec, 2019 18:23
Я так понял тут эмулируeтся "Folder Panel Filter"
А что это?
Xerox wrote:
Mon 02 Dec, 2019 18:23
- ломает другую функциональность, имеет ограничения.
Какие ограничения вас гнетут, и что именно у вас сломалось?

User avatar
Xerox
Posts: 282
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 265 times
Been thanked: 2 times

Автофильтр вместо быстрого поиска

Post by Xerox » Tue 03 Dec, 2019 18:45

John Doe wrote:
Tue 03 Dec, 2019 08:09
Xerox wrote: ↑Mon 02 Dec, 2019 20:23
Я так понял тут эмулируeтся "Folder Panel Filter"
А что это?
это, не?

Post Reply

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