Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/intro
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2007-07-11 10:20:36 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-07-11 10:20:36 (GMT)
commitdde018a63e4cd60cb983136b295653b3db195ebf (patch)
treec72600af5fe4f91f24b3c78be7141692be1475bb /shell/intro
parentd2059c1baa92c44b2d97005340a0b975dffb44d9 (diff)
Implement nick name validation
Diffstat (limited to 'shell/intro')
-rw-r--r--shell/intro/intro.py102
1 files changed, 63 insertions, 39 deletions
diff --git a/shell/intro/intro.py b/shell/intro/intro.py
index 66a93bc..782a651 100644
--- a/shell/intro/intro.py
+++ b/shell/intro/intro.py
@@ -30,44 +30,55 @@ from sugar.graphics.canvasentry import CanvasEntry
import colorpicker
-class _NamePage(hippo.CanvasBox):
+_BACKGROUND_COLOR = style.COLOR_PANEL_GREY
+
+class _Page(hippo.CanvasBox):
+ __gproperties__ = {
+ 'valid' : (bool, None, None, False,
+ gobject.PARAM_READABLE)
+ }
+
def __init__(self, **kwargs):
- hippo.CanvasBox.__init__(self, xalign=hippo.ALIGNMENT_CENTER,
- spacing=style.DEFAULT_SPACING,
- orientation=hippo.ORIENTATION_HORIZONTAL,
- **kwargs)
+ hippo.CanvasBox.__init__(self, **kwargs)
+ self.valid = False
+
+ def set_valid(self, valid):
+ self.valid = valid
+ self.notify('valid')
+
+ def do_get_property(self, pspec):
+ if pspec.name == 'valid':
+ return self.valid
+
+class _NamePage(_Page):
+ def __init__(self):
+ _Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER,
+ background_color=_BACKGROUND_COLOR.get_int(),
+ spacing=style.DEFAULT_SPACING,
+ orientation=hippo.ORIENTATION_HORIZONTAL,)
label = hippo.CanvasText(text=_("Name:"))
self.append(label)
self._entry = CanvasEntry(box_width=style.zoom(300))
+ self._entry.set_background(_BACKGROUND_COLOR.get_html())
self._entry.props.widget.set_max_length(45)
+ self._entry.connect('notify::text', self._text_changed_cb)
self.append(self._entry)
- def get_name(self):
- return self._check_nickname(self._entry.props.text)
+ def _text_changed_cb(self, entry, pspec):
+ valid = len(entry.props.text.strip()) > 0
+ self.set_valid(valid)
- 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
+ def get_name(self):
+ return self._entry.props.text
-class _ColorPage(hippo.CanvasBox):
+class _ColorPage(_Page):
def __init__(self, **kwargs):
- hippo.CanvasBox.__init__(self, xalign=hippo.ALIGNMENT_CENTER,
- spacing=style.DEFAULT_SPACING,
- yalign=hippo.ALIGNMENT_CENTER,
- **kwargs)
- self._color = None
+ _Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER,
+ background_color=_BACKGROUND_COLOR.get_int(),
+ spacing=style.DEFAULT_SPACING,
+ yalign=hippo.ALIGNMENT_CENTER, **kwargs)
self._label = hippo.CanvasText(text=_("Click to change color:"),
xalign=hippo.ALIGNMENT_CENTER)
@@ -78,6 +89,7 @@ class _ColorPage(hippo.CanvasBox):
self.append(self._cp)
self._color = self._cp.get_color()
+ self.set_valid(True)
def _new_color_cb(self, widget, color):
self._color = color
@@ -102,10 +114,9 @@ class _IntroBox(hippo.CanvasBox):
hippo.CanvasBox.__init__(self, padding=style.zoom(30))
self._page = self.PAGE_NAME
-
- page_color = style.COLOR_PANEL_GREY.get_int()
- self._name_page = _NamePage(background_color=page_color)
- self._color_page = _ColorPage(background_color=page_color)
+ self._name_page = _NamePage()
+ self._color_page = _ColorPage()
+ self._current_page = None
self._setup_page()
@@ -113,31 +124,44 @@ class _IntroBox(hippo.CanvasBox):
self.remove_all()
if self._page == self.PAGE_NAME:
- self.append(self._name_page, hippo.PACK_EXPAND)
+ self._current_page = self._name_page
elif self._page == self.PAGE_COLOR:
- self.append(self._color_page, hippo.PACK_EXPAND)
+ self._current_page = self._color_page
+
+ self.append(self._current_page, hippo.PACK_EXPAND)
button_box = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL)
if self._page != self.PAGE_FIRST:
back_button = hippo.CanvasButton(text=_('Back'))
- back_button.connect('activated', self._done_activated_cb)
+ back_button.connect('activated', self._back_activated_cb)
button_box.append(back_button)
spacer = hippo.CanvasBox()
button_box.append(spacer, hippo.PACK_EXPAND)
if self._page == self.PAGE_LAST:
- done_button = hippo.CanvasButton(text=_('Done'))
- done_button.connect('activated', self._done_activated_cb)
- button_box.append(done_button)
+ self._next_button = hippo.CanvasButton(text=_('Done'))
+ self._next_button.connect('activated', self._done_activated_cb)
+ button_box.append(self._next_button)
else:
- next_button = hippo.CanvasButton(text=_('Next'))
- next_button.connect('activated', self._next_activated_cb)
- button_box.append(next_button)
+ self._next_button = hippo.CanvasButton(text=_('Next'))
+ self._next_button.connect('activated', self._next_activated_cb)
+ button_box.append(self._next_button)
+
+ self._update_next_button()
+ self._current_page.connect('notify::valid',
+ self._page_valid_changed_cb)
self.append(button_box)
+ def _update_next_button(self):
+ widget = self._next_button.props.widget
+ widget.props.sensitive = self._current_page.props.valid
+
+ def _page_valid_changed_cb(self, page, pspec):
+ self._update_next_button()
+
def _back_activated_cb(self, item):
self._page -= 1
self._setup_page()