diff options
Diffstat (limited to 'selectview.py')
-rw-r--r-- | selectview.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/selectview.py b/selectview.py new file mode 100644 index 0000000..3975363 --- /dev/null +++ b/selectview.py @@ -0,0 +1,54 @@ +import hippo +import os +import gobject +import gtk + +from sugar.graphics import color + +from selectentry import SelectEntry + +class SelectView(gtk.ScrolledWindow): + __gtype_name__ = 'SelectView' + + __gsignals__ = { + 'entry-selected': (gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, + ([object])) + } + + _SELECTED = 1000000 + _UNSELECTED = 3520189183 + def __init__(self, names): + gtk.ScrolledWindow.__init__(self) + + root = hippo.CanvasBox() + root.props.orientation = hippo.ORIENTATION_VERTICAL + + canvas = hippo.Canvas() + canvas.set_root(root) + self.add_with_viewport(canvas) + + self.tiles = [] + self.turn = 0 + self.current = 0 + + for name in names: + entry = SelectEntry(name) + entry.connect('button-press-event', self._button_press_cb) + root.append(entry) + if name == names[0]: + self.current = entry + entry.props.background_color = self._SELECTED + entry.emit_paint_needed(0, 0, -1, -1) + + canvas.show() + + def _button_press_cb(self, entry, event, data=None): + entry.props.background_color = self._SELECTED + entry.emit_paint_needed(0, 0, -1, -1) + + self.current.props.background_color = self._UNSELECTED + self.current.emit_paint_needed(0, 0, -1, -1) + self.current = entry + self.emit('entry-selected', entry) + |