Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/persistencia.py
diff options
context:
space:
mode:
authorGonzalo Odiard <gonzalo@nautilus.localdomain>2009-11-15 07:03:43 (GMT)
committer Gonzalo Odiard <gonzalo@nautilus.localdomain>2009-11-15 07:03:43 (GMT)
commit517a14910415dfbbbca2c051dad285ec1183fed6 (patch)
tree55c731e6b54841091f8a74ad3c495999d17b5f38 /persistencia.py
parent2d3d67d58f34a815e09c63ce461bdc47122ee5e5 (diff)
implemento persistencia con simplejson (falta implementar grabacion de imagenes)
Diffstat (limited to 'persistencia.py')
-rw-r--r--persistencia.py46
1 files changed, 26 insertions, 20 deletions
diff --git a/persistencia.py b/persistencia.py
index b1fffa5..f6eec39 100644
--- a/persistencia.py
+++ b/persistencia.py
@@ -1,9 +1,10 @@
# -*- coding: UTF_8 -*-
import os, sys
-import pickle
+import simplejson
import globos
+
class PageData:
def __init__(self):
@@ -15,6 +16,8 @@ class BoxData:
self.globos = []
self.image_name = None
+
+
class Persistence:
def write(self,file_name,page):
@@ -28,14 +31,16 @@ class Persistence:
# Copio los datos de Page en PageData
- pageData = PageData()
+ pageData = {}
+ pageData["boxs"] = []
for box in page.boxs:
- boxData = BoxData()
- boxData.image_name = box.image_name
+ boxData = {}
+ boxData["image_name"] = box.image_name
+ boxData["globos"] = []
for globo in box.globos:
globoData = {}
- print "Grabando",globo.__class__
- globoData['tipo_globo'] = globo.__class__
+ print "Grabando",globo.globe_type
+ globoData['globe_type'] = globo.globe_type
globoData['radio'] = globo.radio
globoData['ancho'],globoData['alto'] = globo.ancho,globo.alto
if (globo.__class__ != globos.Rectangulo):
@@ -68,14 +73,15 @@ class Persistence:
globoData['text_mostrar_borde'] = globo.texto.mostrar_borde
globoData['text_mostrar_cursor'] = globo.texto.mostrar_cursor
- boxData.globos.append(globoData)
- pageData.boxs.append(boxData)
+
+ boxData["globos"].append(globoData)
+ pageData["boxs"].append(boxData)
# hago picle de pageData
-
+ print pageData
f = open(file_name, 'w')
try:
- pickle.dump(pageData, f)
+ simplejson.dump(pageData, f)
finally:
f.close()
@@ -85,41 +91,41 @@ class Persistence:
pageData = PageData()
f = open(file_name, 'r')
try:
- pageData = pickle.load(f)
+ pageData = simplejson.load(f)
finally:
f.close()
primero = True
- for boxData in pageData.boxs:
+ for boxData in pageData["boxs"]:
if not primero:
# el primero ya esta creado
page.add_box()
primero = False
box = page.get_active_box()
- box.image_name = boxData.image_name
- for globoData in boxData.globos:
+ box.image_name = boxData["image_name"]
+ for globoData in boxData["globos"]:
globo_x,globo_y = globoData['x'],globoData['y']
globo_modo = None
if ('modo' in globoData):
globo_modo = globoData['modo']
globo_direccion = globoData['direccion']
- tipo_globo = globoData['tipo_globo']
+ tipo_globo = globoData['globe_type']
print "tipo_globo", tipo_globo
globo = None
- if (tipo_globo == globos.Globo):
+ if (tipo_globo == "GLOBE"):
globo = globos.Globo(x = globo_x , y = globo_y , modo = globo_modo , direccion = globo_direccion)
- elif (tipo_globo == globos.Nube):
+ elif (tipo_globo == "CLOUD"):
globo = globos.Nube(x = globo_x , y = globo_y , direccion = globo_direccion)
- elif (tipo_globo == globos.Grito):
+ elif (tipo_globo == "EXCLAMATION"):
globo = globos.Grito(x = globo_x , y = globo_y , direccion = globo_direccion)
- elif (tipo_globo == globos.Rectangulo):
+ elif (tipo_globo == "RECTANGLE"):
globo = globos.Rectangulo(x = globo_x , y = globo_y)
if globo != None:
globo.radio = globoData['radio']
globo.ancho,globo.alto = globoData['ancho'],globoData['alto']
- if (tipo_globo != globos.Rectangulo):
+ if (tipo_globo != "RECTANGLE"):
globo.punto = [globoData['punto_0'],globoData['punto_1']]
globo.x,globo.y = globoData['x'],globoData['y']