Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Drake <dsd@laptop.org>2011-07-25 06:57:27 (GMT)
committer Daniel Drake <dsd@laptop.org>2011-09-27 13:52:05 (GMT)
commitd3c94e87c7526c17414ce4a39268823dbf9c76c6 (patch)
treeb0008d2534e5919f5ddfb34869c5090976eb3015
parentadc1dee90198b2d5e6e5fcd7f7ac96de7f552555 (diff)
Remove hippo from the intro screens
Switch to standard GTK containers. Specific coloring details have been moved to the theme at the same time. Based on earlier work by Raul Gutierrez and Walter Bender.
-rw-r--r--src/jarabe/intro/colorpicker.py24
-rw-r--r--src/jarabe/intro/window.py122
2 files changed, 69 insertions, 77 deletions
diff --git a/src/jarabe/intro/colorpicker.py b/src/jarabe/intro/colorpicker.py
index 997199b..75c15c1 100644
--- a/src/jarabe/intro/colorpicker.py
+++ b/src/jarabe/intro/colorpicker.py
@@ -14,27 +14,27 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-import hippo
+import gtk
-from sugar.graphics.icon import CanvasIcon
+from sugar.graphics.icon import Icon
from sugar.graphics import style
from sugar.graphics.xocolor import XoColor
-class ColorPicker(hippo.CanvasBox, hippo.CanvasItem):
- def __init__(self, **kwargs):
- hippo.CanvasBox.__init__(self, **kwargs)
- self.props.orientation = hippo.ORIENTATION_HORIZONTAL
+class ColorPicker(gtk.EventBox):
+ def __init__(self):
+ gtk.EventBox.__init__(self)
self._xo_color = None
- self._xo = CanvasIcon(size=style.XLARGE_ICON_SIZE,
- icon_name='computer-xo')
+ self._xo = Icon(pixel_size=style.XLARGE_ICON_SIZE,
+ icon_name='computer-xo')
self._set_random_colors()
- self._xo.connect('activated', self._xo_activated_cb)
- self.append(self._xo)
+ self.connect('button-press-event', self._button_press_cb)
+ self.add(self._xo)
- def _xo_activated_cb(self, item):
- self._set_random_colors()
+ def _button_press_cb(self, widget, event):
+ if event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS:
+ self._set_random_colors()
def get_color(self):
return self._xo_color
diff --git a/src/jarabe/intro/window.py b/src/jarabe/intro/window.py
index df19fbf..f7937b1 100644
--- a/src/jarabe/intro/window.py
+++ b/src/jarabe/intro/window.py
@@ -22,12 +22,10 @@ import pwd
import gtk
import gobject
-import hippo
from sugar import env
from sugar.graphics import style
from sugar.graphics.icon import Icon
-from sugar.graphics.entry import CanvasEntry
from sugar.graphics.xocolor import XoColor
from jarabe.intro import colorpicker
@@ -57,13 +55,13 @@ def create_profile(name, color=None):
logging.error('Keypair exists, skip generation.')
-class _Page(hippo.CanvasBox):
+class _Page(gtk.VBox):
__gproperties__ = {
'valid': (bool, None, None, False, gobject.PARAM_READABLE),
}
- def __init__(self, **kwargs):
- hippo.CanvasBox.__init__(self, **kwargs)
+ def __init__(self):
+ gtk.VBox.__init__(self)
self.valid = False
def set_valid(self, valid):
@@ -80,27 +78,23 @@ class _Page(hippo.CanvasBox):
class _NamePage(_Page):
def __init__(self, intro):
- _Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER,
- background_color=_BACKGROUND_COLOR.get_int(),
- spacing=style.DEFAULT_SPACING,
- orientation=hippo.ORIENTATION_HORIZONTAL,)
-
+ _Page.__init__(self)
self._intro = intro
- 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.connect('notify::text', self._text_changed_cb)
+ alignment = gtk.Alignment(0.5, 0.5, 0, 0)
+ self.pack_start(alignment, expand=True, fill=True)
- widget = self._entry.props.widget
- widget.set_max_length(45)
+ hbox = gtk.HBox(spacing=style.DEFAULT_SPACING)
+ alignment.add(hbox)
- self.append(self._entry)
+ label = gtk.Label(_('Name:'))
+ hbox.pack_start(label, expand=False)
- if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL:
- self.reverse()
+ self._entry = gtk.Entry()
+ self._entry.connect('notify::text', self._text_changed_cb)
+ self._entry.set_size_request(style.zoom(300), -1)
+ self._entry.set_max_length(45)
+ hbox.pack_start(self._entry, expand=False)
def _text_changed_cb(self, entry, pspec):
valid = len(entry.props.text.strip()) > 0
@@ -113,22 +107,21 @@ class _NamePage(_Page):
self._entry.props.text = new_name
def activate(self):
- self._entry.props.widget.grab_focus()
+ self._entry.grab_focus()
class _ColorPage(_Page):
- def __init__(self, **kwargs):
- _Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER,
- background_color=_BACKGROUND_COLOR.get_int(),
- spacing=style.DEFAULT_SPACING,
- yalign=hippo.ALIGNMENT_CENTER, **kwargs)
+ def __init__(self):
+ _Page.__init__(self)
- self._label = hippo.CanvasText(text=_('Click to change color:'),
- xalign=hippo.ALIGNMENT_CENTER)
- self.append(self._label)
+ vbox = gtk.VBox(spacing=style.DEFAULT_SPACING)
+ self.pack_start(vbox, expand=True, fill=False)
- self._cp = colorpicker.ColorPicker(xalign=hippo.ALIGNMENT_CENTER)
- self.append(self._cp)
+ self._label = gtk.Label(_('Click to change color:'))
+ vbox.pack_start(self._label)
+
+ self._cp = colorpicker.ColorPicker()
+ vbox.pack_start(self._cp)
self._color = self._cp.get_color()
self.set_valid(True)
@@ -137,7 +130,7 @@ class _ColorPage(_Page):
return self._cp.get_color()
-class _IntroBox(hippo.CanvasBox):
+class _IntroBox(gtk.VBox):
__gsignals__ = {
'done': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])),
@@ -150,8 +143,8 @@ class _IntroBox(hippo.CanvasBox):
PAGE_LAST = PAGE_COLOR
def __init__(self):
- hippo.CanvasBox.__init__(self, padding=style.zoom(30),
- background_color=_BACKGROUND_COLOR.get_int())
+ gtk.VBox.__init__(self)
+ self.set_border_width(style.zoom(30))
self._page = self.PAGE_NAME
self._name_page = _NamePage(self)
@@ -172,58 +165,57 @@ class _IntroBox(hippo.CanvasBox):
self._setup_page()
def _setup_page(self):
- self.remove_all()
+ for child in self.get_children():
+ self.remove(child)
if self._page == self.PAGE_NAME:
self._current_page = self._name_page
elif self._page == self.PAGE_COLOR:
self._current_page = self._color_page
- self.append(self._current_page, hippo.PACK_EXPAND)
+ self.pack_start(self._current_page, expand=True)
- button_box = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL)
+ button_box = gtk.HButtonBox()
- if self._page != self.PAGE_FIRST:
- back_button = hippo.CanvasButton(text=_('Back'))
+ if self._page == self.PAGE_FIRST:
+ button_box.set_layout(gtk.BUTTONBOX_END)
+ else:
+ button_box.set_layout(gtk.BUTTONBOX_EDGE)
+ back_button = gtk.Button(_('Back'))
image = Icon(icon_name='go-left')
- back_button.props.widget.set_image(image)
- back_button.connect('activated', self._back_activated_cb)
- button_box.append(back_button)
+ back_button.set_image(image)
+ back_button.connect('clicked', self._back_activated_cb)
+ button_box.pack_start(back_button)
- spacer = hippo.CanvasBox()
- button_box.append(spacer, hippo.PACK_EXPAND)
-
- self._next_button = hippo.CanvasButton()
+ self._next_button = gtk.Button()
image = Icon(icon_name='go-right')
- self._next_button.props.widget.set_image(image)
+ self._next_button.set_image(image)
if self._page == self.PAGE_LAST:
- self._next_button.props.text = _('Done')
- self._next_button.connect('activated', self._done_activated_cb)
+ self._next_button.set_label(_('Done'))
+ self._next_button.connect('clicked', self._done_activated_cb)
else:
- self._next_button.props.text = _('Next')
- self._next_button.connect('activated', self._next_activated_cb)
+ self._next_button.set_label(_('Next'))
+ self._next_button.connect('clicked', self._next_activated_cb)
self._current_page.activate()
self._update_next_button()
- button_box.append(self._next_button)
+ button_box.pack_start(self._next_button)
self._current_page.connect('notify::valid',
self._page_valid_changed_cb)
- self.append(button_box)
- if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL:
- button_box.reverse()
+ self.pack_start(button_box, expand=False)
+ self.show_all()
def _update_next_button(self):
- widget = self._next_button.props.widget
- widget.props.sensitive = self._current_page.props.valid
+ self._next_button.set_sensitive(self._current_page.props.valid)
def _page_valid_changed_cb(self, page, pspec):
self._update_next_button()
- def _back_activated_cb(self, item):
+ def _back_activated_cb(self, widget):
self.back()
def back(self):
@@ -231,7 +223,7 @@ class _IntroBox(hippo.CanvasBox):
self._page -= 1
self._setup_page()
- def _next_activated_cb(self, item):
+ def _next_activated_cb(self, widget):
self.next()
def next(self):
@@ -241,7 +233,7 @@ class _IntroBox(hippo.CanvasBox):
self._page += 1
self._setup_page()
- def _done_activated_cb(self, item):
+ def _done_activated_cb(self, widget):
self.done()
def done(self):
@@ -252,19 +244,19 @@ class _IntroBox(hippo.CanvasBox):
class IntroWindow(gtk.Window):
+ __gtype_name__ = 'SugarIntroWindow'
+
def __init__(self):
gtk.Window.__init__(self)
self.props.decorated = False
self.maximize()
- self._canvas = hippo.Canvas()
self._intro_box = _IntroBox()
self._intro_box.connect('done', self._done_cb)
- self._canvas.set_root(self._intro_box)
- self.add(self._canvas)
- self._canvas.show()
+ self.add(self._intro_box)
+ self._intro_box.show()
self.connect('key-press-event', self.__key_press_cb)
def _done_cb(self, box, name, color):