equal
deleted
inserted
replaced
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() |