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

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

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

Post by John Doe » Thu 25 Dec, 2014 21:01

Latest post of the previous page:

fml2 wrote: Дождемся новой версии, зачем обсуждать уже не существующие?
В данном случае речь о функционировании штатной панели быстрого поиска.
fml2 wrote: Это объяснение сошло бы, если бы ввод фильтра при уже действующем фильтре фильтровал бы "повторно"
Обратите внимание, что Alt-<символ> активирует быстрый поиск.
Скрипт фильтра ничего тут не делает, т.к. ему ещё неизвестно, что открыт быстрый поиск.

Если так не устраивает, то можно пойти 2мя разными путями
  • активировать фильтр только выделенной комбинацией (например одиночным нажатием Alt)
    А при нажатии комбинаций Alt-символ оставить штатную функцию быстрого поиска.
  • альтернативно: в отдельной нити по таймеру опрашивать текущую макрообласть, и при обнаружении открытого быстрого поиска подставлять в поле строку фильтра

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

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

Post by fml2 » Thu 25 Dec, 2014 22:16

Наверное, для того, чтобы осмысленно ответить, нужно знать, как реализован скрипт.
John Doe wrote: Обратите внимание, что Alt-<символ> активирует быстрый поиск.
Но я наблюдаю, что при нажатии Alt+символ не только показывается поле фильтра, но этот симбол туда вводится и уже производится фильтрация по нему. Т.е. кроме активирования поиска производится и кое-что сверх этого.

А-а-а, кажется, я понял: скрипт "подсаживается" на быстрый поиск. Но сначала этот поиск должен что-то сделать. И только тогда скрипт может распознать, что он что-то должен сделать, так?

Ладно, как бы там ни было: очень полезная штука!

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

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

Post by John Doe » Thu 25 Dec, 2014 22:37

fml2 wrote: А-а-а, кажется, я понял: скрипт "подсаживается" на быстрый поиск. Но сначала этот поиск должен что-то сделать. И только тогда скрипт может распознать, что он что-то должен сделать, так?
Скрипт активируется нажатиями любых клавиш в макрообласти Search.
Но сама панель Search должна сначала как-то открыться, так ведь?
Нажимая Alt-символ в области Shell вы открываете панель Search, но скрипт автофильтра не получит управление до тех пор, пока вы не нажмёте ещё одну клавишу.

На самом деле "паразитировать" на быстром поиске вовсе не необходимо.
В шапке темы есть ссылки на альтернативные реализации, никак не использующие Search.

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

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

Post by fml2 » Fri 26 Dec, 2014 00:39

John Doe wrote: Нажимая Alt-символ в области Shell вы открываете панель Search, но скрипт автофильтра не получит управление до тех пор, пока вы не нажмёте ещё одну клавишу.
Так ведь я же и нажимаю еще одну клавишу (в моем случае -- g)! Т.е. я нажимаю не просто Alt, а Alt+g.

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

Post by John Doe » Fri 26 Dec, 2014 06:31

Вы жмете Alt-символ, после этого открывается быстрый поиск. Для того чтобы фильтр получил управление нужно еще одно нажатие.
(Я просто объясняю детали реализации, и не имею ввиду, что "еще одно нажатие" тут поможет).

Со следующей версии быстрый поиск, открытый таким способом, будет работать штатным образом (не будет даже пытаться фильтровать).

Для запуска фильтра необходимо использовать одиночный Alt (или другой шорткат на ваш выбор).

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

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

Post by John Doe » Fri 26 Dec, 2014 19:36

Новая версия:
  • Глобального переключения режима (CtrlAltF) больше нет. Вместо этого, автофильтр включается только по шорткату.
  • Любое действие (кроме Ctrl[Shift]Enter) отключает автофильтр, и снимает фильтр панели.
    Чтобы выйти из автофильтра, сохранив фильтр панели, можно повторно нажать клавишу вызова (Alt).
  • Если фильтр панели сброшен, то при следующей активации автофильтра подставится пустая строка.
    Но можно восстановить предыдущее значение автофильтра повторным нажатием клавиши вызова (Alt)
  • Нажатие \,/ в автофильтре отключает/включает фильтрацию папок.
  • Нажатие Esc в панели сбрасывает ранее установленный автофильтром фильтр.
  • Экспериментально: при наличии активного фильтра меняется цвет рамки панелей.
    К сожалению в фаре невозможно изменить цвет только одной панели, со всеми вытекающими.
    Цвета (4-битные) заданы в таблице FG.
