Страница 86 из 130
Добавлено: Сб ноя 22, 2014 10:59
ask-rus
Как будет выглядеть команда, вызывающая некоторую панель инструментов и прописывающая значение в wincmd.ini:
?
Моя не работает:
Код: Выделить всё
[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=Главная панель инструментов
Добавлено: Сб ноя 22, 2014 12:25
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)"
Добавлено: Сб ноя 22, 2014 14:09
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)"
Добавлено: Сб ноя 22, 2014 14:40
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)"
Добавлено: Сб ноя 22, 2014 17:14
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().
Добавлено: Сб ноя 22, 2014 17:51
Flasher
MVV опередил, почти то же самое хотел написать.
ask-rus
Так а
задача с умолчателным баром уже неактуальна?
Добавлено: Сб ноя 22, 2014 20:01
ask-rus
Спасибо за объяснения.
Flasher писал(а):Так а задача с умолчателным баром уже неактуальна?
Актуальна, вернёмся к ней как только, так сразу. Здесь уточнял/корректировал для себя некоторые моменты.
Добавлено: Вт ноя 25, 2014 10:50
Flasher
MVV писал(а):Не думаю, что сообщение с cd поддерживает фильтрацию, я и так из него выжал всё, что можно.
Да вот не всё. Переход к именам без путей (в т.ч. в виртуальных папках), например, не реализован, а мне он сейчас был бы очень кстати.
Кстати, в ТС есть ограничение:
cd-переход по имени к элементу списка виртуальной папки работает только из комстроки.
Добавлено: Вт ноя 25, 2014 11:17
MVV
Flasher писал(а):Да вот не всё. Переход к именам без путей (в т.ч. в виртуальных папках), например, не реализован, а мне он сейчас был бы очень кстати.
Значит, он не поддерживается этим сообщением. А в чём сложность дописать путь к имени, чтобы переход работал?
Flasher писал(а):Кстати, в ТС есть ограничение: cd-переход по имени к элементу списка виртуальной папки работает только из комстроки.
Думаю, по логичным причинам сообщение смены каталога и командная строка тотала принимают только полные пути: непонятно, какая копия тотала получит сообщение, и что в ней будет означать голое имя файла.
Добавлено: Вт ноя 25, 2014 11:24
Flasher
MVV писал(а):Значит, он не поддерживается этим сообщением.
Почему? Обычный вызов
cd <имя файла>, например, с кнопки работает без проблем.
MVV писал(а):А в чём сложность дописать путь к имени, чтобы переход работал?
В том, что неизвестен путь. Только имя.
MVV писал(а):Думаю, по логичным причинам сообщение смены каталога и командная строка тотала принимают только полные пути
Т.е.? Я описал как раз особенность с точностью до наоборот.
Добавлено: Вт ноя 25, 2014 12:09
MVV
Flasher писал(а):MVV писал(а):Значит, он не поддерживается этим сообщением.
Почему? Обычный вызов
cd <имя файла>, например, с кнопки работает без проблем.
С кнопки, но не отправленный тоталу через сообщение WM_COPYDATA. С кнопки и с встроенной комстроки он тебе просто вызывает внутреннюю функцию, в которой всё работает, и к которой извне доступа нет.
Flasher писал(а):В том, что неизвестен путь. Только имя.
Если файл на панели, известен и путь, а если нет - то удивляюсь, как тотал справляется.
Flasher писал(а):MVV писал(а):Думаю, по логичным причинам сообщение смены каталога и командная строка тотала принимают только полные пути
Т.е.? Я описал как раз особенность с точностью до наоборот.
Я имел в виду параметры командной строки экзешника тотала.
Добавлено: Вт ноя 25, 2014 12:14
Flasher
MVV писал(а):С кнопки, но не отправленный тоталу через сообщение WM_COPYDATA.
Жаль.
MVV писал(а):а если нет - то удивляюсь, как тотал справляется.
С чем справляется?
MVV писал(а):
Я имел в виду параметры командной строки экзешника тотала.
Ясно, но это другое.
Добавлено: Вт ноя 25, 2014 17:40
MVV
С чем справляется?
С фокусировкой файла не знамо в какой папке.
Использовать в аккурат панель с комстрокой можно только через ж...окнопрыг.
Добавлено: Вт ноя 25, 2014 19:54
Flasher
MVV писал(а):С фокусировкой файла не знамо в какой папке.
Ты же сам выше подтвердил. /ef "tem(`em_cd <имя файла>\:`)"
И тут же недоработка с Юникодом. Например, если имя файла àéÿüĄŀĦĤŕž☠.ext, то знаки заменятся на другие, и будет задействован фильтр с наличием "?".
В случае вызова em_cd стандартным образом этого глюка не происходит.
Заодно см.
про намёк.
Добавлено: Вт ноя 25, 2014 21:53
MVV
О-па, про em_cd я забыл. С ней даже работает:) Но у неё, да, проблема в том, что WM_COPYDATA для юзер-команд не поддерживает юникод, в отличие от WM_COPYDATA для смены каталога, которой можно слать UTF-8 с BOM.