Обсуждение темы "Обмен кнопками"

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

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

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

Сообщение Flasher »

sa
Тут надо бы, чтобы команда подходила и тем и тем. Для правильной инверсии при первом выполнении после запуска ТС можно использовать следующие команды (заменить на соответствующие):

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

modeL=set_tcini(Left,ShowAllDetails,0) tcm(301), tcini(Left, ShowAllDetails, 1) | set_tcini(Left, ShowAllDetails, 1) tcm(302)
modeR=set_tcini(Right, ShowAllDetails, 0) tcm(301), tcini(Right, ShowAllDetails, 1) | set_tcini(Right, ShowAllDetails, 1) tcm(302)
Но это имеет смысл только для текущих вкладок. Остальные вкладки от этих условий уже не зависят, и там будет соотв. поведение с необходимостью повторного нажатия при несовпадении режима с предыдущей вкладкой, где команда переключения использовалась.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Но это имеет смысл только для текущих вкладок.
К тому же, если случайно перейти в другой режим не по этой команде, а иным способом, то тоже возникают накладки.
А посему – скрипт пока универсальнее. Ну и никто не отнимал такой могучий инструмент, как Ctrl+F1 или Ctrl+F2 - кстати тоже всего одно нажатие.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):К тому же, если случайно перейти в другой режим не по этой команде, а иным способом, то тоже возникают накладки.
Ну и что? После наличия это команды нет никакого смысла использовать стандартные варианты, с внутренними клавишами (Ctrl+F1/F2) в частности.
sa писал(а):А посему – скрипт пока универсальнее.
Не скажи. Нет портабельности, скорость весьма медленная в сравнении с моментальной инверсией при использовании этой команды TCFS2.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):нет никакого смысла использовать стандартные варианты, с внутренними клавишами (Ctrl+F1/F2)
Думаю, не все согласятся: привычка - дело святое.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):привычка - дело святое.
Как раз наоборот - вредное. :wink: Вчера только переназначил 5 разных клавиш, в одной близости. За неделю, думаю, освоюсь. А новую поставил - вообще про Ctrl+F1/F2 забыл уже, тянуться дальше. А что сложней, от того быстро отвыкаешь.

А вообще таких команд при желании можно воплотить несколько.

1. Только выделенное - / - всё

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

SwSelL=set_style(# & ~$00000004) tcm(312) tcm(529), style(# & $00000004) | set_style(# | $00000004) tcm(2023)
SwSelR=set_style(# & ~$00000008) tcm(312) tcm(529), style(# & $00000008) | set_style(# | $00000008) tcm(2023)
swsel=run_item(SwSelL), tcm(65551) | run_item(SwSelR); Показать только выделенное - / - всё
2. Первый набор колонок - / - краткий режим

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

column1L=set_tcini(left,SpecialView,0) tcm(301), tcini(left,SpecialView,#!=0) | set_tcini(left,SpecialView,3) tcm(271)
column1R=set_tcini(right,SpecialView,0) tcm(301), tcini(right,SpecialView,#!=0) | set_tcini(right,SpecialView,3) tcm(271)
sw_column1=run_item(column1L), tcm(65551) | run_item(column1R) ; Переключаться между первым набором колонок и кратким режимом
3. Файлы, созданные сегодня - / - все
Создаём шаблон Создано сегодня с помощью контентного плагина Today, записываем команду в секцию User файла wincmd.ini:
[user]
cmd1=cd >Создано сегодня
и переключаемся между этим фильтром и отображением всего:
swTodayL=set_style(# & ~$00000010) tcm(312), style(# & $00000010) | set_style(# | $00000010) tcm(701)
swTodayR=set_style(# & ~$00000020) tcm(312), style(# & $00000020) | set_style(# | $00000020) tcm(701)
swToday=run_item(swTodayL), tcm(65551) | run_item(swTodayR) ; Показать только созданное сегодня - / - всё
Красным отмечены совпадающие числа, которые должны соответствовать номеру команды для меню Запуск. Само меню (тем, кто не использует) включать, естественно, необязательно.

и т.п...

Способ построения всем ясен? Вперёд. Я себе уже набросал и назначил на хоткеи несколько..
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Иногда приходится копировать содержимое txt файлов. Создал кнопку:

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

TOTALCMD#BAR#DATA
cmd /c clip <
%P%N
wcmicons.dll,45
Копировать содержимое в буфер

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

Сообщение Flasher »

jentoso
%comspec% /c chcp 1251& clip <
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Flasher спасибо
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

MVV писал(а):В принципе, несложно плагин написать для Autorun. Берем текст нулевого элемента, он равен ".." для краткого и пользовательских режимов, и равен ".. что-то там" (третий символ - пробел) для полного, и равен пустой строке для эскизов. В принципе, можно даже текст не брать, а тупо длину текста - 0, 2 или больше 2.
Если нужно различать только краткий-не краткий режимы, то проще ориентироваться на стиль LBS_MULTICOLUMN. А если надо выяснить в каком именно режиме сейчас панель, так это именно то, что я делаю в TWinKey и там все далеко не так просто. Так, по памяти:
1. В корневом каталоге нулевой элемент может оказаться не ".."
2. Также это может быть "[..]"
3. А еще есть режимы комментов, branch и дерево.
4. Иногда при смене режимов, ТС не сразу начинает возвращать строку в новом формате а после некоторой задержки, связанной со временем заполнения панели информацией по файлам.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Спасибо за информацию, надо будет проверить это всё. Откровенно говоря, для меня вообще стало открытием, что тотал удаляет окно панели и создает на его месте новое при смене режима. А ведь достаточно было бы просто изменить содержимое или способ его отрисовки.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

MVV писал(а): надо будет проверить это всё.
Еще может оказаться что нулевого элемента вообще нету, пустая флешка, например. :)
В общем, поделись результатом проверок, пожалуйста. TWinKey, конечно, более-менее нормально определяет текущий режим, но если будет хорошая идея как это сделать надежнее буду только рад.
MVV писал(а):Откровенно говоря, для меня вообще стало открытием, что тотал удаляет окно панели и создает на его месте новое при смене режима.
Я тоже долго и безуспешно пытался понять причины этого.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

MVV писал(а):тотал удаляет окно панели и создает на его месте новое при смене режима.
Кстати при смене режима панели с помощью скрипта (с использованием TCS.LockTC ), смена режима, выражающаяся в перемигивании панели, практически незаметна в отличие от варианта с Ctrl+F1(Ctrl+F2) или с TCFS2.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Логично. А точнее заметна только в неактивной панели. LockTC для этого и нужен. Но в данном случае аргумент против скорости и портабельности невесомый.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

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

Сообщение Flasher »

sa
Да. Мелькание появляется именно там под конец отработки.
Ответить