Вкл./Выкл. подсвечивания новых файлов

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

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

Аватара пользователя
DoctorIkari
Сообщения: 53
Зарегистрирован: Вс фев 28, 2010 10:44
Откуда: Nihon
Контактная информация:

Вкл./Выкл. подсвечивания новых файлов

Сообщение DoctorIkari »

Здравствуйте.
Новые фалы/папки подсвечиваются цветом. Довольно удобная фича. Но если, к примеру, присутствует необходимость определять файлы визуально по их цвету в зависимости от расширения, то подсветка новых файлов перекрывает другие правила. Как это можно обойти без переключения настроек вручную?
Спасибо.

P.S. Есть подозрение, что такую кнопку можно реализовать средствами тотала, но... это только подозрения :)
The right man in the wrong place can make all the difference in the world... (hl2)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

DoctorIkari
Надеюсь, известно, откуда эта подсветка новых объектов берётся и как вообще работает. (Если не очень, рекомендуется поиск по форуму, например, по имени плагина Age, а также вдумчивое чтение справки, особенно в части касательно "выше/ниже в списке".) Да, подсветка новых файлов не будет перекрывать подсветку по другим критериям, если находится ниже в списке. Но много ли от неё тогда будет толку? Либо новые файлы подсвечиваются специфическим цветом, потому что они новые, либо сохраняют цвет для своего типа, заданный в настройках, и ничем по подсветке не отличаются от старых. Или-или. Что предлагается? Какую-то про счёту строку в диалоговом списке вверх/вниз каким-то скриптом таскать, что ли? Теоретически можно придумать всё, но в удобстве и успешности этой затеи не уверен.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada писал(а):Какую-то про счёту строку в диалоговом списке вверх/вниз каким-то скриптом таскать, что ли?
Можно и не скриптом, достаточно TCFS2.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Вкл./Выкл. подсвечивания новых файлов
Если не таскать строки, а просто полностью включить/отключить подсветку - то несложно организовать скриптом Autohotkey - сделать одной командой/кнопокой, срабатывать будет без перезапуска Тотала.
Нужно только знать как выглядит соответствующая запись в секции [Colors] и название файла, в котором эта секция расположена.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
DoctorIkari
Сообщения: 53
Зарегистрирован: Вс фев 28, 2010 10:44
Откуда: Nihon
Контактная информация:

Сообщение DoctorIkari »

LonerD, к сожалению, с Autohotkey не работал.
http://forum.wincmd.ru/viewpost.php?p=14123
Тут говорится про то, что ищем Totalcmd.inc команду... но таскать строки - такой команды нет. А без перетаскивания вообще ничего не понятно.
Подскажите, если не сложно :)
The right man in the wrong place can make all the difference in the world... (hl2)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD писал(а):то несложно организовать скриптом Autohotkey
Я бы так не сказал, поскольку каждый раз придётся менять порядковый номер у всех последующих ключей. Скорость от такого подхода точно не возрастёт, внутренний инструмент сделает это куда быстрее, поэтому перетаскивание и актуально.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Flasher
Универсальности тут быть не может. Нельзя сделать единый скрипт, который бы работал без модификаций на любых Тоталах, потому как различаются названия ключей (номера ключей) и их значения. Потому можно сделать только варианты для частного случая. Задачи перетаскивания не было поставлено в изначальном вопросе. Нужно просто полностью отключать определённое правило в цветовой схеме, а если оно уже отключено - включить.

DoctorIkari
Набросал вот такой вариант для TC 8.51a.
Работа в старых версиях возможна, но не проверялась (всё зависит ).
Вместо ColorFilterX указать свой ключ с шаблоном поиска (или ключи если таковых несколько, потому и оставил фигурные скобки).
В скрипте предусмотрено определение битности Тотала, определение положения ini-файла настроек (в случае редиректа) скрытие всех операций (чтобы не мельтешили перед глазами). Кратковременное "моргание" окошка настроек и курсора (в некоторых случаях) побороть скорее всего не представляется возможным. За качество кода попрошу не выражаться.
В случае несрабатывания можно попробовать изменить значения команды SetKeyDelay и SetControlDelay.
Сохранить скрипт в текстовый файл с любым именем (например, Script.ahk). Скачать AutoHotkey, распаковать и запустить
Autohotkey.exe Script.ahk
(можно повесить на панель инструментов или сделать пользовательскую ем-комманду).

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

