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