From 2d83d10fb1538db4a516eec261f4b6e8420a2647 Mon Sep 17 00:00:00 2001 From: Walther Neuper Date: Wed, 20 Jan 2010 17:59:21 +0000 Subject: write generated calcs to file and to journal --- diff --git a/.gitignore b/.gitignore index 2f836aa..370cdf6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *~ *.pyc +ReckonPrimer.activity/data/protocol.txt diff --git a/ReckonPrimer.activity/ReckonPrimerActivity.py b/ReckonPrimer.activity/ReckonPrimerActivity.py index 570490a..1975bb0 100755 --- a/ReckonPrimer.activity/ReckonPrimerActivity.py +++ b/ReckonPrimer.activity/ReckonPrimerActivity.py @@ -47,15 +47,17 @@ class ReckonPrimerActivity(activity.Activity): datastore.write( journal_object ) journal_object.destroy() - self.run_session() + #BEGIN LPCHANGE + self._session = Session("xo-user-name", self) + self.run_session() - - def run_session(self): - session = Session("xo-user-name", self) - session.run() - + def run_session(self): + self._session.run() - + def can_close(self): + self._session.close() + return True +#END LPCHANGE diff --git a/ReckonPrimer.activity/display.py b/ReckonPrimer.activity/display.py index a5390b4..ac02668 100755 --- a/ReckonPrimer.activity/display.py +++ b/ReckonPrimer.activity/display.py @@ -10,6 +10,10 @@ from timer import Timer from sugar import profile from sugar.graphics import style from sugar.activity import activity +#BEGIN LPCHANGE +from sugar.datastore import datastore +import os +#END LPCHANGE class Display: """ @@ -248,6 +252,10 @@ class Display: def offer_setting(self,ex): """ Prepare display for update of settings. """ self._ex = ex #WN.LV either drop this or self.current_exercise + #BEGIN LPCHANGE + self.protocol_settings_string() + #END LPCHANGE + self._sett = self._ex.get_setting() #WN.LV make _sett local self.current_exercise = ex #WN.LV either drop this or self._ex @@ -278,6 +286,7 @@ class Display: prepares for calculations from 1 setting. for instance, a calculation might be on 1 ore more lines. """ + #self._mode = "learner" print("in display.init_calc") # make empty lines such that all calcs are entered at bottom for i in range(1,21): @@ -298,11 +307,13 @@ class Display: end_iterator = self.log_buffer.get_end_iter() mark = self.log_buffer.create_mark(None, end_iterator, True) self.log_view.scroll_mark_onscreen(mark) + +#BEGIN LPCHANGE def protocol_generated_calcs(self, calculations, change): print("DEBUG: in display.protocol_generated_calcs") end_iterator = self.log_buffer.get_end_iter() - self.log_buffer.insert_with_tags_by_name(end_iterator, "\n---------- " + change + " ----------" , "fixxxme!" ) + self.log_buffer.insert_with_tags_by_name(end_iterator, "\n---------- " + change + " ----------") for c in calculations: end_iterator = self.log_buffer.get_end_iter() @@ -313,10 +324,64 @@ class Display: to_format[2] + " " + \ to_format[3] + " " + \ to_format[4] - self.log_buffer.insert_with_tags_by_name(end_iterator, "\n" + printable_calc, "fixxxme!" ) + self.log_buffer.insert_with_tags_by_name(end_iterator, "\n" + printable_calc) - mark = self.log_buffer.create_mark(None, end_iterator, True) + end_iterator = self.log_buffer.get_end_iter() + mark = self.log_buffer.create_mark(None, end_iterator, False) + self.log_view.scroll_mark_onscreen(mark) + #self.log_view.scroll_to_iter(end_iterator, 0) + #self.log_view.set_justification(gtk.JUSTIFY_CENTER) + + + def protocol_settings_string(self): + """ + This method writes the settings of the exercise to the protocol. + """ + settings_string = self._ex.get_settings_string() + end_iterator = self.log_buffer.get_end_iter() + self.log_buffer.insert_with_tags_by_name(end_iterator, "\n---------- SETTINGS ----------") + end_iterator = self.log_buffer.get_end_iter() + self.log_buffer.insert_with_tags_by_name(end_iterator, "\n" + settings_string) + for i in range(1,21): + end_iterator = self.log_buffer.get_end_iter() + self.log_buffer.insert(end_iterator, "\n") + + mark = self.log_buffer.create_mark(None, end_iterator, False) self.log_view.scroll_mark_onscreen(mark) + #self.log_view.scroll_to_iter(end_iterator, 0) + #self.log_view.set_justification(gtk.JUSTIFY_CENTER) + + def write_protocol_to_journal(self): + """ + This method writes the whole protocol to the journal. + """ + #open file + logfile = open('data/protocol.txt', 'w') + #get string from textbuffer + log_string = self.log_buffer.get_text(self.log_buffer.get_start_iter(), self.log_buffer.get_end_iter(), True) + #remove empty lines + stripped_string = '' + for line in log_string.split('\n'): + if line.strip(): + stripped_string += line + '\n' + #write to file + print stripped_string + logfile.write(stripped_string) + logfile.write('\n') + logfile.close() + print '------------------------------------------------------------------' + print file('data/protocol.txt').read() + #make journal entry + journal_object = datastore.create() + journal_object.metadata['title'] = 'ReckonPrimer Protocol' + journal_object.metadata['mime_type'] = 'text/plain' + journal_object.file_path = os.getcwd() + '/data/protocol.txt' + #journal_object.file_path = 'data/protocol.txt' + datastore.write(journal_object) + journal_object.destroy() + + +#END LPCHANGE def input_digit(self, widget, dig, proterr, protok): """callback: input a digit and give feedback. diff --git a/ReckonPrimer.activity/exercises/exaddsimp.py b/ReckonPrimer.activity/exercises/exaddsimp.py index 2ec1d88..9219a75 100755 --- a/ReckonPrimer.activity/exercises/exaddsimp.py +++ b/ReckonPrimer.activity/exercises/exaddsimp.py @@ -537,5 +537,6 @@ class ExAddSimp(Exercise): def _display_generated_calcs(self, change): print("DEBUG: in exaddsubsimp._display_generated_calcs()") self._display.protocol_generated_calcs(self._generate_calcs(), change) + #END LPCHANGE diff --git a/ReckonPrimer.activity/exercises/exercise.py b/ReckonPrimer.activity/exercises/exercise.py index 3049a4e..2e5f6b4 100755 --- a/ReckonPrimer.activity/exercises/exercise.py +++ b/ReckonPrimer.activity/exercises/exercise.py @@ -96,3 +96,13 @@ class Exercise: return ([_l0], _ip) #return ([[' ', '1', '0', ' ', '-', ' ', '7', ' ', '=', ' ', '_', ' ']], [(0, 10, '3', ' 10 - 7 = _ ', ' 10 - 7 = 3 ', [' ', '1', '0', ' ', '-', ' ', '7', ' ', '=', ' ', '3', ' '])]) +#BEGIN LPCHANGE + + def get_settings_string(self): + """ + This method returns the settings of the exercise as string. + \return The settings-string. + """ + return str(self._sett) + +#END LPCHANGE diff --git a/ReckonPrimer.activity/session.py b/ReckonPrimer.activity/session.py index 33e7c3a..83e0d0d 100755 --- a/ReckonPrimer.activity/session.py +++ b/ReckonPrimer.activity/session.py @@ -38,6 +38,12 @@ class Session: self._learner.run() #self._co.request_exercise() #self._dis.init_calc() #TODOWN091101 take Exercise as argument + + #BEGIN LPCHANGE + def close(self): + """ Closes the session""" + self._dis.write_protocol_to_journal() + #END LPCHANGE # def notify(self, (msg, data)): # '''called by the observed objects''' -- cgit v0.9.1