diff options
author | Bruno Coudoin <bruno.coudoin@free.fr> | 2009-10-28 22:35:49 (GMT) |
---|---|---|
committer | Bruno Coudoin <bruno.coudoin@free.fr> | 2009-10-28 22:35:49 (GMT) |
commit | 643b42b8035098b3e2971e4b323bc540a6278ca0 (patch) | |
tree | 73dac4008db01971f2a23f65243cc40aa2ac4750 | |
parent | d257a967d71c07835ad08ec6c107d3022225c279 (diff) |
Improved a little bit the save/load feature, works a little bit
for rectangles only. Uncomplete yet.
-rw-r--r-- | src/anim-activity/AnimItem.py | 33 | ||||
-rw-r--r-- | src/anim-activity/anim.py | 7 | ||||
-rw-r--r-- | src/boards/goocanvasmodule.c | 10 |
3 files changed, 43 insertions, 7 deletions
diff --git a/src/anim-activity/AnimItem.py b/src/anim-activity/AnimItem.py index eed54bd..d359371 100644 --- a/src/anim-activity/AnimItem.py +++ b/src/anim-activity/AnimItem.py @@ -40,7 +40,6 @@ class AnimItem: self.step = 1 self.item = None - self.events = None self.anchor = None self.old_x = 0 @@ -55,6 +54,23 @@ class AnimItem: # (properties, transformation). self.timeline = {} + def dump(self): + print "Dump AnimItem:" + print self.timeline + print self.item + print self.rootitem + + def restore(self, anim_): + print "restore AnimItem:" + print self.timeline + AnimItem.anim = anim_ + print AnimItem.anim + print AnimItem.anim.rootitem + self.rootitem = goocanvas.Group(parent = AnimItem.anim.rootitem) + # Should not have saved anchor in the first place + self.anchor = None + pass + def test(self): self.set_visible(0, 10) self.set_visible(11, 20) @@ -565,6 +581,21 @@ class AnimItemRect(AnimItem): filled = False + def dump(self): + print "Dump Rect:" + AnimItem.dump(self) + + def restore(self, anim_): + AnimItem.restore(self, anim_) + self.item = \ + goocanvas.Rect( + parent = self.rootitem + ) + self.item.set_data("AnimItem", self) + self.item.connect("button_press_event", anim_.item_event) + self.item.connect("button_release_event", anim_.item_event) + self.item.connect("motion_notify_event", anim_.item_event) + def __init__(self, anim, x, y, color_fill, color_stroke, line_width): AnimItem.__init__(self, anim) x,y = self.snap_to_grid(x, y) diff --git a/src/anim-activity/anim.py b/src/anim-activity/anim.py index e5228a6..f8b68e0 100644 --- a/src/anim-activity/anim.py +++ b/src/anim-activity/anim.py @@ -746,6 +746,9 @@ class Gcompris_anim: pickle.dump(self.animlist, file, self.pickle_protocol) file.close() + for item in self.animlist: + item.dump() + def file_to_anim(self, filename): file = open(filename, 'rb') @@ -764,7 +767,9 @@ class Gcompris_anim: print "load" self.animlist = pickle.load(file) for item in self.animlist: - item.anim = self + item.restore(self) + item.dump() + self.refresh(self.timeline.get_time()) else: print "ERROR: Unrecognized file format, file", filename, ' has description : ', desc file.close() diff --git a/src/boards/goocanvasmodule.c b/src/boards/goocanvasmodule.c index ff2f491..2e52fba 100644 --- a/src/boards/goocanvasmodule.c +++ b/src/boards/goocanvasmodule.c @@ -11,11 +11,11 @@ Pycairo_CAPI_t *Pycairo_CAPI; -void pygoocanvas_register_classes (PyObject *d); +void pygoocanvas_register_classes (PyObject *d); void pygoocanvas_add_constants(PyObject *module, const gchar *strip_prefix); extern PyMethodDef pygoocanvas_functions[]; - + static PyObject * _cairo_matrix_from_gvalue(const GValue *value) { @@ -65,9 +65,9 @@ initgoocanvas (void) m = Py_InitModule ("goocanvas", pygoocanvas_functions); d = PyModule_GetDict (m); - + init_pygobject (); - + pygoocanvas_register_classes (d); pygoocanvas_add_constants(m, "GOO_CANVAS_"); PyModule_AddObject(m, "TYPE_CAIRO_MATRIX", pyg_type_wrapper_new(GOO_TYPE_CAIRO_MATRIX)); @@ -84,7 +84,7 @@ initgoocanvas (void) PYGOOCANVAS_MAJOR_VERSION, PYGOOCANVAS_MINOR_VERSION, PYGOOCANVAS_MICRO_VERSION)); - + if (PyErr_Occurred ()) Py_FatalError ("can't initialise module goocanvas"); } |