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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# -*- coding: utf-8 -*-
import gtk
import pygtk
import pango
import random
import copy
from sugar.graphics import style
from settings import Settings
from coach import Coach
from exaddsimp import ExAddSimp
from exaddsub import ExAddSub
from expassten import ExPassTen
from exmult import ExMult
from extimesdiv import ExTimesDiv
from extimesadd import ExTimesAdd
class Collection:
def __init__(self, display, coach):
self._sett = Settings()
#WN.LV diese Daten via pickle.load(...) holen ############
self._data = [(self._sett.get_setting('addsub_simp'), []),
(self._sett.get_setting('passten'), []),
(self._sett.get_setting('times_div'), [])]
#WN.LV [] ist die vorlaeufige Liste der errors ###########
self._display = display
self._coach = coach
self._active_exerc = None
def select(self, key):
""" Select an exercise by key.
Errors are retrieved for (future) use by Coach. """
#WN.LV Code ersetzen: key ist dann fuer Listen von Listen !!
(_sett, _errors) = self._data[key]
if _sett['topic'] == 'addsub_simp':
return ExAddSimp(self._display, (_sett, _errors))
elif _sett['topic'] == 'exaddsub':
return ExAddSub(self._display, (_sett, _errors))
elif _sett['topic'] == 'passten':
return ExPassTen(self._display, (_sett, _errors))
elif _sett['topic'] == 'exmult':
return ExMult(self._display, (_sett, _errors))
elif _sett['topic'] == 'times_div':
return ExTimesDiv(self._display, (_sett, _errors))
elif _sett['topic'] == 'extimesadd':
return ExTimesAdd(self._display, (_sett, _errors))
else:
raise Exception()
def define_coll_gui(self):
""" Define gui-elements for presenting the collection.
TODO: define once at startup of RP ?"""
#WN.LV diesen Code ersetzen: collection_table.attach(self.colldata,...
self.topic_box = gtk.HBox(True, 0)
#self._display.collection_table.attach(self.topic_box, 0, 6, 0, 1)
self._display.collection_table.attach(self.topic_box, 0, 9, 5, 6)
def set_coll_gui(self, coll_data):
""" Set gui-elements according to Collection.data. """
#WN.LV diesen Code ersetzen !!!!!
_i = 0
for _t in ['addsub_simp','passten','times_div']:
self.button = gtk.Button()
self.image = gtk.Image()
if(_t == 'addsub_simp'):
self.image.set_from_file("img/addsub_simp.jpg")
elif(_t == 'passten'):
self.image.set_from_file("img/passten.jpg")
elif(_t == 'times_div'):
self.image.set_from_file("img/times_div.jpg")
self.button.set_image(self.image)
self.button.connect("clicked", self.select_exerc_callback, _i)
self.topic_box.pack_start(self.button)
self.button.show()
_i = _i + 1
self.topic_box.show()
def select_exerc_callback(self, widget, coll_key):
""" Callback telling the item from the collection selected. """
#WN.LV diesen Code ersetzen> statt 1..n fuer Listen kommt coll_key
print('in Collection.select_exerc_callback')
if(self._active_exerc == None):
# at startup
self._active_exerc = coll_key
self._display.set_select_exerc_semaphore(coll_key)
#self._coach.notify(('exerc-selected', coll_key))
elif(self._active_exerc == coll_key):
# hit the same button once more
pass
elif(self._active_exerc != coll_key):
# switched to another exercise
self._active_exerc = coll_key
self._display.switch_exercise() # TODO rename
self._display.set_select_exerc_semaphore(coll_key)
#self._coach.notify(('exerc-selected', coll_key))
|