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

Здесь обсуждается всё, что касается макросов.
Post Reply
buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 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.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 19 times

Вместе с файлом самого скрипта поставляются языковые файлы ClickToTitleDirRus.lng и ClickToTitleDirEng.lng и файл помощи ClickToTitleDirRus.hlf.
Last edited by buniak_a_h on Mon 04 May, 2020 12:18, edited 65 times in total.

buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

Latest post of the previous page:

HaRT, событие DN_CTLCOLORDLGITEM.
Вы сами пишете, что для DI_BUTTON используется две подтаблицы. Так почему Вы одну оставили, а одну - убрали?
Или я не понял документацию (что, в общем, естественно - там написана полная галиматья: нумерация элементов таблицы начинается с 1, а не с 0), то ли есть какие-то недокументированные возможности. Но пусть уж лучше будет. Так что тоже не принимается пока.
Ещё почему-то пропала проверка Param2.ButtonState при Param2.EventType == F.MOUSE_EVENT - я не понял, почему. И просьба на будущее форматирование только "расширять", но не упрощать, а то мне с плохим зрением трудно разобраться, если в одной строке несколько скобок
Пока перерыв...

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

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

Post by HaRT »

buniak_a_h wrote:
Wed 09 Oct, 2019 02:04
почему Вы одну оставили, а одну - убрали?
Потому что её наличие ни на что не влияло (очевидно, значения по умолчанию работают). В документации действительно с индексами что-то не то.
buniak_a_h wrote:
Wed 09 Oct, 2019 02:04
почему-то пропала проверка Param2.ButtonState при Param2.EventType == F.MOUSE_EVENT
А вот это действительно ошибка, вкравшаяся при объединении изменений. Прошу прощения.
И ещё, гляжу, я там вот эту строку потерял: if Param2.EventType == F.KEY_EVENT then hDlg:send("DM_REDRAW") end
buniak_a_h wrote:
Wed 09 Oct, 2019 02:04
форматирование только "расширять", но не упрощать, а то мне с плохим зрением трудно разобраться
Хорошо, учту. Кстати, а вы редактируете код на Луа с подсветкой синтаксиса или без? Если без, то и с хорошим зрением многое трудно увидеть.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

HaRT wrote:
Wed 09 Oct, 2019 01:52
Напишите, пожалуйста, подробно, как её повторить (притом без ConEmu).
Ещё подробнее???
1. Делаете каталог "%TEMP%\190930\1qqqqqqqqqqqqqqq qqqqqqqqqqqqqqqq qqqqqqqqqqqqq\2eeeeeee eeeeeeeee eeeeeeeeeee\3wwwwwwwwww wwwwwwwwwww wwwwww" (у меня TEMP=C:\Temp) и переходите в него (путь, естественно, на панели не помещается)
2. Клик ПКМ на заголовке (в любом месте)
3. Вот (левая панель):
Image
Фар запущен без ConEmu
Параметры консоли: ширина 120, высота 30 (и буфера, и экрана)
Прежняя версия консоли выключена.
Фар запущен в мобильном варианте (
(это я к тому, что мои имеющиеся скрипты и модули не влияют. Собственно, проверено: при удалении скрипта переход перестаёт работать. Сам скрипт (и все аддоны к нему) просто вытащен из Вашего архива.
HaRT wrote:
Wed 09 Oct, 2019 02:10
Кстати, а вы редактируете код на Луа с подсветкой синтаксиса или без?
Конечно, с подсветкой. Собственно, подсветка в colorer-е - это меньшее, для чего я его использую. Там и список функций, и поиск функции удобные, и переходя на скобки Без него совсем беда была бы.
Last edited by buniak_a_h on Wed 09 Oct, 2019 02:27, edited 1 time in total.

buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

HaRT wrote:
Wed 09 Oct, 2019 01:52
С тем, что вы описываете, попытаюсь разобраться, но позже.
Это правильно. А перед тем возьмёте то, что я выложу. Может, там все проблему уже будут решены.
Была проблема в частности, что поле DI_EDIT "налезало" на границу панели и даже с левой на правую. Ограничить пришлось.

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

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

Post by HaRT »

buniak_a_h wrote:
Wed 09 Oct, 2019 02:26
Ещё подробнее???
Просто я проделал ровно эти шаги, и у меня
Но у меня Windows 8.1 (а сборка Фара на скриншоте под спойлером).
buniak_a_h wrote:
Wed 09 Oct, 2019 02:26
3. Вот (левая панель):
Image
Картинка, увы, не грузится, Хром говорит: “This site can’t be reachedThe webpage at https://i86.fastpic.ru/big/2019/1009/83 ... db683.jpeg might be temporarily down or it may have moved permanently to a new web address.
ERR_HTTP2_PROTOCOL_ERROR”
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by HaRT »

buniak_a_h wrote:
Wed 09 Oct, 2019 02:34
Это правильно. А перед тем возьмёте то, что я выложу.
Я же со своей стороны прошу не общаться со мной таким тоном, как профессор с первокурсником. Это не способствует плодотворному сотрудничеству. Надеюсь на понимание.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 9484
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 225 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

buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 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: 9484
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 225 times

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

Post by HaRT »

buniak_a_h wrote:
Wed 09 Oct, 2019 03:12
ответочка
Ладно, квиты.
Но хочу заострить внимание, что проблему с шириной диалога на длинном пути я воспроизвести так и не смог, т.ч., увы, и исправить тоже не смогу.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 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: 9484
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 225 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

buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 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("[ -я]", '')..'-+=|'
Глюк с кликом на последнем символе имени каталога у меня не повторяется. Возможно, у меня он уже был исправлен...

buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

HaRT, Вы много где заменили hDlg:send("DM_... " ) на hDlg:send(F.DM_...). Это - из соображений эффективности?

buniak_a_h
Posts: 1933
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

Версия 1.2.1 - начало работы в плагиновых панелях (кроме смены диска и перехода по списку вложенных папок - пока).

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

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: 12838
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post by John Doe »

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

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

Post Reply

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