Orion9

|
Posted: Mon Dec 09, 2024 14:21 Post subject: |
|
|
Смена фона одним кликом - это, конечно, хорошо, но все-таки недостаточно: расцветка файлов из шаблонов поиска остается той же и сам фон при резком изменении контраста сливается с цветом текста, что делает его бесполезным.
Для полноценного использования нужна не просто смена фона, а смена всей цветовой схемы.
Казалось бы, простейшее решение - поменять редирект в секции Colors, и вуаля:
Code: | [Colors]
RedirectSection=%COMMANDER_PATH%\Ini\Colors.ini |
Но нет. Тотал не реагирует на такие трюки, пока не перезапустится. Поэтому пришлось выходить из ситуации переименованием ini-файлов.
Сейчас у меня, получается, три файла: Colors.ini, Colors2.ini и Colors3.ini. Каждый из которых содержит две секции из wincmd.ini - [Colors] и [ColorsDark]. В начале у каждого файла есть секция [ColorTheme], в которой находятся ключи описания темы, например:
Code: | [ColorTheme]
Name=White
Version=1.0
Description=Светлые тона
Instance=1
|
Или:
Code: | [ColorTheme]
Name=Black
Version=1.1
Description=Тёмные тона
Instance=2
|
Ключ Instance хранит номер темы, который используется для дальнейших расчетов при переключении на следующую тему.
Код еще сыроват (в нем нет должных проверок и возможности сохранять новые темы на лету), но уже вполне рабочий - со своей задачей цикличного переключения тем он справляется очень даже хорошо)
 Hidden text Code: | # переключение цветовой схемы
RegisterCommand 70051 "SwitchColors"
Func SwitchColors(lParam)
Local n = "Colors", f, p = %COMMANDER_PATH% & "\Ini\", _
num, theme, desc
# счетчик номеров
Static c = 0
# оригинальный файл в ТС
f = p & n & ".ini"
IniRead num %f% "ColorTheme" "Instance" 0
IniRead desc %f% "ColorTheme" "Description"
IniRead theme %f% "ColorTheme" "Name"
# lParam 0 - вызов из кнопки
If lParam = 0 And IsPressed (0x12) Then
ShowHint("Тема: " & theme & auCRLF & "Описание: " & desc & auCRLF & "Номер: " & num)
Return
EndIf
# текущий номер темы
c = num
If c >= 3 Then c = 0
# следующий номер темы
c += 1
# текущая -> предыдущая
prev_theme = p & n & num & ".ini"
# следующая по номеру тема
next_theme = p & n & c & ".ini"
# имя файла в ТС
tc_name = n & ".ini"
prev_name = n & num & ".ini"
next_name = n & c & ".ini"
If lParam = 0 And IsPressed (0x11) Then
ShowHint(prev_theme & auCRLF & next_theme)
Return
EndIf
If Not FileExist(next_theme) Then
ShowHint("Next number error: " & auCRLF & "File: " & next_theme)
Return
EndIf
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% '/c rename "%f%" %prev_name%'
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% '/c rename "%next_theme%" %tc_name%'
SendCommand 2957
SendCommand 2957
# lParam 1 - вызов с указанием параметра
If lParam = 1 Then
IniRead num %f% "ColorTheme" "Instance" 0
IniRead desc %f% "ColorTheme" "Description"
IniRead theme %f% "ColorTheme" "Name"
ShowHint("Тема: " & theme & auCRLF & "Описание: " & desc & auCRLF & "Номер: " & num)
EndIf
EndFunc |
 Кнопка TOTALCMD#BAR#DATA
70051
%COMMANDER_EXE%
Переключение темы|Alt - Информация о схеме|Ctrl - Отладочная информация
70051
Сделал себе пока три темы, сижу и кайфую) С детства мечтал переключать что-нибудь как хЫшный планетянин. И вот теперь благодаря могуществу Autorun эта мечта сбылась
 P.S. Мощь Autorun не знает границ (с) К.Гислер
 Disclaimer Конечно, такого он не говорил.
 Exclaimer Но думал  |
|