Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Darío Giménez <jgimenez@localhost.localdomain>2010-05-27 02:45:50 (GMT)
committer José Darío Giménez <jgimenez@localhost.localdomain>2010-05-27 02:45:50 (GMT)
commit4a70bd95781bc6c1b8711ddf37c26377fbe9b8b2 (patch)
tree6220065d2a52f514e4946b667db99877291b72ef
parenta4b82a3c05866e2372a2c8632b7500d8a1507e4c (diff)
The datastore funtionality has been implemented!!! It's only save a state if a session has already been started. It's saves all the data that has been entered by the user (selected category,difficuty,user answer, messages for the evaluated answer if ths answer has already been evualuated). Some of the modularity has been broken to implement this because of the little time left, in a next commit it will be corrected.
-rw-r--r--activity.py13
-rw-r--r--controller.py51
-rwxr-xr-xpuzzles/1/Matematica/prueba2.txt7
-rw-r--r--session.py17
4 files changed, 61 insertions, 27 deletions
diff --git a/activity.py b/activity.py
index 2abc797..785a750 100644
--- a/activity.py
+++ b/activity.py
@@ -2,8 +2,21 @@
from sugar.activity import activity
import logging
import controller
+import cPickle
class SugarBrainActivity(activity.Activity):
def __init__(self, handle):
activity.Activity.__init__(self, handle)
self.controller=controller.Controller(self)
+
+ def write_file(self, filename):
+ print 'write:'+filename
+ datastored=open(filename, 'w')
+ cPickle.dump(self.controller.getSessionForDataStore(), datastored)
+ datastored.close()
+
+ def read_file(self, filename):
+ print 'read:'+filename
+ datastored=open(filename,'r')
+ self.controller.setSessionFromDataStore(cPickle.load(datastored))
+ datastored.close()
diff --git a/controller.py b/controller.py
index 4b3cef4..a2b8e41 100644
--- a/controller.py
+++ b/controller.py
@@ -8,19 +8,15 @@ class Controller():
def newGame(self,widget):
self.session=session.Session(self.get_active_text(self.view.toolbar.categorias),self.get_active_text(self.view.toolbar.dificultades))
- self.answered=True
- self.continues=True
self.nextPuzzle(widget)
def evaluateAnswer(self,widget):
- if self.continues:
- if not self.answered:
- self.answered=True
- if self.session.evaluateAnswer(self.view.respT.get_text()):
- status='Correcto.'
- else:
- status='Incorrecto.'
- self.view.showAnswer(status,self.session.currentPuzzle().answer)
+ if not self.session.isAnswered():
+ if self.session.evaluateAnswer(self.view.respT.get_text()):
+ status='Correcto.'
+ else:
+ status='Incorrecto.'
+ self.view.showAnswer(status,self.session.currentPuzzle().answer)
def hasClue(self,widget):
return self.session.currentPuzzle().hasClue()
@@ -29,23 +25,16 @@ class Controller():
return self.session.currentPuzzle().getClue()
def nextPuzzle(self,widget):
- if self.continues:
- if not self.answered:
- self.evaluateAnswer(widget)
- else:
- self.continues=self.session.nextPuzzle()
- if self.continues:
- self.answered=False
- self.view.refreshQuestion(self.session.currentPuzzle().question)
- self.view.hideAnswer()
- self.view.cleanUserAnswer()
+ self.session.nextPuzzle()
+ self.view.refreshQuestion(self.session.currentPuzzle().question)
+ self.view.hideAnswer()
+ self.view.cleanUserAnswer()
def pause(self,widget):
return self.session.pause()
def end(self,widget):
self.session.end()
- self.answered=True
self.nextPuzzle(widget)
def get_active_text(self,combobox):
@@ -54,3 +43,23 @@ class Controller():
if active < 0:
return None
return model[active][0]
+
+ def getSessionForDataStore(self):
+ if 'session' in self.__dict__:
+ self.session.categorias=self.view.toolbar.categorias.get_active()
+ self.session.dificultades=self.view.toolbar.dificultades.get_active()
+ self.session.userAnswer=self.view.respT.get_text()
+ self.session.message=self.view.answer.get_text()
+ return self.session
+ else:
+ return None
+
+ def setSessionFromDataStore(self,session):
+ if session!=None:
+ self.session=session
+ self.view.refreshQuestion(self.session.currentPuzzle().question)
+ self.view.toolbar.categorias.set_active(self.session.categorias)
+ self.view.toolbar.dificultades.set_active(self.session.dificultades)
+ self.view.respT.set_text(self.session.userAnswer)
+ self.view.answer.set_text(self.session.message)
+ self.view.answer.show()
diff --git a/puzzles/1/Matematica/prueba2.txt b/puzzles/1/Matematica/prueba2.txt
new file mode 100755
index 0000000..9c14442
--- /dev/null
+++ b/puzzles/1/Matematica/prueba2.txt
@@ -0,0 +1,7 @@
+question = 'La pregunta 2'
+image = '/home/algo.svg 2'
+answer = 'La respuesta 2'
+topic = 'matematica'
+difficulty = 'facil'
+score = '5'
+
diff --git a/session.py b/session.py
index e06a811..7afe105 100644
--- a/session.py
+++ b/session.py
@@ -31,22 +31,27 @@ class Session:
i = random.randrange(0, l)
self.old_puzzles.append(self.list_puzzles[i])
self.current=self.list_puzzles.pop(i)
- return True
+ self.answered=False
else:
self.current.question='Juego Terminado\nPuntaje='+str(self.score)
- return False
+ self.answered=True
def currentPuzzle(self):
return self.current
def evaluateAnswer(self,answer):
- test=self.currentPuzzle().evaluateAnswer(answer)
- if test:
- self.score+=self.currentPuzzle().getScore()
- return test
+ if not self.isAnswered():
+ self.answered=True
+ test=self.currentPuzzle().evaluateAnswer(answer)
+ if test:
+ self.score+=self.currentPuzzle().getScore()
+ return test
def end(self):
self.list_puzzles=[]
+
+ def isAnswered(self):
+ return self.answered
def __str__(self):
return 'Sesión de topico = ' + str(self.topic) + ' y dificultad = ' + str(self.difficulty)