StackVertical

Название StackVertical
Имя файла (*.txt) StackVertical
Описание Управляет вертикальной панелью кнопок
Автор Вахмурка
Параметры Имя файла или "|"
(см. комментарии)
Вызываемые плагины win, file
Иконка
Версия 1.0
Дата обновления 23.06.2018
args BBar

static hwnd = win.handle("c=TTOTAL_CMD")
static Path = file.folder(win.exepath(hwnd))
static VB = Path ++ "\vertical.bar"
static VK = Path ++ "\vertical.bak"
local Success

if(BBar == "|" || Shift) do
	if(win.sendmessage(hwnd, 0x400+50, 29, 0))
		win.sendmessage(hwnd, 0x400+51, 2944, 0)

	Success = file.copy(VK, VB)

	if(Success)
		win.sendmessage(hwnd, 0x400+51, 2944, 0)

	quit
endif

Success = 1

if(win.sendmessage(hwnd, 0x400+50, 29, 0))
	win.sendmessage(hwnd, 0x400+51, 2944, 0)

wait.for(not win.sendmessage(hwnd, 0x400+50, 29, 0))

;ButtonBarTools – имя скрипта ButtonBarTools
if(not validpath(BBar))
	BBar = ifelse(BBar, Path ++ "\" ++ BBar, .ButtonBarTools("b"))

if(not validpath(VK))
	Success = file.copy(VB, VK)

if(Success)
	Success = file.copy(BBar, VB)

if(Success)
	win.sendmessage(hwnd, 0x400+51, 2944, 0)

wait.for(500, win.sendmessage(hwnd, 0x400+50, 29, 0))

Комментарии:

Как работать в Total Commander'е одновременно с двумя панелями кнопок? В древних версиях – никак. В версии 9 и далее – сделать одну из панелей вертикальной, другую – традиционно горизонтальной.

Но как сделать произвольную панель вертикальной? Способов несколько. Первый – переименовать его в vertical.bar и дать команду cm_VisButtonbar2 или перезапустить Total Commander. Это долго и неудобно. Второй способ – выполнить команду OPENBAR2 для выбранной панели с помощью, например, такой кнопки:

TOTALCMD#BAR#DATA
OPENBAR2
%P%N
wciconex.dll


0
-1
Но ведь файл панели может находиться в любом месте, в том числе и весьма глубоко в дебрях директорий.

Наконец, можно хитрить и изворачиваться (например, с сообщением WM_COPYDATA). Но не слишком ли много хитростей для простой операции?

Итак, у скрипта три режима, определяемых параметром. Если в качестве последнего выступает имя bar-файла (в формате типа %P%N или в явном виде), то данная панель станет вертикальной. Если путь не указан, предполагается %COMMANDER_PATH%. Однако расширение bar должно быть указано обязательно. Также можно запустить скрипт без параметров, но при нажатой клавише Ctrl.

Простой запуск без параметров и нажатых клавиш приводит к вызову меню всех панелей для выбора одной из них и превращения в вертикальную. Подробности об этих меню изложены в комментариях к скрипту ButtonBarTools.

Наконец, поработав с "новой" вертикальной панелью, мы захотим восстановить старую, то есть ту, которая называлась vertical.bar изначально. Для этого следует запустить скрипт с параметром "|" или держать нажатой клавишу Shift


На главную Все о Total Commander PowerPro Все скрипты