TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Модераторы: Моторокер, Avada, CaptainFlint, Nik, d-view
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
В общем, вот моя реализация аддона TCFS2 для управления режимами окон ТК, а также модуль TCFS2Tools (бывший Autorun_HideMenu) для сокрытия главного меню, который работает с Autorun.wdx (впрочем, последние версии могут запускаться и без него - подробности в Readme).
Информация о последней версии
Версия: 2.4.3
URL: TCFS2 на wincmd.ru / TCFS2 at totalcmd.net
Версия: 1.4.3 32/64
URL: TCFS2Tools на wincmd.ru / TCFS2Tools at totalcmd.net
Особенности TCFS2:
+ разворачивать/восстанавливать окно
+ перемещать и изменять размер
+ скрывать и отображать заголовок
+ ставить окно "поверх других окон"
+ отключать любые отключаемые элементы окна ТК
+ изменять текущий путь в панелях
+ перемещать сепаратор файловых панелей
+ эмулировать нажатия клавиш
+ отменять последнее действие запуском команды отката
+ и многое другое...
Особенности TCFS2Tools:
+ скрывать/отображать строку главного меню
+ временно отображать главное меню программы при вызове
+ отображать главное меню в виде всплывающего по команде пользователя
+ получать/устанавливать позицию разделителя файловых панелей
+ получать текущие режимы панелей
+ получать системные величины, возвращаемые функцией GetSystemMetrics
+ получать размеры рабочей области экрана
Идея TCFS2 - полная свобода действий. Настраиваете отдельные команды для включения/выключения чего-то (для каждой команды можно задать условие выполнения - например, скрывать панель инструментов не нужно, если в INI написано, что она и так скрыта). Далее, настраиваете действия, которые содержат последовательность команд. И те и другие можно выполнять с командной строки. В командную строку можно напихать сколько угодно команд, действий и параметров в любом порядке. Для переключения в режим выполнения действий добавьте параметр /ea, для переключения в режим выполнения команд - параметр /ei. Например, /ea undo /ei tb0 /ea fs и так далее. Во время выполнения команд формируется действие Undo, позволяющее в будущем легко отменить последнюю операцию.
Команда выполняется, только если условие ее выполнения истинно. После выполнения команды делается задержка (например, чтобы ТК успел обновить wincmd.ini), затем проверяется, выполнена ли команда. Если указано условие отката, проверяется его истинность, иначе проверяется, стало ли ложным условие выполнения команды. При успехе команда считается завершенной и в undo дописываются команды ее отмены. Если условие не задано, команда выполняется всегда.
В прилагаемом конфиге созданы команды для включения/выключения всех настоящих элементов интерфейса ТК (поправьте, если что-то забыл), разворачивания ТК на весь экран и восстановления (m1 и m0), а также для сокрытия и отображения заголовка окна (c0 и c1; после переключения заголовка нужно либо развернуть/свернуть окно, либо вызвать команду rr для перерисовки). Также настроено действие fs, которое отключает все что можно.
Можно использовать чисто команды, не создавая действий - задавая последовательность команд в командной строке, например: /ei tb0 db0 dc0 tt0 sb0 kb0 c0 rr m1. Ничто не мешает создать себе несколько кнопок для переключения между желаемыми режимами.
Последние версии допускают даже использование функций без создания команд при переключении в режим выполнения функций с помощью ключа /ef, например: /ef "set_separator(40)".
Руководство по использованию свободных битов стиля окна для хранения состояния тех или иных состояний находится в этом посте.
Информация о последней версии
Версия: 2.4.3
URL: TCFS2 на wincmd.ru / TCFS2 at totalcmd.net
Версия: 1.4.3 32/64
URL: TCFS2Tools на wincmd.ru / TCFS2Tools at totalcmd.net
Особенности TCFS2:
+ разворачивать/восстанавливать окно
+ перемещать и изменять размер
+ скрывать и отображать заголовок
+ ставить окно "поверх других окон"
+ отключать любые отключаемые элементы окна ТК
+ изменять текущий путь в панелях
+ перемещать сепаратор файловых панелей
+ эмулировать нажатия клавиш
+ отменять последнее действие запуском команды отката
+ и многое другое...
Особенности TCFS2Tools:
+ скрывать/отображать строку главного меню
+ временно отображать главное меню программы при вызове
+ отображать главное меню в виде всплывающего по команде пользователя
+ получать/устанавливать позицию разделителя файловых панелей
+ получать текущие режимы панелей
+ получать системные величины, возвращаемые функцией GetSystemMetrics
+ получать размеры рабочей области экрана
Идея TCFS2 - полная свобода действий. Настраиваете отдельные команды для включения/выключения чего-то (для каждой команды можно задать условие выполнения - например, скрывать панель инструментов не нужно, если в INI написано, что она и так скрыта). Далее, настраиваете действия, которые содержат последовательность команд. И те и другие можно выполнять с командной строки. В командную строку можно напихать сколько угодно команд, действий и параметров в любом порядке. Для переключения в режим выполнения действий добавьте параметр /ea, для переключения в режим выполнения команд - параметр /ei. Например, /ea undo /ei tb0 /ea fs и так далее. Во время выполнения команд формируется действие Undo, позволяющее в будущем легко отменить последнюю операцию.
Команда выполняется, только если условие ее выполнения истинно. После выполнения команды делается задержка (например, чтобы ТК успел обновить wincmd.ini), затем проверяется, выполнена ли команда. Если указано условие отката, проверяется его истинность, иначе проверяется, стало ли ложным условие выполнения команды. При успехе команда считается завершенной и в undo дописываются команды ее отмены. Если условие не задано, команда выполняется всегда.
В прилагаемом конфиге созданы команды для включения/выключения всех настоящих элементов интерфейса ТК (поправьте, если что-то забыл), разворачивания ТК на весь экран и восстановления (m1 и m0), а также для сокрытия и отображения заголовка окна (c0 и c1; после переключения заголовка нужно либо развернуть/свернуть окно, либо вызвать команду rr для перерисовки). Также настроено действие fs, которое отключает все что можно.
Можно использовать чисто команды, не создавая действий - задавая последовательность команд в командной строке, например: /ei tb0 db0 dc0 tt0 sb0 kb0 c0 rr m1. Ничто не мешает создать себе несколько кнопок для переключения между желаемыми режимами.
Последние версии допускают даже использование функций без создания команд при переключении в режим выполнения функций с помощью ключа /ef, например: /ef "set_separator(40)".
Руководство по использованию свободных битов стиля окна для хранения состояния тех или иных состояний находится в этом посте.
Последний раз редактировалось MVV Пн ноя 11, 2019 11:19, всего редактировалось 40 раз.
MVV
Нуу, эээ, ммм.. В общем первый вопрос: русский интерфейс предполагается? Вроде не для забугорных делал-то. Или там поддержку lng хотя бы организовать.
Потом, ТС он сам включает? Если да, то что он сделает, если у человека триальная версия и выпадает окно с тремя кнопками? Или же он работает только при включённом ТС?
Далее: правильно ли я понял, что утилиту можно использовать и как очередной загрузчик, наподобие Autorun-a?
Нуу, эээ, ммм.. В общем первый вопрос: русский интерфейс предполагается? Вроде не для забугорных делал-то. Или там поддержку lng хотя бы организовать.
Потом, ТС он сам включает? Если да, то что он сделает, если у человека триальная версия и выпадает окно с тремя кнопками? Или же он работает только при включённом ТС?
Посмотрел ini, так и не понял: какой ключ отвечает за скрытие/показ строки заголовка? По идее подпись TitleBar Hide/Show должна стоять после ";".MVV писал(а):после переключения заголовка нужно либо развернуть/свернуть окно, либо вызвать команду rr для перерисовки
Далее: правильно ли я понял, что утилиту можно использовать и как очередной загрузчик, наподобие Autorun-a?
Наш, и, по всей видимости, дальше комстроки дело не двинется. Или хотя бы на крохотный опциональный интерфейс с набором флагов можно впоследствии расчитывать? Юзабильность повышать бум, али как?MVV писал(а):И размерчик наш.
Интерфейс тут абсолютно не нужен, как и LNG-файл. Все настройки - в INI-файле, ничто не мешает перевести строки на русский язык (мне было лень писать по-русски
). А в самом экзешнике текстовых строк - только подсказка синтаксиса.
Тотал она не запускает, просто управляет запущенным экземпляром. Если запускаешь из ТК, проблем с детекцией пути к wincmd.ini быть не должно - читает %COMMANDER_INI%. В качестве подопытного окна используется последнее активное окно ТК.
За скрытие заголовка отвечает команда c0, там комментарий "Caption Off". Показывает заголовок, думаю, нетрудно догадаться, команда c1. Если после них не вызываешь разворачивания/сворачивания окна, вызывай также команду rr, она перерисует окно. Опять же, названия команд можешь написать какие угодно (главное - без пробелов).
Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.
А дальше комстроки дело точно не двинется. Зачем здесь нужен интерфейс? Мне кажется, для переключения в компактный режим достаточно кнопки или комбинации клавиш, любой интерфейс будет тормозить процесс переключения. Один раз в жизни настроил команды в INI-файле (или вообще пользуешь уже созданные), один раз добавь себе на панель инструментов несколько кнопочек - и пользуйся - тут не место интерфейсу.
Перевод синтаксиса:
Тотал она не запускает, просто управляет запущенным экземпляром. Если запускаешь из ТК, проблем с детекцией пути к wincmd.ini быть не должно - читает %COMMANDER_INI%. В качестве подопытного окна используется последнее активное окно ТК.
За скрытие заголовка отвечает команда c0, там комментарий "Caption Off". Показывает заголовок, думаю, нетрудно догадаться, команда c1. Если после них не вызываешь разворачивания/сворачивания окна, вызывай также команду rr, она перерисует окно. Опять же, названия команд можешь написать какие угодно (главное - без пробелов).
Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.
А дальше комстроки дело точно не двинется. Зачем здесь нужен интерфейс? Мне кажется, для переключения в компактный режим достаточно кнопки или комбинации клавиш, любой интерфейс будет тормозить процесс переключения. Один раз в жизни настроил команды в INI-файле (или вообще пользуешь уже созданные), один раз добавь себе на панель инструментов несколько кнопочек - и пользуйся - тут не место интерфейсу.
Перевод синтаксиса:
Код: Выделить всё
Синтаксис:
TCFS2[.exe] <параметры, команды, действия>
Параметры:
/d100 - задать задержку между выполнением и проверкой результата
/ea, /ei - выбрать, действия или команды будут выполняться
/i"<путь>" - задать путь к wincmd.ini
/u[-] - включить/выключить запись строки отката
/uc - очистить текущую строку отката
/us - сохранить текущую строку отката
Убедитесь, что файл TCFS2.ini доступен для записи.
Последний раз редактировалось MVV Пт июн 04, 2010 00:36, всего редактировалось 5 раз.
А как же окно help-a, появляющиеся при запуске без параметров?MVV писал(а):Все настройки - в INI-файле
Это что-то с чем-то. Али ты не наш? В USA давно перебрался?;)MVV писал(а):мне было лень писать по-русски
В том смысле, что запущено несколько ТС-экземпляров?MVV писал(а):В качестве подопытного окна используется последнее активное окно ТК.
Я сразу так подумал, но "Caption"(надпись) не совсем-то логичное название, TitleBar обзовём его.MVV писал(а):За скрытие заголовка отвечает команда c0, там комментарий "Caption Off".
Ну теперь-то отредактировал, вижу.)MVV писал(а):Кстати, я же перечислил все команды управления окном - их там всего 4
Захочется ещё как! Особенно убирать строку заголовка. TwinKey с em_командой тоже сойдёт.MVV писал(а):Ну а если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.
Это выполняется только при переводе из одного режима в другой или в начале нужно параметр обязательно указывать? Пример с убирание строки заголовка напиши, пож. Я пишу так %COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /i="%COMMANDER_PATH%\wincmd.ini" /ea c0. Парамет /i тут как-то должен фигурировать?MVV писал(а):Для переключения в режим выполнения действий добавьте параметр /ea, для переключения в режим выполнения команд - параметр /ei.
Параметр /i тебе не нужен, если ты запускаешь TCFS2 из ТК или дочернего процесса, так как переменная COMMANDER_INI будет определена. Если запускаешь из левого процесса, то надо указывать параметр /i, но тогда ни COMMANDER_INI, ни COMMANDER_PATH определены не будут.
Убрать заголовок:
Показать заголовок:
Тут ты говоришь, что запускаешь команды (по умолчанию запускаются действия), и пишешь последовательность команд. Я же приводил примеры выше.
Но ты можешь и в INI определить действие и назначить ему эти команды, и вызывать TCFS2, просто указывая имя этого действия.
Вообще говоря, для скрытия заголовка wincmd.ini вообще не нужен, так как команда проверяет и задает стили окна, а не меняет настройки ТК.
Убрать заголовок:
Код: Выделить всё
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ei c0 rrКод: Выделить всё
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ei c1 rrНо ты можешь и в INI определить действие и назначить ему эти команды, и вызывать TCFS2, просто указывая имя этого действия.
Вообще говоря, для скрытия заголовка wincmd.ini вообще не нужен, так как команда проверяет и задает стили окна, а не меняет настройки ТК.
А F2 нажать слабо? 
Скачай обновленный файл тут же. При последней правке я вырезал и забыл вставить строчку команды rr (которая посылает cm_RereadSource).
Кстати, обращу внимание, если еще не очевидно - все числовые значения параметров встроенных функций берутся из стандартных заголовочных файлов (например, в описании функции ShowWindow указана константа SW_MAXIMIZE, равная 3, заголовок включается установкой стиля WS_CAPTION, равного 0xC00000, а параметры функции tcm - вообще числа из TOTALCMD.inc).
Пожалуй, если надо часто включать/выключать заголовок, будет удобнее иметь одну кнопку с командой:
Команда не имеет условия, переключает состояние флага WS_CAPTION и записывает себя же в откат.
Скачай обновленный файл тут же. При последней правке я вырезал и забыл вставить строчку команды rr (которая посылает cm_RereadSource).
Кстати, обращу внимание, если еще не очевидно - все числовые значения параметров встроенных функций берутся из стандартных заголовочных файлов (например, в описании функции ShowWindow указана константа SW_MAXIMIZE, равная 3, заголовок включается установкой стиля WS_CAPTION, равного 0xC00000, а параметры функции tcm - вообще числа из TOTALCMD.inc).
Пожалуй, если надо часто включать/выключать заголовок, будет удобнее иметь одну кнопку с командой:
Код: Выделить всё
[Items]
c2=set_style(^$00C00000), , c2 rr ; Caption Switch MVV
Вот теперь другой коленкор. Пошаманю с остальными параметрами, что будет не так - отпишу. Но уже радует. В Twinkey повесил на старт, не хочет работать, буду пробовать с Autorun-oм. В любом случае более чем благодарен за оперативность, проделанный труд и потраченное не зря время!!! Респект!
Вот теперь другой коленкор. Пошаманю с остальными параметрами, что будет не так - отпишу. Но уже радует. В Twinkey повесил на старт, не хочет работать, буду пробовать с Autorun-oм. В любом случае более чем благодарен за оперативность, проделанный труд и потраченное не зря время!!! Респект!
Ну дык зачем мне несколько действий для такой простой задачи?MVV писал(а):А F2 нажать слабо?
Нельзя ли что-то подобное предусмотреть для действия? То есть, если действие вызывается во второй раз подряд, то вместо него выполнять его откат. Иначе, после двух вызовов одного действия в откате пусто.MVV писал(а):Пожалуй, если надо часто включать/выключать заголовок, будет удобнее иметь одну кнопку с командой:
Тогда и одной кнопкой было бы удобно обходиться для переключения.
Создай реверсивный набор команд, типа предложенной выше c2, и создай действие с их последовательностью. Получишь команды, повторный запуск которых отменяет предыдущий. Набор таких команд получить можно, поубирав условия запуска предлагаемых мною команд, а в откат прописав их же, например:
(исходная команда)
(команда-переключатель)
Для действий отката нет потому, что они могут выполняться не полностью, тогда как команда выполняет единую функцию, правильность выполнения которой при необходимости может быть проверена.
Если это не то, опиши, что ты хочешь получить, чтобы было понятно, возможно ли это имеющимися средствами.
(исходная команда)
Код: Выделить всё
kb0=tcm(2911), tcini(Layout, KeyButtons, 0), kb1Код: Выделить всё
kb2=tcm(2911), , kb2Если это не то, опиши, что ты хочешь получить, чтобы было понятно, возможно ли это имеющимися средствами.
Пищу в autorun.cfg поочерёдно строки:MVV писал(а):Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.
ShellExec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ei c0 rr
CommandExec em_HideTitleBar
Ставил перед ними Sleep с разным значением. Как и в случае с TwinKey результата никакого.. Что с этим !архиважным! моментом делать?
А зачем их две?Flasher писал(а):Пищу в autorun.cfg поочерёдно строки:MVV писал(а):Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.
ShellExec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ei c0 rr
CommandExec em_HideTitleBar
Вообще, тут видимо не очень логичный парсинг строки команды, так как с первого раза у меня тоже не заработало. А со второго (или третьего) работает как миленькая (миленький, миленькое, нужное подчеркнуть):
Код: Выделить всё
SetOption 1
# Сокрытие заголовка
ShellExec "D:\TOTALCMD\Addons\TCFS2\TCFS2.exe" "/ei c0 rr"
Последний раз редактировалось MVV Пт июн 04, 2010 12:32, всего редактировалось 1 раз.