Вложение в шапке (описание ещё не обновил)

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

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

Post by fml2 » Mon 29 Dec, 2014 15:34

John Doe wrote: Глобального переключения режима (CtrlAltF) больше нет. Вместо этого, автофильтр включается только по шорткату.
Гм... Возникает вопрос: если эта функциональность теперь вызывается отдельно, то зачем "притворяться", что это быстрый поиск? Т.е. зачем использовать ГУИ быстрого поиска? Почему не сделать собственный диалог (возможно, с какими-то элементами, которых нет в диалоге быстрого поиска -- например, птичкой для фильтрации папок).

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

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

Post by John Doe » Mon 29 Dec, 2014 17:27

fml2 wrote:Возникает вопрос: если эта функциональность теперь вызывается отдельно, то зачем "притворяться", что это быстрый поиск? Т.е. зачем использовать ГУИ быстрого поиска?
Известно зачем - это уже отлажено, и вполне выполняет свою задачу.

Если буду развивать, то рано или поздно придется переделать на собственный диалог (например фильтр по обоим раскладкам в быстром поиске сделать проблематично).

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

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

Post by John Doe » Tue 30 Dec, 2014 12:04

Сейчас автофильтр реализован как обычный фильтр включения.
Но что если панель уже отфильтрована другим фильтром?
Наш автофильтр (в текущей реализации) уже не способен уменьшить количество элементов на панели, он может разве что добавить.

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

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

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

Post by fml2 » Thu 01 Jan, 2015 21:57

John Doe wrote: Наш автофильтр (в текущей реализации) уже не способен уменьшить количество элементов на панели, он может разве что добавить.
Правильно ли я понимаю, что эта "фича" обусловлена тем, что выбранные пункты в меню фильтрации соединяются по "или"? И что интуитивно ожидаемого эффекта (т.е. дальнейшего ограничения показываемых файлов) легко было бы достичь, если бы была возможность создавать (по крайней мере, в памяти, т.е. с помощью АПИ) сложные структуры вложенности, т.е. выражения типа "(А или Б) и В"? В нашем случае "А или Б" это то, что установлено фильтром через ГУИ, а добавка "и В" -- это то, что привносилось бы вашим доплонительным фильтром.

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

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

Post by John Doe » Thu 01 Jan, 2015 22:19

fml2 wrote: если бы была возможность создавать (по крайней мере, в памяти, т.е. с помощью АПИ) сложные структуры вложенности
Сложность в том, что нет никакого апи, и всё приходится проводить через имитацию клавиатурных нажатий.

Что касается "интуитивно ожидаемого эффекта", то я же написал, что это решаемо.

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

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

Post by John Doe » Tue 13 Jan, 2015 13:41

Обновление:
  • Переделано на фильтр исключения, для того чтобы сочетание с другими фильтрами приводило к ожидаемым результатам.
  • При открытом (и активном) автофильтре комбинация CtrlF4 открывает установки текущего фильтра в диалоге.
    Тот же диалог открывается вместо панельки автофильтра в случае, если панель ни содержит ни одного подходящего под активный фильтр элемента.
  • Настройки ClearOnCommand больше нет.
    Вместо неё теперь можно задать отдельные хоткеи для "немодального" и "постоянного" режимов (по умолчанию LAlt и RAlt соответственно).
  • Описание в шапке переработано.

User avatar
4ekucT
Posts: 505
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

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

Post by 4ekucT » Tue 14 Apr, 2015 21:32

В последних билдах FAR скрипт конфликтует с макросами назначенными на кнопки Alt. Например, у меня был переназначен поиск LFSearch на AltF7 - отвалился...
А готы прыгают с балконов?


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

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

Post by IgorZ » Wed 17 Jun, 2015 12:20

Попробовал. Интересная и полезная штука, беру на вооружение. Но обнаружена бага: у меня цвет панелей Фара - синий с белыми рамками. После снятия фильтра цвет рамок изменяется на голубой, а не восстанавливается белый.

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

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

Post by John Doe » Wed 17 Jun, 2015 14:40

Бага в том, что функция изменения цвета должна быть в релизе закомментирована, т.к. нет надёжного способа изменить цвет временно.
При нестандартной цветовой схеме единственное приемлемое решение — это вручную вписать нужные константы цветов.
Определить нужное значение можно например запустив из командной строки lua:=far.AdvControl("ACTL_GETCOLOR",far.Colors.COL_PANELBOX).ForegroundColor

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

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

Post Reply

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

Who is online

Users browsing this forum: No registered users and 1 guest