Пример применения
if ({ far.AdvControl("ACTL_GETFARMANAGERVERSION", true) })[4] < 5171 then return end
local F = far.Flags
local Title ="Demo panel in LuaMacro"
local mod = {}
mod.Info = {
Guid = win.Uuid("715E5E90-DEB9-470A-84CE-7CF8D92A7B05")
}
local function FileToObject(FileName)
FileName = far.ConvertPath(FileName, "CPM_FULL")
local fp = io.open(FileName)
if fp then
local obj = { HostFile=FileName; List={} }
for line in fp:lines() do
table.insert(obj.List, {FileName=line})
end
fp:close()
return obj
end
end
function mod.Analyse(Data)
return Data.FileName and Data.FileName:sub(-5):lower() == ".abcd"
end
function mod.Open(OpenFrom, Guid, Item)
if OpenFrom == F.OPEN_ANALYSE then
return FileToObject(Item.FileName)
elseif OpenFrom == F.OPEN_SHORTCUT then
return FileToObject(Item.HostFile)
elseif OpenFrom == F.OPEN_FINDLIST then
-- If we uncomment the line "return {}", then this module will be
-- used instead of TmpPanel for displaying search results.
---- return {}
end
end
function mod.GetFindData(object, handle, OpMode)
return object.List
end
function mod.GetOpenPanelInfo(object, handle)
return {
HostFile = object.HostFile;
PanelTitle = Title;
StartSortMode = F.SM_UNSORTED;
StartSortOrder = 0;
ShortcutData = "";
Flags = bit64.bor(F.OPIF_SHORTCUT, F.OPIF_ADDDOTS);
}
end
function mod.SetFindList (object, handle, Items)
object.List = Items
return true
end
MenuItem {
description = Title;
menu = "Plugins";
area = "Shell";
guid = "5E1ECBD6-F6E1-4A02-AC90-DB49DB6E350C";
text = Title;
action = function(OpenFrom, Item)
return mod, FileToObject(APanel.Current)
end;
}
CommandLine {
description = Title;
prefixes = "abcd";
action = function(prefix,text)
if text then return mod, FileToObject(text); end
end;
}
PanelModule(mod)