luafar export.Analyse не работает

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
analyselua
Posts: 7
Joined: Thu 12 Dec, 2013 02:01
Has thanked: 1 time

luafar export.Analyse не работает

Post by analyselua »

Захотел сделать панельный плагин на луа. Но почемуто не срабатывает функция export.Analyse.

Как я понял что функция export.Analyse должна вызываться при нажатии Ctrl+PageDown на любом файле.

Мой плагин запускается. Плагин появляется в меню F11. Элемент меню успешно вызывает OPEN_PLUGINSMENU (в функции export.Open).

Мой фар версии Far30b3707.x86.20131108.

Взял LuaMacro.dll и переименовал в TestPanel.dll.

Написал _globalinfo.lua:
  1. function export.GetGlobalInfo()
  2.  
  3.   return {
  4.  
  5.     Version       = { 1, 0, 0, 0 },
  6.  
  7.     MinFarVersion = { 3, 0, 0, 0 },
  8.  
  9.     Guid          = win.Uuid("a3188949-08db-42c7-888b-26e6549f1e7b"),
  10.  
  11.     Title         = "TestPanel",
  12.  
  13.     Description   = "Test panel",
  14.  
  15.     Author        = "TestUser",
  16.  
  17.   }
  18.  
  19. end
Написал TestPanel.lua:
  1. local F = far.Flags
  2.  
  3. local bor = bit64.bor
  4.  
  5.  
  6.  
  7. local PluginInfo = {
  8.  
  9.   Flags = bor(F.PF_PRELOAD),
  10.  
  11.   CommandPrefix = "TestPanel",
  12.  
  13.   PluginMenuGuids = win.Uuid("30c24dd2-94b8-4c17-a4d5-0f6affe5ce30"),
  14.  
  15.   PluginMenuStrings = { "Test Panel" },
  16.  
  17. }
  18.  
  19. function export.GetPluginInfo()
  20.  
  21.   return PluginInfo
  22.  
  23. end
  24.  
  25.  
  26.  
  27. function export.Open (OpenFrom, arg1, arg2, ...)
  28.  
  29.     print ("export.Open")
  30.  
  31.  
  32.  
  33.     if OpenFrom == F.OPEN_LEFTDISKMENU then
  34.  
  35.         far.Message("OPEN_LEFTDISKMENU", "TestPanel", nil, "")
  36.  
  37.         print ("OPEN_LEFTDISKMENU")
  38.  
  39.  
  40.  
  41.     elseif OpenFrom == F.OPEN_PLUGINSMENU then
  42.  
  43.         far.Message("OPEN_PLUGINSMENU", "TestPanel", nil, "")
  44.  
  45.         print ("OPEN_PLUGINSMENU")
  46.  
  47.        
  48.  
  49.     elseif OpenFrom == F.OPEN_FINDLIST then
  50.  
  51.         far.Message("OPEN_FINDLIST", "TestPanel", nil, "")
  52.  
  53.         print ("OPEN_FINDLIST")
  54.  
  55.  
  56.  
  57.     elseif OpenFrom == F.OPEN_SHORTCUT then
  58.  
  59.         far.Message("OPEN_SHORTCUT", "TestPanel", nil, "")
  60.  
  61.         print ("OPEN_SHORTCUT")
  62.  
  63.  
  64.  
  65.     elseif OpenFrom == F.OPEN_COMMANDLINE then
  66.  
  67.         far.Message("OPEN_COMMANDLINE", "TestPanel", nil, "")
  68.  
  69.         print ("OPEN_COMMANDLINE")
  70.  
  71.  
  72.  
  73.     elseif OpenFrom == F.OPEN_EDITOR then
  74.  
  75.         far.Message("OPEN_EDITOR", "TestPanel", nil, "")
  76.  
  77.         print ("OPEN_EDITOR")
  78.  
  79.  
  80.  
  81.     elseif OpenFrom == F.OPEN_VIEWER then
  82.  
  83.         far.Message("OPEN_VIEWER", "TestPanel", nil, "")
  84.  
  85.         print ("OPEN_VIEWER")
  86.  
  87.  
  88.  
  89.     elseif OpenFrom == F.OPEN_FILEPANEL then
  90.  
  91.         far.Message("OPEN_FILEPANEL", "TestPanel", nil, "")
  92.  
  93.         print ("OPEN_FILEPANEL")
  94.  
  95.  
  96.  
  97.     elseif OpenFrom == F.OPEN_DIALOG then
  98.  
  99.         far.Message("OPEN_DIALOG", "TestPanel", nil, "")
  100.  
  101.         print ("OPEN_DIALOG")
  102.  
  103.        
  104.  
  105.     elseif OpenFrom == F.OPEN_ANALYSE then
  106.  
  107.         far.Message("OPEN_ANALYSE", "TestPanel", nil, "")
  108.  
  109.         print ("OPEN_ANALYSE")
  110.  
  111.  
  112.  
  113.     elseif OpenFrom == F.OPEN_RIGHTDISKMENU then
  114.  
  115.         far.Message("OPEN_RIGHTDISKMENU", "TestPanel", nil, "")
  116.  
  117.         print ("OPEN_RIGHTDISKMENU")
  118.  
  119.    
  120.  
  121.     elseif OpenFrom == F.OPEN_FROMMACRO then
  122.  
  123.         far.Message("OPEN_FROMMACRO", "TestPanel", nil, "")
  124.  
  125.         print ("OPEN_FROMMACRO")
  126.  
  127.  
  128.  
  129.     elseif OpenFrom == F.OPEN_LUAMACRO then
  130.  
  131.         far.Message("OPEN_LUAMACRO", "TestPanel", nil, "")
  132.  
  133.         print ("OPEN_LUAMACRO")
  134.  
  135.        
  136.  
  137.     else
  138.  
  139.         far.Message("OpenFrom-unknown", "TestPanel", nil, "")
  140.  
  141.         print ("OpenFrom-unknown")
  142.  
  143.     end
  144.  
  145.    
  146.  
  147. end
  148.  
  149.  
  150.  
  151. function export.Analyse (Data)
  152.  
  153.     print("export.Analyse")
  154.  
  155.         far.Message("export.Analyse", "TestPanel", nil, "")
  156.  
  157.     return false
  158.  
  159. end
