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

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

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

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

rust,
Религия не запрещает прописать в параметрах send_wait нужный тебе класс TDupeSelForm вместо TCOMBOINPUT, раз у тебя поиск с дубликатами, а не простой.

sa,
Не вижу проблем в использовании макроса. А усложнять функцию send не хочется. К тому же, в макросе третий параметр имеет значение по умолчанию 5 секунд, чего я точно не сделаю для функции.
rust
Сообщения: 8
Зарегистрирован: Пт дек 27, 2013 08:49

Сообщение rust »

Да не стал заморачиваться, оставил send с задержкой работает стабильно. Кстати, победил-таки puntoswitcher - это ^ перед %~n1

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

start  "" "%COMMANDER_PATH%\addons\tcfs2.exe" /ef "tcm(3312,1) delay(100) send(`+(){DQ}^~(%~n1){BS 2}*{DQ}{ENTER}`)"
иначе вместо "абв где" подставляет "пить где" :) не помню на какой раскладке.
Гислер пишет что параметр %P в Search панели намеренно пустой, из спортивного интереса попробовал

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

/ef "if(null(%P), do_something, do_something_else)"
работает, как раз можно выбрать отправлять на TDupeSelForm или TCOMBOINPUT, может кому пригодится
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Если делать через батник, то %P%N будет работать верно в любом случае. А определение типа диалога через %P некорректно: диалог TDupeSelForm появляется только если выполнялся поиск дубликатов, при обычном поиске появляется диалог TCOMBOINPUT.
Аватара пользователя
oshizelly
Сообщения: 52
Зарегистрирован: Вт сен 04, 2012 14:08

Сообщение oshizelly »

Всем доброго дня/ночи!

Есть такая проблема. В видимой части окна TC иногда умещается не больше 1/2 от общей ширины панели, так как дисплей узкий, а колонок много и они широкие. Для того, чтобы посмотреть содержимое колонок, скрытых за правой границей окна, приходится сдвигать панель вправо. А посмотрев, сдвигать ее обратно влево к началу.

Штатно для этого можно использовать стрелки навигации курсора Left/Right, но они двигают панель ну о-о-очень маленькими шажками.

Поэтому нужен хоткей, который выполнял бы ту же функцию, что во многих текстовых программах клавиши [End] и [Home] - переместить фокус ввода в конец/начало строки.

