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

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

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

HankHank
Сообщения: 39
Зарегистрирован: Чт апр 15, 2010 16:35

Как присвоить сочетание клавиш иконке на панели инструментов

Сообщение HankHank »

Доброго времени присутствующим.

Интересует, можно ли присвоить сочетание клавиш иконке, созданной на панели инструментов TC?

К примеру, есть кнопка на панели, выполняющая сжатие 7Z с максимальной степенью сжатия:

Команда:
%COMMANDER_PATH%\Plugins\arc\7z\7zG.exe a -t7z –ssw
Параметры:
-mx9 -r %T%N.7z %P%S
Путь запуска:
%COMMANDER_PATH%\Plugins\arc\7Z\
Файл значка:
%COMMANDER_PATH%\Plugins\arc\7Z\7zG.exe

Можно ли присвоить этой кнопке сочетание клавиш?
Если нельзя с кнопкой, как иначе привязать сжатие этим архиватором к сочетанию клавиш?

Спасибо.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

HankHank
На панели инструментов создаются не иконки, а кнопки, причём никаких назначений клавиш кнопке, естественно, нет и быть не может.
Любое назначение клавиш в таких случаях делается по стандартному шаблону в два шага:
1. Создаётся пользовательская команда (с префиксом em_) в диалоге, очень похожем на диалог создания кнопки.
2. Этой команде назначается клавиатурный вызов.
Всё. Обсуждать тут, собственно, больше нечего, а к текущей теме вопрос практически не имеет отношения.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Scorpkoms
Сообщения: 27
Зарегистрирован: Пн мар 31, 2008 13:50
Откуда: Россия

Сообщение Scorpkoms »

Доброго времени уважаемые,есть консоль Локальная политика безопасности (secpol.msc)
хотел на кнопку поставить в ТС,но что то только по абсолютному пути запускается,а он уж
больно длинный.Переменные прописывал,не помогло,может я что то пропустил? Спасибо.
Win7_64,TC 9.51.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Scorpkoms
Замечание за нарушение правил форума с переносом сообщения куда следует из "Обмена кнопками", где подобные вопросы в принципе задаваться не должны, о чём говорилось уже многократно.
Даже самая богатая фантазия
Не представит себе наши безобразия.
ДругТогоСамого
Сообщения: 2
Зарегистрирован: Пн апр 03, 2023 15:48

Перемещение файлов каталога в родительский

Сообщение ДругТогоСамого »

Просидел уже 8 часов на форуме. Много полезного. Спасибо всем!

Что нужно: Скрипт или кнопка, при нажатии на которую перемещаются все файлы каталога в родительский. (И, в идеале, открывается окно родительской папки, та что уровнем выше и удаляется дочерняя пустая папка).

Поиском пользовался. Нашло 76 результатов. Пролистал 55 страниц. Потратил 8 часов. Проще спросить. )

Спасибо.
Аватара пользователя
Monarch-LFV
Сообщения: 360
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

ДругТогоСамого
Утилита TCIMG с кодом кнопки:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\TCIMG\TCIMG.exe
moves=%WL||:://0//(.+\\).+\\.+\\?//$1 tcimg=$cm2002 <IF> <info=d1"%p"//> = 0 <THEN> delsm="%p"||1||upd<1> <ENDIF>
%COMMANDER_PATH%\Plugins\exe\TCIMG\TCIMG.dll,66
Переместить выделенные объекты на уровень вверх и удалить родительскую папку, если она пустая (и так же если все подкаталоги пустые)
Путь до утилиты впишите ваш.
ДругТогоСамого
Сообщения: 2
Зарегистрирован: Пн апр 03, 2023 15:48

Сообщение ДругТогоСамого »

Monarch-LFV писал(а):Monarch-LFV
Спасибо
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

ДругТогоСамого
Без утилит.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Orion9
Кнопку попробовал, работает.
Может, пример команды не самый показательный: если команде cm_SwitchColorsByFileType (2957) назначить в кнопке значок, то TC будет сам отображать его по-разному, в зависимости от состояния ключа ColorFilters.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

sa
Вы правы. Пример не совсем удачный, т.к. он не раскрывает весь потенциал связки Autorun+TCFS2 для переключения иконок на кнопках панели инструментов, а ведь он огромен!

Например, можно использовать не только внутренние команды, но и пользовательские команды + скрипты со сложыми алгоритмами и действиями, которые будут записывать результат своей работы в ini-файл, а затем передавать его в Autorun. Ну а там уже можно раскрыть case по полной :)

Небольшой демо-эксперимент:

Четыре кнопки выпадающего меню из файла панели включают подсветку нужных файлов, меняя шаблон ColorFilter2, который располагается сразу за шаблоном Autorun (ColorFilter1=>Autorun) в секции цветов [Colors]. При этом иконка самого выпадающего меню переключается соответствующим образом через переменную %HIGHLIGHT_ICON%

autorun.cfg

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

SetMessageAction "HighlightMessage" SetColorFilter

Func SetColorFilter()
   IniRead /R sFilter %COMMANDER_INI% "Colors" "ColorFilter2" ">0"
   Switch sFilter
     Case ">0"
      SetEnv HIGHLIGHT_ICON "%COMMANDER_PATH%\Icons\Clsw\1.ico"
     Case ">Аудиодорожек > 1"
      SetEnv HIGHLIGHT_ICON "%COMMANDER_PATH%\Icons\Clsw\3.ico"
     Case ">2"
      SetEnv HIGHLIGHT_ICON "%COMMANDER_PATH%\Icons\Clsw\5.ico"
     Case ">Siblings"
      SetEnv HIGHLIGHT_ICON "%COMMANDER_PATH%\Icons\Clsw\4.ico"            
   EndSwitch 
   SendCommand 2945  
