# HG changeset patch # User Laurent Bessard # Date 1378244362 -7200 # Node ID 6be6c1e0e4d043a2212378038587ff2bfc4340b0 # Parent 908a5803c2cc86a2406cea15d5b3d660a8e24bed Fixed undo/redo with xmlclass refactoring diff -r 908a5803c2cc -r 6be6c1e0e4d0 PLCControler.py --- a/PLCControler.py Tue Sep 03 23:36:10 2013 +0200 +++ b/PLCControler.py Tue Sep 03 23:39:22 2013 +0200 @@ -240,9 +240,6 @@ self.Project.setcontentHeader(properties) self.SetFilePath("") - ## To remove when project buffering ready - self.ProjectBufferEnabled = False - # Initialize the project buffer self.CreateProjectBuffer(False) self.ProgramChunks = [] @@ -3144,10 +3141,6 @@ except Exception, e: return _("Project file syntax error:\n\n") + str(e) self.SetFilePath(filepath) - - ## To remove when project buffering ready - self.ProjectBufferEnabled = False - self.CreateProjectBuffer(True) self.ProgramChunks = [] self.ProgramOffset = 0 @@ -3199,7 +3192,7 @@ def CreateProjectBuffer(self, saved): if self.ProjectBufferEnabled: - self.ProjectBuffer = UndoBuffer(cPickle.dumps(self.Project), saved) + self.ProjectBuffer = UndoBuffer(PLCOpenParser.Dumps(self.Project), saved) else: self.ProjectBuffer = None self.ProjectSaved = saved @@ -3218,7 +3211,7 @@ def BufferProject(self): if self.ProjectBuffer is not None: - self.ProjectBuffer.Buffering(cPickle.dumps(self.Project)) + self.ProjectBuffer.Buffering(PLCOpenParser.Dumps(self.Project)) else: self.ProjectSaved = False @@ -3230,7 +3223,7 @@ def EndBuffering(self): if self.ProjectBuffer is not None and self.Buffering: - self.ProjectBuffer.Buffering(cPickle.dumps(self.Project)) + self.ProjectBuffer.Buffering(PLCOpenParser.Dumps(self.Project)) self.Buffering = False def MarkProjectAsSaved(self): @@ -3250,11 +3243,11 @@ def LoadPrevious(self): self.EndBuffering() if self.ProjectBuffer is not None: - self.Project = cPickle.loads(self.ProjectBuffer.Previous()) + self.Project = PLCOpenParser.Loads(self.ProjectBuffer.Previous()) def LoadNext(self): if self.ProjectBuffer is not None: - self.Project = cPickle.loads(self.ProjectBuffer.Next()) + self.Project = PLCOpenParser.Loads(self.ProjectBuffer.Next()) def GetBufferState(self): if self.ProjectBuffer is not None: diff -r 908a5803c2cc -r 6be6c1e0e4d0 xmlclass/xmlclass.py --- a/xmlclass/xmlclass.py Tue Sep 03 23:36:10 2013 +0200 +++ b/xmlclass/xmlclass.py Tue Sep 03 23:39:22 2013 +0200 @@ -1654,6 +1654,12 @@ etree.XMLParser.set_element_class_lookup(self, class_lookup) self.ClassLookup = class_lookup + def Dumps(self, xml_obj): + return etree.tostring(xml_obj) + + def Loads(self, xml_string): + return etree.fromstring(xml_string, self) + def CreateRoot(self): if self.BaseClass is not None: root = self.makeelement(