Кнопка для изменения цветовой схемы TC

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

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

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

Сообщение Flasher »

cojoc
Стоит заметить, что в таком случае придётся создавать в этих секциях кучу дублирующих строк, которых наверняка будет больше, чем требуемых. Допустим, сменных цветов нужно 20, а цветовых шаблонов штук 70. Это получается, что в каждой секции должно быть примерно по 160 строк, всего в двух секциях - 320, из которых реально нужно 20. Ну, и какой вариант предпочтительней? :wink:
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Flasher
Ну, и какой вариант предпочтительней?
Я использую "Поочерёдное переключение двух цветовых схем.vbs" от Flasher :) - он мне сейчас больше подходит, т.к. отличных цветов у меня мало.

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

Сообщение Flasher »

cojoc
Я не думаю, что найдётся много пользователей, у которых несовпадающих значений будет больше хотя бы половины. Ну, а пользоваться средствами ТС можно при любом варианте.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Вариант ранее предлагавшегося скрипта, но без использования внешней утилиты (TCMC). Для вызова диалога настройки цветов необходимо назначить комбинацию клавиш (в рассматриваемом варианте это Ctrl+9) для команды cm_ColorConfig (делается через меню Конфигурация >Настройка > Разное). Поскольку уже имеется 10 нажатий клавиш из скрипта, то и одиннадцать не намного больше…

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

'  Описание: Переключает цвета в TC, переименовывая друг в друга секции [Colors] и [Colors2]
'Требования: Для вызова внутренней команды cm_ColorConfig назначить комбинацию клавиш Ctrl+9
'-------------------------------------------------------------------------------------------
Option Explicit
Dim FSO, WSH, F, Str1 , Str2, Text
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
F = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings("%COMMANDER_INI%"))
Str1 = vbNewLine & "[Colors]"
Str2 = vbNewLine & "[Colors2]"
Text = FSO.OpenTextFile(F, 1).ReadAll
If InStr(1, Text, vbNewLine & "C+9=cm_ColorConfig", 1) > 0 Then
  Text = Replace(Text, Str1, Str1 & "#", 1, -1, 1)
  Text = Replace(Text, Str2, Str1, 1, -1, 1)
  Text = Replace(Text, Str1 & "#", Str2, 1, -1, 1)
  FSO.OpenTextFile(F, 2).Write Text
  WSH.SendKeys "^9+{TAB 5}  {ENTER}"         ' ^9 - вызов cm_ColorConfig комбинацией Ctrl+9
  If InStr(1, Text, "activeTitle", 1) > 0 Then WSH.SendKeys "{TAB 2}"
Else
  MsgBox "Назначьте на Ctrl+9 команду cm_ColorConfig", vbOKOnly + vbCritical,"Ошибка"
End If
Set WSH = Nothing
Set FSO = Nothing
WScript.Quit
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):но без использования внешней утилиты (TCMC). Для вызова диалога настройки цветов необходимо назначить комбинацию клавиш (в рассматриваемом варианте это Ctrl+9
:shock: Как можно отказываться от утилиты в пользу каких-то, неизвестно на что назначенных горячих клавиш?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

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

Сообщение Flasher »

sa, какой гипотезой? Ты о чём?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher
Будем считать, что это вариант для тех противников внешних утилит, кто ещё не назначил команду для Ctrl+9 или может подправить скрипт (либо поинтересоваться, как подправить) под свою свободную горячую клавишу.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):Будем считать, что это вариант для тех противников внешних утилит
Вот я поэтому и спросил, откуда такие странные приоритеты? Ты же для себя в первую очередь делаешь.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

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

Сообщение Flasher »

sa
Просто если дело сводить к замене на эмуляцию клавиш, то это нужно тогда для всех скриптов с утилитами предлагать по варианту с клавишами. Кому нужны эти лишние заморочки? К тому же в отношении эмуляций у меня мнение схожее с мнением Batya, т.е. против, и применяю их только в крайнем случае, когда нет более приемлемой альтернативы.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

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

Сообщение Flasher »

sa
Каких 8 из 9 случаев? Откуда такое количество? Я всего 3 скрипта тут опубликовал, в 2-ух из которых есть метод SendKeys, необходимый в диалогах.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Каких 8 из 9 случаев?
У тебя один вызов диалога утилитой и 8 эмуляций в нём: "+{TAB 5} ~". А у меня и того больше (10 эмуляций): "+{TAB 5} {ENTER}{TAB 2}".
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Мысль состояла в осмысленности применения, а не использовании как таковом.
Нажатия - это случаи? Мда.. Ладно, завязываем...
Ответить