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)) for dateedit, (option, _default) in self.dateedits.items(): value = dateedit.date().toString("yyyy-MM-dd") self.set_option(option, value)
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 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 src.gui.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 dateedit, (option, default) in self.dateedits.items(): def extract_qdate_from_str(x): return QDate(int(x[:4]), int(x[5:7]), int(x[8:10])) dateedit.setDate(extract_qdate_from_str(self.get_option(option, default))) self.connect(dateedit, SIGNAL('dateChanged(QDate)'), 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))
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 src.gui.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 dateedit, (option, default) in self.dateedits.items(): def extract_qdate_from_str(x): return QDate(int(x[:4]), int(x[5:7]), int(x[8:10])) dateedit.setDate( extract_qdate_from_str(self.get_option(option, default))) self.connect(dateedit, SIGNAL('dateChanged(QDate)'), 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))
def keybinding(attr): """Return keybinding""" ks = getattr(QKeySequence, attr) return from_qvariant(QKeySequence.keyBindings(ks)[0], str)
def get_item_user_text(item): """Get QTreeWidgetItem user role string""" return from_qvariant(item.data(0, Qt.UserRole), unicode)