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

Здесь обсуждается всё, что касается макросов.
Post Reply
buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Sun 29 Sep, 2019 07:51

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

Начиная с этой версии я перестал выкладывать текст скрипта в сообщении (уж больно трудоёмко стало, т.к. он вырос). Тем более что “Select all” на сайте опять перестал работать. Теперь только во вложении в виде 7z-архива.


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

ClickToTitleDir-1.4.7.7z
(22.83 KiB) Downloaded 22 times
Last edited by HaRT on Wed 06 Nov, 2019 20:42, edited 62 times in total.

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

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

Post by John Doe » Wed 09 Oct, 2019 12:04

Latest post of the previous page:

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

buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Wed 09 Oct, 2019 12:33

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

buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Wed 09 Oct, 2019 12:37

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

Shmuel
Posts: 5896
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 217 times

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

Post by Shmuel » Wed 09 Oct, 2019 12:57

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

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

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

Post by John Doe » Wed 09 Oct, 2019 13:14

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

buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Wed 09 Oct, 2019 13:42

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

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

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

Post by John Doe » Wed 09 Oct, 2019 13:57

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

buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Wed 09 Oct, 2019 14:02

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

buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Wed 09 Oct, 2019 18:30

Версия 1.2.2.
Вроде, доделана работа в плагиновых панелях (проверялось на примере MultiArc и ArcLite). Где-то так примерно...

User avatar
Taciturn
Posts: 389
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 21 times
Been thanked: 8 times
Contact:

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

Post by Taciturn » Thu 10 Oct, 2019 08:32

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» вызывает обычное меню. Нельзя ли вместо меню сделать переход в корень архива?
Last edited by Taciturn on Thu 10 Oct, 2019 08:36, edited 1 time in total.

buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Thu 10 Oct, 2019 11:05

Taciturn, забыл совсем... В одной из ночных сборок версии 5459 была исправлена ошибка в функциях match и find библиотеки unicode.utf8 (без изменения номер сборки, поэтому конкретный номер написать не могу). Я попробую сделать более толерантный вариант скрипта, но слишком уж часто там используются эти функции; нет никакой гарантии, что не вылезет в другом месте :-(
Спасибо за сигнал.

buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Thu 10 Oct, 2019 15:27

Taciturn wrote:
Thu 10 Oct, 2019 08:32
Если это нормально и для работы макроса требуется версия Far'а новее стабильной, то не могли бы вы это прямо написать в первом сообщении?
Увы, исправить для версии старше 5460 с наскока не получилось. Будем считать это ограничением. Добавил в Info параметр minfarversion и в первое сообщение тоже.
Taciturn wrote:
Thu 10 Oct, 2019 08:32
Нельзя ли вместо меню сделать переход в корень архива?
Сделаю... Возможно, и выход из архива тоже понравится. Просто время требуется.

buniak_a_h
Posts: 1100
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 82 times
Been thanked: 36 times
Contact:

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

Post by buniak_a_h » Thu 10 Oct, 2019 16:38

Taciturn wrote:
Thu 10 Oct, 2019 08:32
Заходим Far30b5485.x86.20191010.7z\Addons, клик по «Far30b5485.x86.20191010.7z» вызывает обычное меню. Нельзя ли вместо меню сделать переход в корень архива?
Как выяснилось, разные плагины по-разному формируют APanel.Path . MultiARc формирует без первого слэша, а ArcLite вставляет в начало слэш. Это может усложнить обработку именно "левого" клика (левее первого
имени каталога). Так что не ждите быстро... Кстати! Вы каким плагином в архив "заходите"?
Беда с этими нестандартами...

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 157 times

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

Post by HaRT » Thu 10 Oct, 2019 18:42

buniak_a_h wrote:
Wed 09 Oct, 2019 05:30
Мы не знаем, что юзеру в голову придёт! Заменит он пробел на Chr(160), а вертикальные - на вертикальную черту (что на одной клавише со слэшом) - и всё...
Мне не удалось найти, где этот символ используется в рисовании рамок (я заменил его на «бубны» (♦), но нигде в интерфейсе этого значка не встретил). Я имел в виду просто не рассматривать символы рисования рамок, начиная с той позиции.
buniak_a_h wrote:
Wed 09 Oct, 2019 05:30
проблему я решил так:
local BoxSymbols=Far.GetConfig"System.BoxSymbols":gsub("[ -я]", '')..'-+=|'
Вопрос: не приведёт ли это к некорректной работе, если путь содержит один из символов -, +, =? (Код пока не смотрел.)
buniak_a_h wrote:
Wed 09 Oct, 2019 05:30
Реакция на CtrlDown как раз пропала из=за пропавшей DM_REDRAW
Да у меня вроде и на версии 1.1.1 не работало. Если и на новейшей не работает, напишу отдельно.
buniak_a_h wrote:
Wed 09 Oct, 2019 05:37
Вы много где заменили hDlg:send("DM_... " ) на hDlg:send(F.DM_...). Это - из соображений эффективности?
Скорее из соображений единообразия. Да и вообще строковые данные стараюсь использовать только там, где не применить более строгую типизацию или где это даёт ощутимый выигрыш в выразительности кода.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Taciturn
Posts: 389
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 21 times
Been thanked: 8 times
Contact:

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

Post by Taciturn » Thu 10 Oct, 2019 19:41

buniak_a_h wrote:
Thu 10 Oct, 2019 16:38
Кстати! Вы каким плагином в архив "заходите"?
Чаще всего ArcLite и Observer.

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 157 times

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

Post by HaRT » Thu 10 Oct, 2019 19:48

buniak_a_h wrote:
Sun 29 Sep, 2019 07:51
Версия 1.2.2
  1. Доделана работа в плагиновой панели.
Это я тупой/слепой, или в заглавном сообщении и впрямь нет ни вложения, ни ссылки для скачивания?
Да и перебор загруженных файлов после версии 1.1.2 что-то не дал результатов… Похоже, архив с форума втихую удалили…
buniak_a_h wrote:
Tue 08 Oct, 2019 10:02
HaRT wrote:
Mon 07 Oct, 2019 10:17
P.S. Мне кажется, в диалоге настроек лучше будет так: Тип рамки: ( ) без рамки (•) одинарная ( ) двойная.
Извините, поздно заметил Ваш P.S. . Да, так краше. В следующей версии (если будет) учту.
Судя по истории изменений, это намерение потерялось…
Last edited by HaRT on Thu 10 Oct, 2019 20:16, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 157 times

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

Post by HaRT » Thu 10 Oct, 2019 20:31

Taciturn wrote:
Thu 10 Oct, 2019 08:32
ClickToTitleDir.1.2.2.lua.7z в scripts
Не поделитесь архивом версии?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

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