graphics/GraphicCommons.py
changeset 321 5b37e16f7b2a
parent 316 8c6589718ce7
child 327 7fd5233ce5ce
equal deleted inserted replaced
320:16c37059f63f 321:5b37e16f7b2a
  2029     # Adds two points in the middle of the handled segment
  2029     # Adds two points in the middle of the handled segment
  2030     def AddSegment(self):
  2030     def AddSegment(self):
  2031         handle_type, handle = self.Handle
  2031         handle_type, handle = self.Handle
  2032         if handle_type == HANDLE_SEGMENT:
  2032         if handle_type == HANDLE_SEGMENT:
  2033             segment, dir = handle
  2033             segment, dir = handle
  2034             pointx = self.Points[segment].x
  2034             if len(self.Segments) > 1:
  2035             pointy = self.Points[segment].y
  2035                 pointx = self.Points[segment].x
  2036             if dir[0] != 0:
  2036                 pointy = self.Points[segment].y
  2037                 pointx = (self.Points[segment].x + self.Points[segment + 1].x) / 2
  2037                 if dir[0] != 0:
  2038             if dir[1] != 0:
  2038                     pointx = (self.Points[segment].x + self.Points[segment + 1].x) / 2
  2039                 pointy = (self.Points[segment].y + self.Points[segment + 1].y) / 2
  2039                 if dir[1] != 0:
  2040             self.Points.insert(segment + 1, wx.Point(pointx, pointy))
  2040                     pointy = (self.Points[segment].y + self.Points[segment + 1].y) / 2
  2041             self.Segments.insert(segment + 1, (dir[1], dir[0]))
  2041                 self.Points.insert(segment + 1, wx.Point(pointx, pointy))
  2042             self.Points.insert(segment + 2, wx.Point(pointx, pointy))
  2042                 self.Segments.insert(segment + 1, (dir[1], dir[0]))
  2043             self.Segments.insert(segment + 2, dir)
  2043                 self.Points.insert(segment + 2, wx.Point(pointx, pointy))
       
  2044                 self.Segments.insert(segment + 2, dir)
       
  2045             else:
       
  2046                 p1x = p2x = self.Points[segment].x
       
  2047                 p1y = p2y = self.Points[segment].y
       
  2048                 if dir[0] != 0:
       
  2049                     p1x = (2 * self.Points[segment].x + self.Points[segment + 1].x) / 3
       
  2050                     p2x = (self.Points[segment].x + 2 * self.Points[segment + 1].x) / 3
       
  2051                 if dir[1] != 0:
       
  2052                     p1y = (2 * self.Points[segment].y + self.Points[segment + 1].y) / 3
       
  2053                     p2y = (self.Points[segment].y + 2 * self.Points[segment + 1].y) / 3
       
  2054                 self.Points.insert(segment + 1, wx.Point(p1x, p1y))
       
  2055                 self.Segments.insert(segment + 1, (dir[1], dir[0]))
       
  2056                 self.Points.insert(segment + 2, wx.Point(p1x, p1y))
       
  2057                 self.Segments.insert(segment + 2, dir)
       
  2058                 self.Points.insert(segment + 3, wx.Point(p2x, p2y))
       
  2059                 self.Segments.insert(segment + 3, (dir[1], dir[0]))
       
  2060                 self.Points.insert(segment + 4, wx.Point(p2x, p2y))
       
  2061                 self.Segments.insert(segment + 4, dir)
  2044             self.GeneratePoints()
  2062             self.GeneratePoints()
  2045     
  2063     
  2046     # Delete the handled segment by removing the two segment points
  2064     # Delete the handled segment by removing the two segment points
  2047     def DeleteSegment(self):
  2065     def DeleteSegment(self):
  2048         handle_type, handle = self.Handle
  2066         handle_type, handle = self.Handle
  2081         pos = GetScaledEventPosition(event, dc, scaling)
  2099         pos = GetScaledEventPosition(event, dc, scaling)
  2082         # Test if a segment has been handled
  2100         # Test if a segment has been handled
  2083         result = self.TestSegment(pos, True)
  2101         result = self.TestSegment(pos, True)
  2084         if result != None:
  2102         if result != None:
  2085             self.Handle = (HANDLE_SEGMENT, result)
  2103             self.Handle = (HANDLE_SEGMENT, result)
       
  2104             print result, len(self.Segments)
  2086             # Popup the menu with special items for a wire
  2105             # Popup the menu with special items for a wire
  2087             self.Parent.PopupWireMenu(0 < result < len(self.Segments) - 1)
  2106             self.Parent.PopupWireMenu(0 < result[0] < len(self.Segments) - 1)
  2088         else:
  2107         else:
  2089             # Execute the default method for a graphic element
  2108             # Execute the default method for a graphic element
  2090             Graphic_Element.OnRightUp(self, event, dc, scaling)
  2109             Graphic_Element.OnRightUp(self, event, dc, scaling)
  2091     
  2110     
  2092     # Method called when a LeftDClick event has been generated
  2111     # Method called when a LeftDClick event has been generated