| 
 | 
| Название | MergeBars | 
| Имя файла (*.txt) | MergeBars.txt | 
| Описание | Создает временную панель с именем _temp.bar из двух существующих панелей | 
| Автор | Вахмурка | 
| Параметры | 
"%P%N", "%T%M" Параметр 1: имя первой панели Параметр 2: имя второй панели (можно поменять местами в процессе выполнения скрипта)  | 
    
| Вызываемые плагины | win, miscplugin, file, osd, ini, vec | 
| Иконка | 
 | 
    
| Версия | 1.3 | 
| Дата обновления | 08.09.2006 | 
| Вызываемые модули | Скрипт LoadBar | 
args First, Second
local mpDlgText, Result, Key, Number, i, Buttons1, Buttons2
local Path = "путь_к_панелям\"
local Target = Path ++ "_temp.bar"
local Bars = Path ++ "*.bar"
local mpDlgCaption = "Wrong Parameter"
local mpIcon = "WARNING"
if(file.isfolder(First)) do
	mpDlgText = "First bar is " ++ First ++ "\nIt must be a file rather than a folder"
	if(MiscPlugin.MessageBox(2, "&Quit", "&Pick file") == "&Quit")
		quit
	First = pickfile(file.listfiles(Bars, 0), "Pick First Bar File")
	if(not First)
		quit
endif
if(file.type(First) != "bar") do
	mpDlgText = "First bar is " ++ First ++ "\nIt should have the BAR extension."
	if(MiscPlugin.MessageBox(2, "&Continue", "&Pick file") == "&Pick file") do
		First = pickfile(file.listfiles(Bars, 0), "Pick First Bar File")
		if(not First)
			quit
	endif
endif
if(file.isfolder(Second)) do
	mpDlgText = "Second bar is " ++ Second ++ "\nIt must be a file rather than a folder"
	if(MiscPlugin.MessageBox(2, "&Quit", "&Pick file") == "&Quit")
		quit
	Second = pickfile(file.listfiles(Bars, 0), "Pick Second Bar File")
	if(not Second)
		quit
endif
if(file.type(Second) != "bar") do
	mpDlgText = "Second bar is " ++ Second ++ "\It should have the BAR extension."
	if(MiscPlugin.MessageBox(2, "&Continue", "&Pick file") == "&Pick file") do
		Second = pickfile(file.listfiles(Bars, 0), "Pick Second Bar File")
		if(not Second)
			quit
	endif
endif
@start
mpDlgText = "Second bar " ++ Second ++ " will be appended to the First bar " ++ First
mpDlgText = mpDlgText ++ "\n\n(Choose 'Exchange' to exchange First with Second)"
mpDlgCaption = "Merge Bars"
mpIcon = "INFORMATION"
Result = MiscPlugin.MessageBox(1, "&Go!", "E&xchange", "&Cancel")
if(Result == "&Cancel") do
	quit
elseif(Result == "E&xchange") do
	mpDlgText = First
	First = Second
	Second = mpDlgText
	jump start
endif
osd.show("Wait...", "INFINITE", "48", "Arial Cyr", "-1", "255 000 000")
if(not file.copy(First, Target)) do
	mpDlgText = "Failure copying " ++ First ++ " to " ++ Result
	messagebox("ok error", mpDlgText, "FILE plugin error #1")
	quit
endif
Buttons1 = ini.get(First, "Buttonbar", "Buttoncount")
if(ini_status != "OK") do
	messagebox("ok error", ini_status, "INI plugin error #1")
	quit
endif
Buttons2 = ini.get(Second, "Buttonbar", "Buttoncount")
if(ini_status != "OK") do
	messagebox("ok error", ini_status, "INI plugin error #2")
	quit
endif
Result = ini.set(Target, "Buttonbar", "Buttoncount", Buttons1 + Buttons2)
if(Result != "OK") do
	messagebox("ok error", Result, "INI plugin error #3")
	quit
endif
v = vec.createfromwords("button cmd param Bars menu iconic")
if(v == 0) do
	messagebox("ok error", "Failure creating vector", "VEC plugin Error")
	quit
endif
for(i = 1; i <= Buttons2; i++)
	Number = i + Buttons1
	for(j = 0; j <= 5; j++)
		Key = v[j] ++ i
		if(ini.check_exists(Second, "Buttonbar", Key) == 3) do
			mpDlgText = ini.get(Second, "Buttonbar", Key)
			Key = v[j] ++ Number
			Result = ini.set(Target, "Buttonbar", Key, mpDlgText)
			if(Result != "OK") do
				messagebox("ok error", Result, "INI plugin error #5")
				quit
			endif
		endif
	endfor
endfor
vec.destroy(v)
vec.unload
ini.unload
osd.unload
mpDlgText = "First bar " ++ First ++ " and Second bar " ++ Second
mpDlgText = mpDlgText ++ "\nare successfully merged in " ++ Target
mpDlgCaption = "Congratulations!"
mpIcon = "QUESTION"
mpDlgText = mpDlgText
Result = MiscPlugin.MessageBox(1, "&Open Bar", "to &First", "to &Second", "&to...", "&Quit")
if(Result == "&Open Bar") do
;LoadBar - имя скрипта LoadBar
	runfile.LoadBar(Target)
elseif(Result == "to &First") do
	Result = file.move(Target, First)
		if(not Result) do
			mpDlgText = "Failure renaming " ++ Target ++ " to " ++ First
			messagebox("ok error", mpDlgText, "FILE plugin error #2")
			quit
		endif
elseif(Result == "to &Second") do
	Result = file.move(Target, Second)
		if(not Result) do
			mpDlgText = "Failure renaming " ++ Target ++ " to " ++ Second
			messagebox("ok error", mpDlgText, "FILE plugin error #3")
			quit
		endif
elseif(Result == "&to...") do
@NewName
	Key = inputcancel("New name for bar")
	Key = Path ++ Key ++ ".bar"
	if(not file.validpath(Key)) do
		mpDlgText = "File " ++ Key ++ " already exists! Overwrite?"
		if(messagebox("yesno warning", mpDlgText, "Warning") == 7)
			jump NewName
	endif
	if(not file.move(Target, Key)) do
		mpDlgText = "Failure renaming " ++ Target ++ " to " ++ Key
		messagebox("ok error", mpDlgText, "FILE plugin error #4")
		quit
	endif
endif
При редактировании панелей бывает необходимо перенести кнопку с одной панели на другую. Это можно сделать так:
Если же требуется скопировать несколько кнопок, все это необходимо проделывать для каждой. Скучно. Можно достичь той же цели с помощью текстового редактора, но это не сильно веселее - приходится вручную править кучу цифр.
Скрипт сливает вместе две панели, образуя новую с именем _temp.bar.
путь_к_панелям, как правило, совпадает с рабочей директорией Total Commander.
После успешного создания суммарной панели _temp.bar предлагается следующее:
Созданная панель является сугубо временной (что подчеркивает имя) и при следующем запуске скрипта будет затерта.
 
 | 
На главную | 
 
 | 
Все о Total Commander | 
 
 | 
PowerPro | 
 
 | 
PowerPro & Total Commander |