from PyQt4 import QtGui, QtSvg, QtCore from clMonty import monty from clSettings import settings, mpdSettings from misc import * class Plugin: name=None dockWidget=None settingsWidget=None settings=None winMain=None loaded=None def __init__(self, winMain, name): self.name=name self.winMain=winMain self.loaded=False def getName(self, lower=False): if lower: return self.name.lower() return self.name def getInfo(self): return '' def getExtInfo(self): return '' def getWinMain(self): return self.winMain def setStatus(self, status): self.winMain.setStatus(status) def load(self): self._load() opts=QtGui.QDockWidget.DockWidgetClosable|QtGui.QDockWidget.DockWidgetMovable self.winMain.addDock(self.getDockWidget(opts)) self.loaded=True def unload(self): self._unload() self.winMain.removeDock(self.getDockWidget()) self.dockWidget=None self.settingsWidget=None self.loaded=False def isLoaded(self): return self.loaded def getDockWidget(self, opts=None): try: if not self.dockWidget: self.dockWidget=self._getDockWidget() self.dockWidget.setFeatures(opts) self.dockWidget.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas) except: pass return self.dockWidget def getSettingsWidget(self): if not self.settingsWidget: self.settings=self._getSettings() if len(self.settings): self.settingsWidget=QtGui.QWidget(None) layout=QtGui.QGridLayout() self.settingsWidget.setLayout(layout) for i in xrange(len(self.settings)): setting=self.settings[i] try: setting[4] except: setting.append(settings) tooltip="%s\n\n(%s)"%(setting[2],setting[0]) label=QtGui.QLabel(setting[1]) wg=setting[3] label.setToolTip(tooltip) wg.setToolTip(tooltip) layout.addWidget(label) layout.addWidget(wg, i, 1) layout.addWidget(Button('Save settings for '+self.getName(), self.saveSettings), i+1,1) return self.settingsWidget def resetSettingCache(self): self.settings=None self.settingsWidget=None def saveSettings(self): for i in xrange(len(self.settings)): setting=self.settings[i] name=setting[0] obj=setting[3] settingsMgr=setting[4] if isinstance(obj,QtGui.QLineEdit): settingsMgr.set(setting[0], setting[3].text()) elif isinstance(obj,QtGui.QComboBox): settingsMgr.set(setting[0], setting[3].currentIndex()) elif isinstance(obj,QtGui.QTextEdit): settingsMgr.set(setting[0], setting[3].toPlainText()) elif isinstance(obj,QtGui.QPushButton): # what the *#$ should we do with this? Just skip! pass else: print "Can't handle %s"%(obj.__class__) self.afterSaveSettings() def afterSaveSettings(self): """Override this one.""" pass def _getDockWidget(self): """Override this one.""" return None def _getSettings(self): """Override this one. This method must return a list of arrays. Format: [ [setting, title, tooltip, widget, opt settingsmgr]+ ]""" return [] def _createDock(self, widget): """Creates a QDockWidget with parent $parent containing widget $widget.""" dock=QtGui.QDockWidget(self.name, self.winMain) dock.setObjectName(self.name) dock.setWidget(widget) return dock def _load(self): """Override this one.""" return def _unload(self): """Override this one.""" return