Page 3 of 5

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

Posted: Mon 22 Dec, 2014 20:53
by John Doe
Предлагаемый набор макросов реализует в панелях автофильтр, применяющийся динамически, по мере набора текста.
В качестве поля ввода используется панель Быстрого поиска (Search).
Автофильтр может использоваться как вместо Быстрого поиска, так и независимо от него.

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

Credits:

Требования: FAR 3.0 build >= 5416

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

Posted: Thu 18 Jun, 2015 09:07
by IgorZ

Latest post of the previous page:

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

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

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. Есть ли более элегантный способ?

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

Posted: Fri 19 Jun, 2015 15:19
by John Doe
HaRT wrote: Есть ли более элегантный способ?

Code: Select all

local TransitKeys
или

Code: Select all

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.

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

Posted: Thu 25 Jun, 2015 18:35
by John Doe
DV wrote: Как воспроизвести:
http://bugs.farmanager.com/view.php?id=3014
Но в макросе тоже баг: не надо обрабатывать F1 (добавил исключение в condition).

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

Posted: Mon 13 Jun, 2016 14:37
by goran
Скажите пожалуйста, решение для пропуска комбинации 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;

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

Posted: Mon 13 Jun, 2016 15:58
by John Doe
goran wrote: решение для пропуска комбинации AltTab вы в макрос так и не добавили, или в шапке не последняя версия?
Угу, в шапке нет. А надо? У вас XP?
goran wrote: И может подскажете, как заставить заработать такое условие:
Может и подскажу, если объясните в чём именно проблема.

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

Posted: Sat 22 Jul, 2017 00:41
by DV
Версия макроса в шапке конфликтует с гашением панелей, назначенным на 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 - панели гасятся

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

Posted: Mon 24 Jul, 2017 12:12
by John Doe
Замените функцию 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;

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

Posted: Tue 09 Jul, 2019 21:32
by HaRT
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. :(

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

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 - ломает другую функциональность, имеет ограничения.
Какие ограничения вас гнетут, и что именно у вас сломалось?