[kupfer: 11/31] objects: Serialize Actions and ComposedLeaf
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [kupfer: 11/31] objects: Serialize Actions and ComposedLeaf
- Date: Thu, 31 Dec 2009 12:55:22 +0000 (UTC)
commit 7253d60c041da639fa2d38eaaee71a5b2d418710
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Wed Dec 30 18:22:33 2009 +0100
objects: Serialize Actions and ComposedLeaf
Mark *all* actions as serilizable; this way we can serialize
ComposedLeaf (that all contain one action instance).
kupfer/objects.py | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/kupfer/objects.py b/kupfer/objects.py
index f5cca89..6e9c53e 100644
--- a/kupfer/objects.py
+++ b/kupfer/objects.py
@@ -451,6 +451,7 @@ class Action (KupferObject):
"""
return True
'''
+ serilizable = True
def repr_key(self):
"""by default, actions of one type are all the same"""
@@ -1162,6 +1163,7 @@ class TimedDo (Do):
return _("Perform command after a specified time interval")
class ComposedLeaf (RunnableLeaf):
+ serilizable = True
def __init__(self, obj, action, iobj=None):
object_ = (obj, action, iobj)
# A slight hack: We remove trailing ellipsis and whitespace
@@ -1169,6 +1171,20 @@ class ComposedLeaf (RunnableLeaf):
name = u" â?? ".join([format(o) for o in object_ if o is not None])
RunnableLeaf.__init__(self, object_, name)
+ def __getstate__(self):
+ from kupfer import puid
+ state = dict(vars(self))
+ state["object"] = [puid.get_unique_id(o) for o in self.object]
+ return state
+
+ def __setstate__(self, state):
+ from kupfer import puid
+ vars(self).update(state)
+ self.object[:] = [puid.resolve_unique_id(I) for I in state["object"]]
+ if (not self.object[0] or not self.object[1] or
+ (I is None) != (self.object[2] is None)):
+ raise InvalidDataError
+
def get_actions(self):
action = self.object[1]
yield ProxyDo(action)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]