Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/selectview.py
blob: 39753637951b8155cf05bf49229c690254c8a2e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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)