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
|
# -*- coding: utf-8 -*-
class Learner:
""" All functionality within the learners rights. """
def __init__(self, display, coach):
self._display = display
self._coach = coach
self._ex = None
self._curr_in = None
pass
def run(self):
""" As long as user does exercises.
Doing Exercises is terminated by another choice in the menu
or by the user going bach to the OS.
"""
self._coach.request_exercise()
self._display.init_calc() #TODOWN091101 take Exercise as argument
def notify(self, (msg, data)):
'''called by the observed objects'''
#print('in learner.notify: msg=,data=', msg, data)
if msg == 'start-calcs': # from Coach
self._ex = data
self._display.set_curr_exerc(data)
_calc = self._ex.get_next_calc()
_lines, self._input = data.format(_calc)
self._display.display_calc(_lines)
self._curr_in = self._input.pop() #need _curr_in in notify
self._display.create_entryline(self._curr_in)
# create_entryline sets the callback from gtk to display
if msg == 'digit-done': # from Display
#print('in learner.notify, digit-done: _input=', self._input)
(lino, pos, dig, proterr, protok, li) = self._curr_in
self._display.create_entryline((lino, -1, dig, proterr, protok, li))
try: # _input.pop()
self._curr_in = self._input.pop()
self._display.create_entryline(self._curr_in)
except IndexError: # start new calc
self._display.show_progress()
try: # get_next_calc
_calc = self._ex.get_next_calc()
print('in learner.notify: calc=', _calc)
_lines, self._input = self._ex.format(_calc)
self._display.display_calc(_lines)
self._curr_in = self._input.pop() #need _curr_in in notify
self._display.create_entryline(self._curr_in)
# create_entryline sets the callback from gtk to Display
except IndexError:
self._display.finish_calc()
|