Макрос, переключающийся между ArcLite и MultiArc при нахождении в архиве RAR.
При переключении сохраняется выделение файлов, положение курсора и вид панелей (сортировка, режим и пр.).
Клавиши по умолчанию AltShiftA или ShiftF1.
- -- Переключение между архиваторами ArcLite <-> MultiArc из архивов RAR.
- -- v.1.01 (C) Smitis, 2016-2017
- -- Обсуждение: http://forum.farmanager.com/viewtopic.php?t=10834
- local ARCLITE_ID = win.Uuid("65642111-AA69-4B84-B4B8-9249579EC4FA")
- local MULTIARC_ID = win.Uuid("C5508DDB-5175-4736-9A10-C8F6EED7B32F")
- local F = far.Flags
- Macro {
- description="Arcs: Switch between ArcLite and MultiArc";
- area="Shell Search";
- key="AltShiftA ShiftF1";
- condition=function()
- local pluginid = panel.GetPanelDirectory(nil,1).PluginId
- return pluginid == ARCLITE_ID or pluginid == MULTIARC_ID
- end;
- action=function()
- if Area.Search then Keys "Esc" end
- if Object.Title:sub(1,12)=="arclite:Rar:" or Object.Title:sub(1,13)=="arclite:Rar5:" or Object.Title:sub(1,4)=="RAR:" then
- local dir = panel.GetPanelDirectory(nil,1)
- local inf = panel.GetPanelInfo(nil,1)
- local topfile = Panel.Item(0,inf.TopPanelItem,0)
- local currentfile = Panel.Item(0,inf.CurrentItem,0)
- local selected = APanel.Selected
- mf.clip(5,2) -- для сохранения выделения через буфер
- if selected then Keys "CtrlShiftIns" end
- dir.PluginId = dir.PluginId==ARCLITE_ID and MULTIARC_ID or ARCLITE_ID
- if panel.SetPanelDirectory(nil,1,dir) then
- local inf2 = panel.GetPanelInfo(nil,1)
- -- Восстанавливаем вид панели
- panel.SetViewMode(nil,1,inf.ViewMode)
- panel.SetSortMode(nil,1,inf.SortMode)
- panel.SetSortOrder(nil,1,band(inf.Flags,F.PFLAGS_REVERSESORTORDER)~=0)
- panel.SetNumericSort(nil,1,band(inf.Flags,F.PFLAGS_NUMERICSORT)~=0)
- panel.SetCaseSensitiveSort(nil,1,band(inf.Flags,F.PFLAGS_CASESENSITIVESORT)~=0)
- panel.SetDirectoriesFirst(nil,1,band(inf.Flags,F.PFLAGS_DIRECTORIESFIRST)~=0)
- if band(inf.Flags,F.PFLAGS_SHOWHIDDEN) ~= band(inf2.Flags,F.PFLAGS_SHOWHIDDEN) then Keys "CtrlH" end
- if band(inf.Flags,F.PFLAGS_USESORTGROUPS) ~= band(inf2.Flags,F.PFLAGS_USESORTGROUPS) then Keys "ShiftF11" end
- if band(inf.Flags,F.PFLAGS_SELECTEDFIRST) ~= band(inf2.Flags,F.PFLAGS_SELECTEDFIRST) then Keys "ShiftF12" end
- -- Позиционируем курсор так, чтобы не только текущий файл был тот же, но и его положение было то же самое
- Panel.SetPosIdx(0,-1)
- Panel.SetPos(0,topfile)
- Panel.SetPos(0,currentfile)
- -- Восстанавливаем выделение
- if selected then Panel.Select(0,1,2,mf.clip(0)) end
- end
- end
- end;
- }
GeSHi © Codebox Plus Extension
- ArcSwitch.1.01.7z
- ArcSwitch 1.01
- (1.22 KiB) Downloaded 102 times