[amirus] The Fly Plugins

  • From: Vladimir Javorski <jvovka@xxxxxxxxx>
  • To: amirus@xxxxxxxxxxxxx
  • Date: Fri, 24 Sep 2004 20:12:04 +0100

Hello,

вот что я думаю:

каждый плагин - объект наследника класса Fly_Plugin.mcc
и имеет 2 спец.метода:
MUIM_Fly_Plugin_Know
и
MUIM_Fly_Plugin_Run

также можно обсудить некоторые атрибуты объекта.

метод - MUIM_Fly_Plugin_Know.
этот метод служит для определения знаний плагина.
т.е.
know = DoMethod(plugin_obj, MUIM_Fly_Plugin_Know, "show");
метод возвращает TRUE, если плагин знает команду "show".
(например это плагин для просмотра картинок)
ничего не мешает проверить и другие команды. т.к. плагин может знать их 
множество. например плагин для работы с ахивами может знать команды: copy, 
move, delete и rename.

метод MUIM_Fly_Plugin_Run
запускает плагин на выполнение команды.
например:
DoMethod(plugin, MUIM_Fly_Plugin_Run, params);
где STRPTR params="show ram:test.pic";

таким образом ал-м:
1. пользователь кликает по файлу.
2. определяем тип файла.
3. смотрим соответствующее типу действие (например: "show %f",
где %f - полный путь к файлу)
4. теперь пробежимся по списку плагинов и поспращиваем, кто знает эту команду.
5. если нашли такой плагин, то запускаем его с параметром "show %f", подставляя 
переменные (сместо %f - например, "ram:test.pic")
6. плагин завершил работу.

замечание: одну и туже команду могут знать разные плагины. поэтому следует 
разработать механизм приоритетов.

замечание: плагины хранятся в списке в главном модуле. все загружаются при 
старте. 

замечание: объект плагина создаёт листер, а значит является его родителем. т.к. 
листер -объект наследника MUIC_Application, то плагин имеет доступ к листеру и 
не имеет доступа к основному модулю.

  

<sb>
Bye! 
Waiting to reply, Vovka.


Other related posts:

  • » [amirus] The Fly Plugins