Как работать с фильтрами файловой панели через LUA ?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Shtirla
Posts: 117
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 10 times
Been thanked: 2 times

Как работать с фильтрами файловой панели через LUA ?

Post by Shtirla »

Что то не совсем поняимаю логику, нашел вот пример в хэлпе

Code: Select all

  -- create a filter for the "active panel" area
  local AFilter = far.CreateFileFilter(1, "FFT_PANEL")
  if AFilter then
    -- update the "current time" parameter
    AFilter:StartingToFilter()
    -- manipulate panel elements
    local pInfo = panel.GetPanelInfo(nil, 1)
    for i=1, pInfo.ItemsNumber do
      -- apply the filter...
      local item = panel.GetPanelItem(nil, 1, i)
      if AFilter:IsFileInFilter(item) then
        -- the element matches filter conditions;
        -- process the element...
      end
    end
    -- free memory
    AFilter:FreeFileFilter()
  end
т.е. в переводе создали объект фильтра панелей, и проеряем все файлы активной панели, можно даже через :OpenFiltersMenu вызвать собственно меню фильтра, но
Как работать с самими фильтарми? добавить новый, выбрать его, активировать, удалить за собой? что то по разному пробовал копать, инфы нет.

для чего это все в макросах присутствует? если чтобы просто проверить на соответствие каждого элемента панели фильтру?? то на самом деле достаточно 1й команды вместо 7ми, при вызове меню фильтра через функции послать ему клавиши нельзя, да и проще тогда CtrlI нажать... вобщем не понял.
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Re: Как работать с фильтрами фаиловой панели через LUA ?

Post by Shmuel »

Shtirla wrote:Как работать с самими фильтарми? добавить новый, выбрать его, активировать, удалить за собой? что то по разному пробовал копать, инфы нет.
Инфа вся есть в том же мануале, но параллельно следует ознакомиться с соответствующим разделом Энциклопедии.
Shtirla wrote:для чего это все в макросах присутствует? если чтобы просто проверить на соответствие каждого элемента панели фильтру?? то на самом деле достаточно 1й команды вместо 7ми, при вызове меню фильтра через функции послать ему клавиши нельзя, да и проще тогда CtrlI нажать... вобщем не понял.
Мануал, из которого взят пример, он не о макросах, а о LuaFAR-плагинах, хотя приведенные в нём функции могут использоваться и в макросах.

Пример использования функций фильтра - плагин LuaFAR Search (при вызове из панелей). Если пользователь хочет искать только в "отфильтрованных" файлах, он настраивает фильтр (в диалоге есть кнопка для вызова), а затем плагин, перебирая файлы, использует функцию IsFileInFilter.
buniak_a_h
Posts: 2095
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 207 times
Contact:

Как работать с фильтрами файловой панели через LUA ?

Post by buniak_a_h »

Shtirla, извините, что старое ворошу.
Вы нашли ответы на свои вопросы? А Shmuel-я уже не спросишь, а тут его ответ больше на отписку похож…
Все примеры макросов, создающих/меняющих фильтр, реализованы через Keys. Не хотелось бы…
Last edited by buniak_a_h on Fri 16 Oct, 2020 21:16, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 12888
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 295 times

Как работать с фильтрами файловой панели через LUA ?

Post by John Doe »

@buniak_a_h вы лучше свои вопросы задавайте.
Фильтры обычных панелей фара управляются только через Keys, иного не предусмотрено.
Через апи можно создать фильтр для своих внутренних целей.
https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 2095
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 207 times
Contact:

Как работать с фильтрами файловой панели через LUA ?

Post by buniak_a_h »

John Doe, так мои вопросы - те же. Как создать новый фильтр, как удалить, активировать (+/-) / деактивировать …
Вы ответили, я просто уточняю, что меня те же вопросы заинтересовали. Ответ " инфа есть в мануале", увы, не удовлетворяет. "Управляются через Keys" - грустно, но понятно. Спасибо. …
buniak_a_h
Posts: 2095
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 207 times
Contact:

Как работать с фильтрами файловой панели через LUA ?

Post by buniak_a_h »

P/S я умею напрямую писать фильтр в БД средствами SQLite, но текущие экземпляры ФАРа изменений не видят. А то для "продвинутых" юзеров это был бы хороший способ менять "внутренности" (также я менял настройки, недоступные через диалоги).
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

Как работать с фильтрами файловой панели через LUA ?

Post by citRiks »

buniak_a_h, Насколько я понимаю, тут приводится пример работы с УЖЕ заданным (текущим на данный момент) фильтром,
т.е. менять его тут нельзя, а только узнать что он есть и проверить соответсвиее чего-то там этому фильтру.
@ДжонДое написал неплохой макрос на эту тему, автофилтрации, ну вы знаете наверное.
Я его правда допилил, а то он падал у меня когда активно AutoCompletion, и/или когда из режима филтрации я делал F4 (редактирование)
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

Как работать с фильтрами файловой панели через LUA ?

Post by citRiks »

