Source code for wxyz.html.widget_color

""" Some more color traits and widgets
"""
# pylint: disable=R0903,R0901
import re

from wxyz.core.base import W

RE_RGB_EH = re.compile(r"rgba?\(\d+,\s*\d+,\s*\d+,\s*[10](\.\d+)?\)")


[docs]class AlphaColor(W.widgets.trait_types.Color): """A color with alpha"""
[docs] def validate(self, obj, value): """expand the validation to work for rgba""" if RE_RGB_EH.match(value): return value return super().validate(obj, value)
[docs]class EmptyAlphaColor(W.widgets.trait_types.Color): """A color with alpha that might be the empty string"""
[docs] def validate(self, obj, value): """expand the validation to work for rgba""" if value == "": return value return super().validate(obj, value)
[docs]class AlphaColorPicker(W.ColorPicker): """A color picker that should allow setting opacity""" value = AlphaColor("rgba(128, 128, 128, 0.5)").tag(sync=True)