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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 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 32 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
HaRT
Moderator
Posts: 10869
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Latest post of the previous page:

buniak_a_h wrote: Wed 09 Oct, 2019 02:34 Это правильно. А перед тем возьмёте то, что я выложу.
Я же со своей стороны прошу не общаться со мной таким тоном, как профессор с первокурсником. Это не способствует плодотворному сотрудничеству. Надеюсь на понимание.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10869
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

buniak_a_h wrote: Wed 09 Oct, 2019 02:34 Может, там все проблему уже будут решены.
Может, заодно исправите в диалоговом режиме переход не в ту директорию, если щёлкать левой кнопкой по последнему символу какой-нибудь папки в пути? У меня оно и в версии 1.1.1 так работает. Ну и CtrlDown ничего не делает, хотя, судя по коду, должен бы.
Last edited by HaRT on Wed 09 Oct, 2019 02:59, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Wed 09 Oct, 2019 02:46 рошу не общаться со мной таким тоном, как профессор с первокурсником
Это ответочка на
HaRT wrote: Tue 08 Oct, 2019 19:46 А непротестированные изменения я, в отличие от некоторых, не выкладываю.
;-)
HaRT wrote: Wed 09 Oct, 2019 02:58 CtrlDown ничего не делает, хотя, судя по коду, должен бы.
Делал... Что-то сломалось.
User avatar
HaRT
Moderator
Posts: 10869
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

buniak_a_h wrote: Wed 09 Oct, 2019 03:12ответочка
Ладно, квиты.
Но хочу заострить внимание, что проблему с шириной диалога на длинном пути я воспроизвести так и не смог, т.ч., увы, и исправить тоже не смогу.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

По поводу диалогового режима: там есть такая переменная w - это некий показатель ширины диалога (плюс-минус константа)
Оказалось, что в Config"System.BoxSymbols" по умолчанию включен пробел. поэтому и слетало. Заменю Far.GetConfig"System.BoxSymbols" на константу...
P/S. Беда с рамкой. Ну ладно, когда всё рисуется псевдографикой. А если работать на TelNet-е, например, и графические символы эмулируются плюсами и минусами? Впрочем, их тоже можно в константу занести. Ограничение будет - имена каталогов не должны содержать символы +-=┌─┐╔═╗╒═╕╓─╖, а рамки панелей - наоборот, должны будут составляться из этих символов. Не думаю, что это будет существенное ограничение.
Last edited by buniak_a_h on Wed 09 Oct, 2019 04:18, edited 2 times in total.
User avatar
HaRT
Moderator
Posts: 10869
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

buniak_a_h wrote: Wed 09 Oct, 2019 04:07 в Config"System.BoxSymbols" по умолчанию включен пробел. поэтому и слетало
Хорошо, что разобрались. Но версию с исправлением двух своих ошибок (потерянные условие и строка с вызовом DM_REDRAW) я завтра всё равно не выкачу. Может, сами?
И не ускользнуло ли от вашего внимания объяснение о назначении того DI_DOUBLEBOX?
buniak_a_h wrote: Wed 09 Oct, 2019 04:07 Беда с рамкой
А действительно ли нам так надо закладываться на символы рисования рамок? Неужто нельзя узнать требуемую часть строки, исходя из ширины панели и длины пути (пусть даже и повторив часть логики Фара по расположению текста на заголовке панели)?

P.S.
buniak_a_h wrote: Wed 09 Oct, 2019 04:07 в Config"System.BoxSymbols" по умолчанию включен пробел
Удивительно, но это так. Так ведь он там последним символом — можно просто отсекать.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Wed 09 Oct, 2019 04:31
buniak_a_h wrote: Wed 09 Oct, 2019 04:07 в Config"System.BoxSymbols" по умолчанию включен пробел. поэтому и слетало
Хорошо, что разобрались. Но версию с исправлением двух своих ошибок (потерянные условие и строка с вызовом DM_REDRAW) я завтра всё равно не выкачу. Может, сами?
Реакция на CtrlDown как раз пропала из=за пропавшей DM_REDRAW . Возможно, приём идиотский, но просто я не нашёл другого способа, как получить позицию курсора в DI_EDIT-е кроме как заставить движок перерисовать его (ну, можно и весь диалог - он маленький).
HaRT wrote: Wed 09 Oct, 2019 04:31 И не ускользнуло ли от вашего внимания объяснение о назначении того DI_DOUBLEBOX?
Нет. Я вернул DI_DOUBLEBOX. Хотя прием тоже проктологом попахивает. Логичнее было бы в самой far.Dialog параметр иметь.
HaRT wrote: Wed 09 Oct, 2019 04:31
buniak_a_h wrote: Wed 09 Oct, 2019 04:07 Беда с рамкой
А действительно ли нам так надо закладываться на символы рисования рамок? Неужто нельзя узнать требуемую часть строки, исходя из ширины панели и длины пути (пусть даже и повторив часть логики Фара по расположению текста на заголовке панели)?
Наверно, можно. НО! (а) Надо знать логику ФАРа, а методом тыка искать - нет, проще на рамку (б) Путь может быть обрезанным слева...
Вот если б сделали такую добавочку к SaveScreen - это было бы кузяво!
HaRT wrote: Wed 09 Oct, 2019 04:31 P.S.
buniak_a_h wrote: Wed 09 Oct, 2019 04:07 в Config"System.BoxSymbols" по умолчанию включен пробел
Удивительно, но это так. Так ведь он там последним символом — можно просто отсекать.
Не-не-не! Мы не знаем, что юзеру в голову придёт! Заменит он пробел на Chr(160), а вертикальные - на вертикальную черту (что на одной клавише со слэшом) - и всё...
Короче, эту проблему я решил так:
local BoxSymbols=Far.GetConfig"System.BoxSymbols":gsub("[ -я]", '')..'-+=|'
Глюк с кликом на последнем символе имени каталога у меня не повторяется. Возможно, у меня он уже был исправлен...
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

HaRT, Вы много где заменили hDlg:send("DM_... " ) на hDlg:send(F.DM_...). Это - из соображений эффективности?
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Версия 1.2.1 - начало работы в плагиновых панелях (кроме смены диска и перехода по списку вложенных папок - пока).
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Wed 09 Oct, 2019 05:30 но просто я не нашёл другого способа, как получить позицию курсора в DI_EDIT-е кроме как заставить движок перерисовать его
https://api.farmanager.com/ru/dialogapi ... ition.html
buniak_a_h wrote: Wed 09 Oct, 2019 05:30 читать с экрана консоли
У консоли есть апи.
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

Или приведите ссылку на 'некорректную' статью.
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post 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 - не уловить.
Last edited by buniak_a_h on Wed 09 Oct, 2019 10:25, edited 1 time in total.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post 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 1302 times
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post 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, при необходимости (при клавиатурных событиях) явно заставив движок перерисовать диалог. Некрасиво, но друго не придумал.
User avatar
buniak_a_h
Posts: 4269
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Shmuel wrote: Wed 09 Oct, 2019 10:33 В тот момент, когда вы кликнули на ссылку
Тогда (на будущее) объясните мне, как найти описание (требования) к обработчику события DN_CTLCOLORDLGITEM в макросе? Я не нашёл другого способа выйти на возвращаемые параметры.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

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

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