buniak_a_h wrote: Sat 17 Oct, 2020 11:19 Например, обращение к диалогу в condition с большой вероятностью обрушит ФАР без сохранения статуса.
В condition просто многое из свойств недоступно, это по определению как-бы, я натолкнулся например, на то что в condition() всех евентов ЕдиторЕвент нельзя получить editor.GetInfo(..), ну по номеру редактора ни без номера текущего.
Но, если эти евенты приходят в момент ОТКРЫТИЯ редактора, тогда можно получить, но не тогда когда открылось.
Хотя в макросных condition это кажется что можно.
Last edited by citRiks on Sat 17 Oct, 2020 14:51, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
John Doe
Бюрократ
Posts: 12888
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 295 times

Как работать с фильтрами файловой панели через LUA ?

Post by John Doe »

citRiks wrote: Sat 17 Oct, 2020 14:29 Насколько я понимаю, тут приводится пример работы с УЖЕ заданным (текущим на данный момент) фильтром,
Плохо понимаете.
https://t.me/FarManager — Telegram чат
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

Как работать с фильтрами файловой панели через LUA ?

Post by citRiks »

John Doe, Ну не знаю прямо
Смотрим тут, нет тут слова "задать (что-либо)".
https://api.farmanager.com/ru/service_f ... ntrol.html
Можно только "создать", причем без каких либо конкретных параматеров, кроме общих FFT_PANEL, FFT_FINDFILE, FFT_CUSTOM итд
Которые без конкретики как бы.
А далее, после того как мы "создали" фильтр, можно только его "проверять", и наслаждаться результатами проверки.
менять его нельзя.
StartToFilter тоже не получает каких-либо осмысленных для задачи "задать свой конкретный фильтр" значений
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 2095
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 207 times
Contact:

Как работать с фильтрами файловой панели через LUA ?

Post by buniak_a_h »

citRiks wrote: Sat 17 Oct, 2020 14:29 Насколько я понимаю, тут приводится пример работы с УЖЕ заданным (текущим на данный момент) фильтром
«Тут» - это где? Если в примере - то об этом и речь. Как проверить - описано . А вот как создать/редактировать/получить параметры - об этом ни гу-гу. Хотя это - самое интересное.
В макросе автофильтрации генерятся keystrokes, которые помещаются в очередь через mf.postmacro. Эта логика не для моего ума… :-(
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

Как работать с фильтрами файловой панели через LUA ?

Post by citRiks »

buniak_a_h,
buniak_a_h wrote: Sat 17 Oct, 2020 19:25 Если в примере - то об этом и речь
да, об этом и речь. моя эта заметка была в ответ на замечение @Джона, где он, как мне показалось, утверждал обратное. в итоге я его не совсем понял, но доверяю его утверждению что кроме как нажатиями кнопочек фильтрации нельзя добиться. Реализация Шмуэля тоже была через кнопочки, и в целом эта старинная проблема уже давно вызывающая возмущение. Правда меня @Джон запутал зачем нужен этот процитированный тут пример, когда я думал что понимаю зачем.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 2095
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 207 times
Contact:

Как работать с фильтрами файловой панели через LUA ?

Post by buniak_a_h »

citRiks, лично меня сбила с толку фраза Шмуэля:
Shmuel wrote: Fri 30 Aug, 2013 10:07
Shtirla wrote:Как работать с самими фильтарми? добавить новый, выбрать его, активировать, удалить за собой? что то по разному пробовал копать, инфы нет.
Инфа вся есть в том же мануале, но параллельно следует ознакомиться с соответствующим разделом Энциклопедии.
Согласитесь, если только кейстроками можно сделать нечто, то инфы в мануале нет. И в Энциклопедии тоже. Может, в 2013-м году, когда всё это затевалось, было?
Ну в общем грустно клавиатурными последовательностями целые процедуры писать… Жаль.
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

Как работать с фильтрами файловой панели через LUA ?

Post by citRiks »

buniak_a_h, да я вообще ненавижу кнопочные последовательности. вот @джон выпилил гениальный костыль для автофильтрации на нажатиях этих. выглядит почит натурально, но код скрипта длиннее в 10 раз раз чем мог бы быть при том же самом через адекватное АПИ, которое внутри все же есть где-то. Далее, заметно притормаживает конечно, когда компутер дохловатый. "Купи нормальный компутер" скажете вы, но себе то я куплю, но не всем же и не везде где придется работать смогу купить.

Пытаясь расшифровать послания @Джона (и @Шмуэля) сейчас я думаю что @Джон имел ввиду то, что приведенным тут примером можно создавать фильтры "внутреннего пользования", которые могут использоватся внутри кода, но не будут видны в UI. Но тогда все еще не понятно, какой сценарии использования, и где задавать параметры филтрации, буде он пусть сколь угодно "внутреннего пользования". Где, пусть и для "внутреннего пользования", я могу задать параметры филтрации? Нипанятна..
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

Как работать с фильтрами файловой панели через LUA ?

Post by citRiks »

buniak_a_h,
Но, если все-таки вам хочется разобраться с этой темой, и вы серьезно настроены.
(Я вот уже не хочу разбираться, у меня кризис отношений с ФАРом и его командой.)
то, собственно, как Шмуэль и советует, возьмите как пример его LuaFar Search,
он написан почти целиком на Луа, кроме вкрапления чтения из файлов на Сях.
И посмотрите что там он натворил с этими фильтрами.
Шмуэль, однако, фигни писать и говорить отнюдь не должен
Last edited by citRiks on Sun 18 Oct, 2020 08:18, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Post Reply

Return to “Нужна помощь”