EndFunc

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

TOTALCMD#BAR#DATA
%Commander_Path%\Bars\test0001.bar

%HIGHLIGHT_ICON%


1
-1
test0001.bar

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

[Buttonbar]
Buttoncount=4
button1=%COMMANDER_PATH%\Icons\Clsw\1.ico
cmd1=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
param1=/ei hlt0
menu1=Выключить подсветку
button2=%COMMANDER_PATH%\Icons\Clsw\3.ico
cmd2=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
param2=/ei hlt1
path2=
iconic2
menu2=Аудиодорожек > 1
button3=%COMMANDER_PATH%\Icons\Clsw\5.ico
cmd3=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
param3=/ei hlt2
path3=
iconic3=
menu3=Кодек HEVC
button4=%COMMANDER_PATH%\Icons\Clsw\4.ico
cmd4=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
param4=/ei hlt_sib
path4=
iconic4=
menu4=Сиблинги
TCFS2.ini

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

hlt0=set_tcini(Colors, ColorFilter2, `>0`) tcm(2957, 1) tcm(2957, 1) msg(regmsg(HighlightMessage), 0, 0)
hlt1=set_tcini(Colors, ColorFilter2, `>Аудиодорожек > 1`) tcm(2957, 1) tcm(2957, 1) msg(regmsg(HighlightMessage), 0, 0)
hlt2=set_tcini(Colors, ColorFilter2, `>2`) tcm(2957, 1) tcm(2957, 1) msg(regmsg(HighlightMessage), 0, 0)
hlt_sib=set_tcini(Colors, ColorFilter2, `>Siblings`) tcm(2957, 1) tcm(2957, 1)  msg(regmsg(HighlightMessage), 0, 0)
[Searches]

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

Аудиодорожек > 1_SearchFor=
Аудиодорожек > 1_SearchIn=
Аудиодорожек > 1_SearchText=
Аудиодорожек > 1_SearchFlags=0|002002000020||||||||22220|0000|||
Аудиодорожек > 1_plugin="tcmediainfo.Stream Count.Audio only" > 1
2_SearchFor=
2_SearchIn=
2_SearchText=
2_SearchFlags=0|002002000020|||||||||0000|||
2_plugin="tcmediainfo.Video Format" contains evc
Siblings_SearchFor=
Siblings_SearchIn=
Siblings_SearchText=
Siblings_SearchFlags=0|002002000020|||||||||0000|||
Siblings_plugin=file.Sibling != ""
Шаблон ">0" не существует, поэтому при его выборе подсветка отключается. Пример, конечно, сыроват, но как демо подойдет :)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Orion9
иконки должны быть в виде отдельных файлов
Можно номер иконки из библиотеки задать непосредственно в кнопке, но альтернативные иконки (из разных библиотек) должны в этом случае иметь один и тот же номер (в примере это 79):

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "tcm(2957) msg(regmsg(ColorMessage)) tcm(2945)"
%COLOR_ICON%,79
Цвета для типов файлов: вкл/выкл


-1
Файлы значков (в autorun.cfg) WCMICONS.dll и WCMICON2.DLL.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

sa
Прикольно.

Так ведь можно и все значки одним махом поменять! Т.е. использовать разные группы значков для разных режимов, например, для более подходящего отображения в DarkMode. Что-то вроде:

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

Func SwitchDarkMode()
  SendCommand 2950   
   IniRead dMode %COMMANDER_INI% "Configuration" "DarkMode" 0
   If dMode = 0 Then
      SetEnv BAR_ICONS "%COMMANDER_PATH%\LIGHT.DLL"
   Else
      SetEnv BAR_ICONS "%COMMANDER_PATH%\DARK.DLL"
   EndIf   
  SendCommand 2945   
EndFunc
Kspeh
Сообщения: 26
Зарегистрирован: Сб апр 13, 2024 10:11

Сообщение Kspeh »

Кнопка для монтирования образа в виртуальный диск PowerISO
- а можно сделать то же самое, но чтобы монтировалось Alcohol Portable? Он безплатный.

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

Orion9
- спасибо. У меня выскакивает ошибка в строке кода 308:
timestamp := FileGetTime(main_bar)
- не удаётся найти указанный файл. И потом 350:
Local inibar := IniRead(main_bar, "Buttonbar")
Я переименовал бар по умолчанию в main_bar.bar и в main_bar.br2 но ничего не изменилось. Перемещал их в папку Bars - нашёл где-то в скрипте такой путь, создал папку, но безрезультатно. Подскажите, пожалуйста, как исправить.
И, кстати, хорошо бы добавить кнопку возвращения назад, на основной бар.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Kspeh
Я посмотрю.
А у вас главная панель где располагается? Попробуйте переименовать (или скопировать) ее просто в "Main.bar" и положить в папку Bars. Но в Wincmd.ini в секции [Buttonbar], в таком случае, должен быть ключ указывающий путь к панели по умолчанию (главной панели) Buttonbar=%Commander_Path%\Bars\Main.bar
Kspeh
Сообщения: 26
Зарегистрирован: Сб апр 13, 2024 10:11

Сообщение Kspeh »

Да, теперь работает, спасибо. Правильно, когда оно выглядит как баллоны с "i", 20 штук, если подвести курсор, то всплывает название плагина с датой обновления? Кнопку возврата в майн я сейчас сам у себя сделаю, но так-то неплохо было бы добавить, чтобы она уже была.
Успехов Вам.
Ответить