set text box bg color on change
authorJosh Blum <josh@joshknows.com>
Wed, 9 Sep 2009 20:57:38 +0000 (13:57 -0700)
committerJosh Blum <josh@joshknows.com>
Wed, 9 Sep 2009 20:57:38 +0000 (13:57 -0700)
gr-wxgui/src/python/forms/forms.py

index c0f181b4d8050d33c442566188cc3c185850f99a..8dc58367d9deac34251467061d307388b816945e 100644 (file)
@@ -37,9 +37,6 @@ The forms follow a layered model:
 Known problems:
   * An empty label in the radio box still consumes space.
   * The static text cannot resize the parent at runtime.
-  * Text box should indicate its that its edited but not committed.
-    * Colorize?
-    * Tab out to commit?
 """
 
 EXT_KEY = 'external'
@@ -227,11 +224,18 @@ class text_box(_form_base):
        def __init__(self, label='', width=-1, converter=converters.eval_converter(), **kwargs):
                _form_base.__init__(self, converter=converter, **kwargs)
                self._text_box = wx.TextCtrl(self._parent, size=wx.Size(width, -1), style=wx.TE_PROCESS_ENTER)
+               self._default_bg_colour = self._text_box.GetBackgroundColour()
                self._text_box.Bind(wx.EVT_TEXT_ENTER, self._handle)
+               self._text_box.Bind(wx.EVT_TEXT, self._update_color)
                self._add_widget(self._text_box, label)
 
+       def _update_color(self, *args):
+               if self._text_box.GetValue() == self[INT_KEY]:
+                       self._text_box.SetBackgroundColour(self._default_bg_colour)
+               else: self._text_box.SetBackgroundColour('#EEDDDD')
+
        def _handle(self, event): self[INT_KEY] = self._text_box.GetValue()
-       def _update(self, value): self._text_box.SetValue(value)
+       def _update(self, value): self._text_box.SetValue(value); self._update_color()
 
 ########################################################################
 # Slider Form