Разбивать длинные имена файлов в панели на несколько строк

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Latest post of the previous page:

Поэтому я и против обработчика событий. Тем более таких - событий мыши.
Речь как раз о том, чтобы клик ЛКМ и ПКМ передавался в export.ProcessPanelInput (точнее, в mod.ProcessPanelInput). Как в диалогах: вызывается DN_CONTROLINPUT без EVENT. А так, как Вы советуете, обработчик будет вызываться во всех областях, панелях, плагинах и т.д. … Во всех диалогах… Или я чего-то не знаю?
В EVENT {…} Нельзя же указать area = …
Last edited by buniak_a_h on Thu 29 Jul, 2021 20:08, edited 1 time in total.
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Shmuel wrote: Thu 29 Jul, 2021 19:46 Это легко проверяется
Ну и проверил. Как я и думал, вызывается на любое движение мыши. Это может оказаться очень накладно…
Shmuel
Posts: 6366
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 397 times

Разбивать длинные имена файлов в панели на несколько строк

Post by Shmuel »

buniak_a_h wrote: Thu 29 Jul, 2021 20:07 Поэтому я и против обработчика событий. Тем более таких - событий мыши.
buniak_a_h wrote: Thu 29 Jul, 2021 20:13 Как я и думал, вызывается на любое движение мыши. Это может оказаться очень накладно…
Теоретически, может быть.
Практически, я сейчас поставил 8 (восемь) обработчиков ConsoleInput, каждый выводит строку посредством OutputDebugString (довольно дорогая операция). Стал двигать и кликать мышью - всё выводится как положено, визуально никакого замедления не ощущается.
Но, естественно, каждый имеет право на свой выбор.
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Shmuel wrote: Thu 29 Jul, 2021 18:46 Можно попробовать добавить обрабочик: Event { group="ConsoleInput"; .... }
Не получилось у меня.
  1. Если action должна работать как export.ProcessConsoleInput, то она должна возвращать 0/1/tInputRecord. Причём в 3-м случае ФАР, вроде как, должен вести себя так, как будто получил такое нажатие. Но всё равно ничего не происходит.
  2. Вызов Keys ожидаемо приводит к ошибке attempt to yield across C-call boundary.
  3. Тот же Keys через mf.postmacro приводит к зацикливанию. Причём в зависимости от return 0/1 или просто где-то циклится, или непрерывно вызывает action.
Так что я недостаточно компетентен.
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Shmuel!
Поправочка. Сделал.Сорри…
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Shmuel wrote: Thu 29 Jul, 2021 18:46 Можно попробовать добавить обрабочик: Event { group="ConsoleInput"; .... }
Выяснилась некая странность: по клику ПКМ в обработчик события передаётся rec:
  • без конэму - соответствующий MsRClick (что правильно)
  • с конэму - RCtrlRAltMsRClick (такой вот кошмарик!)
При этом mf.waitkey() возвращает единственный вариант - MsRClick - независимо от того, как запущен ФАР. Также в хендлер диалога при DN_CONTROLINPUT также передаётся MsRClick. Как так может быть?
Кто-нить знает, почему такое и от чего оно может зависеть? А то настраивать на конкретную строку - а вдруг всё зависит от настроек конэму, и эта хитрая строка (RCtrlRAltMsRClick) может измениться…
Last edited by buniak_a_h on Fri 30 Jul, 2021 18:26, edited 2 times in total.
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Версия 1.0.6:
  1. Восстановлен вызов панели из МЕНЮ плагинов.
  2. Теперь в строках-продолжениях выводится только имя файла.
  3. Переработана процедура перемещения по панели. Теперь остановка на строках-продолжениях предотвращается при перемещении как клавиатурой, так и мышкой.
  4. В продолжение: отметка ПКМ на строке-продолжении действует на первую строку имени файла.
Файл убран из-за ошибки. Исправлена в 1.0.7
Last edited by buniak_a_h on Sat 31 Jul, 2021 02:04, edited 1 time in total.
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Версия 1.0.7
  1. Исправлена досадная ошибка, из-за которой происходил вылет при наборе (в командной строке, например) символов, значащих для паттернов (например, скобки)
  2. Реализована обработка клавиш "серый «+»" и "серая «*»". Строки - продолжения не отмечаются никогда.
Вложение удалено в связи с ошибкой.
Last edited by buniak_a_h on Sun 01 Aug, 2021 21:24, edited 1 time in total.
RoxMarty
Posts: 86
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 28 times
Been thanked: 3 times

Разбивать длинные имена файлов в панели на несколько строк

Post by RoxMarty »

