Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/intro
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2007-09-04 21:24:15 (GMT)
committer Simon Schampijer <simon@schampijer.de>2007-09-04 21:24:15 (GMT)
commit5bd85906f23ba34b688c442410928c378765cc46 (patch)
treeb872ee8b3d2eb2c26c89885677aa1fa34e9d7a3e /shell/intro
parente7274066f164f5eb7613139462d468bca6ba152e (diff)
(next='Return', back='Escape')
Diffstat (limited to 'shell/intro')
-rw-r--r--shell/intro/intro.py47
1 files changed, 35 insertions, 12 deletions
diff --git a/shell/intro/intro.py b/shell/intro/intro.py
index 5455813..90804dc 100644
--- a/shell/intro/intro.py
+++ b/shell/intro/intro.py
@@ -51,6 +51,9 @@ class _Page(hippo.CanvasBox):
if pspec.name == 'valid':
return self.valid
+ def activate(self):
+ pass
+
class _NamePage(_Page):
def __init__(self, intro):
_Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER,
@@ -69,13 +72,9 @@ class _NamePage(_Page):
widget = self._entry.props.widget
widget.set_max_length(45)
- widget.connect('activate', self._entry_activate_cb)
self.append(self._entry)
- def _entry_activate_cb(self, entry):
- self._intro.next()
-
def _text_changed_cb(self, entry, pspec):
valid = len(entry.props.text.strip()) > 0
self.set_valid(valid)
@@ -83,6 +82,9 @@ class _NamePage(_Page):
def get_name(self):
return self._entry.props.text
+ def activate(self):
+ self._entry.props.widget.grab_focus()
+
class _ColorPage(_Page):
def __init__(self, **kwargs):
_Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER,
@@ -127,10 +129,6 @@ class _IntroBox(hippo.CanvasBox):
self._setup_page()
- def next(self):
- self._page += 1
- self._setup_page()
-
def _setup_page(self):
self.remove_all()
@@ -158,12 +156,13 @@ class _IntroBox(hippo.CanvasBox):
self._next_button = CanvasButton(_('Next'), 'go-right')
self._next_button.connect('activated', self._next_activated_cb)
+ self._current_page.activate()
+
self._update_next_button()
button_box.append(self._next_button)
self._current_page.connect('notify::valid',
self._page_valid_changed_cb)
-
self.append(button_box)
def _update_next_button(self):
@@ -174,20 +173,43 @@ class _IntroBox(hippo.CanvasBox):
self._update_next_button()
def _back_activated_cb(self, item):
- self._page -= 1
- self._setup_page()
+ self.back()
+
+ def back(self):
+ if self._page != self.PAGE_FIRST:
+ self._page -= 1
+ self._setup_page()
def _next_activated_cb(self, item):
self.next()
+ def next(self):
+ if self._page == self.PAGE_LAST:
+ self.done()
+ if self._current_page.props.valid:
+ self._page += 1
+ self._setup_page()
+
def _done_activated_cb(self, item):
+ self.done()
+
+ def done(self):
path = os.path.join(os.path.dirname(__file__), 'default-picture.png')
pixbuf = gtk.gdk.pixbuf_new_from_file(path)
name = self._name_page.get_name()
color = self._color_page.get_color()
-
+
self.emit('done', pixbuf, name, color)
+ def _key_press_cb(self, widget, event):
+ if gtk.gdk.keyval_name(event.keyval) == "Return":
+ self.next()
+ return True
+ elif gtk.gdk.keyval_name(event.keyval) == "Escape":
+ self.back()
+ return True
+ return False
+
class IntroWindow(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
@@ -199,6 +221,7 @@ class IntroWindow(gtk.Window):
self.add(self._canvas)
self._canvas.show()
+ self.connect('key-press-event', self._intro_box._key_press_cb)
def _done_cb(self, box, pixbuf, name, color):
self.hide()