;================================================================
; Вкл/выкл. подсвечивание файлов за датою
; Версия скрипта: 1.2
; Дата створення: 2014.06.05
; Автор скрипта: LonerD
;================================================================
#NoEnv
#NoTrayIcon
#SingleInstance ignore
SetKeyDelay, 50, 50
SetControlDelay, 20

if WinActive( "ahk_class TTOTAL_CMD" )
{
EnvGet, commander_path, commander_path
EnvGet, commander_ini, commander_ini

; Определяем редирект секции цветов
IniRead, RedirectColors, % commander_ini, Colors, RedirectSection, 0 
Transform, ColorsINI, Deref, % (RedirectColors ? RedirectColors : commander_ini) 

; Определяем битность ТС и задаём переменные
WinGet, TCHWND, ID, ahk_class TTOTAL_CMD
WinGet, TCControls, ControlList, ahk_id %TCHWND%
Loop, Parse, TCControls, `n, `r
{
  if ((A_LoopField = "TMyListBox1") || (A_LoopField = "TMyListBox2"))
  {
    TCheckBox2 := "TCheckBox2"
    TButton35 := "TButton35"
    TButton37 := "TButton37"
    break
  }
  else
  {
    TCheckBox2 := "Button5"
    TButton35 := "Button14"
    TButton37 := "Button16"
  }
}

; Блокируем перерисовку окна
DllCall("LockWindowUpdate", "uint", TCHWND)

; Включаем-отключаем подсвечивание
IniRead, DateColor, % ColorsINI, Colors, ColorFilterX
StringReplace, DateColor, DateColor, %A_Space%-Commented-Bebebe, , UseErrorLevel
if ErrorLevel = 0
{
  DateColor := DateColor . " -Commented-Bebebe"
}
IniWrite, % DateColor, % ColorsINI, Colors, ColorFilterX

; Вызываем окно настроек, делаем его прозрачным и нажимаем кнопки
PostMessage, 0x433, 494,,, ahk_class TTOTAL_CMD
WinWait, ahk_class TDLGCONFIGALL
WinSet, Transparent, 0, ahk_class TDLGCONFIGALL
Sleep, 50
ControlFocus, % TCheckBox2, ahk_class TDLGCONFIGALL
ControlSend, % TCheckBox2, {Space}, ahk_class TDLGCONFIGALL
ControlFocus, % TButton35, ahk_class TDLGCONFIGALL
ControlSend, % TButton35, {Space},  ahk_class TDLGCONFIGALL
ControlFocus, % TCheckBox2, ahk_class TDLGCONFIGALL
ControlSend, % TCheckBox2, {Space},  ahk_class TDLGCONFIGALL
ControlFocus, % TButton35, ahk_class TDLGCONFIGALL
ControlSend, % TButton35, {Space},  ahk_class TDLGCONFIGALL
ControlFocus, % TButton37, ahk_class TDLGCONFIGALL
ControlSend, % TButton37, {Space},  ahk_class TDLGCONFIGALL

; Контрольная проверка
IfWinNotActive, ahk_class TTOTAL_CMD
{
  ControlFocus, % TButton37, ahk_class TDLGCONFIGALL
  ControlSend, % TButton37, {Space},  ahk_class TDLGCONFIGALL
}
; Разблокируем окно ТС
DllCall("LockWindowUpdate", "uint", 0)
}
Exit

;================================================================

Если имеется несколько ключей (например, два), ответственных за изменение раскраски даты, то заменяем фрагмент

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

IniRead, DateColor, % ColorsINI, Colors, ColorFilterX 
 StringReplace, DateColor, DateColor, %A_Space%-Commented-Bebebe, , UseErrorLevel 
 if ErrorLevel = 0 
 { 
   DateColor := DateColor . " -Commented-Bebebe" 
 } 
 IniWrite, % DateColor, % ColorsINI, Colors, ColorFilterX
на

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

IniRead, DateColor1, % ColorsINI, Colors, ColorFilterX
IniRead, DateColor2, % ColorsINI, Colors, ColorFilterY
StringReplace, DateColor, DateColor, %A_Space%-Commented-Bebebe, , UseErrorLevel
if ErrorLevel = 0
{
  DateColor1 := DateColor1 . " -Commented-Bebebe"
  DateColor2 := DateColor2 . " -Commented-Bebebe"
}
IniWrite, % DateColor1, % ColorsINI, Colors, ColorFilterX
IniWrite, % DateColor2, % ColorsINI, Colors, ColorFilterY
, где ColorFilterX, ColorFilterY - имена ключей в вашем файле конфигурации.
Upd. Обновил. Слегка подчистил индусский код.
Upd2. Обновил оптять. Добавил автоопределение наличия редиректа секции ini-файла.
Upd3. Обновил снова. Теперь не нужно указывать значения ключа, ответственного за подсветку по дате, он просто комментируется.
Последний раз редактировалось LonerD Пт июн 06, 2014 02:19, всего редактировалось 3 раза.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD

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

if ( DateColor = "Bebebe" ) 
{ 
  IniWrite, НЕСтарше1часа, % ColorsINI, Colors, ColorFilterX 
} 
else 
{ 
  IniWrite, Bebebe, % ColorsINI, Colors, ColorFilterX 
}
Смену значения ключа с самого начала проверял, но почему-то выдавало общий цвет текста. Сейчас вроде бы нет. Хм. Тогда никакой перебор номеров и не нужен, ошибся я.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

LonerD
Flasher
Загляните, пожалуйста, в ЛС.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
DoctorIkari
Сообщения: 53
Зарегистрирован: Вс фев 28, 2010 10:44
Откуда: Nihon
Контактная информация:

Сообщение DoctorIkari »

LonerD, прошу прощения, никак не могу подогнать скрипт.
TC 8.51a. Цветовые схемы я создавал не из списка по умолчанию (добавил "не старше 1 дня" и "не старше 1 часа").
В Totalcmd.inc хранятся стандартные команды. А как тогда применять пользовательские и как подправить скрипт?
Спасибо.
The right man in the wrong place can make all the difference in the world... (hl2)
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

DoctorIkari
Я обновил скрипт. Теперь уже вручную не нужно указывать значения ключей.
как подправить скрипт
Нужно исправить только имена ключей ColorFilterX на свои (под которыми в ini-файле прописаны шаблоны раскраски в зависимости от даты/времени).

А как тогда применять пользовательские

Пользовательские команды в AutoHotkey-скрипте можно использовать с помощью такой функции.
Windows 11 | TC DreamLair eternal pre-α
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

DoctorIkari писал(а):Цветовые схемы я создавал не из списка по умолчанию (добавил "не старше 1 дня" и "не старше 1 часа")
Кнопка с использованием утилиты TCFS2:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "if(tcini(TCFS2, ColorOff, 0, 0), set_tcini(Colors, ColorFilter2, `>Выкл не старше 1 часа`) + set_tcini(Colors, ColorFilter3, `>Выкл не старше 1 дня`) + set_tcini(TCFS2, ColorOff, 1), set_tcini(Colors, ColorFilter2, `>не старше 1 часа`) + set_tcini(Colors, ColorFilter3, `>не старше 1 дня`) + set_tcini(TCFS2, ColorOff, 0)) tcm(494, 1) delay(500) send(`+{TAB 5}  {ENTER}`, findwnd(`TDLGCONFIGALL`))"
wcmicons.dll,20
Выкл/вкл подсвечивание файлов не старше 1 часа и не старше 1 дня


-1
Кнопка приведена для случая , когда в диалоге цветов для типов файлов, шаблон ">не старше 1 часа" идёт вторым сверху, а шаблон ">не старше 1 дня" - третьим. Если порядковые номера другие, то имена ключей ColorFilter2 и ColorFilter3 (каждый в двух местах строки параметров), надо соответствующим образом заменить.
При экспериментах с кнопкой стоит сохранить копию wincmd.ini.
Аватара пользователя
DoctorIkari
Сообщения: 53
Зарегистрирован: Вс фев 28, 2010 10:44
Откуда: Nihon
Контактная информация:

Сообщение DoctorIkari »

Все равно не понятно.
Для начала попробовал прикрутить чего-нибудь системного. Вроде не меняется.

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

