plugins/c_ext/c_ext.py
changeset 651 cbeb769b0a56
parent 630 91b2ae63ea3d
child 656 c1792dfc8c7e
equal deleted inserted replaced
650:26236e691330 651:cbeb769b0a56
    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):
   172 
   169 
   173         xmlfile = open(filepath,"w")
   170         xmlfile = open(filepath,"w")
   174         xmlfile.write(text.encode("utf-8"))
   171         xmlfile.write(text.encode("utf-8"))
   175         xmlfile.close()
   172         xmlfile.close()
   176         
   173         
   177         self.CFileBuffer.CurrentSaved()
   174         self.MarkCFileAsSaved()
   178         return True
   175         return True
   179 
   176 
   180     def PlugGenerate_C(self, buildpath, locations):
   177     def PlugGenerate_C(self, buildpath, locations):
   181         """
   178         """
   182         Generate C code
   179         Generate C code
   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