ShowHide

Название ShowHide
Имя файла (*.txt) ShowHide.txt
Описание Показывает или скрывает элементы интерфейса
Автор Вахмурка
Параметры Switch, What (см. Комментарии)
Вызываемые плагины win, childwin
Иконка
Версия 1.0
Дата обновления 22.06.2009
args f, What
static hwnd = win.handle("c=TTOTAL_CMD")
static TMP = "TMyPanel"
static TMTC = "c=TMyTabControl"
static s = f
static Text, Hand, Temp, Width, LPath, i
static Path = "bdcihslktyre"

if(arg(0) == 1) do
	What = Path
	jump NoQ
endif

if(What != "?")
	jump NoQ

LPath = esc(?+\r+, ?+\+)
Text = "Button Bar\Drive Button Bars\Drive ComboBox\Current Directory\Tab Header\"
Text = Text ++ "Status Bar\Command Line\Function Key Buttons\Folder Tabs\"
Text = Text ++ "Directory History & Hotlist\Breadcrumb Bar\Separate Tree\ALL THE ABOVE"
Hand = replacechars(Text, "\", LPath)
Temp = ifelse(f, "Show", "Hide")
Width = length(Path)

pickstring(Hand, Temp, 3)

if(not _pickedline_)
	quit

Temp = _pickedline_
Text = word(Temp, 0)
Hand = Width + 1

if(Text == Hand)
	quit

What = ""

if(index(Temp, Hand)) do
	What = Path
	jump NoQ
endif

for(i = 1; i <= Text; i++)
	Hand = word(Temp, i)
	What = What ++ select(Path, Hand, Hand)
endfor

@NoQ

if(index(What, "b"))
	ButtonBar()

if(index(What, "d"))
	DriveButtons()

if(index(What, "c"))
	ComboBox()

if(index(What, "i"))
	Directory()

if(index(What, "h"))
	TabHeader()

if(index(What, "s"))
	StatusBar()

if(index(What, "l"))
	CommandLine()

if(index(What, "k"))
	FunctionKey()

if(index(What, "t"))
	Tabs()

if(index(What, "y"))
	HistoryHotList()

if(index(What, "r"))
	Breadcrumb()

if(index(What, "e"))
	SeparateTree()

quit

//------------------------------------------------------------------------
Function ButtonBar
if(s ^^ childwin.handle(hwnd, "TButtonBar"))
		win.sendmessage(hwnd, 0x400+51, 2901, 0)

quit
//------------------------------------------------------------------------
Function DriveButtons
if(s ^^ childwin.handle(hwnd, "TDrivePanel"))
	win.sendmessage(hwnd, 0x400+51, 2902, 0)

quit
//------------------------------------------------------------------------
Function ComboBox
Temp = win.childhandlelist(hwnd, "c=TMyComboBox")
local Counter

for each word LPath in Temp
	Counter += win.visible(LPath)
endfor
if(s ^^ Counter)
	win.sendmessage(hwnd, 0x400+51, 2906, 0)

quit
//------------------------------------------------------------------------
Function Directory
Temp = win.childhandlelist(hwnd, "c=TPathPanel")
LPath = word(Temp, 1)
if(s ^^ win.height(LPath))
	win.sendmessage(hwnd, 0x400+51, 2907, 0)

quit
//------------------------------------------------------------------------
Function TabHeader
Temp = win.childhandlelist(hwnd, "c=THeaderClick")
LPath = word(Temp, 1)
if(s ^^ win.height(LPath))
	win.sendmessage(hwnd, 0x400+51, 2908, 0)

quit
//------------------------------------------------------------------------
Function StatusBar
Temp = win.childhandlelist(hwnd, TMTC)
LPath = word(Temp, 1)
Temp = childwin.handle(LPath, TMP)
if(s ^^ win.height(Temp))
	win.sendmessage(hwnd, 0x400+51, 2909, 0)

quit
//------------------------------------------------------------------------
Function CommandLine

Temp = win.childhandlelist(hwnd, "c=Edit")

if(s ^^ win.visible(Temp))
	win.sendmessage(hwnd, 0x400+51, 2910, 0)

quit
//------------------------------------------------------------------------
Function FunctionKey
Temp = win.childhandlelist(hwnd, "c=TMypanel")

for each word LPath in Temp
	Hand = childwin.handle(LPath, TMP)
	if(not Hand)
		continue

	Text = win.gettext(Hand)
	Path = remove(Text, -1)
	if(validpath(Path))
		break

endfor

Temp = win.childhandlelist(hwnd, "c=Edit")
Hand = win.visible(Temp)
Temp = win.height(LPath) - 25*Hand

if(s ^^ Temp)
	win.sendmessage(hwnd, 0x400+51, 2911, 0)

quit
//------------------------------------------------------------------------
Function Tabs
Temp = win.childhandlelist(hwnd, TMTC)
if(s ^^ Temp)
	win.sendmessage(hwnd, 0x400+51, 2916, 0)

quit
//------------------------------------------------------------------------
Function HistoryHotList
Temp = win.childhandlelist(hwnd, TMTC)
LPath = word(Temp, 1)
Width = win.width(LPath)
Hand = childwin.handle(LPath, "TPathPanel")
Text = win.width(Hand)
Path = win.height(Hand)

if(s ^^ (Text + 2*Path - Path/2 < Width))
	win.sendmessage(hwnd, 0x400+51, 2919, 0)

quit
//------------------------------------------------------------------------
Function Breadcrumb
keys %{f11}
wait.for(100)
Temp = childwin.handle(hwnd, TMP, 1)
Width = win.width(Temp)
if(s ^^ Width)
	win.sendmessage(hwnd, 0x400+51, 2926, 0)

quit
//------------------------------------------------------------------------
Function SeparateTree
Temp = win.childhandlelist(hwnd, "c=TMyListBox")

if(s && (word(Temp, 0) <= 3))
	win.sendmessage(hwnd, 0x400+51, 3201, 0)

if(not s && (word(Temp, 0) == 3))
	win.sendmessage(hwnd, 0x400+51, 3200, 0)

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

Внимание! Скрипт не работает в Total Commander 7.5 pb1 и pb2!

Скрипт позволяет показывать и скрывать элементы интерфейса Total Commander, перечисленные в таблице:

Элемент интерфейса Ключ
Button bar b
Drive button bars d
Drive combobox c
Current directory i
Tab header (sorting) h
Status bar s
Command line l
Function key buttons k
Folder tabs t
Directory history + hotlist y
Breadcrumb bar r
One separate tree panel e

Многочисленные внутренние команды типа cm_VisButtonbar позволяют показывать и скрывать элементы интерфейса программы. Однако они действуют как двоичные переключатели, всегда меняя текущее состояние. То есть, если панель кнопок была видна, то по команде cm_VisButtonbar она скроется, если же она была спрятана, то по команде она покажется.

Зачастую необходимо показать или скрыть элемент интерфейса вне зависимости от того, показан он или скрыт в момент выполнения команды. Именно это и делает скрипт. К примеру, если панель была видна, то при выполнении команды "показать панель" ничего не произойдет.

Первый параметр скрипта ("Switch") может принимать значение 1 (показать) или 0 (скрыть). Если второй параметр отсутствует, то скрипт покажет (или скроет) все элементы интерфейса, перечисленные в таблице.

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

Если задать "?" в качестве второго параметра, будет выдано диалоговое окно со списком элементов интерфейса. Можно отметить мышью любое количество пунктов. Если выбрать "ALL THE ABOVE", то это будет аналогично запуску скрипта без второго параметра.

Примеры:
Параметры Команда
(0)

Скрыть все элементы интерфейса. Получится "голый" Total Commander: только файловые панели и меню. Выглядит прикольно.

(1, "kc") Показать строку функциональных кнопок и командную строку. Остальные элементы останутся в прежнем состоянии
(0, "sby") Спрятать статусную строку, кнопку истории, кнопку меню часто используемых директорий и панель цепочек навигации
(1, "?") Выдать запрос, какие элементы следует показать


На главную Все о Total Commander PowerPro PowerPro & Total Commander