SFCViewer.py
changeset 80 c798a68c5560
parent 71 0578bc212c20
child 90 2245e8776086
equal deleted inserted replaced
79:b22f661cbcfb 80:c798a68c5560
    44         return wire
    44         return wire
    45     
    45     
    46     def CreateTransition(self, connector, next = None):
    46     def CreateTransition(self, connector, next = None):
    47         previous = connector.GetParentBlock()
    47         previous = connector.GetParentBlock()
    48         id = self.GetNewId()
    48         id = self.GetNewId()
    49         transition = SFC_Transition(self, "reference", "", id)
    49         transition = SFC_Transition(self, "reference", "", 0, id)
    50         pos = connector.GetPosition(False)
    50         pos = connector.GetPosition(False)
    51         transition.SetPosition(pos.x, pos.y + SFC_WIRE_MIN_SIZE)
    51         transition.SetPosition(pos.x, pos.y + SFC_WIRE_MIN_SIZE)
    52         transition_connectors = transition.GetConnectors()
    52         transition_connectors = transition.GetConnectors()
    53         wire = self.ConnectConnectors(transition_connectors["input"], connector)
    53         wire = self.ConnectConnectors(transition_connectors["input"], connector)
    54         if isinstance(previous, SFC_Divergence):
    54         if isinstance(previous, SFC_Divergence):
   382             width, height = step.GetSize()
   382             width, height = step.GetSize()
   383             step.SetSize(max(min_width, width), max(min_height, height))
   383             step.SetSize(max(min_width, width), max(min_height, height))
   384             self.AddBlock(step)
   384             self.AddBlock(step)
   385             self.Controler.AddCurrentElementEditingStep(id)
   385             self.Controler.AddCurrentElementEditingStep(id)
   386             self.RefreshStepModel(step)
   386             self.RefreshStepModel(step)
   387             self.Parent.RefreshProjectTree()
       
   388             self.RefreshBuffer()
   387             self.RefreshBuffer()
   389             self.RefreshScrollBars()
   388             self.RefreshScrollBars()
   390             self.Refresh()
   389             self.Refresh()
   391         dialog.Destroy()
   390         dialog.Destroy()
   392 
   391 
   437                     self.SelectedElement.SetSelectedSegment(0)
   436                     self.SelectedElement.SetSelectedSegment(0)
   438                 else:
   437                 else:
   439                     self.SelectedElement.SetSelected(False)
   438                     self.SelectedElement.SetSelected(False)
   440                     self.SelectedElement = step
   439                     self.SelectedElement = step
   441                     self.SelectedElement.SetSelected(True)
   440                     self.SelectedElement.SetSelected(True)
   442                 self.Parent.RefreshProjectTree()
       
   443                 self.RefreshBuffer()
   441                 self.RefreshBuffer()
   444                 self.RefreshScrollBars()
   442                 self.RefreshScrollBars()
   445                 self.Refresh()
   443                 self.Refresh()
   446             dialog.Destroy()
   444             dialog.Destroy()
   447     
   445     
   670                 self.Refresh()
   668                 self.Refresh()
   671             dialog.Destroy()
   669             dialog.Destroy()
   672     
   670     
   673     def AddDivergenceBranch(self, divergence):
   671     def AddDivergenceBranch(self, divergence):
   674         if isinstance(divergence, SFC_Divergence):
   672         if isinstance(divergence, SFC_Divergence):
   675             type = divergence.GetType()
   673             if self.GetDrawingMode() == FREEDRAWING_MODE:
   676             if type in [SELECTION_DIVERGENCE, SIMULTANEOUS_DIVERGENCE]:
       
   677                 divergence.AddBranch()
   674                 divergence.AddBranch()
   678                 divergence_connectors = divergence.GetConnectors()
   675             else:
   679                 if type == SELECTION_DIVERGENCE:
   676                 type = divergence.GetType()
   680                     transition = self.CreateTransition(divergence_connectors["outputs"][-1])
   677                 if type in [SELECTION_DIVERGENCE, SIMULTANEOUS_DIVERGENCE]:
   681                     transition_connectors = transition.GetConnectors()
   678                     divergence.AddBranch()
   682                     previous = transition_connectors["output"]
   679                     divergence_connectors = divergence.GetConnectors()
   683                 else:
   680                     if type == SELECTION_DIVERGENCE:
   684                     previous = divergence_connectors["outputs"][-1]
   681                         transition = self.CreateTransition(divergence_connectors["outputs"][-1])
   685                 step = self.CreateStep("Step", previous)
   682                         transition_connectors = transition.GetConnectors()
       
   683                         previous = transition_connectors["output"]
       
   684                     else:
       
   685                         previous = divergence_connectors["outputs"][-1]
       
   686                     step = self.CreateStep("Step", previous)
       
   687             self.RefreshBuffer()
       
   688             self.RefreshScrollBars()
       
   689             self.Refresh()
       
   690     
       
   691     def RemoveDivergenceBranch(self, divergence):
       
   692         if isinstance(divergence, SFC_Divergence):
       
   693             if self.GetDrawingMode() == FREEDRAWING_MODE:
       
   694                 divergence.RemoveHandledBranch()
   686                 self.RefreshBuffer()
   695                 self.RefreshBuffer()
   687                 self.RefreshScrollBars()
   696                 self.RefreshScrollBars()
   688                 self.Refresh()
   697                 self.Refresh()
   689     
   698     
   690     def AddJump(self):
   699     def AddJump(self):
   842                 next_block.RemoveBranch(next)
   851                 next_block.RemoveBranch(next)
   843                 if next_block.GetBranchNumber() < 2:
   852                 if next_block.GetBranchNumber() < 2:
   844                     self.DeleteDivergence(next_block)
   853                     self.DeleteDivergence(next_block)
   845                 else:
   854                 else:
   846                     self.RefreshDivergenceModel(next_block)
   855                     self.RefreshDivergenceModel(next_block)
   847             self.Parent.RefreshProjectTree()
   856             
   848 
       
   849     def DeleteDivergence(self, divergence):
   857     def DeleteDivergence(self, divergence):
   850         if self.GetDrawingMode() == FREEDRAWING_MODE:
   858         if self.GetDrawingMode() == FREEDRAWING_MODE:
   851             Viewer.DeleteDivergence(self, divergence)
   859             Viewer.DeleteDivergence(self, divergence)
   852         else:
   860         else:
   853             connectors = divergence.GetConnectors()
   861             connectors = divergence.GetConnectors()
   938                 wire.SetPoints([wx.Point(previous_pos.x, previous_pos.y + wire_size), 
   946                 wire.SetPoints([wx.Point(previous_pos.x, previous_pos.y + wire_size), 
   939                     wx.Point(previous_pos.x, previous_pos.y)])
   947                     wx.Point(previous_pos.x, previous_pos.y)])
   940                 if isinstance(next_block, SFC_Divergence):
   948                 if isinstance(next_block, SFC_Divergence):
   941                     next_block.RefreshPosition()
   949                     next_block.RefreshPosition()
   942                 previous_block.RefreshOutputModel(True)
   950                 previous_block.RefreshOutputModel(True)
   943             self.Parent.RefreshProjectTree()
   951             
   944 
       
   945     def DeleteJump(self, jump):
   952     def DeleteJump(self, jump):
   946         if self.GetDrawingMode() == FREEDRAWING_MODE:
   953         if self.GetDrawingMode() == FREEDRAWING_MODE:
   947             Viewer.DeleteJump(self, jump)
   954             Viewer.DeleteJump(self, jump)
   948         else:
   955         else:
   949             previous = jump.GetPreviousConnector()
   956             previous = jump.GetPreviousConnector()
   974                     previous_block.RemoveBranch(previous)
   981                     previous_block.RemoveBranch(previous)
   975                     if previous_block.GetBranchNumber() < 2:
   982                     if previous_block.GetBranchNumber() < 2:
   976                         self.DeleteDivergence(previous_block)
   983                         self.DeleteDivergence(previous_block)
   977                     else:
   984                     else:
   978                         previous_block.RefreshModel()
   985                         previous_block.RefreshModel()
   979             self.Parent.RefreshProjectTree()
   986             
   980 
       
   981     def DeleteActionBlock(self, actionblock):
   987     def DeleteActionBlock(self, actionblock):
   982         if self.GetDrawingMode() == FREEDRAWING_MODE:
   988         if self.GetDrawingMode() == FREEDRAWING_MODE:
   983             Viewer.DeleteActionBlock(self, actionblock)
   989             Viewer.DeleteActionBlock(self, actionblock)
   984         else:
   990         else:
   985             connector = actionblock.GetConnector()
   991             connector = actionblock.GetConnector()
   995             self.Controler.RemoveCurrentElementEditingInstance(actionblock.GetId())
  1001             self.Controler.RemoveCurrentElementEditingInstance(actionblock.GetId())
   996             step.RemoveAction()
  1002             step.RemoveAction()
   997             self.RefreshStepModel(step)
  1003             self.RefreshStepModel(step)
   998             step.RefreshOutputPosition()
  1004             step.RefreshOutputPosition()
   999             step.RefreshOutputModel(True)
  1005             step.RefreshOutputModel(True)
  1000             self.Parent.RefreshProjectTree()
  1006             
  1001 
       
  1002     def DeleteWire(self, wire):
  1007     def DeleteWire(self, wire):
  1003         if self.GetDrawingMode() == FREEDRAWING_MODE:
  1008         if self.GetDrawingMode() == FREEDRAWING_MODE:
  1004             Viewer.DeleteWire(self, wire)
  1009             Viewer.DeleteWire(self, wire)
  1005     
  1010