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

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

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

Post by buniak_a_h »

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

Начиная с этой версии я перестал выкладывать текст скрипта в сообщении (уж больно трудоёмко стало, т.к. он вырос). Тем более что “Select all” на сайте опять перестал работать. Теперь только во вложении в виде 7z-архива.
Сведения о версии:
Версия 1.4.12.
  1. Исправлена ошибка процедуры настройки, возникшая из-за изменения интерфейса. Ошибка проявлялась при вызове настройки сликом средней клавиши (колёсиком) на заголовке панели.
  2. Сделана возможность вызова диалога настройки скрипта через меню настроек плагинов.
ClickToTitleDir-1.4.12.7z
(24.95 KiB) Downloaded 28 times

Вместе с файлом самого скрипта поставляются языковые файлы ClickToTitleDirRus.lng и ClickToTitleDirEng.lng и файл помощи ClickToTitleDirRus.hlf.
Last edited by buniak_a_h on Mon 25 Dec, 2023 02:15, edited 69 times in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

buniak_a_h wrote: Wed 09 Oct, 2019 11:25 При клике на поле это сообщение возвращает предыдущую позицию (которая была ДО клика)
Чтобы получить позицию ПОСЛЕ - запускайте функцию через far.Timer (с задержкой 0).
Или же попробуйте использовать DN_GOTFOCUS, который сейчас приходит после каждого клика (хотя не факт что так будет всегда).
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Shmuel wrote: Wed 09 Oct, 2019 11:40 А что конкретно не понятно? Вроде в статье всё расписано (приведено на скриншоте в моём предыдущем сообщении).
В той статье, с которой сделан скриншот, не указаны в зависимости от типов диалоговых объектов, какие элементы массива tFarDialogItemCoors используются и что они означают. Единственное место, где я нашёл это описание - в описании API. Вот и получается, что нормальной помощи для макрописцев я не нашёл.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post 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, который сейчас приходит после каждого клика (хотя не факт что так будет всегда).
Спасибо, конечно, но я, по-моему, нашёл более удобный и компактный способ. Тем более, что я не понял, какую функцию надо запускать. Все эти действия происходят в обработчике событий диалога, а его, насколько я понимаю, запускает движок диалога.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

buniak_a_h wrote: Wed 09 Oct, 2019 12:33 В той статье, с которой сделан скриншот, не указаны в зависимости от типов диалоговых объектов, какие элементы массива tFarDialogItemCoors используются и что они означают. Единственное место, где я нашёл это описание - в описании API. Вот и получается, что нормальной помощи для макрописцев я не нашёл.
Мануал LuaFAR (весь, не только эта статья) предполагает знание FAR API читателем или, как минимум, знание соответствующей его части. Иначе пришлось бы продублировать Энциклопедию FAR в мануале LuaFAR.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Wed 09 Oct, 2019 12:37 Спасибо, конечно, но я, по-моему, нашёл более удобный и компактный способ.
Способ который (по вашему выражению) "попахивает", ведь перерисовка тут не при чём вообще.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

John Doe wrote: Wed 09 Oct, 2019 13:14 Способ который (по вашему выражению) "попахивает", ведь перерисовка тут не при чём вообще.
Я ж разве спорю? Вот если бы либо было событие DN_CURSORPOSCHANGED, либо при MOUSE_EVENT сразу можно было бы получить позицию курсора - это был бы самый прямой способ. Увы, "бы" мешает... Вот в списке по LISTCHANGED можно получить и предыдущую, и новую позиции. И вопросов не возникает :-(
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Wed 09 Oct, 2019 13:42 Я ж разве спорю?
А разве нет?
Можно попробовать самое простое: убрать перерисовку и вместо DN_DRAWDLGITEMDONE использовать DN_GOTFOCUS.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post 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.
Last edited by buniak_a_h on Wed 09 Oct, 2019 14:13, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Версия 1.2.2.
Вроде, доделана работа в плагиновых панелях (проверялось на примере MultiArc и ArcLite). Где-то так примерно...
User avatar
Taciturn
Posts: 600
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 89 times
Been thanked: 31 times
Contact:

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

Post 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» вызывает обычное меню. Нельзя ли вместо меню сделать переход в корень архива?
Last edited by Taciturn on Thu 10 Oct, 2019 08:36, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Taciturn, забыл совсем... В одной из ночных сборок версии 5459 была исправлена ошибка в функциях match и find библиотеки unicode.utf8 (без изменения номер сборки, поэтому конкретный номер написать не могу). Я попробую сделать более толерантный вариант скрипта, но слишком уж часто там используются эти функции; нет никакой гарантии, что не вылезет в другом месте :-(
Спасибо за сигнал.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Taciturn wrote: Thu 10 Oct, 2019 08:32 Если это нормально и для работы макроса требуется версия Far'а новее стабильной, то не могли бы вы это прямо написать в первом сообщении?
Увы, исправить для версии старше 5460 с наскока не получилось. Будем считать это ограничением. Добавил в Info параметр minfarversion и в первое сообщение тоже.
Taciturn wrote: Thu 10 Oct, 2019 08:32 Нельзя ли вместо меню сделать переход в корень архива?
Сделаю... Возможно, и выход из архива тоже понравится. Просто время требуется.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

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: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

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: 600
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 89 times
Been thanked: 31 times
Contact:

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

Post by Taciturn »

buniak_a_h wrote: Thu 10 Oct, 2019 16:38Кстати! Вы каким плагином в архив "заходите"?
Чаще всего ArcLite и Observer.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

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
Post Reply

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