View previous topic :: View next topic |
Author |
Message |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Thu Jun 03, 2010 22:31 Post subject: 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)".
Руководство по использованию свободных битов стиля окна для хранения состояния тех или иных состояний находится в этом посте.
Last edited by MVV on Mon Nov 11, 2019 12:19; edited 40 times in total |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Flasher
![](images/avatars/11897631144e285f14b2775.jpg)
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jun 03, 2010 23:13 Post subject: |
|
|
MVV
Нуу, эээ, ммм.. В общем первый вопрос: русский интерфейс предполагается? Вроде не для забугорных делал-то. Или там поддержку lng хотя бы организовать.
Потом, ТС он сам включает? Если да, то что он сделает, если у человека триальная версия и выпадает окно с тремя кнопками? Или же он работает только при включённом ТС? MVV wrote: | после переключения заголовка нужно либо развернуть/свернуть окно, либо вызвать команду rr для перерисовки | Посмотрел ini, так и не понял: какой ключ отвечает за скрытие/показ строки заголовка? По идее подпись TitleBar Hide/Show должна стоять после ";".
Далее: правильно ли я понял, что утилиту можно использовать и как очередной загрузчик, наподобие Autorun-a?
MVV wrote: | И размерчик наш. | Наш, и, по всей видимости, дальше комстроки дело не двинется. Или хотя бы на крохотный опциональный интерфейс с набором флагов можно впоследствии расчитывать? Юзабильность повышать бум, али как? ![Wink](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Thu Jun 03, 2010 23:19 Post subject: |
|
|
Интерфейс тут абсолютно не нужен, как и LNG-файл. Все настройки - в INI-файле, ничто не мешает перевести строки на русский язык (мне было лень писать по-русски ). А в самом экзешнике текстовых строк - только подсказка синтаксиса.
Тотал она не запускает, просто управляет запущенным экземпляром. Если запускаешь из ТК, проблем с детекцией пути к wincmd.ini быть не должно - читает %COMMANDER_INI%. В качестве подопытного окна используется последнее активное окно ТК.
За скрытие заголовка отвечает команда c0, там комментарий "Caption Off". Показывает заголовок, думаю, нетрудно догадаться, команда c1. Если после них не вызываешь разворачивания/сворачивания окна, вызывай также команду rr, она перерисует окно. Опять же, названия команд можешь написать какие угодно (главное - без пробелов).
Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.
А дальше комстроки дело точно не двинется. Зачем здесь нужен интерфейс? Мне кажется, для переключения в компактный режим достаточно кнопки или комбинации клавиш, любой интерфейс будет тормозить процесс переключения. Один раз в жизни настроил команды в INI-файле (или вообще пользуешь уже созданные), один раз добавь себе на панель инструментов несколько кнопочек - и пользуйся - тут не место интерфейсу.
Перевод синтаксиса:
Code: | Синтаксис:
TCFS2[.exe] <параметры, команды, действия>
Параметры:
/d100 - задать задержку между выполнением и проверкой результата
/ea, /ei - выбрать, действия или команды будут выполняться
/i"<путь>" - задать путь к wincmd.ini
/u[-] - включить/выключить запись строки отката
/uc - очистить текущую строку отката
/us - сохранить текущую строку отката
Убедитесь, что файл TCFS2.ini доступен для записи. |
_________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Last edited by MVV on Fri Jun 04, 2010 00:36; edited 5 times in total |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Flasher
![](images/avatars/11897631144e285f14b2775.jpg)
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jun 03, 2010 23:50 Post subject: |
|
|
MVV wrote: | Все настройки - в INI-файле | А как же окно help-a, появляющиеся при запуске без параметров? MVV wrote: | мне было лень писать по-русски | Это что-то с чем-то. Али ты не наш? В USA давно перебрался?![Wink](images/smiles/icon_wink.gif) MVV wrote: | В качестве подопытного окна используется последнее активное окно ТК. | В том смысле, что запущено несколько ТС-экземпляров? MVV wrote: | За скрытие заголовка отвечает команда c0, там комментарий "Caption Off". | Я сразу так подумал, но "Caption"(надпись) не совсем-то логичное название, TitleBar обзовём его. MVV wrote: | Кстати, я же перечислил все команды управления окном - их там всего 4 | Ну теперь-то отредактировал, вижу.) MVV wrote: | Ну а если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx. | Захочется ещё как! Особенно убирать строку заголовка. TwinKey с em_командой тоже сойдёт. ![Wink](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Jun 04, 2010 00:10 Post subject: |
|
|
Даже стиль окна, применяющий заголовок, называется WS_CAPTION. Поэтому слово "caption" абсолютно корректное.
А по-русски лень писать, т.к. по-английски компактнее получается, да и сразу для всех, а не только для наших.
Все что можно было перевести, переведено в моем предыдущем посте. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Flasher
![](images/avatars/11897631144e285f14b2775.jpg)
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 04, 2010 00:17 Post subject: |
|
|
MVV wrote: | Для переключения в режим выполнения действий добавьте параметр /ea, для переключения в режим выполнения команд - параметр /ei. | Это выполняется только при переводе из одного режима в другой или в начале нужно параметр обязательно указывать? Пример с убирание строки заголовка напиши, пож. Я пишу так %COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /i="%COMMANDER_PATH%\wincmd.ini" /ea c0. Парамет /i тут как-то должен фигурировать? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Jun 04, 2010 00:22 Post subject: |
|
|
Параметр /i тебе не нужен, если ты запускаешь TCFS2 из ТК или дочернего процесса, так как переменная COMMANDER_INI будет определена. Если запускаешь из левого процесса, то надо указывать параметр /i, но тогда ни COMMANDER_INI, ни COMMANDER_PATH определены не будут.
Убрать заголовок:
Code: | %COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ei c0 rr |
Показать заголовок:
Code: | %COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ei c1 rr |
Тут ты говоришь, что запускаешь команды (по умолчанию запускаются действия), и пишешь последовательность команд. Я же приводил примеры выше.
Но ты можешь и в INI определить действие и назначить ему эти команды, и вызывать TCFS2, просто указывая имя этого действия.
Вообще говоря, для скрытия заголовка wincmd.ini вообще не нужен, так как команда проверяет и задает стили окна, а не меняет настройки ТК. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Flasher
![](images/avatars/11897631144e285f14b2775.jpg)
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 04, 2010 00:27 Post subject: |
|
|
Чего-то перерисовка rr не работает. Приходится сворачиватьи разворачивать окно дополнительно. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Jun 04, 2010 00:35 Post subject: |
|
|
А F2 нажать слабо?
Скачай обновленный файл тут же. При последней правке я вырезал и забыл вставить строчку команды rr (которая посылает cm_RereadSource).
Кстати, обращу внимание, если еще не очевидно - все числовые значения параметров встроенных функций берутся из стандартных заголовочных файлов (например, в описании функции ShowWindow указана константа SW_MAXIMIZE, равная 3, заголовок включается установкой стиля WS_CAPTION, равного 0xC00000, а параметры функции tcm - вообще числа из TOTALCMD.inc).
Пожалуй, если надо часто включать/выключать заголовок, будет удобнее иметь одну кнопку с командой:
Code: | [Items]
c2=set_style(^$00C00000), , c2 rr ; Caption Switch |
Команда не имеет условия, переключает состояние флага WS_CAPTION и записывает себя же в откат. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Flasher
![](images/avatars/11897631144e285f14b2775.jpg)
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 04, 2010 01:09 Post subject: |
|
|
MVV
Вот теперь другой коленкор. Пошаманю с остальными параметрами, что будет не так - отпишу. Но уже радует. В Twinkey повесил на старт, не хочет работать, буду пробовать с Autorun-oм. В любом случае более чем благодарен за оперативность, проделанный труд и потраченное не зря время!!! Респект!
MVV wrote: | А F2 нажать слабо? ![Laughing](images/smiles/icon_lol.gif) | Ну дык зачем мне несколько действий для такой простой задачи? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Fri Jun 04, 2010 10:50 Post subject: |
|
|
MVV wrote: | Пожалуй, если надо часто включать/выключать заголовок, будет удобнее иметь одну кнопку с командой: |
Нельзя ли что-то подобное предусмотреть для действия? То есть, если действие вызывается во второй раз подряд, то вместо него выполнять его откат. Иначе, после двух вызовов одного действия в откате пусто.
Тогда и одной кнопкой было бы удобно обходиться для переключения. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Jun 04, 2010 11:15 Post subject: |
|
|
Создай реверсивный набор команд, типа предложенной выше c2, и создай действие с их последовательностью. Получишь команды, повторный запуск которых отменяет предыдущий. Набор таких команд получить можно, поубирав условия запуска предлагаемых мною команд, а в откат прописав их же, например:
(исходная команда)
Code: | kb0=tcm(2911), tcini(Layout, KeyButtons, 0), kb1 |
(команда-переключатель)
Code: | kb2=tcm(2911), , kb2 |
Для действий отката нет потому, что они могут выполняться не полностью, тогда как команда выполняет единую функцию, правильность выполнения которой при необходимости может быть проверена.
Если это не то, опиши, что ты хочешь получить, чтобы было понятно, возможно ли это имеющимися средствами. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Flasher
![](images/avatars/11897631144e285f14b2775.jpg)
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 04, 2010 11:46 Post subject: |
|
|
MVV wrote: | Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx. | Пищу в autorun.cfg поочерёдно строки:
ShellExec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ei c0 rr
CommandExec em_HideTitleBar
Ставил перед ними Sleep с разным значением. Как и в случае с TwinKey результата никакого.. Что с этим !архиважным! моментом делать? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Fri Jun 04, 2010 11:49 Post subject: |
|
|
MVV wrote: | Создай реверсивный набор команд |
Спасибо! Работает. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Jun 04, 2010 12:09 Post subject: |
|
|
Flasher wrote: | MVV wrote: | Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx. | Пищу в autorun.cfg поочерёдно строки:
ShellExec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ei c0 rr
CommandExec em_HideTitleBar |
А зачем их две?
Вообще, тут видимо не очень логичный парсинг строки команды, так как с первого раза у меня тоже не заработало. А со второго (или третьего) работает как миленькая (миленький, миленькое, нужное подчеркнуть):
Code: | SetOption 1
# Сокрытие заголовка
ShellExec "D:\TOTALCMD\Addons\TCFS2\TCFS2.exe" "/ei c0 rr"
|
Единственный недостаток окна ТК без заголовка - невозможность передвигать его. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Last edited by MVV on Fri Jun 04, 2010 12:32; edited 1 time in total |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|