|
Название | WDXdetect |
Имя файла (*.txt) | WDXdetect.txt |
Описание | Загружает пользовательский вид для текущей директории |
Автор | Вахмурка |
Параметры | ("%P") |
Вызываемые плагины | win, ini, vec, file |
Иконка | |
Версия | 1.1 |
Дата обновления | 07.02.2006 |
local NewLine = esc(?+\r\n+, ?+\+) local Path = arg(1) local Config = "путь\wincmd.ini" local Settings = "путь\WDXdetect.ini" local hwnd = win.handle("c=TTOTAL_CMD") local Temp = ini.get(Config, "CustomFields", "Titles") Temp = replacechars(Temp, "|", NewLine) v = vec.createfromlines(Temp) local Plugins = vec.length(v) local Str, i, j flag clear 1 if(file.validpath(Path ++ "descript.ion") == 1) do local Hand = file.open(Path ++ "descript.ion", "r") if(Hand > 1) do for(not(file.eof(Hand))) Str = file.readstring(Hand) if(index(Str, ":") == "1") do file.close(Hand) flag set 1 break endif endfor if(pproflag(1)) do for(i = 0; i < Plugins; i = i + 1) if(index(Str, v[i]) != 0) do Temp = 271 + i win.postmessage(hwnd, 0x400+51, Temp, 0) vec.destroy(v) quit endif endfor endif else messagebox("ok error", "File not opened", "FILE plugin error") quit endif endif ;Sub_ParsePath - имя скрипта ParsePath local Depth = runfile.Subs\Sub_ParsePath(Path, "") Path = remove(Path, -1) for(j = 1; j < Depth; j = j + 1) if(ini.check_exists(Settings, "Dirs", Path) == 3) do Str = ini.get(Settings, "Dirs", Path) for(i = 0; i < Plugins; i = i + 1) if(index(Str, v[i]) != 0) do Temp = 271 + i win.postmessage(hwnd, 0x400+51, Temp, 0) vec.destroy(v) quit endif endfor endif Str = file.folder(remove(Path, -1)) Path = Str endfor vec.destroy(v)
На обоих форумах Total Commander, которые я посещаю - русскоязычном и англоязычном - с регулярностью и настойчивостью, заслуживающих куда более полезных приложений, появляется один и тот же запрос: автоматическая загрузка "пользовательского вида" (custom view) на основе content-плагинов. Разумеется, предлагаемый скрипт не решает поставленной задачи, а лишь совершает первое приближение к этому решению.
При нажатии кнопки на панели или горячей клавиши происходит переход к тому пользовательскому виду, который сам пользователь считает наиболее подходящим для текущей директории. Задание вида может происходить двумя способами.
Способ первый. В директории должен находиться файл descript.ion, содержащий следующую строчку:
:CustomView
где CustomView - название пользовательского вида. Это название содержится в ключе Titles раздела [CustomFields] файла конфигурации wincmd.ini. Проще всего получить список всех видов, щелкнув право кнопкой крысы на Tabstop header (не знаю, как это по-русски). Вот скриншот:
Наконец, третий способ получить список - открыть меню Configuration\Options\Custom Columns.
Итак, в descript.ion должна содержаться строчка, начинающаяся с двоеточия и содержащее одно из имен (например, Dirinfo - см. скриншот). Двоеточие избрано потому, что с него не может начинаться имя файла. Строка может быть единственной в descript.ion или содержаться там наряду с обычными комментариями к файлам, при этом она может располагаться в произвольном месте, но чем ближе к началу, тем быстрее скрипт ее обнаружит.
Если же в текущей директории нет файла descript.ion или он не содержит описанной строчки, то скрипт обращается к Способу второму, то есть к собственному файлу конфигурации WDXdetect.ini, путь к которому, разумеется, должен быть прописан в коде скрипта.
Файл WDXdetect.ini имеет единственный раздел [Dirs], содержащий произвольное число ключей типа
путь=вид
например
[Dirs]
c:\Utils\Temp=dirinfo
c:\User\Pictures=Image
Первый способ определения вида (через descript.ion) имеет приоритет перед вторым (через WDXdetect.ini).
В версии 1.1 были внесены следующие изменения во второй способ: во-первых, путь в конфигурации теперь не должен оканчиваться на "\", во-вторых, вид соответствует не только директории, указанной в конфигурации, но и ее дочерним директориям. В этом и состоит разница между способами.
Видимо, имеет смысл внести в конфигурацию скрипта те директории и соответствующие виды, которые не будут подвергаться изменениям. А файл descript.ion использовать для временных или пробных изменений. При этом следует учитывать, что, найдя первую строчку, начинающуюся с ":", скрипт прекращает поиск, поэтому можно создать несколько таких строчек, и просто меняя их порядок, загружать тот или иной вид для директории, где данный descript.ion живет.
Итак, ранее был один способ загрузки нужного вида - нажать правой кнопкой крысы на Tabstop header и в открывшемся списке найти требуемый вид. Этот способ имел два недостатка. Во-первых, список может быть достаточно длинным (у меня, например, 15 видов, но найдется немало пользователей, у которых их намного больше). Поэтому поиск нужного может представлять некоторое неудобство. Во-вторых, можно просто забыть имя вида, который лучше знаком нам по названиям колонок.
Скрипт позволяет, потратив на настройку несколько минут, получить в результате возможность загрузки нужного вида одним щелчком и пользоваться ей бесконечно долго.
На главную | Все о Total Commander | PowerPro | Все скрипты |