|
Title | DetectColorFilter |
File Name | DetectColorFilter.txt |
Description | Determine which color filter(s) is/are used for the current file/directory |
Author | Vochomurka |
Parameters | ("%P", "%N") |
Plugins Called | win, childwin, ini, tc, osd, vec, clip, file |
Icon | |
Version | 2.0 |
Updated on | 08.06.2009 |
args Path, Obj local hwnd = win.handle("c=TTOTAL_CMD") local Config = "path\wincmd.ini" local ColorKeys = ini.enum_keys(Config, "Colors") local Counter = line(ColorKeys, 0) local Panel = ifelse(tc.active(hwnd) == "left", 8, 7) local TMLB = childwin.handle(hwnd, "TMyListBox", Panel) local i, j, OneKey, Str v = vec.create(0, 1) if(not v) do messagebox("ok error", "Vector not created", "VEC plugin error #1") quit endif for(i = 1; i <= Counter; i++) OneKey = line(ColorKeys, i) if(index(OneKey, "ColorFilter") != 0 && revindex(OneKey, "Color") == 1) do OneKey = ini.get(Config, "Colors", OneKey) vec.insert(v, vec.length(v), OneKey) endif endfor Counter = vec.length(v) if(not Counter) do Str = "No color filter is specified in configuration" messagebox("ok warning", Str, "DetectColorFilter Script") vec.destroy(v) quit endif w = vec.create(0, 1) if(not w) do messagebox("ok error", "Vector not created", "VEC plugin error #2") quit endif win.sendmessage(hwnd, 0x400+51, 524, 0) ColorKeys = clip.get if(file.isfolder(Path ++ Obj)) do Obj ++= "\" flag set 1 else flag clear 1 endif for(i = 0; i < Counter; i++) osd.show(i + 1 ++ " / " ++ Counter, "INFINITE", "30", "Arial", "-1", "255 000 000") for(win.class(win.getfocus()) != "TMyListBox") endfor win.postmessage(hwnd, 0x400+51, 521, 0) for(win.class(win.getfocus()) == "TMyListBox") endfor OneKey = win.getfocus() for(win.class(OneKey) != "Edit") OneKey = win.getfocus() endfor win.settext(OneKey, v[i]) keys {enter} for(win.class(OneKey) == "Edit") OneKey = win.getfocus() endfor OneKey = win.getfocus() win.sendmessage(OneKey, 245, 0, 0) for(win.class(win.getfocus()) == "Button") win.sendmessage(win.getfocus(), 245, 0, 0) endfor OneKey = win.sendmessage(TMLB, 0x0190, 0, 0) if(OneKey) do clip.clear win.postmessage(hwnd, 0x400+51, 2017, 0) wait.for(clip.get) Str = clip.get for(j = 1; j <= OneKey; j++) if(line(Str, j) == Obj) do Panel = ini.get(Config, "Colors", "ColorFilter" ++ i + 1) vec.insert(w, 0, Panel) endif endfor win.postmessage(hwnd, 0x400+51, 524, 0) endif endfor osd.hide() clip.set(ColorKeys) Panel = vec.length(w) if(not Panel) do Str = "Are you really sure the file/directory " ++ Obj ++ " is colored?" messagebox("ok warning", Str, "No appropriate color filter found") vec.destroy(v) vec.destroy(w) quit endif OneKey = Panel ++ " color filters found for " OneKey = OneKey ++ ifelse(pproflag(1), "directory ", "file ") ++ Obj Str = "" for(i = Panel - 1; i >= 0; i--) for(j = 1; j <= Counter; j++) if(v[j - 1] == w[i]) do Str = Str ++ "Color filter #" ++ j ++ ": " Str = Str ++ remove(w[i], 1) ++ esc(?+\n+, ?+\+) endif endfor endfor messagebox("ok information", Str, OneKey) vec.destroy(v) vec.destroy(w)
Attention! This script does not work in Total Commander 7.5 pb1 and pb2!
This script for Total Commander 7.0 and older.
One of ways to distinguish files/directories is to preset a so-called color filter (Configuration\Color\Define colors by file type). Such filter can be very complex basing on name, extension, date, content plugin data, etc. Unfortunately, Total Commander does not allow to learn the color filter name(s) for specific file. It could be a problem especially if there are many color filters. Moreover, a single file can meet criteria of some filters at once. In this case the filter priority matters.
Place the cursor on the file/directory of interest and run the script. If in the current panel there was some selection, it will be lost. It would be a good idea not to switch to other applications until any dialog box is displayed. All color filters applicable for the current file will be listed with their priorities.
All Scripts | Total Commander | TotalCmd.net | PowerPro |