analyselua
Posts: 7
Joined: Thu 12 Dec, 2013 02:01
Has thanked: 1 time

Re: luafar export.Analyse не работает

Post by analyselua »

Может функция export.Analyse не работает из-за этого :
в luamacro.dll нет панельных экспортов. т.е. панельный плагин так не напишешь.
http://forum.farmanager.com/viewtopic.p ... 30#p109730
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: luafar export.Analyse не работает

Post by zg »

у LuaMacro.dll отсутствует экспорт AnalyseW.
analyselua
Posts: 7
Joined: Thu 12 Dec, 2013 02:01
Has thanked: 1 time

Re: luafar export.Analyse не работает

Post by analyselua »

zg wrote:у LuaMacro.dll отсутствует экспорт AnalyseW.
И что теперь делать ? Патчить LuaMacro, самому писать экспорт AnalyseW ? Или писать плагин вместо языка Луа на C++ ?
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: luafar export.Analyse не работает

Post by Shmuel »

analyselua wrote:Взял LuaMacro.dll и переименовал в TestPanel.dll
LuaMacro.dll не содержит экспортируемых функций, необходимых для панельного плагина (это не только AnalyseW, есть ещё несколько).
analyselua wrote:И что теперь делать ? Патчить LuaMacro, самому писать экспорт AnalyseW ? Или писать плагин вместо языка Луа на C++ ?
Да нет, всё проще. Исходники плагина LuaMacro открыты - нужно только модифицировать его makefile_gcc (или makefile_vc и luamacroW.vc.def) - в зависимости от того, чем будете собирать.
Post Reply

Return to “Разработка плагинов”