buniak_a_h wrote: Fri 30 Jul, 2021 17:58 Теперь остановка на строках-продолжениях предотвращается при перемещении как клавиатурой, так и мышкой
Поставил сразу 1.0.7
Да, мышкой теперь не всегда, но удаётся "попасть" в доп. строку.
Но вот курсор, увы, строку теперь не перескакивает, а преспокойно останавливается на ней. Надо бы вернуть как было :)
Win 10 x64 / FAR 3 x64
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

RoxMarty wrote: Sun 01 Aug, 2021 19:36 Но вот курсор, увы, строку теперь не перескакивает, а преспокойно останавливается на ней. Надо бы вернуть как было
Легко! А пока я не выложил исправление, добавьте в строку 266 перед $ плюсик. Т.е. должно получиться: elseif key:match"^%w+$" and…
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Версия 1.0.8
  1. Исправление исправления 1.0.7(1). Добавлен плюсик.
PnMod.1_0_8.7z
Версия 1.0.8
(9.35 KiB) Downloaded 19 times
User avatar
Wave
Posts: 1814
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 5 times
Been thanked: 22 times

Разбивать длинные имена файлов в панели на несколько строк

Post by Wave »

buniak_a_h wrote: Fri 30 Jul, 2021 17:58 Теперь в строках-продолжениях выводится только имя файла.
Это должно означать реализацию моей идеи, что если не влезли последние символы в строку, то не показывать их? Потому что у меня вполне оказываются на последней строке как расширение вместе с точкой, так и последняя буква расширения.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
Wave
Posts: 1814
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 5 times
Been thanked: 22 times

Разбивать длинные имена файлов в панели на несколько строк

Post by Wave »

А ещё нашёл такой забавный фокус: у меня по умолчанию в панели две колонки имён, так вот, если клавишами влево-вправо перейти из одной колонки в другую, то всё-таки можно оказаться на виртуальной части имени.
Пользуюсь ФАРом больше 20 лет © собирательный.
buniak_a_h
Posts: 3106
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 164 times
Been thanked: 453 times
Contact:

Разбивать длинные имена файлов в панели на несколько строк

Post by buniak_a_h »

Wave wrote: Mon 02 Aug, 2021 03:07
buniak_a_h wrote: Fri 30 Jul, 2021 17:58 Теперь в строках-продолжениях выводится только имя файла.
Это должно означать реализацию моей идеи…
Нет, другой идеи.
citRiks wrote: Fri 23 Jul, 2021 20:18 еще было бы круто если бы не повторялись столбцы данных для перенесенных строк, например размер повторяется в каждой перенесеной строке, что излишне и не позволяет видеть что эти пара строк на самом деле один файл.

Wave wrote: Mon 02 Aug, 2021 03:10 А ещё нашёл такой забавный фокус: у меня по умолчанию в панели две колонки имён, так вот, если клавишами влево-вправо перейти из одной колонки в другую, то всё-таки можно оказаться на виртуальной части имени.
Исправил, но … У меня висит макрос, что если комстрока не пуста и есть куда двигаться стрелками, то влево-вправо относятся к комстроке, а не к панели. Так что исправление будет неполным…
RoxMarty
Posts: 86
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 28 times
Been thanked: 3 times

Разбивать длинные имена файлов в панели на несколько строк

Post by RoxMarty »

Wave wrote: Mon 02 Aug, 2021 03:10 если клавишами влево-вправо перейти из одной колонки в другую, то всё-таки можно оказаться на виртуальной части имени.
Более того, такое работает и в режиме одной колонки :)

Однако, это совсем не мешает, т.к. по сути влево/вправо используется для быстрого перемещения по большим спискам, ну а вверх/вниз теперь пофиксено и работает как было. Спасибо!
Win 10 x64 / FAR 3 x64
User avatar
citRiks
Posts: 1600
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 491 times
Been thanked: 95 times

Разбивать длинные имена файлов в панели на несколько строк

Post by citRiks »

buniak_a_h wrote: Mon 02 Aug, 2021 09:58 Нет, другой идеи:

Code: Select all

citRiks писал(а): ↑Пт 23 июл, 2021 22:18
еще было бы круто если бы не повторялись столбцы данных для перенесенных строк, например размер повторяется в каждой перенесеной строке, что излишне и не позволяет видеть что эти пара строк на самом деле один файл.
моя идея, к сожалению, привела к тому, что теперь сортировка по размеру, например, делает бардак.
От этого можно ли избавится?
Если нельзя, то наверное лучше сделать опцию "(не)обнулять свойства файла в перенесенных строках".
Пасиба
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Post Reply

Return to “Обсуждение макросов”