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

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

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

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

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

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

Credits:
Attachments
PanelAutoFilter.lua.7z
(3.24 KiB) Downloaded 272 times

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

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

Latest post of the previous page:

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

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

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

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

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

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

User avatar
HaRT
Moderator
Posts: 8025
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 99 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: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 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: 284
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 2 times
Been thanked: 2 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: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 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 вы в макрос так и не добавили, или в шапке не последняя версия?
Я имею ввиду вот это: viewtopic.php?p=128252#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: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

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

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

DV
Posts: 284
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 2 times
Been thanked: 2 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: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 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;

Post Reply

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