Также пригодилась бы команда для дискретного перемещения влево/вправо на ширину одной колонки (по аналогии с командой в текстовых редакторах "переместить фокус к следующему/предыдущему слову" (Ctrl+Left/Right).

Мне посоветовали попросить помощи здесь, поскольку штатный функционал TC, похоже, не позволяет этого сделать, хотя хотелка вроде бы не самая экзотическая :o А TCFS2 такое может?

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

Сообщение Flasher »

oshizelly писал(а):хоткей, который выполнял бы ту же функцию, что во многих текстовых программах клавиши [End] и [Home] - переместить фокус ввода в конец/начало строки.
TCFS2 скроллбарами не управляет. Есть ScrollTC с горизонтальной прокруткой, но это уже мышиная история. А тут мы обходимся сдвигом сепаратора (ищем спецтему в Автоматизации).
oshizelly писал(а):команда для дискретного перемещения влево/вправо на ширину одной колонки
Текущие размеры колонок не поймать, поэтому пока не представляется возможным.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
oshizelly
Сообщения: 52
Зарегистрирован: Вт сен 04, 2012 14:08

Сообщение oshizelly »

Flasher
А тут мы обходимся сдвигом сепаратора (ищем спецтему в Автоматизации).
К сожалению, сдвиг сепаратора проблемы для меня не решает даже частично :( При описании задачи я забыл упомянуть (точнее, не посчитал существенным), что TC юзается в вертикальном режиме (панели одна над другой). Поэтому сдвиг сепаратора происходил бы в вертикальной плоскости вверх/вниз, никак не влияя на ширину панелей.

Неужели совсем ничего нельзя сделать :twisted:

(Чтобы было понята моя ситуация: вертикальный режим использую не от хорошей жизни. Это вынужденная мера, так как дисплей монитора имеет разрешение 1200 x 1920, то есть, он высокий, но узкий. При горизонтальном расположении и разделителе на 50% панели TC имели бы ширину 1200/2 = 600 px, что уже совсем ни в какие ворота.)

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

Сообщение MVV »

Попробуй новую TCFS2, обновив также и TCFS2Tools отсюда же. Добавил возможность получать дескрипторы панелей, так что можно посылать им сообщения, в том числе для скроллинга.

Пример прокрутки списка в левой панели на 3 страницы вперёд (в любом режиме):

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

TCFS2 /ei "scroll_list(1, 3)"
Пример горизонтальной прокрутки левой панели на 3 страницы вправо (в пользовательском режиме):

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

TCFS2 /ei "scroll_list_h(1, 3)"
Для возврата нужно прокручивать назад. Можно на 2 хоткея (к примеру, на Ctrl+Shift+Влево/Вправо) повесить прокрутку влево/вправо.

Если поиграться с сообщением WM_HSCROLL, можно сразу прокручивать в начало или конец без цикла, а можно наоборот уменьшить шаг прокрутки, прокручивая на несколько "юнитов" вместо страницы (размер "юнита", видимо, соответствует тому, насколько тотал прокручивает список по клавишам Влево/Вправо).
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Имеется такая кнопка:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "tcm(524) tcm(2017) send(`{TAB}`) delay(200) tcm(540) tcm(501,1) delay(200) send(`({BKSP}^V{ENTER})`, findwnd(`TFindFile`)) loop(if(findwnd(`TFindFile`)==0, 0, 0*sendmsg(findwnd(`TFindFile`), $104, $12, $1, 1)*sendmsg(findwnd(`TFindFile`), $104, $30, $1, 1)*delay(1000)+1)) if(findwnd(`TFindFile`)==0, tcm(3302) + send(`{TAB}`) + delay(200) + tcm(3101,1) + delay(200) + send(`%%о%%ц%%o%%p`, findwnd(`TInpComboDlg`)))"
WCMICONS.DLL,14
Копировать файл в папку/подпапки целевой панели с одноимённым файлом (вывод результатов поиска на панель по Alt-0 или "ручками")


-1
Работает, но не устраивает, в частности, что портит буфер из-за использования cm_CopyNamesToClip (2017) с последующей вставкой по Ctrl+V. Как поизящней передать имя файла под курсором в поле “Искать файлы:” в диалоге поиска?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А почему просто не написать %M вместо ^V? Курсор на основной панели останется на том же файле, поэтому %M должно сработать после перехода на другую панель, и tcm(2017) можно будет убрать.

А какие нажатия посылаются через WM_SYSKEYDOWN в кнопке? Просто Alt+0? Зачем тогда посылать нажатие Alt, если сообщение уже подразумевает, что его нажали? Можно только второе слать.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV
При использовании %N возникают проблемы с файлами, содержащими в имени, например скобки () или знак + .
Можно только второе слать.
Точно, учту.
Последний раз редактировалось sa Пт мар 21, 2014 16:07, всего редактировалось 1 раз.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Да, точно, модификаторы и скобки всё портят. Возможно, надо ввести специальный режим для send, чтобы слать юникод как есть.

Как вариант, можешь создать шаблон поиска и из TCFS2 в конфиг вписывать имя файла в нужном месте, а затем загружать шаблон через LOADSEARCH. Понадобится юзер-команда em_LoadSearch с командой LOADSEARCH и параметром %A. Получится что-то вроде (я использовал шаблон с именем 0):

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

/ef "set_tcini(searches, 0_SearchFor, `%N`) tem(`em_LOADSEARCH 0`)"
Кстати, даже если шаблона не было, всё работает. Плохо, если шаблон был, и был со специфическими параметрами.

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

А вообще, попробуй этот билд, я добавил чисто юникодный режим отправки, когда все служебные символы игнорируются. Включается режим добавлением собаки перед строкой отправляемых символов (как в C#):

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

/ef "tcm(501,1) delay(200) send(@`%~%+-!:)%^&$% jgfj gGG приВет`, findwnd(`TFindFile`))"
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

С юникодным режимом лучше, чем с шаблоном поиска: и городить всего меньше и нет проблем с поиском только в выделенных файлах/каталогах, как в том случае.

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "send(`{TAB}`) delay(200) tcm(540) tcm(501,1) delay(200) send(`({BKSP})`, findwnd(`TFindFile`)) send(@`%N`, findwnd(`TFindFile`)) send(`({ENTER})`, findwnd(`TFindFile`)) loop(if(findwnd(`TFindFile`)==0, 0, 0*sendmsg(findwnd(`TFindFile`), $104, $30, $1, 1)*delay(1000)+1)) tem(em_SelTrgFile) delay(200) tcm(2023) send(`{TAB}`) delay(200) tcm(3101,1) delay(200) send(`%%о%%ц%%o%%p`, findwnd(`TInpComboDlg`))"
WCMICONS.DLL,14
Копировать в папку/подпапки целевой панели, содержащие файл одноимённый с файлом под курсором


-1
Теперь и буфер цел, и в исходной панели (как и в целевой) можно сразу выделять несколько файлов/папок для копирования. Спасибо!
Последний раз редактировалось sa Сб мар 22, 2014 01:09, всего редактировалось 2 раза.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Кстати, send(`({BKSP})`, findwnd(`TFindFile`)) не нужна: текст в поле ввода выделяется автоматически, когда оно получает фокус, поэтому любой ввод в него стирает прежнее содержимое.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Пожалуй да, подправил. Раньше при вставке из буфера таким образом затирался старый буфер, если курсор оказывался на [..]

Add
И всё-таки {BKSP} пригодится и теперь для случая с [..].
Убрал ещё лишний if в конце и заменил выделение всех найденных файлов на выделение по точному соответствию имени (потребуется пользовательская команда em_SelTrgFile с командой SELECTFILES и параметром "%M").
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Что там по старому?

tcd реально расширить до фильтрации? Или будем em_ плодить?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить