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 

Вкл./Выкл. подсвечивания новых файлов
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
DoctorIkari



Joined: 28 Feb 2010
Posts: 53
Location: Nihon

Post (Separately) Posted: Wed Jun 04, 2014 19:27    Post subject: Вкл./Выкл. подсвечивания новых файлов Reply with quote

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

P.S. Есть подозрение, что такую кнопку можно реализовать средствами тотала, но... это только подозрения Smile
_________________
The right man in the wrong place can make all the difference in the world... (hl2)
Back to top
View user's profile Send private message Yahoo Messenger
Avada



Joined: 01 Aug 2008
Posts: 10415
Location: Россия, Саратов

Post (Separately) Posted: Wed Jun 04, 2014 19:54    Post subject: Reply with quote

DoctorIkari
Надеюсь, известно, откуда эта подсветка новых объектов берётся и как вообще работает. (Если не очень, рекомендуется поиск по форуму, например, по имени плагина Age, а также вдумчивое чтение справки, особенно в части касательно "выше/ниже в списке".) Да, подсветка новых файлов не будет перекрывать подсветку по другим критериям, если находится ниже в списке. Но много ли от неё тогда будет толку? Либо новые файлы подсвечиваются специфическим цветом, потому что они новые, либо сохраняют цвет для своего типа, заданный в настройках, и ничем по подсветке не отличаются от старых. Или-или. Что предлагается? Какую-то про счёту строку в диалоговом списке вверх/вниз каким-то скриптом таскать, что ли? Теоретически можно придумать всё, но в удобстве и успешности этой затеи не уверен.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Jun 04, 2014 20:42    Post subject: Reply with quote

Avada wrote:
Какую-то про счёту строку в диалоговом списке вверх/вниз каким-то скриптом таскать, что ли?
Можно и не скриптом, достаточно TCFS2.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Wed Jun 04, 2014 21:45    Post subject: Reply with quote

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

Если не таскать строки, а просто полностью включить/отключить подсветку - то несложно организовать скриптом Autohotkey - сделать одной командой/кнопокой, срабатывать будет без перезапуска Тотала.
Нужно только знать как выглядит соответствующая запись в секции [Colors] и название файла, в котором эта секция расположена.
_________________
Windows 11 | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
DoctorIkari



Joined: 28 Feb 2010
Posts: 53
Location: Nihon

Post (Separately) Posted: Wed Jun 04, 2014 22:45    Post subject: Reply with quote

LonerD, к сожалению, с Autohotkey не работал.
http://forum.wincmd.ru/viewpost.php?p=14123
Тут говорится про то, что ищем Totalcmd.inc команду... но таскать строки - такой команды нет. А без перетаскивания вообще ничего не понятно.
Подскажите, если не сложно Smile
_________________
The right man in the wrong place can make all the difference in the world... (hl2)
Back to top
View user's profile Send private message Yahoo Messenger
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Jun 04, 2014 23:57    Post subject: Reply with quote

LonerD wrote:
то несложно организовать скриптом Autohotkey
Я бы так не сказал, поскольку каждый раз придётся менять порядковый номер у всех последующих ключей. Скорость от такого подхода точно не возрастёт, внутренний инструмент сделает это куда быстрее, поэтому перетаскивание и актуально.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Thu Jun 05, 2014 03:29    Post subject: Reply with quote

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

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

Code:
;================================================================
; Вкл/выкл. подсвечивание файлов за датою
; Версия скрипта: 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

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



Если имеется несколько ключей (например, два), ответственных за изменение раскраски даты, то заменяем фрагмент
Code:
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

на
Code:
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. Обновил снова. Теперь не нужно указывать значения ключа, ответственного за подсветку по дате, он просто комментируется.

_________________
Windows 11 | TC DreamLair eternal pre-α


Last edited by LonerD on Fri Jun 06, 2014 02:19; edited 3 times in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Jun 05, 2014 04:48    Post subject: Reply with quote

LonerD
Code:
if ( DateColor = "Bebebe" )
{
  IniWrite, НЕСтарше1часа, % ColorsINI, Colors, ColorFilterX
}
else
{
  IniWrite, Bebebe, % ColorsINI, Colors, ColorFilterX
}
Смену значения ключа с самого начала проверял, но почему-то выдавало общий цвет текста. Сейчас вроде бы нет. Хм. Тогда никакой перебор номеров и не нужен, ошибся я.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10415
Location: Россия, Саратов

Post (Separately) Posted: Thu Jun 05, 2014 08:23    Post subject: Reply with quote

LonerD
Flasher
Загляните, пожалуйста, в ЛС.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
DoctorIkari



Joined: 28 Feb 2010
Posts: 53
Location: Nihon

Post (Separately) Posted: Thu Jun 05, 2014 20:40    Post subject: Reply with quote

LonerD, прошу прощения, никак не могу подогнать скрипт.
TC 8.51a. Цветовые схемы я создавал не из списка по умолчанию (добавил "не старше 1 дня" и "не старше 1 часа").
В Totalcmd.inc хранятся стандартные команды. А как тогда применять пользовательские и как подправить скрипт?
Спасибо.
_________________
The right man in the wrong place can make all the difference in the world... (hl2)
Back to top
View user's profile Send private message Yahoo Messenger
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Thu Jun 05, 2014 21:10    Post subject: Reply with quote

DoctorIkari
Я обновил скрипт. Теперь уже вручную не нужно указывать значения ключей.
Quote:
как подправить скрипт

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

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

Пользовательские команды в AutoHotkey-скрипте можно использовать с помощью такой функции.

_________________
Windows 11 | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2692

Post (Separately) Posted: Fri Jun 06, 2014 00:35    Post subject: Reply with quote

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

Кнопка с использованием утилиты TCFS2:
Code:
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.
Back to top
View user's profile Send private message
DoctorIkari



Joined: 28 Feb 2010
Posts: 53
Location: Nihon

Post (Separately) Posted: Fri Jun 06, 2014 02:06    Post subject: Reply with quote

Все равно не понятно.
Для начала попробовал прикрутить чего-нибудь системного. Вроде не меняется.
Code:
; Включаем-отключаем подсвечивание
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
Code:
[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

Даже с системными командами не получается чего-то.
Если не затруднит - напишите, пожалуйста, скрипт для данного частного случая. Sad
_________________
The right man in the wrong place can make all the difference in the world... (hl2)
Back to top
View user's profile Send private message Yahoo Messenger
sa



Joined: 29 Apr 2009
Posts: 2692

Post (Separately) Posted: Fri Jun 06, 2014 07:59    Post subject: Reply with quote

DoctorIkari wrote:
ColorFilter4=>Не старше 1 часа
...
ColorFilter5=>Не старше 1 дня

Случай , когда шаблон ">Не старше 1 часа" идёт четвёртым, а шаблон ">Не старше 1 дня" - пятым.
Кнопка:
Code:
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
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jun 07, 2014 00:33    Post subject: Reply with quote

Та же схема, но только без мацания лишнего ключа и с более быстрым окнепрыгом:
Code:
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 должен быть из последнего релиза.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Sat Jun 07, 2014 01:52; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
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