; Включаем-отключаем подсвечивание
IniRead, DateColor1, % ColorsINI, Colors, 3312
IniRead, DateColor2, % ColorsINI, Colors, 3313
StringReplace, DateColor, DateColor, %A_Space%-Commented-Bebebe, , UseErrorLevel
if ErrorLevel = 0
{
  DateColor1 := DateColor1 . " -Commented-Bebebe"
  DateColor2 := DateColor2 . " -Commented-Bebebe"
}
IniWrite, % DateColor1, % ColorsINI, Colors, 3312
IniWrite, % DateColor2, % ColorsINI, Colors, 3313
Зато нашёл куда пишет цветовые схемы. В моём случае: d:\SYSTEM\Total Commander\Plugins\exe\colors\colors\tce-dark-grey.ini

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

[Colors]
BackColor2=7237230
ColorFilter1=>Обозначение файлов с комментариями
ColorFilter1Color=6881077
BackColor=6381921
ForeColor=-1
InverseCursor=0
InverseSelection=0
MarkColor=-1
CursorColor=65280
CursorText=0
ColorFilter2=>Пустые каталоги
ColorFilter2Color=11529
ColorFilter3=>Неверная дата
ColorFilter3Color=15079967
ColorFilter4=>Не старше 1 часа
ColorFilter4Color=9804543
ColorFilter5=>Не старше 1 дня
ColorFilter5Color=14145535
ColorFilter6=*.bak
ColorFilter6Color=65280
ColorFilter7=>Изображения
ColorFilter7Color=16750591
ColorFilter8=>Исполняемые файлы
ColorFilter8Color=4226815
ColorFilter9=*.key
ColorFilter9Color=12254640
ColorFilter10=>Аудио-файлы
ColorFilter10Color=33023
ColorFilter11=>Видео-файлы
ColorFilter11Color=7012351
ColorFilter12=>Системные файлы (атрибут)
ColorFilter12Color=64
ColorFilter13=>Архивы
ColorFilter13Color=1553675
ColorFilter14=>Документы, книги
ColorFilter14Color=16758711
ColorFilter15=*.ini
ColorFilter15Color=45232
ColorFilter16=*.txt
ColorFilter16Color=16777215
Даже с системными командами не получается чего-то.
Если не затруднит - напишите, пожалуйста, скрипт для данного частного случая. :(
The right man in the wrong place can make all the difference in the world... (hl2)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

DoctorIkari писал(а):ColorFilter4=>Не старше 1 часа
...
ColorFilter5=>Не старше 1 дня
Случай , когда шаблон ">Не старше 1 часа" идёт четвёртым, а шаблон ">Не старше 1 дня" - пятым.
Кнопка:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "if(tcini(TCFS2, ColorOff, 0, 0), set_tcini(Colors, ColorFilter4, `>Выкл Не старше 1 часа`) + set_tcini(Colors, ColorFilter5, `>Выкл Не старше 1 дня`) + set_tcini(TCFS2, ColorOff, 1), set_tcini(Colors, ColorFilter4, `>Не старше 1 часа`) + set_tcini(Colors, ColorFilter5, `>Не старше 1 дня`) + set_tcini(TCFS2, ColorOff, 0)) tcm(494, 1) delay(500) send(`+{TAB 5}  {ENTER}`, findwnd(`TDLGCONFIGALL`))"
wcmicons.dll,20
Выкл/вкл подсвечивание файлов не старше 1 часа и не старше 1 дня


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

Сообщение Flasher »

Та же схема, но только без мацания лишнего ключа и с более быстрым окнепрыгом:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe
/ef "if(tcini(Colors,ColorFilter4,#)+tcini(Colors,ColorFilter5,#), set_tcini(Colors,ColorFilter4,`>Не старше 1 часа`) + set_tcini(Colors,ColorFilter5,`>Не старше 1 дня`), set_tcini(Colors,ColorFilter4,`4:`) + set_tcini(Colors,ColorFilter5,`5:`)) tcm(494,1) eval(send_wait(`+{TAB 5}  {TAB 5} {ESC}`,findwnd(`TDLGCONFIGALL`)))"
wcmicons.dll,13
Вкл./выкл. подсвечивание файлов не старше 1 часа и 1 дня
Используется исправленная TCFS2.exe. TCFS2.ini должен быть из последнего релиза.
Последний раз редактировалось Flasher Сб июн 07, 2014 01:52, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить