PLCControler.py
changeset 1304 6be6c1e0e4d0
parent 1302 7856cd7767d6
child 1306 1ff1cdf6c318
equal deleted inserted replaced
1303:908a5803c2cc 1304:6be6c1e0e4d0
   237         self.Project = PLCOpenParser.CreateRoot()
   237         self.Project = PLCOpenParser.CreateRoot()
   238         properties["creationDateTime"] = datetime.datetime(*localtime()[:6])
   238         properties["creationDateTime"] = datetime.datetime(*localtime()[:6])
   239         self.Project.setfileHeader(properties)
   239         self.Project.setfileHeader(properties)
   240         self.Project.setcontentHeader(properties)
   240         self.Project.setcontentHeader(properties)
   241         self.SetFilePath("")
   241         self.SetFilePath("")
   242         
       
   243         ## To remove when project buffering ready
       
   244         self.ProjectBufferEnabled = False
       
   245         
   242         
   246         # Initialize the project buffer
   243         # Initialize the project buffer
   247         self.CreateProjectBuffer(False)
   244         self.CreateProjectBuffer(False)
   248         self.ProgramChunks = []
   245         self.ProgramChunks = []
   249         self.ProgramOffset = 0
   246         self.ProgramOffset = 0
  3142         try:
  3139         try:
  3143             self.Project = LoadProject(filepath)
  3140             self.Project = LoadProject(filepath)
  3144         except Exception, e:
  3141         except Exception, e:
  3145             return _("Project file syntax error:\n\n") + str(e)
  3142             return _("Project file syntax error:\n\n") + str(e)
  3146         self.SetFilePath(filepath)
  3143         self.SetFilePath(filepath)
  3147         
       
  3148         ## To remove when project buffering ready
       
  3149         self.ProjectBufferEnabled = False
       
  3150         
       
  3151         self.CreateProjectBuffer(True)
  3144         self.CreateProjectBuffer(True)
  3152         self.ProgramChunks = []
  3145         self.ProgramChunks = []
  3153         self.ProgramOffset = 0
  3146         self.ProgramOffset = 0
  3154         self.NextCompiledProject = self.Copy(self.Project)
  3147         self.NextCompiledProject = self.Copy(self.Project)
  3155         self.CurrentCompiledProject = None
  3148         self.CurrentCompiledProject = None
  3197     def Copy(self, model):
  3190     def Copy(self, model):
  3198         return deepcopy(model)
  3191         return deepcopy(model)
  3199 
  3192 
  3200     def CreateProjectBuffer(self, saved):
  3193     def CreateProjectBuffer(self, saved):
  3201         if self.ProjectBufferEnabled:
  3194         if self.ProjectBufferEnabled:
  3202             self.ProjectBuffer = UndoBuffer(cPickle.dumps(self.Project), saved)
  3195             self.ProjectBuffer = UndoBuffer(PLCOpenParser.Dumps(self.Project), saved)
  3203         else:
  3196         else:
  3204             self.ProjectBuffer = None
  3197             self.ProjectBuffer = None
  3205             self.ProjectSaved = saved
  3198             self.ProjectSaved = saved
  3206 
  3199 
  3207     def IsProjectBufferEnabled(self):
  3200     def IsProjectBufferEnabled(self):
  3216                 current_saved = self.ProjectBuffer.IsCurrentSaved()
  3209                 current_saved = self.ProjectBuffer.IsCurrentSaved()
  3217             self.CreateProjectBuffer(current_saved)
  3210             self.CreateProjectBuffer(current_saved)
  3218 
  3211 
  3219     def BufferProject(self):
  3212     def BufferProject(self):
  3220         if self.ProjectBuffer is not None:
  3213         if self.ProjectBuffer is not None:
  3221             self.ProjectBuffer.Buffering(cPickle.dumps(self.Project))
  3214             self.ProjectBuffer.Buffering(PLCOpenParser.Dumps(self.Project))
  3222         else:
  3215         else:
  3223             self.ProjectSaved = False
  3216             self.ProjectSaved = False
  3224 
  3217 
  3225     def StartBuffering(self):
  3218     def StartBuffering(self):
  3226         if self.ProjectBuffer is not None:
  3219         if self.ProjectBuffer is not None:
  3228         else:
  3221         else:
  3229             self.ProjectSaved = False
  3222             self.ProjectSaved = False
  3230         
  3223         
  3231     def EndBuffering(self):
  3224     def EndBuffering(self):
  3232         if self.ProjectBuffer is not None and self.Buffering:
  3225         if self.ProjectBuffer is not None and self.Buffering:
  3233             self.ProjectBuffer.Buffering(cPickle.dumps(self.Project))
  3226             self.ProjectBuffer.Buffering(PLCOpenParser.Dumps(self.Project))
  3234             self.Buffering = False
  3227             self.Buffering = False
  3235 
  3228 
  3236     def MarkProjectAsSaved(self):
  3229     def MarkProjectAsSaved(self):
  3237         self.EndBuffering()
  3230         self.EndBuffering()
  3238         if self.ProjectBuffer is not None:
  3231         if self.ProjectBuffer is not None:
  3248             return self.ProjectSaved
  3241             return self.ProjectSaved
  3249 
  3242 
  3250     def LoadPrevious(self):
  3243     def LoadPrevious(self):
  3251         self.EndBuffering()
  3244         self.EndBuffering()
  3252         if self.ProjectBuffer is not None:
  3245         if self.ProjectBuffer is not None:
  3253             self.Project = cPickle.loads(self.ProjectBuffer.Previous())
  3246             self.Project = PLCOpenParser.Loads(self.ProjectBuffer.Previous())
  3254     
  3247     
  3255     def LoadNext(self):
  3248     def LoadNext(self):
  3256         if self.ProjectBuffer is not None:
  3249         if self.ProjectBuffer is not None:
  3257             self.Project = cPickle.loads(self.ProjectBuffer.Next())
  3250             self.Project = PLCOpenParser.Loads(self.ProjectBuffer.Next())
  3258     
  3251     
  3259     def GetBufferState(self):
  3252     def GetBufferState(self):
  3260         if self.ProjectBuffer is not None:
  3253         if self.ProjectBuffer is not None:
  3261             first = self.ProjectBuffer.IsFirst() and not self.Buffering
  3254             first = self.ProjectBuffer.IsFirst() and not self.Buffering
  3262             last = self.ProjectBuffer.IsLast()
  3255             last = self.ProjectBuffer.IsLast()