graphics/SFC_Objects.py
changeset 1258 441f31474b50
parent 1176 f4b434672204
child 1338 c1e6c712cc35
equal deleted inserted replaced
1257:4b7ef7ea318f 1258:441f31474b50
  1358                     output_block.Move(move[0], move[1], self.Parent.Wires)
  1358                     output_block.Move(move[0], move[1], self.Parent.Wires)
  1359                     output_block.RefreshOutputPosition(move)
  1359                     output_block.RefreshOutputPosition(move)
  1360     
  1360     
  1361     # Method called when a LeftDown event have been generated
  1361     # Method called when a LeftDown event have been generated
  1362     def OnLeftDown(self, event, dc, scaling):
  1362     def OnLeftDown(self, event, dc, scaling):
  1363         connector = None
  1363         self.RealConnectors = {"Inputs":[],"Outputs":[]}
  1364         if event.ControlDown():
  1364         for input in self.Inputs:
  1365             pos = GetScaledEventPosition(event, dc, scaling)
  1365             position = input.GetRelPosition()
  1366             # Test if a connector have been handled
  1366             self.RealConnectors["Inputs"].append(float(position.x)/float(self.Size[0]))
  1367             connector = self.TestConnector(pos, exclude=False)
  1367         for output in self.Outputs:
       
  1368             position = output.GetRelPosition()
       
  1369             self.RealConnectors["Outputs"].append(float(position.x)/float(self.Size[0]))
       
  1370         Graphic_Element.OnLeftDown(self, event, dc, scaling)
       
  1371     
       
  1372     # Method called when a LeftUp event have been generated
       
  1373     def OnLeftUp(self, event, dc, scaling):
       
  1374         Graphic_Element.OnLeftUp(self, event, dc, scaling)
       
  1375         self.RealConnectors = None
       
  1376     
       
  1377     # Method called when a RightDown event have been generated
       
  1378     def OnRightDown(self, event, dc, scaling):
       
  1379         pos = GetScaledEventPosition(event, dc, scaling)
       
  1380         # Test if a connector have been handled
       
  1381         connector = self.TestConnector(pos, exclude=False)
  1368         if connector:
  1382         if connector:
  1369             self.Handle = (HANDLE_CONNECTOR, connector)
  1383             self.Handle = (HANDLE_CONNECTOR, connector)
  1370             wx.CallAfter(self.Parent.SetCurrentCursor, 1)
  1384             wx.CallAfter(self.Parent.SetCurrentCursor, 1)
  1371             self.Selected = False
  1385             self.Selected = False
  1372             # Initializes the last position
  1386             # Initializes the last position
  1373             self.oldPos = GetScaledEventPosition(event, dc, scaling)
  1387             self.oldPos = GetScaledEventPosition(event, dc, scaling)
  1374         else:
  1388         else:
  1375             self.RealConnectors = {"Inputs":[],"Outputs":[]}
  1389             Graphic_Element.OnRightDown(self, event, dc, scaling)
  1376             for input in self.Inputs:
  1390     
  1377                 position = input.GetRelPosition()
  1391     # Method called when a RightUp event have been generated
  1378                 self.RealConnectors["Inputs"].append(float(position.x)/float(self.Size[0]))
  1392     def OnRightUp(self, event, dc, scaling):
  1379             for output in self.Outputs:
  1393         pos = GetScaledEventPosition(event, dc, scaling)
  1380                 position = output.GetRelPosition()
       
  1381                 self.RealConnectors["Outputs"].append(float(position.x)/float(self.Size[0]))
       
  1382             Graphic_Element.OnLeftDown(self, event, dc, scaling)
       
  1383     
       
  1384     # Method called when a LeftUp event have been generated
       
  1385     def OnLeftUp(self, event, dc, scaling):
       
  1386         handle_type, handle = self.Handle
  1394         handle_type, handle = self.Handle
  1387         if handle_type == HANDLE_CONNECTOR and self.Dragging and self.oldPos:
  1395         if handle_type == HANDLE_CONNECTOR and self.Dragging and self.oldPos:
  1388             wires = handle.GetWires()
  1396             wires = handle.GetWires()
  1389             if len(wires) == 1:
  1397             if len(wires) == 1:
  1390                 block = wires[0][0].GetOtherConnected(handle).GetParentBlock()
  1398                 block = wires[0][0].GetOtherConnected(handle).GetParentBlock()
  1392                 if not isinstance(block, SFC_Divergence):
  1400                 if not isinstance(block, SFC_Divergence):
  1393                     if handle in self.Inputs:
  1401                     if handle in self.Inputs:
  1394                         block.RefreshInputModel()
  1402                         block.RefreshInputModel()
  1395                     else:
  1403                     else:
  1396                         block.RefreshOutputModel()
  1404                         block.RefreshOutputModel()
  1397         Graphic_Element.OnLeftUp(self, event, dc, scaling)
  1405             Graphic_Element.OnRightUp(self, event, dc, scaling)
  1398         self.RealConnectors = None
  1406         else:
  1399     
  1407             # Popup the menu with special items for a block and a connector if one is handled
  1400     # Method called when a RightUp event have been generated
  1408             connector = self.TestConnector(pos, exclude=False)
  1401     def OnRightUp(self, event, dc, scaling):
  1409             if connector:
  1402         pos = GetScaledEventPosition(event, dc, scaling)
  1410                 self.Handle = (HANDLE_CONNECTOR, connector)
  1403         # Popup the menu with special items for a block and a connector if one is handled
  1411                 self.Parent.PopupDivergenceMenu(True)
  1404         connector = self.TestConnector(pos, exclude=False)
  1412             else:
  1405         if connector:
  1413                 # Popup the divergence menu without delete branch
  1406             self.Handle = (HANDLE_CONNECTOR, connector)
  1414                 self.Parent.PopupDivergenceMenu(False)
  1407             self.Parent.PopupDivergenceMenu(True)
  1415         
  1408         else:
       
  1409             # Popup the divergence menu without delete branch
       
  1410             self.Parent.PopupDivergenceMenu(False)
       
  1411     
       
  1412     # Refreshes the divergence state according to move defined and handle selected
  1416     # Refreshes the divergence state according to move defined and handle selected
  1413     def ProcessDragging(self, movex, movey, event, scaling):
  1417     def ProcessDragging(self, movex, movey, event, scaling):
  1414         handle_type, handle = self.Handle
  1418         handle_type, handle = self.Handle
  1415         # A connector has been handled
  1419         # A connector has been handled
  1416         if handle_type == HANDLE_CONNECTOR:
  1420         if handle_type == HANDLE_CONNECTOR: