Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOwen Williams <owen-olpc@ywwg.com>2007-06-29 15:08:06 (GMT)
committer Owen Williams <owen@ywwg.localdomain>2007-06-29 15:08:06 (GMT)
commit500f5d8093024a9321704212db6b73305a6da843 (patch)
treed16361c31cdf40cfa0eaea45c2c72e2bf29cfd93
parentf825c108da2250981e46ae3d62709ef570a51d49 (diff)
Fix for 1846. Strip whitespace from nicks and reject if blank
-rw-r--r--shell/intro/intro.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/shell/intro/intro.py b/shell/intro/intro.py
index 2ae097d..0a927c4 100644
--- a/shell/intro/intro.py
+++ b/shell/intro/intro.py
@@ -191,6 +191,26 @@ class EntryBox(hippo.CanvasBox, hippo.CanvasItem):
def get_text(self):
return self._entry.props.text
+
+ def flash_label(self):
+ """Briefly flashes the label to draw the user's attention to the
+ control"""
+
+ old_fg_color = color.LABEL_TEXT.get_int()
+ old_bg_color = 0x000000ff # background color set above
+ r,g,b,a = color.LABEL_TEXT.get_rgba()
+ fg_opposite = color.RGBColor(1 - r, 1 - g, 1 - b)
+ bg_opposite = color.RGBColor(1, 1, 1)
+
+ self._label.props.color = fg_opposite.get_int()
+ self._label.props.background_color = bg_opposite.get_int()
+
+ gobject.timeout_add(200, self._flash_reset, old_fg_color, old_bg_color)
+
+ def _flash_reset(self, old_fg_color, old_bg_color):
+ self._label.props.color = old_fg_color
+ self._label.props.background_color = old_bg_color
+ return False
class ColorBox(hippo.CanvasBox, hippo.CanvasItem):
@@ -257,12 +277,32 @@ class IntroBox(hippo.CanvasBox, hippo.CanvasItem):
pixbuf = gtk.gdk.pixbuf_new_from_file(path)
name = self._entry_box.get_text()
color = self._color_box.get_color()
+
+ name = self._check_nickname(name)
+
+ if name is None:
+ self._entry_box.flash_label()
+ return
if not pixbuf or not name or not color:
print "not one of pixbuf(%r), name(%r), or color(%r)"
return
self.emit('ok', pixbuf, name, color)
+
+ def _check_nickname(self, name):
+ """Returns None if a bad nickname, returns the corrected nickname
+ otherwise"""
+
+ if name is None:
+ return None
+
+ name = name.strip()
+
+ if len(name) == 0:
+ return None
+
+ return name
class IntroWindow(gtk.Window):