class Settings(QtGui.QDialog): def __init__(self, WebinyNotifier): QtGui.QDialog.__init__(self) self.ui = SettingsWindow() self.ui.setupUi(self) self._settings = SettingsObj() self.parent = WebinyNotifier def show(self): self.ui.getPort().setText(str(self._settings.port)) self.ui.getRequestsLimit().setText(str(self._settings.requests_limit)) self.ui.getShowBalloon().setChecked(bool(self._settings.show_balloon)) # Set log levels table data self.ui.getLogLevelsTable().verticalHeader().setVisible(False) self.ui.getLogLevelsTable().setModel(self._settings.createLogLevelsModel(self)) self.ui.getLogLevelsTable().resizeColumnsToContents() self.ui.getLogLevelsTable().horizontalHeader().setStretchLastSection(True) super(Settings, self).show() def on_buttonBox_rejected(self): self.hide() def on_buttonBox_accepted(self): self.hide() self._save() def _save(self): # Store some data for extra processing oldRequestsLimit = self._settings.requests_limit # Assign new port and restart listener if port is changed oldPort = self._settings.port self._settings.port = int(self.ui.getPort().text()) self._settings.requests_limit = int(self.ui.getRequestsLimit().text()) self._settings.show_balloon = int(self.ui.getShowBalloon().isChecked()) # Get data from model self._settings.log_levels = self._settings._LOG_LEVELS_TABLE_MODEL.getData() # Save to DB self._settings.save() # Extra processing if self._settings.requests_limit != oldRequestsLimit: Request.all(True) self.parent.refreshRequestsModel() if self._settings.port != oldPort: self.parent.restartListener() self.hide() def btnCancel(self): self.hide()
def paint(self, painter, option, index): # This method will be called every time a particular cell is # in view and that view is changed in some way. We ask the # delegates parent (in this case a table view) if the index # in question (the table cell) already has a widget associated # with it. If not, create one with the text for this index and # connect its clicked signal to a slot in the parent view so # we are notified when its used and can do something. if not self.parent().indexWidget(index): rowData = Settings.getLogLevelsModel().getRowData(index) col = QColor(rowData[2]) self.frm = ColorPickerFrame() # Set index of current table row self.frm.setIndex(index) self.frm.setStyleSheet("QWidget { background-color: %s }" % col.name()) self.frm.setGeometry(130, 22, 100, 100) self.frm.setLineWidth(0) self.frm.setMidLineWidth(2) self.frm.setFrameStyle(QFrame.Box) self.frm.setFrameShadow(QFrame.Sunken) self.connect(self.frm, QtCore.SIGNAL('colorPickerClicked'), self.colorPickerClicked) self.parent().setIndexWidget(index, self.frm)
def colorPickerClicked(self, item): col = QtGui.QColorDialog.getColor() if col.isValid(): item.setStyleSheet("QWidget { background-color: %s }" % col.name()) Settings.getLogLevelsModel().setData(item.getIndex(), col.name(), QtCore.Qt.DisplayRole)
def __init__(self, WebinyNotifier): QtGui.QDialog.__init__(self) self.ui = SettingsWindow() self.ui.setupUi(self) self._settings = SettingsObj() self.parent = WebinyNotifier