summaryrefslogtreecommitdiff
path: root/clPlugin.py
blob: 75e2b4477f97fab54652ab03bb470e50033114e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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
	
	def __init__(self, winMain, name):
		self.name=name
		self.winMain=winMain

	def getName(self):
		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 getDockWidget(self, opts):
		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