diff -r 26236e691330 -r cbeb769b0a56 plugins/c_ext/c_ext.py --- a/plugins/c_ext/c_ext.py Fri Dec 09 10:32:06 2011 +0100 +++ b/plugins/c_ext/c_ext.py Wed Dec 14 15:17:36 2011 +0100 @@ -31,7 +31,6 @@ self.Buffering = False self.CFile = CFileClasses["CFile"]() - self.CFileBuffer = UndoBuffer(self.Copy(self.CFile), False) if os.path.isfile(filepath): xmlfile = open(filepath, 'r') tree = minidom.parse(xmlfile) @@ -42,11 +41,9 @@ self.CFile.loadXMLTree(child, ["xmlns", "xmlns:xsi", "xsi:schemaLocation"]) self.CFileBuffer = UndoBuffer(self.Copy(self.CFile), True) else: + self.CFileBuffer = UndoBuffer(self.Copy(self.CFile), False) self.OnPlugSave() - def GetIconPath(self, name): - return opjimg(name) - def CFileName(self): return os.path.join(self.PlugPath(), "cfile.xml") @@ -174,7 +171,7 @@ xmlfile.write(text.encode("utf-8")) xmlfile.close() - self.CFileBuffer.CurrentSaved() + self.MarkCFileAsSaved() return True def PlugGenerate_C(self, buildpath, locations): @@ -276,34 +273,41 @@ #------------------------------------------------------------------------------- """ - Return a copy of the project + Return a copy of the cfile model """ def Copy(self, model): return cPickle.loads(cPickle.dumps(model)) + def CreateConfigBuffer(self, saved): + self.CFileBuffer = UndoBuffer(cPickle.dumps(self.CFile), saved) + def BufferCFile(self): - self.CFileBuffer.Buffering(self.Copy(self.CFile)) + self.CFileBuffer.Buffering(cPickle.dumps(self.CFile)) def StartBuffering(self): - self.CFileBuffer.Buffering(self.CFile) self.Buffering = True def EndBuffering(self): if self.Buffering: - self.CFile = self.Copy(self.CFile) + self.CFileBuffer.Buffering(cPickle.dumps(self.CFile)) self.Buffering = False + def MarkCFileAsSaved(self): + self.EndBuffering() + self.CFileBuffer.CurrentSaved() + def CFileIsSaved(self): if self.CFileBuffer: - return self.CFileBuffer.IsCurrentSaved() + return self.CFileBuffer.IsCurrentSaved() and not self.Buffering else: return True def LoadPrevious(self): - self.CFile = self.Copy(self.CFileBuffer.Previous()) + self.EndBuffering() + self.CFile = cPickle.loads(self.CFileBuffer.Previous()) def LoadNext(self): - self.CFile = self.Copy(self.CFileBuffer.Next()) + self.CFile = cPickle.loads(self.CFileBuffer.Next()) def GetBufferState(self): first = self.CFileBuffer.IsFirst()