def __init__(self, parent=None): super(CustomAttributes, self).__init__(parent) grid = QGridLayout() self.setLayout(grid) self.toplabel = QLabel() self.toplabel.setEnabled(False) self.toplabel.setAlignment(Qt.AlignCenter) grid.addWidget(self.toplabel, 0, 0, 1, 3) self.textColor = ColorButton() l = self.textLabel = QLabel() l.setBuddy(self.textColor) grid.addWidget(l, 1, 0) grid.addWidget(self.textColor, 1, 1) c = ClearButton(iconSize=QSize(16, 16)) c.clicked.connect(self.textColor.clear) grid.addWidget(c, 1, 2) self.backgroundColor = ColorButton() l = self.backgroundLabel = QLabel() l.setBuddy(self.backgroundColor) grid.addWidget(l, 2, 0) grid.addWidget(self.backgroundColor, 2, 1) c = ClearButton(iconSize=QSize(16, 16)) c.clicked.connect(self.backgroundColor.clear) grid.addWidget(c, 2, 2) self.bold = QCheckBox() self.italic = QCheckBox() self.underline = QCheckBox() grid.addWidget(self.bold, 3, 0) grid.addWidget(self.italic, 4, 0) grid.addWidget(self.underline, 5, 0) self.underlineColor = ColorButton() grid.addWidget(self.underlineColor, 5, 1) c = ClearButton(iconSize=QSize(16, 16)) c.clicked.connect(self.underlineColor.clear) grid.addWidget(c, 5, 2) grid.setRowStretch(6, 2) self.textColor.colorChanged.connect(self.changed) self.backgroundColor.colorChanged.connect(self.changed) self.underlineColor.colorChanged.connect(self.changed) self.bold.stateChanged.connect(self.changed) self.italic.stateChanged.connect(self.changed) self.underline.stateChanged.connect(self.changed) app.translateUI(self)
def __init__(self, parent=None): super(BaseColors, self).__init__(parent) grid = QGridLayout() grid.setSpacing(1) self.setLayout(grid) self.color = {} self.labels = {} for name in textformats.baseColors: c = self.color[name] = ColorButton(self) c.colorChanged.connect((lambda name: lambda: self.changed.emit(name))(name)) l = self.labels[name] = QLabel() l.setBuddy(c) row = grid.rowCount() grid.addWidget(l, row, 0) grid.addWidget(c, row, 1) grid.setRowStretch(grid.rowCount(), 2) app.translateUI(self)
class CustomAttributes(QGroupBox): changed = pyqtSignal() def __init__(self, parent=None): super(CustomAttributes, self).__init__(parent) grid = QGridLayout() self.setLayout(grid) self.toplabel = QLabel() self.toplabel.setEnabled(False) self.toplabel.setAlignment(Qt.AlignCenter) grid.addWidget(self.toplabel, 0, 0, 1, 3) self.textColor = ColorButton() l = self.textLabel = QLabel() l.setBuddy(self.textColor) grid.addWidget(l, 1, 0) grid.addWidget(self.textColor, 1, 1) c = ClearButton(iconSize=QSize(16, 16)) c.clicked.connect(self.textColor.clear) grid.addWidget(c, 1, 2) self.backgroundColor = ColorButton() l = self.backgroundLabel = QLabel() l.setBuddy(self.backgroundColor) grid.addWidget(l, 2, 0) grid.addWidget(self.backgroundColor, 2, 1) c = ClearButton(iconSize=QSize(16, 16)) c.clicked.connect(self.backgroundColor.clear) grid.addWidget(c, 2, 2) self.bold = QCheckBox() self.italic = QCheckBox() self.underline = QCheckBox() grid.addWidget(self.bold, 3, 0) grid.addWidget(self.italic, 4, 0) grid.addWidget(self.underline, 5, 0) self.underlineColor = ColorButton() grid.addWidget(self.underlineColor, 5, 1) c = ClearButton(iconSize=QSize(16, 16)) c.clicked.connect(self.underlineColor.clear) grid.addWidget(c, 5, 2) grid.setRowStretch(6, 2) self.textColor.colorChanged.connect(self.changed) self.backgroundColor.colorChanged.connect(self.changed) self.underlineColor.colorChanged.connect(self.changed) self.bold.stateChanged.connect(self.changed) self.italic.stateChanged.connect(self.changed) self.underline.stateChanged.connect(self.changed) app.translateUI(self) def translateUI(self): self.textLabel.setText(_("Text")) self.backgroundLabel.setText(_("Background")) self.bold.setText(_("Bold")) self.italic.setText(_("Italic")) self.underline.setText(_("Underline")) def setTopText(self, text): self.toplabel.setText(text) def setTristate(self, enable): self._tristate = enable self.bold.setTristate(enable) self.italic.setTristate(enable) self.underline.setTristate(enable) def textFormat(self): """Returns our settings as a QTextCharFormat object.""" f = QTextCharFormat() if self._tristate: value = lambda checkbox: [False, None, True][checkbox.checkState()] else: value = lambda checkbox: checkbox.isChecked() res = value(self.bold) if res is not None: f.setFontWeight(QFont.Bold if res else QFont.Normal) res = value(self.italic) if res is not None: f.setFontItalic(res) res = value(self.underline) if res is not None: f.setFontUnderline(res) if self.textColor.color().isValid(): f.setForeground(self.textColor.color()) if self.backgroundColor.color().isValid(): f.setBackground(self.backgroundColor.color()) if self.underlineColor.color().isValid(): f.setUnderlineColor(self.underlineColor.color()) return f def setTextFormat(self, f): """Sets our widget to the QTextCharFormat settings.""" block = self.blockSignals(True) absent = Qt.PartiallyChecked if self._tristate else Qt.Unchecked if f.hasProperty(QTextFormat.FontWeight): self.bold.setChecked(f.fontWeight() >= QFont.Bold) else: self.bold.setCheckState(absent) if f.hasProperty(QTextFormat.FontItalic): self.italic.setChecked(f.fontItalic()) else: self.italic.setCheckState(absent) if f.hasProperty(QTextFormat.TextUnderlineStyle): self.underline.setChecked(f.fontUnderline()) else: self.underline.setCheckState(absent) if f.hasProperty(QTextFormat.ForegroundBrush): self.textColor.setColor(f.foreground().color()) else: self.textColor.setColor(QColor()) if f.hasProperty(QTextFormat.BackgroundBrush): self.backgroundColor.setColor(f.background().color()) else: self.backgroundColor.setColor(QColor()) if f.hasProperty(QTextFormat.TextUnderlineColor): self.underlineColor.setColor(f.underlineColor()) else: self.underlineColor.setColor(QColor()) self.blockSignals(block)