|
|
| Название | Button2Clip |
| Имя файла (*.txt) | Button2Clip.txt |
| Описание | Выдает список всех панелей кнопок (button bars). Копирует в буфер образ кнопки |
| Автор | Вахмурка |
| Параметры | "1" (для отчета; или ничего) |
| Вызываемые плагины | vec, win, file, ini, clip |
| Иконка |
|
| Версия | 1.1 |
| Дата обновления | 03.03.15 |
args Stat
static Config = pprofolder ++ "scripts\ini\Button2Clip.ini"
static Height = ini.get(Config, "General", "Height")
static BB = "Buttonbar"
static BC = "Buttoncount"
static CR = esc(?+\r+, ?+\+)
local i
flag clear 1
if(Ctrl || Stat)
flag set 1
local D = cl.Create("Dirs", 1)
local Cols = ini.enum_sections(Config)
if(pproflag(1)) do
local Rep = pprofolder ++ "ButtonBars.ini"
local fh = file.open(Rep)
if(fh <= 0) do
messagebox("ok error", "File not created", "FILE plugin error #1")
quit
endif
file.close(fh)
local Bars, Buttons, Counter, j, Temp
for each line i in Cols
if(i != "General") do
.@Read(i)
else
.@Read()
endif
Counter = v.length
Bars += Counter
for(j = 0; j < Counter; j++)
Temp = ini.get(v[j], BB, BC)
ini.set(Rep, i, v[j], Temp)
Buttons += Temp
endfor
ini.set(Rep, "Summary", "Bars", Bars)
ini.set(Rep, "Summary", "Buttons", Buttons)
endfor
Temp = "File " ++ Rep ++ " created" ++ CR ++ CR ++ "Bars: " ++ Bars ++ CR ++ "Buttons: " ++ Buttons
messagebox("ok", Temp, "Button2Clip script")
quit
endif
for each line i in Cols
if(i != "General") do
D.Insert(0)
D.AddLeft(0, cb("@Read", i))
D.SetLabel(0, i)
endif
endfor
D.Insert(0)
D.AddLeft(0, cb("@Read"))
D.SetLabel(0, "Main Bars")
*menu show Dirs
local Bs = cl.Create("Bars", 1)
Bs.NewProperties("tooltips")
local Number = v.length
for(i = Number - 1; i >= 0; i--)
Bs.Insert(0)
Bs.AddLeft(0, cb("@Left", i))
Temp = file.name(v[i])
Bs.SetLabel(0, Temp)
Temp = ini.get(v[i], BB, BC)
Bs.SetTooltip(0, v[i] ++ "/" ++ Temp ++ " buttons")
endfor
Cols = Number/Height
for(i = 1; i <= Cols; i++)
Bs.Insert(i*Height)
Bs.AddLeft(i*Height, "Format NewColumnLine")
endfor
*menu show Bars
quit all
;;**************************************
Function Read(Sec)
local Path
local Mask = "*.bar"
local Temp, Str, List, Elem, Counter
static v
if(not Sec) do
local hh = win.handle("c=TTOTAL_CMD")
Path = file.folder(win.exepath(hh))
Temp = file.listfiles(Path ++ "\" ++ Mask)
v = vec.createfromlines(Temp)
if(v <= 0)
messagebox("ok error", "Vector not created", "VEC plugin error #1")
quit
endif
v = vec.create(1, 1)
if(v <= 0) do
messagebox("ok error", "Vector not created", "VEC plugin error #2")
quit
endif
Str = ini.enum_keys(Config, Sec)
for each line Temp in Str
Elem = ini.get(Config, Sec, Temp)
List = file.listfiles(Elem ++ Mask)
for each line Elem in List
v[Counter] = Elem
Counter++
endfor
endfor
quit
;;**************************************
Function Left(i)
static B = cl.Create("Bar", 1)
B.NewProperties("Tooltips iconsize: 16")
local Source = v[i]
static Items = ini.get(Source, BB, BC)
local i, Pars, Str, Counter
for(i = Items; i >= 1; i--)
B.Insert(0)
Str = "TOTALCMD#BAR#DATA" ++ CR
if(ini.check_exists(Source, BB, "cmd" ++ i) == 2) do
B.AddLeft(0, "Format Separator")
continue
endif
Temp = ini.get(Source, BB, "cmd" ++ i)
if(Temp == -2) do
B.AddLeft(0, "Format NewColumnLine")
Counter = 0
continue
else
B.AddMiddle(0, Temp)
Str ++= Temp ++ CR
endif
Temp = ini.get(Source, BB, "cmd" ++ i)
if(ini.check_exists(Source, BB, "param" ++ i) == 3)
B.AddRight(0, ini.get(Source, BB, "param" ++ i))
Str ++= B.GetRightCmd(0) ++ CR
Temp = ini.get(Source, BB, "button" ++ i)
B.SetIcon(0, Temp, 0)
Str ++= Temp ++ CR
Temp = ini.get(Source, BB, "menu" ++ i)
B.SetLabel(0, Temp)
Str ++= Temp ++ CR
B.AddLeft(0, cb("@Clip", i))
Temp = B.GetRightCmd(0)
if(ini.check_exists(Source, BB, "path" ++ i) == 3)
B.AddRight(0, Temp, ini.get(Source, BB, "path" ++ i))
Str ++= B.GetRightParam(0)
B.SetTooltip(0, Str)
if(Counter > Height) do
B.Insert(0)
B.AddLeft(0, "Format NewColumnLine")
Counter = 0
else
Counter++
endif
endfor
*menu show Bar
quit
;;**************************************
Function Clip(Num)
local Str = B.GetTooltip(Num - 1)
clip.set(Str)
У меня 74 панели кнопок, не считая "устаревших" и локальных, а также тех, что идут в комплекте с расширенным меню. Если я предвижу, что для определенной работы потребуется одна определенная кнопка, то выношу ее на главную панель, а затем, по завершении работы - стираю. Но добраться до нужной панели бывает непросто: она может находиться на третьем, а то и на четвертом иерархическом уровне.
Данный скрипт позволяет добраться до нужной кнопки в несколько щелчков крысы. После этого в буфер копируется ее образ. Остается вернуться на главную панель (я делаю это по горячей клавише), навести курсор на свободное место, нажать правую кнопку крысы и сказать "Paste". Тот же образ, кстати, легко помещается в текст поста на форуме.
В целом работа скрипта в пояснениях не нуждается. Пути к панелям содержатся в файле настоек. Разделы и ключи можно редактировать, добавлять и удалять. Предполагается, что путь к основным панелям - %COMMANDER_PATH%. Значение ключа Height подбирается экспериментально, чтобы длинное меню не выходило за границы экрана.
Побочная функция скрипта: выдача отчета о всех панелях и числе кнопок на них. Для этого задайте параметр "1" или просто нажмите клавишу Ctrl во время запуска скрипта.
|
На главную |
|
Все о Total Commander |
|
PowerPro |
|
PowerPro & Total Commander |