29 def __init__(self): |
29 def __init__(self): |
30 filepath = self.CFileName() |
30 filepath = self.CFileName() |
31 |
31 |
32 self.Buffering = False |
32 self.Buffering = False |
33 self.CFile = CFileClasses["CFile"]() |
33 self.CFile = CFileClasses["CFile"]() |
34 self.CFileBuffer = UndoBuffer(self.Copy(self.CFile), False) |
|
35 if os.path.isfile(filepath): |
34 if os.path.isfile(filepath): |
36 xmlfile = open(filepath, 'r') |
35 xmlfile = open(filepath, 'r') |
37 tree = minidom.parse(xmlfile) |
36 tree = minidom.parse(xmlfile) |
38 xmlfile.close() |
37 xmlfile.close() |
39 |
38 |
40 for child in tree.childNodes: |
39 for child in tree.childNodes: |
41 if child.nodeType == tree.ELEMENT_NODE and child.nodeName == "CFile": |
40 if child.nodeType == tree.ELEMENT_NODE and child.nodeName == "CFile": |
42 self.CFile.loadXMLTree(child, ["xmlns", "xmlns:xsi", "xsi:schemaLocation"]) |
41 self.CFile.loadXMLTree(child, ["xmlns", "xmlns:xsi", "xsi:schemaLocation"]) |
43 self.CFileBuffer = UndoBuffer(self.Copy(self.CFile), True) |
42 self.CFileBuffer = UndoBuffer(self.Copy(self.CFile), True) |
44 else: |
43 else: |
|
44 self.CFileBuffer = UndoBuffer(self.Copy(self.CFile), False) |
45 self.OnPlugSave() |
45 self.OnPlugSave() |
46 |
|
47 def GetIconPath(self, name): |
|
48 return opjimg(name) |
|
49 |
46 |
50 def CFileName(self): |
47 def CFileName(self): |
51 return os.path.join(self.PlugPath(), "cfile.xml") |
48 return os.path.join(self.PlugPath(), "cfile.xml") |
52 |
49 |
53 def GetFilename(self): |
50 def GetFilename(self): |
274 #------------------------------------------------------------------------------- |
271 #------------------------------------------------------------------------------- |
275 # Current Buffering Management Functions |
272 # Current Buffering Management Functions |
276 #------------------------------------------------------------------------------- |
273 #------------------------------------------------------------------------------- |
277 |
274 |
278 """ |
275 """ |
279 Return a copy of the project |
276 Return a copy of the cfile model |
280 """ |
277 """ |
281 def Copy(self, model): |
278 def Copy(self, model): |
282 return cPickle.loads(cPickle.dumps(model)) |
279 return cPickle.loads(cPickle.dumps(model)) |
283 |
280 |
|
281 def CreateConfigBuffer(self, saved): |
|
282 self.CFileBuffer = UndoBuffer(cPickle.dumps(self.CFile), saved) |
|
283 |
284 def BufferCFile(self): |
284 def BufferCFile(self): |
285 self.CFileBuffer.Buffering(self.Copy(self.CFile)) |
285 self.CFileBuffer.Buffering(cPickle.dumps(self.CFile)) |
286 |
286 |
287 def StartBuffering(self): |
287 def StartBuffering(self): |
288 self.CFileBuffer.Buffering(self.CFile) |
|
289 self.Buffering = True |
288 self.Buffering = True |
290 |
289 |
291 def EndBuffering(self): |
290 def EndBuffering(self): |
292 if self.Buffering: |
291 if self.Buffering: |
293 self.CFile = self.Copy(self.CFile) |
292 self.CFileBuffer.Buffering(cPickle.dumps(self.CFile)) |
294 self.Buffering = False |
293 self.Buffering = False |
|
294 |
|
295 def MarkCFileAsSaved(self): |
|
296 self.EndBuffering() |
|
297 self.CFileBuffer.CurrentSaved() |
295 |
298 |
296 def CFileIsSaved(self): |
299 def CFileIsSaved(self): |
297 if self.CFileBuffer: |
300 if self.CFileBuffer: |
298 return self.CFileBuffer.IsCurrentSaved() |
301 return self.CFileBuffer.IsCurrentSaved() and not self.Buffering |
299 else: |
302 else: |
300 return True |
303 return True |
301 |
304 |
302 def LoadPrevious(self): |
305 def LoadPrevious(self): |
303 self.CFile = self.Copy(self.CFileBuffer.Previous()) |
306 self.EndBuffering() |
|
307 self.CFile = cPickle.loads(self.CFileBuffer.Previous()) |
304 |
308 |
305 def LoadNext(self): |
309 def LoadNext(self): |
306 self.CFile = self.Copy(self.CFileBuffer.Next()) |
310 self.CFile = cPickle.loads(self.CFileBuffer.Next()) |
307 |
311 |
308 def GetBufferState(self): |
312 def GetBufferState(self): |
309 first = self.CFileBuffer.IsFirst() |
313 first = self.CFileBuffer.IsFirst() |
310 last = self.CFileBuffer.IsLast() |
314 last = self.CFileBuffer.IsLast() |
311 return not first, not last |
315 return not first, not last |