|
Название | MarkStep |
Имя файла (*.txt) | MarkStep.txt |
Описание | Отмечает файлы в панели с заданным шагом |
Автор | Вахмурка |
Параметры | - |
Вызываемые плагины | win, childwin, tc, miscplugin |
Иконка | |
Версия | 3.0 |
Дата обновления | 16.06.2014 |
local hwnd = win.handle("c=TTOTAL_CMD") local Panel = ifelse(tc.active(hwnd) == "left", 0, 1) local i, Unmark, To local Step = 2 local What = "All" local Result = win.childhandlelist(hwnd, "c=TMyListBox") local From = vec.createfromwords(Result) if(From <= 0) do messagebox("ok error", "Vector not created", "VEC plugin error #1") quit endif for(i = 0; i < From.length; i++) if(win.gettext(From[i]) == "W_FtpLogList") do From.delete(i) break endif endfor if(From.length != 2) do messagebox("ok error", "Wrong number of TMyListBox windows", "MarkStep script") quit endif local Counter = win.left(From[0])*win.top(From[0]) To = win.left(From[1])*win.top(From[1]) local TMLB = ifelse(Counter < To, From[Panel], From[(-1)*Panel + 1]) local Current = win.sendmessage(TMLB, 0x0188, 0, 0) Counter = win.sendmessage(TMLB, 0x018B, 0, 0) local Cap = "File " ++ Current ++ " of " ++ Counter Result = Inputdialog("~Step=Step, What=Files to mark??All|Current & above|Current & below, Unmark=Unmark??", Cap) if(not Result) quit if(not miscplugin.is_int(Step) || Step <= 0) do messagebox("ok error", "Invalid step: " ++ Step, "'MarkStep' Script") quit endif if(What == "All") do From = 0 To = Counter elseif(What == "Current & above") From = 0 To = Current elseif(What == "Current & below") From = Current To = Counter endif Unmark = not(Unmark) for(i = From; i < To; i = i + Step) win.sendmessage(TMLB, 0x0185, Unmark, i) endfor win.setfocus(hwnd)
Внимание! Скрипт не работает в Total Commander 7.5 pb1 и pb2!
Версия данного скрипта для Total Commander 7.0 и старше.
Наибольшую пользу скрипт может принести при поиске дубликатов. Пусть результаты поиска выведены на панель ("Feed to listbox"). Обычно после этого требуется выделить в группу файлы по одному из пары и, чаще всего, удалить. В большинстве случаев закон распределения этих файлов оказывается простым: "каждый второй", "все, кроме каждого четвертого", и т. д. Рассмотрим простейший пример:
Пунктиром отделяются друг от друга пары файлов, одинаковых по размеру и содержимому (таковы были в данном примере настройки поиска). Допустим, нужно отметить каждый второй в паре файл, оставив нетронутыми первые три пары. Если файлов на панели мало, это можно сделать вручную, а если нет?
Ставим курсор на второй файл четвертой пары, запускаем скрипт и задаем следующие параметры:
Step - целое число, большее 1 и равное по умолчанию 2 - шаг, с которым будут отмечаться файлы. Список "Files to mark" содержит три опции: "All", "Current & above", "Current & below" - "Все" (по умолчанию), "От текущего вверх", "От текущего вниз". Наконец, если выделение нужно снять, а не установить, необходимо отметить "Unmark". Если нажать "ОК" при установках, показанных на скриншоте, результат будет таким:
Разумеется, скрипт работает и в обычной файловой панели, но я не смог придумать пример, когда он может оказаться полезным. Зато в описанном случае скрипт может сэкономить много времени.
На главную | Все о Total Commander | PowerPro | Все скрипты |