Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Изменение цветовой схемы по горячей клавише или кнопке

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Rom



Joined: 23 Jul 2007
Posts: 5

Post (Separately) Posted: Mon Jul 23, 2007 22:14    Post subject: Изменение цветовой схемы по горячей клавише или кнопке Reply with quote

Рыл-рыл, так ничего похожего не нарыл. Rolling Eyes

Суть в том, что было бы здорово менять цветовую схему по горячей клавише. Скажем есть стандартная схема и схема где цвета файлов соответствуют дате их изменения. Было бы очень удобно и наглядно переключаться туд-сюда.
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Mon Jul 23, 2007 23:17    Post subject: Reply with quote

Очень сложно реализовать даже скриптом. Дело в том, что схема раскраски хранится как довольно запутанный набор ключей в wincmd.ini, и в одно время может существовать только одна схема. Даже если заменить схему в ini-файле, TC придётся перегружать, чтобы он перечитал её.
Для этих целей существует несколько программ, найти можно на wincmd.ru. Но по горячей клавише они отрабатывать не будут.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Rom



Joined: 23 Jul 2007
Posts: 5

Post (Separately) Posted: Mon Jul 23, 2007 23:54    Post subject: Reply with quote

Как насчёт плага, реально ли написать такой ?
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Tue Jul 24, 2007 00:19    Post subject: Reply with quote

Quote:
Как насчёт плага, реально ли написать такой?

А чем плагин будет отличаться от программы? Хоткеи плагинами не обрабатываются, перезагрузка TC всё равно обязательна. В общем - нет.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Tue Jul 24, 2007 00:47    Post subject: Reply with quote

D1P wrote:
Даже если заменить схему в ini-файле, TC придётся перегружать, чтобы он перечитал её.
Не обязательно. AFAIK, TC перечитывает соотв. часть инишника при загрузке диалога на изменение расцветки, а его можно вызвать скриптом (+Ok нажать).
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Tue Jul 24, 2007 02:05    Post subject: Reply with quote

Quote:
Не обязательно. AFAIK, TC перечитывает соотв. часть инишника при загрузке диалога на изменение расцветки, а его можно вызвать скриптом (+Ok нажать).

Согласен. Остаётся написать скрипт, который будет копировать заранее подготовленную схему раскраски в ini-файл (или просто перезаписывать файл, хотя это чревато потерей применённых настроек), и заставлять TC перечитывать схему. Это уже проще, чем предполагалось вначале, и, по крайней мере, вполне реализуемо.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Rom



Joined: 23 Jul 2007
Posts: 5

Post (Separately) Posted: Tue Jul 24, 2007 16:36    Post subject: Reply with quote

А у тотала нет внутренней команды, которая вызывает перечитку инишника в разделе Colors ? Как я понимаю если сделать скрипт он будет немного с леванцой, будет открывать окно настроек и жать OK?

Cогласитесь идея интересная, сортировка по столбцам это конечно хорошо, но возможность менять цветовые схемы "на лету" очень удобна в некоторых случаях.
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Tue Jul 24, 2007 19:51    Post subject: Reply with quote

Rom wrote:
А у тотала нет внутренней команды, которая вызывает перечитку инишника в разделе Colors ?
Если бы она была, мы бы уже давно тебе её сказали. Confused
Да, скрипт будет вызывать диалог и жать Ок в нём.
Back to top
View user's profile Send private message
Rom



Joined: 23 Jul 2007
Posts: 5

Post (Separately) Posted: Tue Jul 24, 2007 20:33    Post subject: Reply with quote

Всё-всё, но оффенс! Smile
Вы же не обязаны помогать, вдруг лень)

Да, в нынешнем варианте, это будет убого, пока откроется окно, пока нажмётся ОК. Это ужос, это не дело :/
Реально Гислера попросить добавить такую команду? Расширило бы функционал и удобство ведь такое прикольное.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2227
Location: Москва, Россия

Post (Separately) Posted: Wed Jul 25, 2007 11:31    Post subject: Reply with quote

Сделал на 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
View user's profile Send private message
Rom



Joined: 23 Jul 2007
Posts: 5

Post (Separately) Posted: Thu Jul 26, 2007 00:25    Post subject: Reply with quote

Не зря я всегда этот мультик обожал!
Спасибо, волк! Работает! Very Happy

Хотя конечно способ марсианский, окно схем открывается и остаётся довольно приличное количество времени на экране. Если бы Гислер добавил команду было бы намного лучше. Подбросьте ему идейку, это не так сложно реализовать. Smile
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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