diff options
Diffstat (limited to 'nephilim/clPlugin.py')
-rw-r--r-- | nephilim/clPlugin.py | 145 |
1 files changed, 71 insertions, 74 deletions
diff --git a/nephilim/clPlugin.py b/nephilim/clPlugin.py index 5849634..dcbd1a0 100644 --- a/nephilim/clPlugin.py +++ b/nephilim/clPlugin.py @@ -6,90 +6,95 @@ import plugins from misc import * class Plugin: - name = None - dockWidget = None - settings = None - winMain = None - loaded = None - listeners = None - mpclient = None - DEFAULTS = {} - - def __init__(self, winMain, name): - self.name = name - self.winMain = winMain - self.loaded = False - self.listeners = [] - self.mpclient = winMain.mpclient - self.settings = QtCore.QSettings(ORGNAME, APPNAME) + _name = None + _dock_widget = None + _settings = None + _loaded = None + _listeners = None + _parent = None + _mpclient = None + DEFAULTS = {} + LISTENERS = {} + + def __init__(self, parent, mpclient, name): + self._name = name + self._parent = parent + self._mpclient = mpclient + self._loaded = False + self._listeners = [] + self._settings = QtCore.QSettings(ORGNAME, APPNAME) #init settings - self.settings.beginGroup(self.name) + self._settings.beginGroup(name) for key in self.DEFAULTS: - if not self.settings.contains(key): - self.settings.setValue(key, QVariant(self.DEFAULTS[key])) - self.settings.endGroup() + if not self._settings.contains(key): + self._settings.setValue(key, QVariant(self.DEFAULTS[key])) + self._settings.endGroup() - def getName(self): - return self.name - def getInfo(self): - return '' - def getExtInfo(self): + for event, listener in self.LISTENERS.iteritems(): + self._listeners.append([event, eval('self.%s'%listener)]) + + def name(self): + return self._name + def info(self): return '' - def getWinMain(self): - return self.winMain - def setStatus(self, status): - self.winMain.setStatus(status) + def parent(self): + return self._parent + def set_status(self, status): + self._parent.setStatus(status) + def mpclient(self): + return self._mpclient + def settings(self): + return self._settings def load(self): logging.info("loading") - if len(self.listeners): - logging.debug("adding %s listeners"%(len(self.listeners))) - for listener in self.listeners: - self.mpclient.add_listener(listener[0], listener[1]) + logging.debug("adding %s listeners"%(len(self._listeners))) + for listener in self._listeners: + self._mpclient.add_listener(listener[0], listener[1]) self._load() - opts=QtGui.QDockWidget.DockWidgetClosable|QtGui.QDockWidget.DockWidgetMovable - self.winMain.addDock(self.getDockWidget(opts)) - self.loaded=True + opts = QtGui.QDockWidget.DockWidgetClosable|QtGui.QDockWidget.DockWidgetMovable + self._parent.addDock(self.get_dock_widget(opts)) + self._loaded = True def unload(self): - if not self.loaded: + if not self._loaded: return logging.info("unloading") - if len(self.listeners): - logging.debug("removing %s listeners"%(len(self.listeners))) - for listener in self.listeners: - self.mpclient.remove_listener(listener[0], listener[1]) + if self._listeners: + logging.debug("removing %s listeners"%(len(self._listeners))) + for listener in self._listeners: + self._mpclient.remove_listener(listener[0], listener[1]) self._unload() - dock_widget = self.getDockWidget() + dock_widget = self.get_dock_widget() if dock_widget: - self.winMain.removeDock(dock_widget) - self.dockWidget = None - self.settingsWidget = None - self.loaded = False - def isLoaded(self): - return self.loaded - - def addListener(self, event, callback): - self.listeners.append([event, callback]) - - def getDockWidget(self, opts=None): - self.dockWidget = self._getDockWidget() - if self.dockWidget and opts: - self.dockWidget.setFeatures(opts) - self.dockWidget.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas) - return self.dockWidget + self._parent.removeDock(dock_widget) + self._dock_widget = None + self._settingsWidget = None + self._loaded = False + def is_loaded(self): + return self._loaded + + def get_dock_widget(self, opts = None): + self._dock_widget = self._get_dock_widget() + if self._dock_widget and opts: + self._dock_widget.setFeatures(opts) + self._dock_widget.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas) + return self._dock_widget class SettingsWidget(QtGui.QWidget): """ plugins should subclass this""" plugin = None - settings = None + _settings = None def __init__(self, plugin): QtGui.QWidget.__init__(self) - self.plugin = plugin - self.settings = QtCore.QSettings(ORGNAME, APPNAME) + self.plugin = plugin + self._settings = QtCore.QSettings(ORGNAME, APPNAME) + + def settings(self): + return self._settings def save_settings(self): """ reimplement this""" @@ -109,21 +114,13 @@ class Plugin: """Should return subclassed SettingsWidget.""" return - def resetSettingCache(self): - #self.settings=None - self.settingsWidget=None - - def _getPluginClassname(self, cl): - """Returns the name of a plugin (without 'plugin'-prefix)""" - return str(cl).split('.')[-1].lower()[len('plugin'):] - - def _getDockWidget(self): + def _get_dock_widget(self): """Override this one.""" return None - def _createDock(self, widget): - """Creates a QDockWidget with parent $parent containing widget $widget.""" - dock=QtGui.QDockWidget(self.name, self.winMain) - dock.setObjectName(self.name) + def _create_dock(self, widget): + """Creates a QDockWidget with _parent $_parent containing widget $widget.""" + dock=QtGui.QDockWidget(self._name, self._parent) + dock.setObjectName(self._name) dock.setWidget(widget) return dock |