| 
 
	
		| 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: 2974
 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: 2974
 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: |   |  
				| 
 |  
				| Не обязательно. AFAIK, TC перечитывает соотв. часть инишника при загрузке диалога на изменение расцветки, а его можно вызвать скриптом (+Ok нажать). 	  | D1P wrote: |  	  | Даже если заменить схему в ini-файле, TC придётся перегружать, чтобы он перечитал её. | 
 |  |  
		| Back to top |  |  
		|  |  
		| D1P 
 
  
 Joined: 20 Dec 2004
 Posts: 2974
 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: 2229
 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
 
 |