На самом деле получилось прикольно и, возможно, полезно (если Вы любите настольных грызунов).
Суть:
Клик мышой на заголовке панели, содержащей имя папки, вызывает переход (как в проводнике). А если клик приходится на разделитель (бэкслэш), то предоставляется выбор, в какую папку перейти.
Первоначальный макрос сваян «на коленке» за полчасика, потому не судите строго. Если будут отзывы и замечания — попробую «докрутить».
Начиная с этой версии я перестал выкладывать текст скрипта в сообщении (уж больно трудоёмко стало, т.к. он вырос). Тем более что “Select all” на сайте опять перестал работать. Теперь только во вложении в виде 7z-архива.
Версия 1.0.3:
Исправлены ошибки, перечисленные HaRTом здесь, здесь и здесь:
- Клик непосредственно после имени текужей папки выводит список вложенных папок для выбора.
- Клик ВНЕ заголовка (на рамке) вызывает верхнее МЕНЮ (как без макроса).
- При переходе на папку указатель позиционируется на папке, идущей в исходной адресной строке после целевой папки.
- Клик на букве диска теперь вызывает переход в корневую папку диска с позиционирование на первой папке старого пути.
- Реализован автоматический учёт настройки Interface.ShowMenuBar (
[ ] Always show the menu bar
). - Клик ПРАВОЙ кнопкой вызывает простейший диалог (точнее, на месте заголовка панели создаётся поле ввода. Клик по имени папки вызывает переход).
- Устранено засорение системного буфера обмена (актуально при использовании мультибуферов).
- Исправлено правописание в истории версий; улучшена декомпозиция кода.
- Скорректировано поведение при клике на двоеточие после буквы диска и на первый (после двоеточия) слэш. Клик на двоеточие, также как клик на букву диска, вызывает диалог выбора диска; клик на первый слэш, также как на любой другой, вызывает меню выбора подкаталогов. Единственное отличие — в меню включён сам корневой каталог.
- Внесены изменения, касающиеся только «диалогового» режима (уточнение для клика по букве диска).
- Добавлена опция menuFlags (например, 1 — выводить меню без рамки).
- Исправлена ошибка позиционирования.
- Ещё поправлена документация, унифицированы отступы, устранена длинная строка (ибо LuaCheck); подсокращён код.
- (BAX) учтено замечание (на примере
C:\Windows
):- на
C
— выбор диска; - на
C
— переход в корень - на
:
— тоже переход в корень; - на
\
— меню папок в корне.
- на
- Устранён перехват скрытия/показа панелей щелчком мыши в левом верхнем знакоместе окна.
- Уточнена работа опции menuFlags (игнорируются «служебные» биты 3 и 4).
- Исправлено «проваливание» в главное меню при отмене меню директорий при щелчке по первому обратному слэшу.
- Присвоены UUIDы макросу на щелчок ПКМ (правой кнопкой мыши) и открываемому им диалогу.
- Экспериментально: по щелчку ЛКМ на счётчике редакторов/просмотрщиков открывается меню окон, а по ПКМ — задач.
- Устранён ставший ненужным код, подправлены документация и комментарии.
- (BAX) Исправлено последнее расхождение «диалогового» варианта и быстрого, описанное пользователем Yegor в viewtopic.php?p=155544#p155544: [в «диалоговом» режиме] «щелчок ЛКМ на букве диска открывает окно выбора диска, а не переводит в корень, как а обычном режиме.»
- Реализована настройка скрипта.
Code: Select all
╔═══════════ Настройка скрипта ClickToTitleDir ════════════╗ ║ Тип рамки ║ ║ ( ) без рамки (•) одинарная ( ) двойная ║ ║ [ ] Рисовать поля [x] С заголовком ║ ║ [ ] Автоматически назначить "горячие" клавиши ║ ║ [x] "Зацикливать" выбор подкаталога ║ ╟──────────────────────────────────────────────────────────╢ ║ { Ok } [ Cancel ] [ Default ] ║ ╚══════════════════════════════════════════════════════════╝
- Справка в формате hlf.
- Локализация: п. 2 и 3 сделаны только для русского языка.
- Для удобства в файл скрипта включены некоторые мои утилиты, обычно находящиеся в модулях. Просто есть сомнения в их общественной полезности.
- Подробности здесь.
- Исправлены некоторые ошибки. В частности, восстановлен вывод списка вложенных папок по
Ctrl+Down
, ограничена ширина диалогового окна шириной панели; - Исправлена ошибка, вследствие которой при настройке символов псевдографики по умолчанию неправильно обрабатывались имена папок, содержащие пробел.
- Добавлена возможность работы скрипта в плагиновых панелях (за исключением смены диска и выбора вложенной папки из списка).
- Доделана работа в плагиновой панели.
- Слегка гармонизирован диалог настроек.
- Исправлена ошибка диалогового режима, проявлявшаяся при клике на последний символ имени каталога.
- Переделана организация работы в диалоговом режиме. В результате стало возможным зациклить выбор вложенных папок из МЕНЮ.
- В непосредственном режиме для плагиновой панели реализована возможность как перехода в корневую папку (по клику на имени хост-файла), так и выхода из архива (по клику по префиксу).
- В диалоговом режиме для плагиновой панели в элемент (редактор) пути добавляется префикс плагина и имя хост-файла (если есть). В результате реализован как переход в корневую папку, так и выход из архива по клику по имени хост-файла и по префиксу соответственно.
- Основная задача — работоспособность в версии ФАРа ранее 3.0.5460 . Пришлось «симулировать» синтаксические разборы функциями match и т.п., т.к. до 3459 они не работали с не-ASCII строками. Возможны проблемы с каталогами, имена которых содержат символы псевдографики и т.п. — не проверял.
- Непосредственный режим: исправлена ошибка , в результате которой скрипт не выходил из архива по клику на префиксе плагина, если в заголовке панели отсутствует имя хост-файла или текущая папка архива была корневой.
- Непосредственный режим: добавлена возможность немедленного выхода из архива при клике непосредственно перед заголовком панели.
- Теперь при клике на последнем директории заголовка при наличии вложенных в текущий подкаталогов выводится список вложенных папок (иначе смысла в выборе текущего каталога смысла не было). Т.е. для перехода во внутренний каталог теперь не обязательно прицеливаться в пробел, следующий за текущим.
- Для вызова списка вложенных каталогов теперь не обязательно точно попадать в слэш-разделитель; можно кликнуть левой кнопкой мыши, удерживая
Alt
.
- Для вызова списка вложенных папок в непосредственном режиме теперь можно использовать прокрутку колёсика мыши вниз на имени папки.
- Переделан скрипт, чтобы он мог работать на версиях ФАР-а ранее 3459.
- В диалоговом режиме добавлен вызов Справки по
F1
, а Настройки — поAlt+Shift+F9
илиСКМ
. - Исправлена диагностика файла Справки (например, когда интерфейс Eng, а Справка — Rus).
- Дополнена и исправлена Справка, унифицировано форматирование.
- Упрощены логические условия в коде, улучшены идентификаторы.
- (BAX) Исправлена ошибка, существенно осложнявшая доступ к главному меню.
- Добавлена настройка
[x] Показывать скрытые каталоги
— включать ли в выпадающий список вложенных папок директории с атрибутом “hidden” («скрытый»). Атрибут «системный» не учитывается.
- Настройка
[?] Показывать скрытые каталоги
стала трёхпозиционной:[ ]
— не показывать;
[x]
— показывать;
[?]
— учитывать настройку FAR-а и установленные фильтры.
- Режим фильтрации папок при выборе вложенного каталога из не-плагиновой панели теперь можно переключить прямо из списка по клавише
Ctrl+H
. - Исправлена ошибка, проявлявшаяся при выборе из списка папок элемента
..
из корневой папки архива. - Исправлена ошибка, из-за которой по вращению колёсика и по клику ЛКМ с
Alt
в плагиновой панели в некоторых случаях не вызывалось выпадающее меню вложенных папок.
- Исправлена ошибка, проявлявшаяся при многократном перемещении «вперёд» и «назад» по вложенным папкам внутри архива.
Исправлены ошибки, перечисленные HaRTом здесь, здесь и здесь:
- При состоянии настройки
[?] Показывать скрытые каталоги
при щелчке на разделителе выводятся подпапки текущей директории, а не той, чей разделитель щёлкнули. - Исправлена ошибка, в результате которой при выключенной настройке
«Зацикливать» выбор подкаталога
происходил немедленный выход из меню без выбора целевого каталога. - Переделана процедура формирования списка вложенных папок (рефакторинг).
- Восстановлено позиционирование в списке вложенных папок при первом вызове меню, утерянное в версии 1.3.0.
- Изменён текст кнопки Cancel, добавлены «горячие клавиши».
- При составлении списка вложенных папок с диска (не по панели) добавлена сортировка.
- Рефакторинг…
- Доработан выбор языкового файла, когда для Справки используется другой язык (например, когда интерфейс Eng, а Справка — Rus).
- Добавлена локализация для английского языка.
- При открытии диалога настроек фокус устанавливается не на первый попавшийся элемент, а на кнопку Отменить.
- Редакторские правки в файле Справки.
- Исправлена пара предупреждений в коде.
- Исправлена ошибка, проявлявшаяся в том, что в некоторых плагиновых панелях (в частности, в MultiArc) не работал переход на каталог (не работает функция
panel.SetPanelDirectory
). - Исправлена ошибка, в результате которой при клике с клавишей
Alt
и при вращении колёсика мыши над буквой диска вместо списка подкаталогов корневого каталога происходил переход в корневой каталог или вызывался диалог выбора диска. Также убран вызов верхнего меню ФАРа при вращении колёсика над верхней стороной рамки панели. - Начальный фокус в диалоге настроек перенесён на активную радио-кнопку группы Тип рамки.
- Реализовано открытие меню выбора вложенного каталога по кручению колёсика в диалоговом режиме.
- Исправлено вертикальное положение меню выбора вложенного каталога при постоянно показанном главном меню Farа.
- Дополнена/исправлена Справка.
- Сделаны мелкие улучшения в коде.
- Исправлена проверка версии ФАР-а .
- Исправлена ошибка, из-за которой клик с
Alt
ом на букве диска или двоеточии, а также вращение колёсика мыши над ними вызывали переход в корень вместо вызова списка вложенных папок. - Изменён порядок анализа в диалоговом режиме: теперь клик по букве диска или двоеточию в случае, если на панели и так открыт корневой каталог, приводит к вызову списка вложенных папок.
- В очередной раз переделана (упрощена) логика формирования диалога при клике ПКМ на заголовке панели.
- В диалоговом режиме нажатие на кнопки
◄
и►
теперь приводит не к смещению каретки по полю редактора, а к прокрутке содержимого поля. - Нажатия клавиш
Ctrl+←
иCtrl+→
теперь приравнены к нажатиям кнопок◄
и►
, таким образом перемещение этими клавишами будет не по словам, а по разделительным слэшам.
- Приняты меры для предотвращения перехвата события вращения колёсика мыши другими скриптами в соответствии с рекомендациями
zg. Подробности тут и тут. - Начальное положение элемента редактирования в диалоговом режиме «подогнано» к расположению заголовка панели таким образом, чтобы после переключения в диалоговый режим местоположение курсора и видимый текст в редакторе не сдвигались.
- Изменено чтение строки с заголовками панелей: теперь используется не встроенное копирование текста окна (Screen Grabber), а API консоли Windows.
- Контроль горизонтальной координаты перенесён в
condition
и несколько изменён: теперь макрос реагирует на клик ЛКМ и ПКМ только по самому заголовку и соседнему с ним знакоместу (слева и справа) и по счётчику открытых редакторов/просмотрщиков в левой верхней части экрана, а на клик СКМ (колёсиком) — в любом месте строки. - Изменена логика прокрутки текста в диалоговом режиме: сначала текст прокручивается на ширину поля, затем в видимой части происходит переход на первый / последний слэш в зависимости от направления прокрутки. При этом если реальной прокрутки не было, то происходит переход на следующий слэш.
- Исправлена процедура определения «целевой» панели для случаев, если одна из панелей широкая.
- Сделана обработка ситуации, когда панель, на которую пришёлся щелчок мыши, пассивная, а режим показа панели — полноэкранный. В этом случае часть панели «заслоняется» активной панелью, и для корректной обработки приходится переключать панели. Внешне это заметно в диалоговом режиме.
- Реализована навигация по списку папок при помощи клавиш
Ctrl+←
иCtrl+→
(на каталог выше и внутрь текущего каталога). Переходы допустимы независимо от настройки[ ] «Зацикливать» выбор подкаталога
. - Экспериментально: реализована настройка цветов для «диалогового» режима.
Причина: если целевая панель пассивная и режим её показа полноэкранный, то часть заголовка «прикрыта» активной панелью; в результате диалог выбора папки визуально сливается с заголовком активной панели (кому не надо — не пользуйтесь, просто ставил эксперименты).
- Исправлена мелкая ошибка, возникавшая в диалоговом режиме, если из него вызвать диалог настроек и затем выполнить переход или вызвать список вложенных папок.
- Исправлена ошибка, в результате которой настройки цветов актуализировались немедленно и действовали до перезагрузки макросов даже после отмены.
- Исправлена ошибка, в результате которой после некоторых действий (вызов списка окон / процессов, клик по слэшу) нарушалась работоспособность скрипта.
- Сделана локализация настройки цветов.
- Убран отладочный вывод, оставшийся в версии 1.4.4.
- Реализован вызов «диалогового» режима комбинацией клавиш. По умолчанию вызывается по AltT:Double. Для таких возможностей требуется скрипт MacroEx.
- Реализована настройка сочетания клавиш, вызывающего «диалоговый» режим.
- При входе в диалоговый режим предусмотрено гашение выделения текста (не проверено — нет условий).
- При входе в диалоговый режим предусмотрено гашение выделения текста (неудачная попытка была предпринята в версии 1.4.6).
- Стилистические правки в языковых файлах и Справке.
- Диалог настроек перекомпонован таким образом, чтоб всё помещалось.
- В диалоге настроек реализована краткая контекстная подсказка (, но не всплывающая, а выводимая в «подвале» формы).
Вместе с файлом самого скрипта поставляются языковые файлы
ClickToTitleDirRus.lng
и ClickToTitleDirEng.lng
и файл помощи ClickToTitleDirRus.hlf
.- ClickToTitleDir-1.4.7.7z
- (22.83 KiB) Downloaded 53 times