editors/Viewer.py
changeset 1878 fb73a6b6622d
parent 1853 47a3f39bead0
child 1931 7e6b03251bfe
equal deleted inserted replaced
1877:da5f1fa46f2b 1878:fb73a6b6622d
   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"]))