Page 7 of 31

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Sun 29 Sep, 2019 07:51
by buniak_a_h
Макрос навеян этим:
PieApple wrote:
Thu 23 Jan, 2014 12:57
Еще хотел бы поделиться идеей, реализованной в Проводнике с Windows 7, Total Commander, что если нажать мышкой на имя папки в адресной строке сверху, то происходит переход вверх на эту папку.
На самом деле получилось прикольно и, возможно, полезно (если Вы любите настольных грызунов).
Суть:
Клик мышой на заголовке панели, содержащей имя папки, вызывает переход (как в проводнике). А если клик приходится на разделитель (бэкслэш), то предоставляется выбор, в какую папку перейти.
Первоначальный макрос сваян «на коленке» за полчасика, потому не судите строго. Если будут отзывы и замечания — попробую «докрутить».

Начиная с этой версии я перестал выкладывать текст скрипта в сообщении (уж больно трудоёмко стало, т.к. он вырос). Тем более что “Select all” на сайте опять перестал работать. Теперь только во вложении в виде 7z-архива.
Сведения о версии:
Версия 1.4.8.
  1. При входе в диалоговый режим предусмотрено гашение выделения текста (неудачная попытка была предпринята в версии 1.4.6).
  2. Стилистические правки в файлах помощи и языковом
  3. Перекомпонован диалог настройки таким образом, чтоб всё помещалось
  4. В настроечном диалоге реализована краткая контекстная подсказка (аналог Hint, но не всплывающая, а выводимая в «подвале» формы.
Версия 1.4.9.
  • Исправлена ошибка, приводившая к "блокировке" скрипта в случае клика по рамке панели вне заголовка (вне «чувствительной зоны»).
    (Блокировка - неработоспособность скрипта до перезагрузки макросов командой macro:load)
Версия 1.4.10.
  • Изменён алгоритм синтаксического разбора строки заголовка для корректной обработки времени, заданного в американском формате (2:10 AM) при клике по правой панели
ClickToTitleDir-1.4.10.7z
(23.92 KiB) Downloaded 17 times

Вместе с файлом самого скрипта поставляются языковые файлы ClickToTitleDirRus.lng и ClickToTitleDirEng.lng и файл помощи ClickToTitleDirRus.hlf.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 07:00
by John Doe

Latest post of the previous page:

buniak_a_h wrote:
Wed 09 Oct, 2019 02:04
Или я не понял документацию (что, в общем, естественно - там написана полная галиматья: нумерация элементов таблицы начинается с 1, а не с 0), то ли есть какие-то недокументированные возможности
Вы читаете документацию C API, но используете его посредством LuaFAR.
При этом база большинства индексов меняется с 0 на 1 (должно быть документировано).

Или приведите ссылку на 'некорректную' статью.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 10:22
by buniak_a_h
John Doe wrote:
Wed 09 Oct, 2019 07:00
Или приведите ссылку на 'некорректную' статью.
Я не знаю, как получить ссылку на статью, но порядок такой:
1. руководство luafar_manual.chm
2. В содержании найти LuaFAR Far libraries -> DialogEvents -> DN_CTLCOLORDLGITEM
3. Оттуда - по ссылке DN_CTLCOLORDLGITEM (внизу)
Получаем страницу (как я только что выяснил - из FarEncyclopedia.ru, но пользователю-то этого не видно! Он начинал с руководства LuaFAR, да и в заголовке по-прежнему написано Manual of LuaFAR 3!) FarEncyclopedia.ru\html\dialogapi\dmsg\dn_ctlcolordlgitem.html, и на этой странице написано Colors[0]=Title, Colors[1]=HiText, Colors[2]=Box, Colors[3]=0 . Я, конечно, не по уши деревянный и понимаю, что это уже описание интерфейса процедуры на C, а значит - описание API. Но в какой момент руководство по LuaFAR заменилось на описание API - не уловить.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 10:33
by Shmuel
buniak_a_h wrote:
Wed 09 Oct, 2019 10:22
Я, конечно, [пропущено] понимаю, что это уже описание интерфейса процедуры на C, а значит - описание API. Но в какой момент руководство по LuaFAR заменилось на описание API - не уловить.
В тот момент, когда вы кликнули на ссылку, ибо над ссылкой есть подзаголовок "Far API used".
--
Clipboard01.png
Clipboard01.png (10.68 KiB) Viewed 764 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 11:25
by buniak_a_h
John Doe wrote:
Wed 09 Oct, 2019 06:51
https://api.farmanager.com/ru/dialogapi ... ition.html
Я немножко не об этом.
При клике на поле это сообщение возвращает предыдущую позицию (которая была ДО клика). При KEY_EVENT не происходит перерисовки редактора. А при Msg==DN_CLOSE - всегда последняя позиция. Варианты, которые пришли мне в голову -= это повесить определение позиции на DN_ENTERIDLE или на DN_DRAWDLGITEMDONE (при необходимости заставив перерисовать). При первом варианте задержка была заметна без секундомера. Поэтому я остановился на DN_DRAWDLGITEMDONE, при необходимости (при клавиатурных событиях) явно заставив движок перерисовать диалог. Некрасиво, но друго не придумал.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 11:33
by buniak_a_h
Shmuel wrote:
Wed 09 Oct, 2019 10:33
В тот момент, когда вы кликнули на ссылку
Тогда (на будущее) объясните мне, как найти описание (требования) к обработчику события DN_CTLCOLORDLGITEM в макросе? Я не нашёл другого способа выйти на возвращаемые параметры.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 11:40
by Shmuel
buniak_a_h wrote:
Wed 09 Oct, 2019 11:33
Тогда (на будущее) объясните мне, как найти описание (требования) к обработчику события DN_CTLCOLORDLGITEM в макросе? Я не нашёл другого способа выйти на возвращаемые параметры.
А что конкретно не понятно? Вроде в статье всё расписано (приведено на скриншоте в моём предыдущем сообщении).

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 12:04
by John Doe
buniak_a_h wrote:
Wed 09 Oct, 2019 11:25
При клике на поле это сообщение возвращает предыдущую позицию (которая была ДО клика)
Чтобы получить позицию ПОСЛЕ - запускайте функцию через far.Timer (с задержкой 0).
Или же попробуйте использовать DN_GOTFOCUS, который сейчас приходит после каждого клика (хотя не факт что так будет всегда).

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 12:33
by buniak_a_h
Shmuel wrote:
Wed 09 Oct, 2019 11:40
А что конкретно не понятно? Вроде в статье всё расписано (приведено на скриншоте в моём предыдущем сообщении).
В той статье, с которой сделан скриншот, не указаны в зависимости от типов диалоговых объектов, какие элементы массива tFarDialogItemCoors используются и что они означают. Единственное место, где я нашёл это описание - в описании API. Вот и получается, что нормальной помощи для макрописцев я не нашёл.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 12:37
by buniak_a_h
John Doe wrote:
Wed 09 Oct, 2019 12:04
buniak_a_h wrote:
Wed 09 Oct, 2019 11:25
При клике на поле это сообщение возвращает предыдущую позицию (которая была ДО клика)
Чтобы получить позицию ПОСЛЕ - запускайте функцию через far.Timer (с задержкой 0).
Или же попробуйте использовать DN_GOTFOCUS, который сейчас приходит после каждого клика (хотя не факт что так будет всегда).
Спасибо, конечно, но я, по-моему, нашёл более удобный и компактный способ. Тем более, что я не понял, какую функцию надо запускать. Все эти действия происходят в обработчике событий диалога, а его, насколько я понимаю, запускает движок диалога.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 12:57
by Shmuel
buniak_a_h wrote:
Wed 09 Oct, 2019 12:33
В той статье, с которой сделан скриншот, не указаны в зависимости от типов диалоговых объектов, какие элементы массива tFarDialogItemCoors используются и что они означают. Единственное место, где я нашёл это описание - в описании API. Вот и получается, что нормальной помощи для макрописцев я не нашёл.
Мануал LuaFAR (весь, не только эта статья) предполагает знание FAR API читателем или, как минимум, знание соответствующей его части. Иначе пришлось бы продублировать Энциклопедию FAR в мануале LuaFAR.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 13:14
by John Doe
buniak_a_h wrote:
Wed 09 Oct, 2019 12:37
Спасибо, конечно, но я, по-моему, нашёл более удобный и компактный способ.
Способ который (по вашему выражению) "попахивает", ведь перерисовка тут не при чём вообще.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 13:42
by buniak_a_h
John Doe wrote:
Wed 09 Oct, 2019 13:14
Способ который (по вашему выражению) "попахивает", ведь перерисовка тут не при чём вообще.
Я ж разве спорю? Вот если бы либо было событие DN_CURSORPOSCHANGED, либо при MOUSE_EVENT сразу можно было бы получить позицию курсора - это был бы самый прямой способ. Увы, "бы" мешает... Вот в списке по LISTCHANGED можно получить и предыдущую, и новую позиции. И вопросов не возникает :-(

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 13:57
by John Doe
buniak_a_h wrote:
Wed 09 Oct, 2019 13:42
Я ж разве спорю?
А разве нет?
Можно попробовать самое простое: убрать перерисовку и вместо DN_DRAWDLGITEMDONE использовать DN_GOTFOCUS.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 14:02
by buniak_a_h
John Doe wrote:
Wed 09 Oct, 2019 13:57
использовать DN_GOTFOCUS
Я пока не пробовал, но вообще-то фокус не теряется. У меня было подозрение, что GOTFOCUS придёт единственный раз - в начале. Но я проверю...
Проверил. При клике мышью возникает DN_GOTFOCUS, а при клавиатурных событиях - нет. Поэтому просто повесить на DN_GOTFOCUS не получится. Извините... Оставляю пока пару send:DM_REDRAW и DN_DRAWDLGITEMDONE.

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Wed 09 Oct, 2019 18:30
by buniak_a_h
Версия 1.2.2.
Вроде, доделана работа в плагиновых панелях (проверялось на примере MultiArc и ArcLite). Где-то так примерно...

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Posted: Thu 10 Oct, 2019 08:32
by Taciturn
Far Manager v3.0 build 5454 (последняя стабильная сборка), просто распакованный архив, никаких настроек + распакованный ClickToTitleDir.1.2.2.lua.7z в scripts. Правый клик по верхней строчке выдаёт:

В Far Manager v3.0 build 5485 всё работает нормально. Если это нормально и для работы макроса требуется версия Far'а новее стабильной, то не могли бы вы это прямо написать в первом сообщении?

Заходим Far30b5485.x86.20191010.7z\Addons, клик по «Far30b5485.x86.20191010.7z» вызывает обычное меню. Нельзя ли вместо меню сделать переход в корень архива?