Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/ReckonPrimer.activity/learner.py
blob: f296983c0fc30496057b911ecc3b3011c5470d89 (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
# -*- 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 == 'setting-done': # from Coach
            self._ex = 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()