def test_parse_qcolor_invalid(self): for spec in ( 123, (64, 128), (64, 128, 255, 32, 250), (64, 128.0, 255), (64, -1, 255), (64, 0, 256), ('64', '128', '255'), '#4080gf', '#4080', 'bogusname', '#4080ff80ff', {'r': 64, 'b': 255}, {'r': 64, 'g': 100, 'b': 255, 'extra': 4}, {'r': 64, 'red': 32, 'g': 100, 'b': 255}, {'r': 64, 'g': 128.0, 'b': 255}, ): with self.subTest(color_spec=spec): with self.assertRaises(ValueError): parse_qcolor(spec)
def mk_txt_fmt(derive=None, fg=None, bg=None, bold=False, ul=None, ul_color=None): text_format = QTextCharFormat(derive) if derive is not None else QTextCharFormat() if fg is not None: text_format.setForeground(QBrush(parse_qcolor(fg))) if bg is not None: text_format.setBackground(QBrush(parse_qcolor(bg))) if bold: text_format.setFontWeight(QFont.Bold) if ul is not None: if ul is True: text_format.setUnderlineStyle(QTextCharFormat.SingleUnderline) elif ul in UNDERLINE_STYLES: text_format.setUnderlineStyle(UNDERLINE_STYLES[ul]) else: raise ValueError("Unsupported underline style: '{0}'".format(ul)) if ul_color is not None: text_format.setUnderlineColor(parse_qcolor(ul_color)) return text_format
def test_parse_qcolor(self): for spec, expected_rgba in ( ((64, 128, 255), (64, 128, 255, 255)), ((64, 128, 255, 32), (64, 128, 255, 32)), ((0.25, 0.5, 1.0), (64, 128, 255, 255)), ('#4080ff', (64, 128, 255, 255)), ('#4080ff20', (64, 128, 255, 32)), ('#4080Ff', (64, 128, 255, 255)), ('4080ff', (64, 128, 255, 255)), ('red', (255, 0, 0, 255)), ('Red', (255, 0, 0, 255)), ({'r': 64, 'g': 128, 'b': 255}, (64, 128, 255, 255)), ({'r': 64, 'g': 128, 'b': 255, 'a': 32}, (64, 128, 255, 32)), ({'r': 64, 'G': 128, 'b': 255, 'A': 32}, (64, 128, 255, 32)), ({'reD': 64, 'Green': 128, 'bLuE': 255, 'ALPHA': 32}, (64, 128, 255, 32)), ({'r': 0.25, 'g': 0.5, 'b': 1.0}, (64, 128, 255, 255)), ({'red': 64, 'g': 128, 'b': 255, 'alpha': 32}, (64, 128, 255, 32)), ): with self.subTest(color_spec=spec, expected_rgba=expected_rgba): self.assertEqual(parse_qcolor(spec).getRgb(), expected_rgba)