MarkStep

Название 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 Все скрипты