rx_num = RX.compile(r'^[-+]?\d+$')
## The colour red.
-c_red = GDK.color_parse('red')
+c_red = GDK.color_parse('#ff6666')
class ValidationError (Exception):
"""Raised by ValidatingEntry.get_text() if the text isn't valid."""
characters (ish). Other arguments are passed to Entry.
"""
G.Entry.__init__(me, *arg, **kw)
- me.connect("changed", me.check)
+ me.connect("changed", me._check)
+ me.connect("state-changed", me._check)
if callable(valid):
me.validate = valid
else:
me.validate = RX.compile(valid).match
me.ensure_style()
- me.c_ok = me.get_style().text[G.STATE_NORMAL]
- me.c_bad = c_red
if size != -1: me.set_width_chars(size)
me.set_activates_default(True)
me.set_text(text)
- me.check()
+ me._check()
- def check(me, *hunoz):
+ def _check(me, *hunoz):
"""Check the current text and update validp and the text colour."""
if me.validate(G.Entry.get_text(me)):
me.validp = True
- me.modify_text(G.STATE_NORMAL, me.c_ok)
+ me.modify_base(G.STATE_NORMAL, None)
else:
me.validp = False
- me.modify_text(G.STATE_NORMAL, me.c_bad)
+ me.modify_base(G.STATE_NORMAL, me.is_sensitive() and c_red or None)
def get_text(me):
"""