Пример применения

Far Manager Macro System

Пример применения


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)