Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Goto page 1, 2, 3 ... 128, 129, 130  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Jun 03, 2010 22:31    Post subject: TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое Reply with quote

В общем, вот моя реализация аддона 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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Jun 03, 2010 23:13    Post subject: Reply with quote

MVV
Нуу, эээ, ммм.. В общем первый вопрос: русский интерфейс предполагается? Вроде не для забугорных делал-то. Или там поддержку lng хотя бы организовать.
Потом, ТС он сам включает? Если да, то что он сделает, если у человека триальная версия и выпадает окно с тремя кнопками? Или же он работает только при включённом ТС?
MVV wrote:
после переключения заголовка нужно либо развернуть/свернуть окно, либо вызвать команду rr для перерисовки
Посмотрел ini, так и не понял: какой ключ отвечает за скрытие/показ строки заголовка? По идее подпись TitleBar Hide/Show должна стоять после ";".
Далее: правильно ли я понял, что утилиту можно использовать и как очередной загрузчик, наподобие Autorun-a?
MVV wrote:
И размерчик наш.
Наш, и, по всей видимости, дальше комстроки дело не двинется. Или хотя бы на крохотный опциональный интерфейс с набором флагов можно впоследствии расчитывать? Юзабильность повышать бум, али как? Wink
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Jun 03, 2010 23:19    Post subject: Reply with quote

Интерфейс тут абсолютно не нужен, как и LNG-файл. Все настройки - в INI-файле, ничто не мешает перевести строки на русский язык (мне было лень писать по-русски Smile). А в самом экзешнике текстовых строк - только подсказка синтаксиса.

Тотал она не запускает, просто управляет запущенным экземпляром. Если запускаешь из ТК, проблем с детекцией пути к wincmd.ini быть не должно - читает %COMMANDER_INI%. В качестве подопытного окна используется последнее активное окно ТК.

За скрытие заголовка отвечает команда c0, там комментарий "Caption Off". Показывает заголовок, думаю, нетрудно догадаться, команда c1. Если после них не вызываешь разворачивания/сворачивания окна, вызывай также команду rr, она перерисует окно. Опять же, названия команд можешь написать какие угодно (главное - без пробелов).

Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.

А дальше комстроки дело точно не двинется. Зачем здесь нужен интерфейс? Мне кажется, для переключения в компактный режим достаточно кнопки или комбинации клавиш, любой интерфейс будет тормозить процесс переключения. Один раз в жизни настроил команды в INI-файле (или вообще пользуешь уже созданные), один раз добавь себе на панель инструментов несколько кнопочек - и пользуйся - тут не место интерфейсу. Smile

Перевод синтаксиса:
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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Jun 03, 2010 23:50    Post subject: Reply with quote

MVV wrote:
Все настройки - в INI-файле
А как же окно help-a, появляющиеся при запуске без параметров? Smile
MVV wrote:
мне было лень писать по-русски
Это что-то с чем-то. Али ты не наш? В USA давно перебрался?Wink
MVV wrote:
В качестве подопытного окна используется последнее активное окно ТК.
В том смысле, что запущено несколько ТС-экземпляров?
MVV wrote:
За скрытие заголовка отвечает команда c0, там комментарий "Caption Off".
Я сразу так подумал, но "Caption"(надпись) не совсем-то логичное название, TitleBar обзовём его. Wink
MVV wrote:
Кстати, я же перечислил все команды управления окном - их там всего 4
Ну теперь-то отредактировал, вижу.)
MVV wrote:
Ну а если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.
Захочется ещё как! Особенно убирать строку заголовка. TwinKey с em_командой тоже сойдёт. Wink
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Jun 04, 2010 00:10    Post subject: Reply with quote

Даже стиль окна, применяющий заголовок, называется WS_CAPTION. Поэтому слово "caption" абсолютно корректное.

А по-русски лень писать, т.к. по-английски компактнее получается, да и сразу для всех, а не только для наших.

Все что можно было перевести, переведено в моем предыдущем посте.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Jun 04, 2010 00:17    Post subject: Reply with quote

MVV wrote:
Для переключения в режим выполнения действий добавьте параметр /ea, для переключения в режим выполнения команд - параметр /ei.
Это выполняется только при переводе из одного режима в другой или в начале нужно параметр обязательно указывать? Пример с убирание строки заголовка напиши, пож. Я пишу так %COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /i="%COMMANDER_PATH%\wincmd.ini" /ea c0. Парамет /i тут как-то должен фигурировать?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Jun 04, 2010 00:22    Post subject: Reply with quote

Параметр /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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Jun 04, 2010 00:27    Post subject: Reply with quote

Чего-то перерисовка rr не работает. Приходится сворачиватьи разворачивать окно дополнительно.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Jun 04, 2010 00:35    Post subject: Reply with quote

А F2 нажать слабо? Laughing

Скачай обновленный файл тут же. При последней правке я вырезал и забыл вставить строчку команды rr (которая посылает cm_RereadSource). Very Happy

Кстати, обращу внимание, если еще не очевидно - все числовые значения параметров встроенных функций берутся из стандартных заголовочных файлов (например, в описании функции 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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Jun 04, 2010 01:09    Post subject: Reply with quote

MVV
Вот теперь другой коленкор. Пошаманю с остальными параметрами, что будет не так - отпишу. Но уже радует. В Twinkey повесил на старт, не хочет работать, буду пробовать с Autorun-oм. В любом случае более чем благодарен за оперативность, проделанный труд и потраченное не зря время!!! Респект!

MVV wrote:
А F2 нажать слабо? Laughing
Ну дык зачем мне несколько действий для такой простой задачи?
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2561

Post (Separately) Posted: Fri Jun 04, 2010 10:50    Post subject: Reply with quote

MVV wrote:
Пожалуй, если надо часто включать/выключать заголовок, будет удобнее иметь одну кнопку с командой:

Нельзя ли что-то подобное предусмотреть для действия? То есть, если действие вызывается во второй раз подряд, то вместо него выполнять его откат. Иначе, после двух вызовов одного действия в откате пусто.
Тогда и одной кнопкой было бы удобно обходиться для переключения.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Jun 04, 2010 11:15    Post subject: Reply with quote

Создай реверсивный набор команд, типа предложенной выше 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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Jun 04, 2010 11:46    Post subject: Reply with quote

MVV wrote:
Если хочется применять извращения при запуске ТК - юзай плагин Autorun.wdx.
Пищу в autorun.cfg поочерёдно строки:
ShellExec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ei c0 rr
CommandExec em_HideTitleBar
Ставил перед ними Sleep с разным значением. Как и в случае с TwinKey результата никакого.. Что с этим !архиважным! моментом делать?
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2561

Post (Separately) Posted: Fri Jun 04, 2010 11:49    Post subject: Reply with quote

MVV wrote:
Создай реверсивный набор команд

Спасибо! Работает.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Jun 04, 2010 12:09    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3 ... 128, 129, 130  Next
Page 1 of 130

 
Jump to:  
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