[ocrfeeder/new_fixes: 6/10] add __setstate__ and __getstate__ to the DataBox



commit cf4aeca93717d3bd2141006ed66604a3cae401c6
Author: Jan Losinski <losinski wh2 tu-dresden de>
Date:   Fri Jul 27 15:13:45 2012 +0200

    add __setstate__ and __getstate__ to the DataBox
    
    This is needed for proper pickling and unpickling of the boxes
    
    Signed-off-by: Jan Losinski <losinski wh2 tu-dresden de>

 src/ocrfeeder/studio/dataHolder.py |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/src/ocrfeeder/studio/dataHolder.py b/src/ocrfeeder/studio/dataHolder.py
index 82c89cd..2c1b2e1 100644
--- a/src/ocrfeeder/studio/dataHolder.py
+++ b/src/ocrfeeder/studio/dataHolder.py
@@ -81,6 +81,19 @@ class DataBox(gobject.GObject):
         self.text_data = TextData()
         self.text = text
 
+    def __setstate__(self, state):
+        state['image'] = Image.fromstring(*state['_image_state'])
+        del state['_image_state']
+        self.__dict__.update(state)
+        super(DataBox, self).__init__()
+        self.setType(self.type)
+
+    def __getstate__(self):
+        state = self.__dict__
+        state["_image_state"] = (state["image"].mode, (state["image"].size[0], state["image"].size[1]), state["image"].tostring())
+        del state["image"]
+        return state
+
     def configTextData(self, face = 'Sans', size = 12, justification = ALIGN_LEFT, line_space = 1, letter_space = 1):
         self.text_data = TextData(face, size, justification, line_space, letter_space)
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]