from PyQt4 import QtGui, QtCore from misc import * from clMonty import monty from clSettings import settings class winSettings(QtGui.QWidget): btnSave=None btnClose=None lstPlugins=None winMain=None def __init__(self, winMain, parent=None): QtGui.QWidget.__init__(self, parent) self.winMain=winMain self.btnSave=Button('save all', self.onBtnSaveClick) self.btnClose=Button('close', self.onBtnCloseClick) self.lstPlugins=QtGui.QListWidget(self) layoutWin=QtGui.QVBoxLayout() layoutButtons=QtGui.QHBoxLayout() tabWidget=QtGui.QTabWidget(parent) self.setLayout(layoutWin) tabWidget.addTab(self.lstPlugins, "plugins") for p in self.winMain.plugins: plugin=self.winMain.plugins[p] item=QtGui.QListWidgetItem("%s\t%s"%(plugin.getName(), plugin.getInfo())) if plugin.isLoaded(): item.setCheckState(QtCore.Qt.Checked) else: item.setCheckState(QtCore.Qt.Unchecked) if settings.get('%s.load'%(plugin.getName(True)),None)==None: # load new plugins by default item.setTextColor(QtCore.Qt.blue) settings.set('%s.load'%(plugin.getName(True)), 1) self.lstPlugins.addItem(item) tabWidget.addTab(plugin.getSettingsWidget(), plugin.getName()) layoutWin.addWidget(tabWidget) layoutWin.addLayout(layoutButtons) layoutButtons.addStretch() layoutButtons.addWidget(self.btnSave) layoutButtons.addWidget(self.btnClose) self.connect(self.lstPlugins, QtCore.SIGNAL('itemChanged (QListWidgetItem*)'), self.onlstPluginItemChanged) self.setWindowIcon(appIcon) self.setWindowTitle('Settings') self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.resize(600,200) self.center() doEvents() def center(self): screen = QtGui.QDesktopWidget().screenGeometry() size = self.geometry() self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2+100) def onBtnSaveClick(self): for p in self.winMain.plugins: plugin=self.winMain.plugins[p] plugin.saveSettings() def onBtnCloseClick(self): self.close() def onlstPluginItemChanged(self, item): # check here if we have to load or unload the plugin! pluginName=str(item.text()[0:str(item.text()).find('\t')]) plugin=self.winMain.getPlugin(pluginName) loaded=int(item.checkState()==QtCore.Qt.Checked) settings.set('%s.load'%(plugin.getName(True)), loaded) if loaded: plugin.load() else: plugin.unload() return def closeEvent(self, event): for p in self.winMain.plugins: plugin=self.winMain.plugins[p] plugin.resetSettingCache() self.winMain.wSettings=None