1 from PyQt4
import QtGui
, QtCore
2 from PyQt4
.QtCore
import QVariant
18 def __init__(self
, winMain
, name
):
20 self
.winMain
= winMain
23 self
.monty
= winMain
.monty
24 self
.settings
= QtCore
.QSettings(ORGNAME
, APPNAME
)
27 self
.settings
.beginGroup(self
.name
)
28 for key
in self
.DEFAULTS
:
29 if not self
.settings
.contains(key
):
30 self
.settings
.setValue(key
, QVariant(self
.DEFAULTS
[key
]))
31 self
.settings
.endGroup()
41 def setStatus(self
, status
):
42 self
.winMain
.setStatus(status
)
45 logging
.info("loading")
46 if len(self
.listeners
):
47 logging
.debug("adding %s listeners"%(len(self
.listeners
)))
48 for listener
in self
.listeners
:
49 self
.monty
.add_listener(listener
[0], listener
[1])
52 opts
=QtGui
.QDockWidget
.DockWidgetClosable|QtGui
.QDockWidget
.DockWidgetMovable
53 self
.winMain
.addDock(self
.getDockWidget(opts
))
58 logging
.info("unloading")
59 if len(self
.listeners
):
60 logging
.debug("removing %s listeners"%(len(self
.listeners
)))
61 for listener
in self
.listeners
:
62 self
.monty
.removeListener(listener
[0], listener
[1])
65 dock_widget
= self
.getDockWidget()
67 self
.winMain
.removeDock(dock_widget
)
68 self
.dockWidget
= None
69 self
.settingsWidget
= None
74 def addMontyListener(self
, event
, callback
):
75 self
.listeners
.append([event
, callback
])
77 def getDockWidget(self
, opts
=None):
78 self
.dockWidget
= self
._getDockWidget
()
79 if self
.dockWidget
and opts
:
80 self
.dockWidget
.setFeatures(opts
)
81 self
.dockWidget
.setAllowedAreas(QtCore
.Qt
.AllDockWidgetAreas
)
82 return self
.dockWidget
84 class SettingsWidget(QtGui
.QWidget
):
85 """ plugins should subclass this"""
89 def __init__(self
, plugin
):
90 QtGui
.QWidget
.__init
__(self
)
92 self
.settings
= QtCore
.QSettings(ORGNAME
, APPNAME
)
94 def save_settings(self
):
95 """ reimplement this"""
96 self
.plugin
.saveSettings()
98 def _add_widget(self
, widget
, label
= '', tooltip
= ''):
99 """adds a widget with label"""
100 if not self
.layout():
101 logging
.error('Attempted to call add_widget with no layout set.')
102 widget
.setToolTip(tooltip
)
103 layout
= QtGui
.QHBoxLayout()
104 layout
.addWidget(QtGui
.QLabel(label
))
105 layout
.addWidget(widget
)
106 self
.layout().addLayout(layout
)
108 def get_settings_widget(self
):
109 """Should return subclassed SettingsWidget."""
112 def resetSettingCache(self
):
114 self
.settingsWidget
=None
116 def _getPluginClassname(self
, cl
):
117 """Returns the name of a plugin (without 'plugin'-prefix)"""
118 return str(cl
).split('.')[-1].lower()[len('plugin'):]
120 def _getDockWidget(self
):
121 """Override this one."""
123 def _createDock(self
, widget
):
124 """Creates a QDockWidget with parent $parent containing widget $widget."""
125 dock
=QtGui
.QDockWidget(self
.name
, self
.winMain
)
126 dock
.setObjectName(self
.name
)
127 dock
.setWidget(widget
)
131 """Override this one."""
134 """Override this one."""