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

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

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

Post by buniak_a_h »

Latest post of the previous page:

Я добавил в F.DN_CTLCOLORDLGITEM . Чтоб цвет один был... Да, так, как Вы написали - намного короче. Спасибо.
User avatar
HaRT
Moderator
Posts: 9550
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 230 times

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

Post by HaRT »

Странное поведение CtrlRight (в версии 1.3.6): для примера имеем консоль 80*25, в ней Фар с равновеликими панелями, там на левой панели C:\Program Files (x86)\Far Manager\Plugins\LuaMacro. Входим в диалоговый режим щелчком по двоеточию (для определённости), имеем , нажимаем CtrlRight — получаем , нажимаем ещё раз — , после третьего раза он не меняется. Это всё хоть и странно, но в какой-то степени логично. А вот дальше на каждое нажатие CtrlRight зазор сокращается на 1 пробел. Вот это уже не получается даже объяснить. Наверно, лучше было бы не допускать зазора справа более обычного 1 пробела.
P.S.
И ещё там при CtgrlRight/CtrlLeft каретка как-то странно цепляется за пробелы и скобки вместо разделителей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Mon 28 Oct, 2019 20:35 Странное поведение CtrlRight
Как выяснилось, обработка нажатия клавишей CtrlRigth не отменяет обработку её самим элементом. Как предотвратить реакцию DI_EDIT-а на эти клавиши - я не знаю пока. Поэтому из скрипта пока уберу.
На самом деле и нажатие на кнопку тоже ведёт себя странно, если весь путь в поле не помещается. Буду смотреть...
User avatar
HaRT
Moderator
Posts: 9550
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 230 times

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

Post by HaRT »

buniak_a_h wrote: Mon 28 Oct, 2019 21:26 Как предотвратить реакцию DI_EDIT-а на эти клавиши - я не знаю пока
А если обрабатывать эти события на уровне диалога (сразу за AltShiftF9) и возвращать соответствующий код («обработано»)?
buniak_a_h wrote: Mon 28 Oct, 2019 21:26 На самом деле и нажатие на кнопку тоже ведёт себя странно, если весь путь в поле не помещается. Буду смотреть...
Раз будете смотреть, то я бы предложил именно прокручивать текст, притом «постранично», возможно, с каким-то перекрытием, например, в один компонент пути, но не больше 10% и не меньше 5% (ну или как сочтёте нужным). Прокручивать по одному компоненту — это, на мой взгляд, слишком расточительно с точки зрения количества действий, необходимых для решения пользователем своей задачи.
Last edited by HaRT on Mon 28 Oct, 2019 21:48, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Mon 28 Oct, 2019 21:46 возвращать соответствующий код («обработано»)
Да, уже увидел.
HaRT wrote: Mon 28 Oct, 2019 21:46 прокручивать текст, притом «постранично»
Ну да, я об этом писал когда-то.
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

Опубликована версия 1.4.0:
  1. Изменено чтение строки с заголовками таблицы: теперь используется не граббер, а API консоли.
  2. Контроль горизонтальной координаты перенесён в condition и несколько изменён: теперь макрос реагирует только на клик ЛКМ и ПКМ по самому заголовку и соседнему с ним знакоместу (слева и справа) и по счётчику открытых редакторов/просмотровщиков в левой части экрана, а на клик колёсиком - в любом месте строки.
  3. Изменена логика прокрутки текста в диалоговом режиме: сначала текст прокручивается на ширину поля, затем в видимой части происходит переход на первый / последний слэш в зависимости от направления прокрутки. При этом если реальной прокрутки не было, то происходит переход на следующий слэш.
  4. Исправлена процедура определения "целевой" панели для случаев, если одна из панелей - широкая.
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Mon 28 Oct, 2019 18:18 у меня есть редакторские правки в файл Справки (и, соответственно в добавленную секцию whatsnew «шапки» скрипта).
Т.к. вышла новая версия, то стало неактуально. А в справку добавьте, пож.
User avatar
HaRT
Moderator
Posts: 9550
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 230 times

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

Post by HaRT »

