Copyright 2008 GFORGX gforgx gmail com import pkg_resources for ep in

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Copyright (c) 2008 GFORGX <gforgx@gmail.com>
import pkg_resources
for ep in pkg_resources.iter_entry_points('notefinder.plugins'): # перебираю...
plug = ep.load() # получаю класс
if inspect.isclass(plug): # проверяю, класс ли это
if issubclass(plug, plugin.Plugin): # проверяю, наследуется ли он от базового класса плагина
plug_in = plug(main) # создаю экземпляр, в качестве аргумента передаю основное окно программы
action = QtGui.QAction(QtGui.QIcon(plug_in.icon), plug_in.action, main) # создаю QAction
main.ui.menuPlugins.addAction(action) # Добавляю его в меню Plugins главного окна программы
QtCore.QObject.connect(action, QtCore.SIGNAL("triggered()"), plug_in.do) # Привязываю действие к методу do() плагина
# В итоге с каждым новым плагином заменяется действие и функция do()