PLCControler.py
changeset 530 0fa72713501d
parent 526 79900abdfa3c
child 531 193505b8ddcf
equal deleted inserted replaced
529:cbfbd0f7135b 530:0fa72713501d
   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