192 self.Reset() |
192 self.Reset() |
193 |
193 |
194 # Reset PLCControler internal variables |
194 # Reset PLCControler internal variables |
195 def Reset(self): |
195 def Reset(self): |
196 self.Project = None |
196 self.Project = None |
197 self.ProjectBufferEnabled = False |
197 self.ProjectBufferEnabled = True |
198 self.ProjectBuffer = None |
198 self.ProjectBuffer = None |
199 self.ProjectSaved = True |
199 self.ProjectSaved = True |
200 self.Buffering = False |
200 self.Buffering = False |
201 self.FilePath = "" |
201 self.FilePath = "" |
202 self.FileName = "" |
202 self.FileName = "" |
2661 def Copy(self, model): |
2661 def Copy(self, model): |
2662 return cPickle.loads(cPickle.dumps(model)) |
2662 return cPickle.loads(cPickle.dumps(model)) |
2663 |
2663 |
2664 def CreateProjectBuffer(self, saved): |
2664 def CreateProjectBuffer(self, saved): |
2665 if self.ProjectBufferEnabled: |
2665 if self.ProjectBufferEnabled: |
2666 self.ProjectBuffer = UndoBuffer(self.Copy(self.Project), saved) |
2666 self.ProjectBuffer = UndoBuffer(cPickle.dumps(self.Project), saved) |
2667 else: |
2667 else: |
2668 self.ProjectBuffer = None |
2668 self.ProjectBuffer = None |
2669 self.ProjectSaved = saved |
2669 self.ProjectSaved = saved |
2670 |
2670 |
2671 def IsProjectBufferEnabled(self): |
2671 def IsProjectBufferEnabled(self): |
2680 current_saved = self.ProjectBuffer.IsCurrentSaved() |
2680 current_saved = self.ProjectBuffer.IsCurrentSaved() |
2681 self.CreateProjectBuffer(current_saved) |
2681 self.CreateProjectBuffer(current_saved) |
2682 |
2682 |
2683 def BufferProject(self): |
2683 def BufferProject(self): |
2684 if self.ProjectBuffer is not None: |
2684 if self.ProjectBuffer is not None: |
2685 self.ProjectBuffer.Buffering(self.Copy(self.Project)) |
2685 self.ProjectBuffer.Buffering(cPickle.dumps(self.Project)) |
2686 else: |
2686 else: |
2687 self.ProjectSaved = False |
2687 self.ProjectSaved = False |
2688 |
2688 |
2689 def StartBuffering(self): |
2689 def StartBuffering(self): |
2690 if self.ProjectBuffer is not None: |
2690 if self.ProjectBuffer is not None: |
2691 self.ProjectBuffer.Buffering(self.Project) |
|
2692 self.Buffering = True |
2691 self.Buffering = True |
2693 else: |
2692 else: |
2694 self.ProjectSaved = False |
2693 self.ProjectSaved = False |
2695 |
2694 |
2696 def EndBuffering(self): |
2695 def EndBuffering(self): |
2697 if self.ProjectBuffer is not None and self.Buffering: |
2696 if self.ProjectBuffer is not None and self.Buffering: |
2698 self.Project = self.Copy(self.Project) |
2697 self.ProjectBuffer.Buffering(cPickle.dumps(self.Project)) |
2699 self.Buffering = False |
2698 self.Buffering = False |
2700 |
2699 |
2701 def MarkProjectAsSaved(self): |
2700 def MarkProjectAsSaved(self): |
2702 if self.ProjectBuffer is not None: |
2701 if self.ProjectBuffer is not None: |
2703 self.ProjectBuffer.CurrentSaved() |
2702 self.ProjectBuffer.CurrentSaved() |
2705 self.ProjectSaved = True |
2704 self.ProjectSaved = True |
2706 |
2705 |
2707 # Return if project is saved |
2706 # Return if project is saved |
2708 def ProjectIsSaved(self): |
2707 def ProjectIsSaved(self): |
2709 if self.ProjectBuffer is not None: |
2708 if self.ProjectBuffer is not None: |
2710 return self.ProjectBuffer.IsCurrentSaved() |
2709 return self.ProjectBuffer.IsCurrentSaved() and not self.Buffering |
2711 else: |
2710 else: |
2712 return self.ProjectSaved |
2711 return self.ProjectSaved |
2713 |
2712 |
2714 def LoadPrevious(self): |
2713 def LoadPrevious(self): |
2715 if self.ProjectBuffer is not None: |
2714 if self.ProjectBuffer is not None: |
2716 self.Project = self.Copy(self.ProjectBuffer.Previous()) |
2715 if self.Buffering: |
|
2716 self.Project = cPickle.loads(self.ProjectBuffer.Current()) |
|
2717 else: |
|
2718 self.Project = cPickle.loads(self.ProjectBuffer.Previous()) |
2717 |
2719 |
2718 def LoadNext(self): |
2720 def LoadNext(self): |
2719 if self.ProjectBuffer is not None: |
2721 if self.ProjectBuffer is not None: |
2720 self.Project = self.Copy(self.ProjectBuffer.Next()) |
2722 self.Project = cPickle.loads(self.ProjectBuffer.Next()) |
2721 |
2723 |
2722 def GetBufferState(self): |
2724 def GetBufferState(self): |
2723 if self.ProjectBuffer is not None: |
2725 if self.ProjectBuffer is not None: |
2724 first = self.ProjectBuffer.IsFirst() |
2726 first = self.ProjectBuffer.IsFirst() |
2725 last = self.ProjectBuffer.IsLast() |
2727 last = self.ProjectBuffer.IsLast() and not self.Buffering |
2726 return not first, not last |
2728 return not first, not last |
2727 return False, False |
2729 return False, False |