# -*- 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 start_calcs(self, exercise): self._ex = exercise self._display.set_curr_exerc(exercise) _calc = self._ex.get_next_calc() _lines, self._input = exercise.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) def digit_done(self): (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()