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
|