View previous topic :: View next topic |
Author |
Message |
Rom
Joined: 23 Jul 2007 Posts: 5
|
(Separately) Posted: Mon Jul 23, 2007 22:14 Post subject: Изменение цветовой схемы по горячей клавише или кнопке |
|
|
Рыл-рыл, так ничего похожего не нарыл.
Суть в том, что было бы здорово менять цветовую схему по горячей клавише. Скажем есть стандартная схема и схема где цвета файлов соответствуют дате их изменения. Было бы очень удобно и наглядно переключаться туд-сюда. |
|
Back to top |
|
 |
D1P

Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Jul 23, 2007 23:17 Post subject: |
|
|
Очень сложно реализовать даже скриптом. Дело в том, что схема раскраски хранится как довольно запутанный набор ключей в wincmd.ini, и в одно время может существовать только одна схема. Даже если заменить схему в ini-файле, TC придётся перегружать, чтобы он перечитал её.
Для этих целей существует несколько программ, найти можно на wincmd.ru. Но по горячей клавише они отрабатывать не будут. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
 |
Rom
Joined: 23 Jul 2007 Posts: 5
|
(Separately) Posted: Mon Jul 23, 2007 23:54 Post subject: |
|
|
Как насчёт плага, реально ли написать такой ? |
|
Back to top |
|
 |
D1P

Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Tue Jul 24, 2007 00:19 Post subject: |
|
|
Quote: | Как насчёт плага, реально ли написать такой? |
А чем плагин будет отличаться от программы? Хоткеи плагинами не обрабатываются, перезагрузка TC всё равно обязательна. В общем - нет. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
 |
funduk

Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Tue Jul 24, 2007 00:47 Post subject: |
|
|
D1P wrote: | Даже если заменить схему в ini-файле, TC придётся перегружать, чтобы он перечитал её. | Не обязательно. AFAIK, TC перечитывает соотв. часть инишника при загрузке диалога на изменение расцветки, а его можно вызвать скриптом (+Ok нажать). |
|
Back to top |
|
 |
D1P

Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Tue Jul 24, 2007 02:05 Post subject: |
|
|
Quote: | Не обязательно. AFAIK, TC перечитывает соотв. часть инишника при загрузке диалога на изменение расцветки, а его можно вызвать скриптом (+Ok нажать). |
Согласен. Остаётся написать скрипт, который будет копировать заранее подготовленную схему раскраски в ini-файл (или просто перезаписывать файл, хотя это чревато потерей применённых настроек), и заставлять TC перечитывать схему. Это уже проще, чем предполагалось вначале, и, по крайней мере, вполне реализуемо. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
 |
Rom
Joined: 23 Jul 2007 Posts: 5
|
(Separately) Posted: Tue Jul 24, 2007 16:36 Post subject: |
|
|
А у тотала нет внутренней команды, которая вызывает перечитку инишника в разделе Colors ? Как я понимаю если сделать скрипт он будет немного с леванцой, будет открывать окно настроек и жать OK?
Cогласитесь идея интересная, сортировка по столбцам это конечно хорошо, но возможность менять цветовые схемы "на лету" очень удобна в некоторых случаях. |
|
Back to top |
|
 |
funduk

Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Tue Jul 24, 2007 19:51 Post subject: |
|
|
Rom wrote: | А у тотала нет внутренней команды, которая вызывает перечитку инишника в разделе Colors ? | Если бы она была, мы бы уже давно тебе её сказали.
Да, скрипт будет вызывать диалог и жать Ок в нём. |
|
Back to top |
|
 |
