def setData(self, index, value, role=Qt.EditRole): """Cell content change""" if not index.isValid() or self.readonly: return False i = index.row() j = index.column() value = from_qvariant(value, str) if self._data.dtype.name == "bool": try: val = bool(float(value)) except ValueError: val = value.lower() == "true" elif self._data.dtype.name.startswith("string"): val = str(value) elif self._data.dtype.name.startswith("unicode"): val = unicode(value) else: if value.lower().startswith("e") or value.lower().endswith("e"): return False try: val = complex(value) if not val.imag: val = val.real except ValueError, e: QMessageBox.critical(self.dialog, "Error", "Value error: %s" % str(e)) return False
def setData(self, index, value, role=Qt.EditRole): """Cell content change""" if not index.isValid() or self.readonly: return False i = index.row() j = index.column() value = from_qvariant(value, str) if self._data.dtype.name == "bool": try: val = bool(float(value)) except ValueError: val = value.lower() == "true" elif self._data.dtype.name.startswith("string"): val = str(value) elif self._data.dtype.name.startswith("unicode"): val = unicode(value) else: if value.lower().startswith('e') or value.lower().endswith('e'): return False try: val = complex(value) if not val.imag: val = val.real except ValueError, e: QMessageBox.critical(self.dialog, "Error", "Value error: %s" % str(e)) return False
def setEditorData(self, editor, index): text = from_qvariant(index.model().data(index, Qt.DisplayRole), str) if index.column() in (MOD1, MOD2, MOD3, KEY): i = editor.findText(text) if i == -1: i = 0 editor.setCurrentIndex(i) else: QItemDelegate.setEditorData(self, editor, index)
def setData(self, index, value, role=Qt.EditRole): if index.isValid() and 0 <= index.row() < len(self.shortcuts): shortcut = self.shortcuts[index.row()] key = shortcut.key column = index.column() text = from_qvariant(value, str) if column == MOD1: key.modifiers[0] = Key.modifier_from_name(text) elif column == MOD2: key.modifiers[1] = Key.modifier_from_name(text) elif column == MOD3: key.modifiers[2] = Key.modifier_from_name(text) elif column == KEY: key.key = Key.key_from_str(text) self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"), index, index) return True return False
def __init__(self, name, line, parent, preceding): if preceding is None: QTreeWidgetItem.__init__(self, parent, QTreeWidgetItem.Type) else: if preceding is not parent: # Preceding must be either the same as item's parent # or have the same parent as item while preceding.parent() is not parent: preceding = preceding.parent() if preceding is None: break if preceding is None: QTreeWidgetItem.__init__(self, parent, QTreeWidgetItem.Type) else: QTreeWidgetItem.__init__(self, parent, preceding, QTreeWidgetItem.Type) self.setText(0, name) parent_text = from_qvariant(parent.data(0, Qt.UserRole), unicode) set_item_user_text(self, parent_text+'/'+name) self.line = line
def __init__(self, name, line, parent, preceding): if preceding is None: QTreeWidgetItem.__init__(self, parent, QTreeWidgetItem.Type) else: if preceding is not parent: # Preceding must be either the same as item's parent # or have the same parent as item while preceding.parent() is not parent: preceding = preceding.parent() if preceding is None: break if preceding is None: QTreeWidgetItem.__init__(self, parent, QTreeWidgetItem.Type) else: QTreeWidgetItem.__init__(self, parent, preceding, QTreeWidgetItem.Type) self.setText(0, name) parent_text = from_qvariant(parent.data(0, Qt.UserRole), unicode) set_item_user_text(self, parent_text + '/' + name) self.line = line
def save_to_conf(self): """Save settings to configuration file""" for checkbox, (option, _default) in self.checkboxes.items(): self.set_option(option, checkbox.isChecked()) for radiobutton, (option, _default) in self.radiobuttons.items(): self.set_option(option, radiobutton.isChecked()) for lineedit, (option, _default) in self.lineedits.items(): self.set_option(option, unicode(lineedit.text())) for spinbox, (option, _default) in self.spinboxes.items(): self.set_option(option, spinbox.value()) for combobox, (option, _default) in self.comboboxes.items(): data = combobox.itemData(combobox.currentIndex()) self.set_option(option, from_qvariant(data, unicode)) for (fontbox, sizebox), option in self.fontboxes.items(): font = fontbox.currentFont() font.setPointSize(sizebox.value()) self.set_font(font, option) for clayout, (option, _default) in self.coloredits.items(): self.set_option(option, unicode(clayout.lineedit.text())) for (clayout, cb_bold, cb_italic), (option, _default) in self.scedits.items(): color = unicode(clayout.lineedit.text()) bold = cb_bold.isChecked() italic = cb_italic.isChecked() self.set_option(option, (color, bold, italic))
def setEditorData(self, editor, index): """Set editor widget's data""" text = from_qvariant(index.model().data(index, Qt.DisplayRole), str) editor.setText(text)
def load_from_conf(self): """Load settings from configuration file""" for checkbox, (option, default) in self.checkboxes.items(): checkbox.setChecked(self.get_option(option, default)) self.connect(checkbox, SIGNAL("clicked(bool)"), lambda _foo, opt=option: self.has_been_modified(opt)) for radiobutton, (option, default) in self.radiobuttons.items(): radiobutton.setChecked(self.get_option(option, default)) self.connect(radiobutton, SIGNAL("toggled(bool)"), lambda _foo, opt=option: self.has_been_modified(opt)) for lineedit, (option, default) in self.lineedits.items(): lineedit.setText(self.get_option(option, default)) self.connect(lineedit, SIGNAL("textChanged(QString)"), lambda _foo, opt=option: self.has_been_modified(opt)) for spinbox, (option, default) in self.spinboxes.items(): spinbox.setValue(self.get_option(option, default)) self.connect(spinbox, SIGNAL('valueChanged(int)'), lambda _foo, opt=option: self.has_been_modified(opt)) for combobox, (option, default) in self.comboboxes.items(): value = self.get_option(option, default) for index in range(combobox.count()): data = from_qvariant(combobox.itemData(index), unicode) # For PyQt API v2, it is necessary to convert `data` to # unicode in case the original type was not a string, like an # integer for example (see SMlib.qt.compat.from_qvariant): if unicode(data) == unicode(value): break combobox.setCurrentIndex(index) self.connect(combobox, SIGNAL('currentIndexChanged(int)'), lambda _foo, opt=option: self.has_been_modified(opt)) for (fontbox, sizebox), option in self.fontboxes.items(): font = self.get_font(option) fontbox.setCurrentFont(font) sizebox.setValue(font.pointSize()) if option is None: property = 'plugin_font' else: property = option self.connect(fontbox, SIGNAL('currentIndexChanged(int)'), lambda _foo, opt=property: self.has_been_modified(opt)) self.connect(sizebox, SIGNAL('valueChanged(int)'), lambda _foo, opt=property: self.has_been_modified(opt)) for clayout, (option, default) in self.coloredits.items(): property = to_qvariant(option) edit = clayout.lineedit btn = clayout.colorbtn edit.setText(self.get_option(option, default)) self.connect(btn, SIGNAL('clicked()'), lambda opt=option: self.has_been_modified(opt)) self.connect(edit, SIGNAL("textChanged(QString)"), lambda _foo, opt=option: self.has_been_modified(opt)) for (clayout, cb_bold, cb_italic ), (option, default) in self.scedits.items(): edit = clayout.lineedit btn = clayout.colorbtn color, bold, italic = self.get_option(option, default) edit.setText(color) cb_bold.setChecked(bold) cb_italic.setChecked(italic) self.connect(btn, SIGNAL('clicked()'), lambda opt=option: self.has_been_modified(opt)) self.connect(edit, SIGNAL("textChanged(QString)"), lambda _foo, opt=option: self.has_been_modified(opt)) self.connect(cb_bold, SIGNAL("clicked(bool)"), lambda _foo, opt=option: self.has_been_modified(opt)) self.connect(cb_italic, SIGNAL("clicked(bool)"), lambda _foo, opt=option: self.has_been_modified(opt))