From cfd8818e1aba9326091aa5d3c3d58506a8cf17de Mon Sep 17 00:00:00 2001 From: Jean-Christophe Savard Date: Thu, 02 Apr 2009 20:32:41 +0000 Subject: Core : (LP Bug 341760 and 345394) Added data bundling interfaces in bundler.py File tutoserialize.py is obsolete --- diff --git a/src/sugar/tutorius/bundler.py b/src/sugar/tutorius/bundler.py new file mode 100644 index 0000000..585ba88 --- /dev/null +++ b/src/sugar/tutorius/bundler.py @@ -0,0 +1,102 @@ +# Copyright (C) 2009, Tutorius.org +# Copyright (C) 2009, Jean-Christophe Savard +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +""" +This module contains all the data handling class of Tutorius +""" + +import logging +import linecache +import os + +from sugar.tutorius import gtkutils, overlayer +from sugar.tutorius.core import Tutorial, State, FiniteStateMachine +from sugar.tutorius.actions import DialogMessage, OnceWrapper, BubbleMessage +from sugar.tutorius.filters import GtkWidgetEventFilter, TimerEvent + +class TutorialStore: + + def list_avaible_tutorials(self, activity_name): + """ + Recuperate the list of all tutorials present on disk for a + given activity. + """ + NotImplementedError + + +class Serializer: + """ + Class that provide serializing and deserializing of the FSM + used in the tutorials to/from disk. + """ + + def save_fsm(self,fsm): + """ + Save fsm to disk. + """ + NotImplementedError + + def load_fsm(self, guid): + """ + Load fsm from disk. + """ + NotImplementedError + +class XMLSerializer(Serializer): + """ + Class that provide serializing and deserializing of the FSM + used in the tutorials to/from a xml file. + """ + + def save_fsm(self,fsm): + """ + Save fsm to .xml file + """ + NotImplementedError + + + def load_fsm(self, guid): + """ + Load fsm from xml file who .ini file guid match argument guid. + """ + NotImplementedError + + +class TutorialBundler: + """ + This class provide the various data handling methods useable by the tutorial + editor. + """ + + def write_metadata_file(data): + """ + Write metadata to a .ini file. + """ + NotImplementedError + + def write_fsm(fsm): + """ + Write fsm to disk. + """ + NotImplementedError + + def add_resources(typename, file): + """ + Add ressources to metadata. + """ + NotImplementedError \ No newline at end of file diff --git a/src/sugar/tutorius/tutoserialize.py b/src/sugar/tutorius/temp.py index ebd17c6..f9ca9db 100644 --- a/src/sugar/tutorius/tutoserialize.py +++ b/src/sugar/tutorius/temp.py @@ -17,35 +17,24 @@ """ --Save and load FSM Dictionnary to file in $SUGAR_ACTIVITY_ROOT/data/ +This module contains all the data handling class of Tutorius """ import logging import linecache import os -import cPickle as pickle from sugar.tutorius import gtkutils, overlayer from sugar.tutorius.core import Tutorial, State, FiniteStateMachine from sugar.tutorius.actions import DialogMessage, OnceWrapper, BubbleMessage from sugar.tutorius.filters import GtkWidgetEventFilter, TimerEvent -class TutoSerializer: - """ - Serializer is a class that provide serializing and file reading and - writing to disk services for the FSM Dictionary used in the tutorials. - """ - def __init__(self): - """ - TutoSerializer constructor (empty) - """ - pass - +class TutorialStore: - def load_tuto_list(self): + def list_avaible_tutorials(self, activity_name): """ - Load the tutorial key/name list for this activity from .tml files. - Return the key/name dictionary + Recuperate the list of all tutorials present on disk for a + given activity. """ # TODO : Temp path; decide how .tml files will be distrribued in file # architecture @@ -85,11 +74,35 @@ class TutoSerializer: return tutoKeyName - def build_tutorial(self,key): + + +class Serializer: + """ + Class that provide serializing and deserializing of the FSM + used in the tutorials to/from disk. + """ + + def save_fsm(self,fsm): + """ + Save fsm to disk. + """ + NotImplementedError + + def load_fsm(self, guid): """ - Load the chosen dictionnary from Pickle file on disk, then build and - return the corresponding tutorial. - TODO : Decode pickle to prevent broswer corruption + Load fsm from disk. + """ + NotImplementedError + +class XMLSerializer(Serializer): + """ + Class that provide serializing and deserializing of the FSM + used in the tutorials to/from a xml file. + """ + + def save_fsm(self,fsm): + """ + Save fsm to .xml file """ path = os.getenv("SUGAR_ACTIVITY_ROOT") + "/data/" logging.debug("************ Path of /data/ folder of activity : " \ @@ -119,13 +132,9 @@ class TutoSerializer: return tuto - def save_tutorial(self, key, name, fsm, filename): + def load_fsm(self, guid): """ - Save the dictionnary given in parameter to a filename.tml file with a - key and a name. - - TODO : TEST : In developpement, untested. - TODO : Encode pickle to prevent broswer corruption + Load fsm from xml file who .ini file guid match argument guid. """ path = os.getenv("SUGAR_ACTIVITY_ROOT") + "/data/" @@ -140,4 +149,28 @@ class TutoSerializer: pickle.dumps(fsm,0) tutoSave.write(str) tutoSave.close() - \ No newline at end of file + + +class TutorialBundler: + """ + This class provide the various data handling methods useable by the tutorial + editor. + """ + + def write_metadata_file(data): + """ + Write metadata to a .ini file. + """ + NotImplementedError + + def write_fsm(fsm): + """ + Write fsm to disk. + """ + NotImplementedError + + def add_resources(typename, file): + """ + Add ressources to metadata. + """ + NotImplementedError \ No newline at end of file -- cgit v0.9.1