Rom
Joined: 23 Jul 2007 Posts: 5
|
(Separately) Posted: Tue Jul 24, 2007 20:33 Post subject: |
|
|
Всё-всё, но оффенс!
Вы же не обязаны помогать, вдруг лень)
Да, в нынешнем варианте, это будет убого, пока откроется окно, пока нажмётся ОК. Это ужос, это не дело :/
Реально Гислера попросить добавить такую команду? Расширило бы функционал и удобство ведь такое прикольное. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2227 Location: Москва, Россия
|
(Separately) Posted: Wed Jul 25, 2007 11:31 Post subject: |
|
|
Сделал на vbs с использованием TC Script Helper.
Сначала скрипт для сохранения текущей цветовой схемы:
Code: | '=========================================================================================
' Копирование секций [COLORS] и [Searches] из wincmd.ini, путь к которому передан
' первым параметром, в ini-файл, имя которого передано вторым параметром.
' Третьим параметром нужно передать название создаваемой схемы.
' В ini-файле-приемнике секции сохраняются:
' [COLORS] -> [{Имя схемы}] и [Searches] -> [Srch:{Имя схемы}]
' Если в ini-файле-приемнике такие секции уже существует, они будут заменены.
' Пример вызова из TC:
' %COMMANDER_INI% %COMMANDER_PATH%\Utils\TCColPS\Presets.ini "Batya"
' ! Внимание ! Параметры с использованием переменных окружения необходимо указывать
' в строке "Команда", а не в строке "Параметры".
'========================================================================================
Option Explicit
If WScript.Arguments.Count < 3 Then
MsgBox "Неправильно заданы параметры!", _
vbOKOnly + vbCritical, _
"Копирование схемы настройки цветов TC"
WScript.Quit
End If
Dim FSO, TCS, Ini1, Ini2, Name, Colors, Searches
Ini1 = WScript.Arguments(0)
Ini2 = WScript.Arguments(1)
Name = WScript.Arguments(2)
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FileExists(Ini1) Then
MsgBox "Неправильно задан первый параметр - путь к wincmd.ini!", _
vbOKOnly + vbCritical, _
"Копирование схемы настройки цветов TC"
Set FSO = Nothing
WScript.Quit
End If
If Not FSO.FileExists(Ini2) Then
MsgBox "Неправильно задан второй параметр - путь к ini-файлу-приемнику!", _
vbOKOnly + vbCritical, _
"Копирование схемы настройки цветов TC"
Set FSO = Nothing
WScript.Quit
End If
Set FSO = Nothing
Set TCS = CreateObject("TCScript.Helper")
Colors = TCS.INIReadSection(Ini1, "COLORS" )
Searches = TCS.INIReadSection(Ini1, "Searches")
TCS.INIWriteSection Ini2, Name , Colors
TCS.INIWriteSection Ini2, "Srch:" & Name, Searches
Set TCS = Nothing
MsgBox "Операция завершена", _
vbOKOnly + vbInformation, _
"Копирование схемы настройки цветов TC"
WScript.Quit |
Второй скрипт непосредственно для установки нужной схемы:
Code: | '=========================================================================================
' Копирование секций [COLORS] и [Searches] в wincmd.ini, путь к которому передан
' первым параметром, из ini-файла, имя которого передано вторым параметром.
' Третьим параметром нужно передать название копируемой схемы.
' Соответствие секций ini-файла-источника секциям wincmd.ini:
' [{Имя схемы}] -> [COLORS] и [Srch:{Имя схемы}] -> [Searches]
' Пример вызова из TC:
' %COMMANDER_INI% %COMMANDER_PATH%\Utils\TCColPS\Presets.ini "Batya"
' ! Внимание ! Параметры с использованием переменных окружения необходимо указывать
' в строке "Команда", а не в строке "Параметры".
'========================================================================================
Option Explicit
Dim Exclusion
'=============== Изменяемые параметры ===================================================
' Параметры секции [COLORS], значения которых НЕ копируются
Exclusion = Array("InverseCursor", "BackColor", "ForeColor", "MarkColor", _
"CursorColor", "CursorText", "InverseSelection", "CompareText", _
"CompareTextSel", "CompareBinary", "CompareBinarySel", "BackColor2")
'========================================================================================
If WScript.Arguments.Count < 3 Then
MsgBox "Неправильно заданы параметры!", _
vbOKOnly + vbCritical, _
"Копирование схемы настройки цветов TC"
WScript.Quit
End If
Dim FSO, TCS, Ini1, Ini2, Name, Colors, Searches, i, DimExcl, ExclVal()
DimExcl = UBound(Exclusion)
ReDim ExclVal(DimExcl)
Ini1 = WScript.Arguments(0)
Ini2 = WScript.Arguments(1)
Name = WScript.Arguments(2)
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FileExists(Ini1) Then
MsgBox "Неправильно задан первый параметр - путь к wincmd.ini!", _
vbOKOnly + vbCritical, _
"Копирование схемы настройки цветов TC"
Set FSO = Nothing
WScript.Quit
End If
If Not FSO.FileExists(Ini2) Then
MsgBox "Неправильно задан второй параметр - путь к ini-файлу-приемнику!", _
vbOKOnly + vbCritical, _
"Копирование схемы настройки цветов TC"
Set FSO = Nothing
WScript.Quit
End If
Set FSO = Nothing
Set TCS = CreateObject("TCScript.Helper")
For i = LBound(Exclusion) To DimExcl
ExclVal(i) = TCS.INIRead(Ini1, "COLORS", Exclusion(i), "")
Next
Colors = TCS.INIReadSection(Ini2, Name )
Searches = TCS.INIReadSection(Ini2, "Srch:" & Name)
If Len(Colors) > 0 Then
TCS.INIWriteSection Ini1, "COLORS" , Colors
End If
If Len(Searches) > 0 Then
TCS.INIWriteSection Ini1, "Searches", Searches
End If
For i = LBound(Exclusion) To DimExcl
If Len(ExclVal(i)) > 0 Then
TCS.INIWrite Ini1, "COLORS", Exclusion(i), ExclVal(i)
Else
TCS.INIDelete Ini1, "COLORS", Exclusion(i)
End If
Next
TCS.Pause = 0
TCS.SendCommand "cm_ColorConfig"
TCS.SendKeystroke "+{TAB 4} "
TCS.SendKeystroke "{ENTER}"
TCS.SendKeystroke "{TAB}"
TCS.SendKeystroke "{ENTER}"
Set TCS = Nothing
WScript.Quit |
|
|
Back to top |
|
 |
Rom
Joined: 23 Jul 2007 Posts: 5
|
(Separately) Posted: Thu Jul 26, 2007 00:25 Post subject: |
|
|
Не зря я всегда этот мультик обожал!
Спасибо, волк! Работает!
Хотя конечно способ марсианский, окно схем открывается и остаётся довольно приличное количество времени на экране. Если бы Гислер добавил команду было бы намного лучше. Подбросьте ему идейку, это не так сложно реализовать.  |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|