buniak_a_h wrote: Sun 29 Sep, 2019 07:51Известное ограничение:
Скрипт пока не работает, если пассивная панель - широкая, и часть её заслоняет активная панель.
не помогает? Или просто пока руки не дошли?
buniak_a_h wrote: Tue 29 Oct, 2019 05:23 А в справку добавьте, пож.
Выложу дифф ближе к вечеру.
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Tue 29 Oct, 2019 12:39 не помогает? Или просто пока руки не дошли?
Не могу разобрать прочитанную с экрана строку, чтоб определить, где кончается одна панель и начинается заголовок другой. Вот пример:
═══ D:\Arm_2007 ═══════╗nti07 ══════════╤═══════════╗
User avatar
HaRT
Moderator
Posts: 9550
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 230 times

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

Post by HaRT »

buniak_a_h wrote: Tue 29 Oct, 2019 05:23
Я не нашёл никаких упоминаний (неправильной) строки whatnew в ScriptsBrowser 0.2, а (правильную) строку whatsnew нашёл только в одном месте, где перечисляются вроде бы маски файлов документации. Зачем нужно это дублирование текста Справки в скрипте? Не лучше ли по мере реализации дописывать сразу в Истороию версий в файле Справки?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 9550
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 230 times

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

Post by HaRT »

buniak_a_h wrote: Tue 29 Oct, 2019 12:49 Не могу разобрать прочитанную с экрана строку, чтоб определить, где кончается одна панель и начинается заголовок другой.
Предлагаю в подобной (т.е. такой и симметричной ей) ситуации в непосредственном режиме взаимодействовать только с видимой частью заголовка, в диалоговый режим входить по ней же, а сам диалог размещать от начала заголовка левой панели до конца заголовка правой панели. Как вам такая идея?
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Tue 29 Oct, 2019 12:58 Предлагаю в подобной (т.е. такой и симметричной ей) ситуации в непосредственном режиме взаимодействовать только с видимой частью заголовка, в диалоговый режим входить по ней же, а сам диалог размещать от начала заголовка левой панели до конца заголовка правой панели. Как вам такая идея?
1. «Взаимодействовать с видимой» - согласен (так и сделал, но потом из-за пункта (2) не включил)
2. «размещать от начала заголовка левой панели» - не гуд. И диалог съезжает фиг знает куда, и начало заголовка для определений, во что тыкнули в непосредственном режиме как-то неправильно. Хотя с непосредственным, если широкая пассивная панель - правая, наверно, можно разобраться (т.к. разбор идёт справа налево). Тут ведь вообще может быть ситуация такая:

Code: Select all

╔════════ D:\Arm_2007 ════════╗╤══════════════╤═╗
║n    Name     ║     Name     ║│   Created    │A║
║..            ║Add git.cmd   ▲│29.10.19 15:06│2║
Тут вообще нет заголовка правой панели.
Пробовал в такой ситуации переключить панели panel.SetActivePanel(nil,0), но почему-то с экрана читается всё равно та же строка. И даже panel.RedrawPanel не помогает.Это всё - про condition…
Я пока оставил предупреждение тут. Самое мерзкое, что скрипт вылетает с диагностикой. Это легко побороть, просто пока не стал заливать новое (вылет обнаружил уже после публикации). Если придумаем, как обойти - выложу исправленное. Иначе просто заблокирую ситуацию.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 155 times
Contact:

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

Post by zg »

buniak_a_h wrote: Tue 29 Oct, 2019 13:17И даже panel.RedrawPanel не помогает.
far.Text() именно так, без параметров.
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

Ну, кажется, проблема с частично прикрытой панелью решена. Сделано, как всегда, прокто-логично: пассивная панель "вытаскивается" наверх (делается активной), а потом "прячется" обратно. Если есть мысли, как сделать проще и правильнее - предложения принимаются. Версия 1.4.1.
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

P/S. Я, кажется, перестраховался: в скрипте вполне можно убрать строки if NeedSwitch … до и после far.Dialog (строки 971-974 и 976-979) Выложу позже, после получения правок к хелпу от HaRT
User avatar
HaRT
Moderator
Posts: 9550
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 230 times

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

Post by HaRT »

А это как-нибудь прокомментируете?:
HaRT wrote: Tue 29 Oct, 2019 12:50
buniak_a_h wrote: Tue 29 Oct, 2019 05:23
Я не нашёл никаких упоминаний (неправильной) строки whatnew в ScriptsBrowser 0.2, а (правильную) строку whatsnew нашёл только в одном месте, где перечисляются вроде бы маски файлов документации. Зачем нужно это дублирование текста Справки в скрипте? Не лучше ли по мере реализации дописывать сразу в Истороию версий в файле Справки?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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