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

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

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

Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Как будет выглядеть команда, вызывающая некоторую панель инструментов и прописывающая значение в wincmd.ini:

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

[TCFS2]
Bar=0
?
Моя не работает:

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

[em_MainBar]
cmd=%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe
param=/ef "set_tcini(TCFS2,Bar,0) tcm(OPENBAR %COMMANDER_PATH%\BAR\MAIN.bar)"
menu=Главная панель инструментов
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

ask-rus
Можно создать в TC вспомогательную пользовательскую команду em_OpenMainBar:

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

[em_OpenMainBar]
cmd=OPENBAR %COMMANDER_PATH%\BAR\MAIN.bar
и использовать её в команде em_MainBar:

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

/ef "set_tcini(TCFS2,Bar,0) tem(em_OpenMainBar)"
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

sa
Как-то не хочется дублировать пользовательские команды, ведь чисто визуально они выполняют одно и то же.

Но, если нет другого варианта, пожалуй, так и поступлю.

Добавлено спустя 22 минуты:

Ещё один момент.
Есть кнопка:

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

[em_SwitchBar]
cmd=%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe
param=/ef "set_tcini(TCFS2,Bar,0) tem(em_MainBar), tcini(TCFS2,Bar,#!=0) | set_tcini(TCFS2,Bar,1) tem(em_ExtBar)"
menu=Переключить панель инструментов
set_tcini(TCFS2,Bar,0) - установка значения
tem(em_MainBar) - открытие панели
tcini(TCFS2,Bar,#!=0) - проверка значения
set_tcini(TCFS2,Bar,1) - установка значения
tem(em_ExtBar) - открытие панели

Не могли бы пояснить, почему проверка значения в середине строки, а не в начале? Ведь сначала проверяем, какая панель инструментов открыта, чтобы открыть другую...
При попытке установить проверку в начало, команда становится нерабочей...
Например так:

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

param=/ef "tcini(TCFS2,Bar,#!=0), set_tcini(TCFS2,Bar,0) tem(em_MainBar) | set_tcini(TCFS2,Bar,1) tem(em_ExtBar)"
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

ask-rus писал(а):Как-то не хочется дублировать пользовательские команды
Можно создание временной вспомогательной команды (em_temp) поручить TCFS2. Тогда em_MainBar будет такой:

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

/ef "set_tcini(TCFS2,Bar,0) set_ini(`%%COMMANDER_PATH%%\usercmd.ini`, em_temp, cmd, `OPENBAR %%COMMANDER_PATH%%\BAR\MAIN.bar`) tem(em_temp)"
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

ask-rus писал(а):Моя не работает:
Именованные команды с параметрами невозможно напрямую вызывать из TCFS2, но можно для них создать параметризованные em-команды (по одной на одну именованную команду), например:

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

[em_exec]
cmd=%COMMANDER_PATH%\Plugins\FileSystem\VirtualPanel\Exec.exe
param=%A
[em_Cd]
cmd=cd
param=%A
[em_OpenCustomView]
cmd=OPENCUSTOMVIEW
param=%A
[em_SyncOpen]
cmd=SYNCOPEN
param=%A
Теперь из TCFS2 можно вызывать эти em-команды и передавать им параметры.

Но, возвращаясь к исходному вопросу, сама по себе команда OPENBAR лишь переключает на панель, но не прописывает её в конфиг, т.е. активирует временно. Чтобы эффект стал постоянным, надо из TCFS2 прописать её в конфиг.
ask-rus писал(а):Не могли бы пояснить, почему проверка значения в середине строки, а не в начале?
Могли бы. Потому что в Readme русским языком сказано, каким должен быть формат команды, плюс есть куча примеров (см. раздел 1.2). Сначала идёт набор действий, потом идёт проверяемое условие, потом идёт опциональный набор действий отката. А палка позволяет задать несколько таких штуковин подряд, при этом после первой же сработавшей обработка дальнейших прекращается. Итак,

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

<сделать то-то и то-то>, <если верно такое-то условие>, <и записать в откат то-то и то-то> | <или же сделать то-то и то-то>, <если верно такое-то условие>, <и тогда записать в откат то-то и то-то> | ...
После /ef команды указываются в таком же формате, как и в секции [Items], но допустимы и короткие варианты, не содержащие проверяемых условий и действий отката. А условия можно проверять и с помощью if().
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV опередил, почти то же самое хотел написать.

ask-rus
Так а задача с умолчателным баром уже неактуальна?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Спасибо за объяснения.
Flasher писал(а):Так а задача с умолчателным баром уже неактуальна?
Актуальна, вернёмся к ней как только, так сразу. Здесь уточнял/корректировал для себя некоторые моменты.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Не думаю, что сообщение с cd поддерживает фильтрацию, я и так из него выжал всё, что можно.
Да вот не всё. Переход к именам без путей (в т.ч. в виртуальных папках), например, не реализован, а мне он сейчас был бы очень кстати.

Кстати, в ТС есть ограничение: cd-переход по имени к элементу списка виртуальной папки работает только из комстроки.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher писал(а):Да вот не всё. Переход к именам без путей (в т.ч. в виртуальных папках), например, не реализован, а мне он сейчас был бы очень кстати.
Значит, он не поддерживается этим сообщением. А в чём сложность дописать путь к имени, чтобы переход работал?
Flasher писал(а):Кстати, в ТС есть ограничение: cd-переход по имени к элементу списка виртуальной папки работает только из комстроки.
Думаю, по логичным причинам сообщение смены каталога и командная строка тотала принимают только полные пути: непонятно, какая копия тотала получит сообщение, и что в ней будет означать голое имя файла.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Значит, он не поддерживается этим сообщением.
Почему? Обычный вызов cd <имя файла>, например, с кнопки работает без проблем.
MVV писал(а):А в чём сложность дописать путь к имени, чтобы переход работал?
В том, что неизвестен путь. Только имя.
MVV писал(а):Думаю, по логичным причинам сообщение смены каталога и командная строка тотала принимают только полные пути
Т.е.? Я описал как раз особенность с точностью до наоборот.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher писал(а):
MVV писал(а):Значит, он не поддерживается этим сообщением.
Почему? Обычный вызов cd <имя файла>, например, с кнопки работает без проблем.
С кнопки, но не отправленный тоталу через сообщение WM_COPYDATA. С кнопки и с встроенной комстроки он тебе просто вызывает внутреннюю функцию, в которой всё работает, и к которой извне доступа нет.
Flasher писал(а):В том, что неизвестен путь. Только имя.
Если файл на панели, известен и путь, а если нет - то удивляюсь, как тотал справляется.
Flasher писал(а):
MVV писал(а):Думаю, по логичным причинам сообщение смены каталога и командная строка тотала принимают только полные пути
Т.е.? Я описал как раз особенность с точностью до наоборот.
Я имел в виду параметры командной строки экзешника тотала.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):С кнопки, но не отправленный тоталу через сообщение WM_COPYDATA.
Жаль. :(
MVV писал(а):а если нет - то удивляюсь, как тотал справляется.
С чем справляется?
MVV писал(а): Я имел в виду параметры командной строки экзешника тотала.
Ясно, но это другое.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

С чем справляется?
С фокусировкой файла не знамо в какой папке.

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

Сообщение Flasher »

MVV писал(а):С фокусировкой файла не знамо в какой папке.
Ты же сам выше подтвердил. /ef "tem(`em_cd <имя файла>\:`)"

И тут же недоработка с Юникодом. Например, если имя файла àéÿüĄŀĦĤŕž☠.ext, то знаки заменятся на другие, и будет задействован фильтр с наличием "?".
В случае вызова em_cd стандартным образом этого глюка не происходит.

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

Сообщение MVV »

О-па, про em_cd я забыл. С ней даже работает:) Но у неё, да, проблема в том, что WM_COPYDATA для юзер-команд не поддерживает юникод, в отличие от WM_COPYDATA для смены каталога, которой можно слать UTF-8 с BOM.
Ответить