588 (ID_ALIGN_MIDDLE, wx.ITEM_NORMAL, _(u'Middle'), '', self.OnAlignMiddleMenu), |
588 (ID_ALIGN_MIDDLE, wx.ITEM_NORMAL, _(u'Middle'), '', self.OnAlignMiddleMenu), |
589 (ID_ALIGN_BOTTOM, wx.ITEM_NORMAL, _(u'Bottom'), '', self.OnAlignBottomMenu)]) |
589 (ID_ALIGN_BOTTOM, wx.ITEM_NORMAL, _(u'Bottom'), '', self.OnAlignBottomMenu)]) |
590 |
590 |
591 # Add Wire Menu items to the given menu |
591 # Add Wire Menu items to the given menu |
592 def AddWireMenuItems(self, menu, delete=False, replace=False): |
592 def AddWireMenuItems(self, menu, delete=False, replace=False): |
593 [ID_ADD_SEGMENT, ID_DELETE_SEGMENT, ID_REPLACE_WIRE, |
593 [ |
594 ] = [wx.NewId() for dummy in xrange(3)] |
594 ID_ADD_SEGMENT, ID_DELETE_SEGMENT, ID_REPLACE_WIRE, |
|
595 ] = [wx.NewId() for dummy in xrange(3)] |
595 |
596 |
596 # Create menu items |
597 # Create menu items |
597 self.AddMenuItems(menu, [ |
598 self.AddMenuItems(menu, [ |
598 (ID_ADD_SEGMENT, wx.ITEM_NORMAL, _(u'Add Wire Segment'), '', self.OnAddSegmentMenu), |
599 (ID_ADD_SEGMENT, wx.ITEM_NORMAL, _(u'Add Wire Segment'), '', self.OnAddSegmentMenu), |
599 (ID_DELETE_SEGMENT, wx.ITEM_NORMAL, _(u'Delete Wire Segment'), '', self.OnDeleteSegmentMenu), |
600 (ID_DELETE_SEGMENT, wx.ITEM_NORMAL, _(u'Delete Wire Segment'), '', self.OnDeleteSegmentMenu), |
635 (ID_ADD_POWER_RAIL, wx.ITEM_NORMAL, _(u'Power Rail'), '', self.GetAddMenuCallBack(self.AddNewPowerRail)), |
636 (ID_ADD_POWER_RAIL, wx.ITEM_NORMAL, _(u'Power Rail'), '', self.GetAddMenuCallBack(self.AddNewPowerRail)), |
636 (ID_ADD_CONTACT, wx.ITEM_NORMAL, _(u'Contact'), '', self.GetAddMenuCallBack(self.AddNewContact))]) |
637 (ID_ADD_CONTACT, wx.ITEM_NORMAL, _(u'Contact'), '', self.GetAddMenuCallBack(self.AddNewContact))]) |
637 |
638 |
638 if self.CurrentLanguage != "SFC": |
639 if self.CurrentLanguage != "SFC": |
639 self.AddMenuItems(menu, [ |
640 self.AddMenuItems(menu, [ |
640 (ID_ADD_COIL, wx.ITEM_NORMAL, _(u'Coil'), '', self.GetAddMenuCallBack(self.AddNewCoil))]) |
641 (ID_ADD_COIL, wx.ITEM_NORMAL, _(u'Coil'), '', self.GetAddMenuCallBack(self.AddNewCoil))]) |
641 |
642 |
642 menu.AppendSeparator() |
643 menu.AppendSeparator() |
643 |
644 |
644 if self.CurrentLanguage == "SFC": |
645 if self.CurrentLanguage == "SFC": |
645 [ |
646 [ |
656 (ID_ADD_DIVERGENCE, wx.ITEM_NORMAL, _(u'Divergence'), '', self.GetAddMenuCallBack(self.AddNewDivergence)), |
657 (ID_ADD_DIVERGENCE, wx.ITEM_NORMAL, _(u'Divergence'), '', self.GetAddMenuCallBack(self.AddNewDivergence)), |
657 (ID_ADD_JUMP, wx.ITEM_NORMAL, _(u'Jump'), '', self.GetAddMenuCallBack(self.AddNewJump)), |
658 (ID_ADD_JUMP, wx.ITEM_NORMAL, _(u'Jump'), '', self.GetAddMenuCallBack(self.AddNewJump)), |
658 None]) |
659 None]) |
659 |
660 |
660 self.AddMenuItems(menu, [ |
661 self.AddMenuItems(menu, [ |
661 (ID_ADD_COMMENT, wx.ITEM_NORMAL, _(u'Comment'), '', self.GetAddMenuCallBack(self.AddNewComment))]) |
662 (ID_ADD_COMMENT, wx.ITEM_NORMAL, _(u'Comment'), '', self.GetAddMenuCallBack(self.AddNewComment))]) |
662 |
663 |
663 # Add Default Menu items to the given menu |
664 # Add Default Menu items to the given menu |
664 def AddDefaultMenuItems(self, menu, edit=False, block=False): |
665 def AddDefaultMenuItems(self, menu, edit=False, block=False): |
665 if block: |
666 if block: |
666 [ID_EDIT_BLOCK, ID_DELETE, ID_ADJUST_BLOCK_SIZE] = [wx.NewId() for dummy in xrange(3)] |
667 [ID_EDIT_BLOCK, ID_DELETE, ID_ADJUST_BLOCK_SIZE] = [wx.NewId() for dummy in xrange(3)] |
667 |
668 |
668 # Create menu items |
669 # Create menu items |
669 self.AddMenuItems(menu, [ |
670 self.AddMenuItems(menu, [ |
670 (ID_EDIT_BLOCK, wx.ITEM_NORMAL, _(u'Edit Block'), '', self.OnEditBlockMenu), |
671 (ID_EDIT_BLOCK, wx.ITEM_NORMAL, _(u'Edit Block'), '', self.OnEditBlockMenu), |
671 (ID_ADJUST_BLOCK_SIZE, wx.ITEM_NORMAL, _(u'Adjust Block Size'), '', self.OnAdjustBlockSizeMenu), |
672 (ID_ADJUST_BLOCK_SIZE, wx.ITEM_NORMAL, _(u'Adjust Block Size'), '', self.OnAdjustBlockSizeMenu), |
672 (ID_DELETE, wx.ITEM_NORMAL, _(u'Delete'), '', self.OnDeleteMenu)]) |
673 (ID_DELETE, wx.ITEM_NORMAL, _(u'Delete'), '', self.OnDeleteMenu)]) |
673 |
674 |
674 menu.Enable(ID_EDIT_BLOCK, edit) |
675 menu.Enable(ID_EDIT_BLOCK, edit) |
675 |
676 |
676 else: |
677 else: |
677 [ID_CLEAR_EXEC_ORDER, ID_RESET_EXEC_ORDER] = [wx.NewId() for dummy in xrange(2)] |
678 [ID_CLEAR_EXEC_ORDER, ID_RESET_EXEC_ORDER] = [wx.NewId() for dummy in xrange(2)] |
691 |
692 |
692 [ID_CUT, ID_COPY, ID_PASTE] = [wx.NewId() for dummy in xrange(3)] |
693 [ID_CUT, ID_COPY, ID_PASTE] = [wx.NewId() for dummy in xrange(3)] |
693 |
694 |
694 # Create menu items |
695 # Create menu items |
695 self.AddMenuItems(menu, [ |
696 self.AddMenuItems(menu, [ |
696 (ID_CUT, wx.ITEM_NORMAL, _(u'Cut'), '', self.GetClipboardCallBack(self.Cut)), |
697 (ID_CUT, wx.ITEM_NORMAL, _(u'Cut'), '', self.GetClipboardCallBack(self.Cut)), |
697 (ID_COPY, wx.ITEM_NORMAL, _(u'Copy'), '', self.GetClipboardCallBack(self.Copy)), |
698 (ID_COPY, wx.ITEM_NORMAL, _(u'Copy'), '', self.GetClipboardCallBack(self.Copy)), |
698 (ID_PASTE, wx.ITEM_NORMAL, _(u'Paste'), '', self.GetAddMenuCallBack(self.Paste))]) |
699 (ID_PASTE, wx.ITEM_NORMAL, _(u'Paste'), '', self.GetAddMenuCallBack(self.Paste))]) |
699 |
700 |
700 menu.Enable(ID_CUT, block) |
701 menu.Enable(ID_CUT, block) |
701 menu.Enable(ID_COPY, block) |
702 menu.Enable(ID_COPY, block) |
702 menu.Enable(ID_PASTE, self.ParentWindow.GetCopyBuffer() is not None) |
703 menu.Enable(ID_PASTE, self.ParentWindow.GetCopyBuffer() is not None) |
703 |
704 |
1508 end_connector.Wires.append((wire, -1)) |
1509 end_connector.Wires.append((wire, -1)) |
1509 wire.StartConnected = start_connector |
1510 wire.StartConnected = start_connector |
1510 wire.EndConnected = end_connector |
1511 wire.EndConnected = end_connector |
1511 connected.RefreshConnectors() |
1512 connected.RefreshConnectors() |
1512 self.AddWire(wire) |
1513 self.AddWire(wire) |
1513 if selection is not None and ( |
1514 if selection is not None and (selection[1].get((id, refLocalId), False) or |
1514 selection[1].get((id, refLocalId), False) or |
1515 selection[1].get((refLocalId, id), False)): |
1515 selection[1].get((refLocalId, id), False)): |
|
1516 self.SelectInGroup(wire) |
1516 self.SelectInGroup(wire) |
1517 else: |
1517 else: |
1518 links_connected = False |
1518 links_connected = False |
1519 |
1519 |
1520 return links_connected |
1520 return links_connected |
1829 wire.UnConnectEndPoint() |
1829 wire.UnConnectEndPoint() |
1830 point_to_connect = -1 |
1830 point_to_connect = -1 |
1831 |
1831 |
1832 # Get a new default connection name |
1832 # Get a new default connection name |
1833 connection_name = self.Controler.GenerateNewName( |
1833 connection_name = self.Controler.GenerateNewName( |
1834 self.TagName, None, "Connection%d", 0) |
1834 self.TagName, None, "Connection%d", 0) |
1835 |
1835 |
1836 # Create a connector to connect to wire |
1836 # Create a connector to connect to wire |
1837 id = self.GetNewId() |
1837 id = self.GetNewId() |
1838 connection = FBD_Connector(self, CONNECTOR, connection_name, id) |
1838 connection = FBD_Connector(self, CONNECTOR, connection_name, id) |
1839 connection.SetSize(*self.GetScaledSize(*connection.GetMinSize())) |
1839 connection.SetSize(*self.GetScaledSize(*connection.GetMinSize())) |
2049 directions = { |
2049 directions = { |
2050 EAST: [EAST, WEST], |
2050 EAST: [EAST, WEST], |
2051 WEST: [WEST, EAST], |
2051 WEST: [WEST, EAST], |
2052 NORTH: [NORTH, SOUTH], |
2052 NORTH: [NORTH, SOUTH], |
2053 SOUTH: [SOUTH, NORTH]}[connector.GetDirection()] |
2053 SOUTH: [SOUTH, NORTH]}[connector.GetDirection()] |
2054 wire = Wire(self, *map(list, zip( |
2054 wire = Wire(self, |
2055 [wx.Point(pos.x, pos.y), |
2055 *map(list, zip( |
2056 wx.Point(scaled_pos.x, scaled_pos.y)], |
2056 [wx.Point(pos.x, pos.y), |
2057 directions))) |
2057 wx.Point(scaled_pos.x, scaled_pos.y)], |
|
2058 directions))) |
2058 wire.oldPos = scaled_pos |
2059 wire.oldPos = scaled_pos |
2059 wire.Handle = (HANDLE_POINT, 0) |
2060 wire.Handle = (HANDLE_POINT, 0) |
2060 wire.ProcessDragging(0, 0, event, None) |
2061 wire.ProcessDragging(0, 0, event, None) |
2061 wire.Handle = (HANDLE_POINT, 1) |
2062 wire.Handle = (HANDLE_POINT, 1) |
2062 self.AddWire(wire) |
2063 self.AddWire(wire) |
2966 dialog.SetMinElementSize(powerrail.GetSize()) |
2967 dialog.SetMinElementSize(powerrail.GetSize()) |
2967 powerrail_type = powerrail.GetType() |
2968 powerrail_type = powerrail.GetType() |
2968 dialog.SetValues({ |
2969 dialog.SetValues({ |
2969 "type": powerrail.GetType(), |
2970 "type": powerrail.GetType(), |
2970 "pin_number": len(powerrail.GetConnectors()[ |
2971 "pin_number": len(powerrail.GetConnectors()[ |
2971 ("outputs" if powerrail_type == LEFTRAIL else "inputs")])}) |
2972 ("outputs" if powerrail_type == LEFTRAIL else "inputs")])}) |
2972 if dialog.ShowModal() == wx.ID_OK: |
2973 if dialog.ShowModal() == wx.ID_OK: |
2973 values = dialog.GetValues() |
2974 values = dialog.GetValues() |
2974 rect = powerrail.GetRedrawRect(1, 1) |
2975 rect = powerrail.GetRedrawRect(1, 1) |
2975 powerrail.SetType(values["type"], values["pin_number"]) |
2976 powerrail.SetType(values["type"], values["pin_number"]) |
2976 powerrail.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
2977 powerrail.SetSize(*self.GetScaledSize(values["width"], values["height"])) |