TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

HEXFIX
Сообщения: 177
Зарегистрирован: Пт июн 25, 2010 19:54
Откуда: Калининград

Сообщение HEXFIX »

Flasher
У меня не работает такая схема: "Alt автоматически по умолчанию должен вызывать главное меню при его скрытии."
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

Flasher
Не помогло
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

HEXFIX
А какая работает? Поставь MenuMode=0 в ini для библиотеки.

HA3APET
Хм. Странно. А так:
/ef "show(3) run_action(fs3_0), test(hasCaption) | show(3) run_action(fs3_1)"

Код: Выделить всё

[Actions]
fs3_0=c0 cl0 db0 tb0 sb0 kb0 th0 t1
fs3_1=c1 cl1 db1 tb1 sb1 kb1 th1 t0
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

Flasher
Нет. Дождёмся ответа автора, вполне вероятно, что это не возможно.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

HA3APET
Это возможно. Возможно даже большее. См. мою статью на WIKI.
И, кстати, проверил только что на чистом ТС с копипастом привёдённых мной строк - всё работает чётко.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

Flasher
Сделай пожалуйста видео того, что у тебя получилось.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

HA3APET
Тут автор объявился, пусть он что-то своё добавит. Делать видео - лень, кое-чем другим занят, но я бы посоветовал пользоваться некогда обсуждаемым подходом, где используется режим "восстановить", но с растянутым по абсолюту окном (без съедания). В моей статье есть команды, кот. это реализуют.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

HEXFIX писал(а):Flasher
У меня не работает такая схема: "Alt автоматически по умолчанию должен вызывать главное меню при его скрытии."
Команду сокрытия меню нужно вызвать ЕДИНОЖДЫ. Например, из Autorun.cfg (выполнить внутреннюю команду тотала с индексом, соответствующим HideMainMenu, по умолчанию равным 65538). Всё. Далее при стандартных настройках меню само будет временно появляться при нажатии клавиши Alt, и исчезать снова при выходе из меню, команд по включению/выключению меню уже вызывать не нужно. При каждом изменении языка интерфейса нужно снова вызывать команду сокрытия.

HA3APET
По логике, полноэкранный режим отличается от развернутого отсутствием заголовка окна (остальные элементы в полноэкранном режиме - кому как удобно). Чтобы скрыть заголовок, нужно вызвать команду c0. После неё необходимо что-то изменить в расположении окна, чтобы тотал перерисовал окно без заголовка (включить или выключить какую-нибудь панель, изменить размер окна и т.п.). По идее, в твоей команде должно быть достаточно модификаторов, чтобы это работало. В любом случае, можно принудительно перерисовать окно, нажав F2 (Ctrl+R). Также можно вызывать команду rm1pm после вызова c0 или c1, чтобы заставлять тотал перерисовать окно.

Далее, если ты хочешь при возврате из полноэкранного режима попадать в тот, который был до перехода в полный экран, тебе необходимо использовать команды отката. Посмотри, как реализована команда fs2 в TCFS2.ini - она всегда возвращает всё на свои места при повторном запуске, т.к. запускает действие возврата изменений, сделанных при предыдущем запуске. Ты можешь подправить действие fs под свои нужды, а можешь подправить команду fs2 (или скопировать с новым именем и отредактировать), вставив вместо run_action(fs) вызов нужных действий или команд для перехода в полноэкранный режим (ну и поменять имя команды отката fs_undo, чтобы откаты не пересекались). Остальное будет работать автоматически.

Если же надо, чтобы и панель задач сама скрывалась, тут придется принудительно восстанавливать и разворачивать окно повторно после отключения заголовка - похоже, система отказывается считать полноэкранными окна, заголовок которых был скрыт после разворачивания. Т.е., используем команды m0 c0 m1.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Если же надо, чтобы и панель задач сама скрывалась, тут придется принудительно восстанавливать и разворачивать окно повторно после отключения заголовка - похоже, система отказывается считать полноэкранными окна, заголовок которых был скрыт после разворачивания. Т.е., используем команды m0 c0 m1.
Да, тут действительно какая-то фигня получается (мелкософт, БОН):

Код: Выделить всё

[Actions]
fs3_0=c0 cl0 db0 tb0 sb0 kb0 m0 th0 m1
fs3_1=c1 cl1 db1 tb1 sb1 kb1 th1 t0
При автоскрытии таскбара (как у меня) это не грозит.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

Сделал пока так

Код: Выделить всё

/ef "run_action(fs3_0), test(hasCaption && !isMaximized) | run_action(fs3_1)"
Вроде красиво и логично.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ничего логичного. ! - это оператор логического отрицания. Т.е. fs3_0 сработает только в случае, если окно восстановлено. Если оператор убрать, то действие сработает, только если окно развёрнуто. Красотой это никак не назовёшь. Дополнительное условие тут только мешает.
Мои примеры должны срабатывать без проблем. Ищи ошибку.
Да и панель задач в любом случае кроме как приведённым выше методом не скроешь.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

Flasher
По твоему примеру:
Да, из развёрнутого режима, по нажатию мы получаем полноэкранный, по повторному нажатию возвращаемся обратно в развёрнутый - всё как надо. Но если у нас восстановленный режим и мы нажимаем на кнопку, то получаем полноэкранный, опять же всё отлично, но при повторном нажатии мы не возвращаемся в восстановленный режим.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Чтобы восстанавливаться в правильный режим, надо использовать историю отката - я выше уже писал об этом. Когда TCFS2 выполняет команду m1, она запоминает, что при откате надо будет выполнить команду m0, и так везде, где откат прописан - а он прописан для всех стандартных команд в TCFS2.ini. Поэтому, чтобы восстанавливать именно в тот режим, который был, надо запускать действие отката - тогда TCFS2 при откате выполнит m0 только в случае, если она разворачивала окно при переходе в полноэкранный режим (если окно было развернуто, действие m0 в откат не попадёт).

Не используя откат, вернуть окно в состояние, предшествующее переключению, невозможно (разве что самому извращаться с условиями и записывать в wincmd.ini флаги).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

HA3APET писал(а):но при повторном нажатии мы не возвращаемся в восстановленный режим
А где об этом было написано? >>>
HA3APET писал(а):А при повторном нажатии возвращался в прежний вид, то есть в развёрнутый.
Я лично не вижу смысла использовать несколько переключалок (стандартную и TCFS2), лучше ограничиться одной, тогда смысла прыгать туда сюда не будет.
MVV писал(а):Чтобы восстанавливаться в правильный режим, надо использовать историю отката
Там всё утыкается в использование стандартных кнопок управления окном, нажатия которых никак в undo не запишутся.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

Можно закончить обсуждение на эту тему, спасибо за советы.
Меня вполне устраивает:

Код: Выделить всё

/d=5 /ef "run_action(fs3_0), test(hasCaption && !isMaximized) | run_action(fs3_1)"
fs3_0=c0 cl0 db0 tb0 sb0 kb0 th0 t1 m1 
fs3_1=c1 cl1 db1 tb1 sb1 kb1 th1 t0 m0
Ответить