499 (ID_ADD_COMMENT, wx.ITEM_NORMAL, _(u'Comment'), '', self.GetAddMenuCallBack(self.AddNewComment))]) |
499 (ID_ADD_COMMENT, wx.ITEM_NORMAL, _(u'Comment'), '', self.GetAddMenuCallBack(self.AddNewComment))]) |
500 |
500 |
501 # Add Default Menu items to the given menu |
501 # Add Default Menu items to the given menu |
502 def AddDefaultMenuItems(self, menu, edit=False, block=False): |
502 def AddDefaultMenuItems(self, menu, edit=False, block=False): |
503 if block: |
503 if block: |
504 [ID_EDIT_BLOCK, ID_DELETE] = [wx.NewId() for i in xrange(2)] |
504 [ID_EDIT_BLOCK, ID_DELETE, ID_ADJUST_BLOCK_SIZE] = [wx.NewId() for i in xrange(3)] |
505 |
505 |
506 # Create menu items |
506 # Create menu items |
507 self.AddMenuItems(menu, [ |
507 self.AddMenuItems(menu, [ |
508 (ID_EDIT_BLOCK, wx.ITEM_NORMAL, _(u'Edit Block'), '', self.OnEditBlockMenu), |
508 (ID_EDIT_BLOCK, wx.ITEM_NORMAL, _(u'Edit Block'), '', self.OnEditBlockMenu), |
|
509 (ID_ADJUST_BLOCK_SIZE, wx.ITEM_NORMAL, _(u'Adjust Block Size'), '', self.OnAdjustBlockSizeMenu), |
509 (ID_DELETE, wx.ITEM_NORMAL, _(u'Delete'), '', self.OnDeleteMenu)]) |
510 (ID_DELETE, wx.ITEM_NORMAL, _(u'Delete'), '', self.OnDeleteMenu)]) |
510 |
511 |
511 menu.Enable(ID_EDIT_BLOCK, edit) |
512 menu.Enable(ID_EDIT_BLOCK, edit) |
512 |
513 |
513 else: |
514 else: |
788 |
789 |
789 def AddComment(self, comment): |
790 def AddComment(self, comment): |
790 self.Comments[comment.GetId()] = comment |
791 self.Comments[comment.GetId()] = comment |
791 |
792 |
792 def IsBlock(self, block): |
793 def IsBlock(self, block): |
793 return self.Blocks.get(block.GetId(), False) |
794 if block is not None: |
|
795 return self.Blocks.get(block.GetId(), False) |
|
796 return False |
794 |
797 |
795 def IsWire(self, wire): |
798 def IsWire(self, wire): |
796 return self.Wires.get(wire, False) |
799 return self.Wires.get(wire, False) |
797 |
800 |
798 def IsComment(self, comment): |
801 def IsComment(self, comment): |
799 return self.Comments.get(comment.GetId(), False) |
802 if comment is not None: |
|
803 return self.Comments.get(comment.GetId(), False) |
|
804 return False |
800 |
805 |
801 def RemoveBlock(self, block): |
806 def RemoveBlock(self, block): |
802 self.Blocks.pop(block.GetId()) |
807 self.Blocks.pop(block.GetId()) |
803 |
808 |
804 def RemoveWire(self, wire): |
809 def RemoveWire(self, wire): |
1235 self.AddComment(element) |
1240 self.AddComment(element) |
1236 else: |
1241 else: |
1237 self.AddBlock(element) |
1242 self.AddBlock(element) |
1238 connectors = element.GetConnectors() |
1243 connectors = element.GetConnectors() |
1239 element.SetPosition(instance["x"], instance["y"]) |
1244 element.SetPosition(instance["x"], instance["y"]) |
1240 if isinstance(element, SFC_Divergence): |
1245 element.SetSize(instance["width"], instance["height"]) |
1241 element.SetSize(instance["width"], instance["height"]) |
|
1242 for i, output_connector in enumerate(instance["outputs"]): |
1246 for i, output_connector in enumerate(instance["outputs"]): |
1243 if i < len(connectors["outputs"]): |
1247 if i < len(connectors["outputs"]): |
1244 connector = connectors["outputs"][i] |
1248 connector = connectors["outputs"][i] |
1245 if output_connector.get("negated", False): |
1249 if output_connector.get("negated", False): |
1246 connector.SetNegated(True) |
1250 connector.SetNegated(True) |
1254 if input_connector.get("negated", False): |
1258 if input_connector.get("negated", False): |
1255 connector.SetNegated(True) |
1259 connector.SetNegated(True) |
1256 if input_connector.get("edge", "none") != "none": |
1260 if input_connector.get("edge", "none") != "none": |
1257 connector.SetEdge(input_connector["edge"]) |
1261 connector.SetEdge(input_connector["edge"]) |
1258 self.CreateWires(connector, instance["id"], input_connector["links"], ids, selection) |
1262 self.CreateWires(connector, instance["id"], input_connector["links"], ids, selection) |
1259 if not isinstance(element, SFC_Divergence): |
|
1260 element.SetSize(instance["width"], instance["height"]) |
|
1261 if selection is not None and selection[0].get(instance["id"], False): |
1263 if selection is not None and selection[0].get(instance["id"], False): |
1262 self.SelectInGroup(element) |
1264 self.SelectInGroup(element) |
1263 |
1265 |
1264 def CreateWires(self, start_connector, id, links, ids, selection=None): |
1266 def CreateWires(self, start_connector, id, links, ids, selection=None): |
1265 for link in links: |
1267 for link in links: |
1518 self.RemoveDivergenceBranch(self.SelectedElement) |
1520 self.RemoveDivergenceBranch(self.SelectedElement) |
1519 |
1521 |
1520 def OnEditBlockMenu(self, event): |
1522 def OnEditBlockMenu(self, event): |
1521 if self.SelectedElement is not None: |
1523 if self.SelectedElement is not None: |
1522 self.ParentWindow.EditProjectElement(ITEM_POU, "P::%s"%self.SelectedElement.GetType()) |
1524 self.ParentWindow.EditProjectElement(ITEM_POU, "P::%s"%self.SelectedElement.GetType()) |
|
1525 |
|
1526 def OnAdjustBlockSizeMenu(self, event): |
|
1527 if self.SelectedElement is not None: |
|
1528 movex, movey = self.SelectedElement.SetBestSize(self.Scaling) |
|
1529 self.SelectedElement.RefreshModel() |
|
1530 self.RefreshBuffer() |
|
1531 if movex != 0 or movey != 0: |
|
1532 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(movex, movey)), False) |
1523 |
1533 |
1524 def OnDeleteMenu(self, event): |
1534 def OnDeleteMenu(self, event): |
1525 if self.SelectedElement is not None: |
1535 if self.SelectedElement is not None: |
1526 self.SelectedElement.Delete() |
1536 self.SelectedElement.Delete() |
1527 self.SelectedElement = None |
1537 self.SelectedElement = None |
1834 self.Controler.IsOfType(var_type, "ANY_BIT", self.Debug): |
1844 self.Controler.IsOfType(var_type, "ANY_BIT", self.Debug): |
1835 self.ParentWindow.OpenGraphicViewer(iec_path) |
1845 self.ParentWindow.OpenGraphicViewer(iec_path) |
1836 else: |
1846 else: |
1837 self.ParentWindow.OpenGraphicViewer(iec_path) |
1847 self.ParentWindow.OpenGraphicViewer(iec_path) |
1838 elif event.ControlDown() and not event.ShiftDown(): |
1848 elif event.ControlDown() and not event.ShiftDown(): |
1839 instance_type = self.SelectedElement.GetType() |
1849 if not isinstance(self.SelectedElement, Group_Element): |
1840 if self.IsBlock(self.SelectedElement) and instance_type in self.Controler.GetProjectPouNames(self.Debug): |
1850 instance_type = self.SelectedElement.GetType() |
1841 self.ParentWindow.EditProjectElement(ITEM_POU, |
1851 if self.IsBlock(self.SelectedElement) and instance_type in self.Controler.GetProjectPouNames(self.Debug): |
1842 self.Controler.ComputePouName(instance_type)) |
1852 self.ParentWindow.EditProjectElement(ITEM_POU, |
1843 else: |
1853 self.Controler.ComputePouName(instance_type)) |
1844 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1854 else: |
|
1855 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1845 elif event.ControlDown() and event.ShiftDown(): |
1856 elif event.ControlDown() and event.ShiftDown(): |
1846 movex, movey = self.SelectedElement.AdjustToScaling(self.Scaling) |
1857 movex, movey = self.SelectedElement.SetBestSize(self.Scaling) |
1847 self.SelectedElement.RefreshModel() |
1858 self.SelectedElement.RefreshModel() |
1848 self.RefreshBuffer() |
1859 self.RefreshBuffer() |
1849 if movex != 0 or movey != 0: |
1860 if movex != 0 or movey != 0: |
1850 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(movex, movey)), False) |
1861 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(movex, movey)), False) |
1851 else: |
1862 else: |
2466 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
2477 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
2467 self.RefreshConnectionModel(connection) |
2478 self.RefreshConnectionModel(connection) |
2468 self.RefreshBuffer() |
2479 self.RefreshBuffer() |
2469 if old_name != values["name"]: |
2480 if old_name != values["name"]: |
2470 self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_name, values["name"]) |
2481 self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_name, values["name"]) |
|
2482 self.RefreshBuffer() |
2471 self.RefreshView(selection=({connection.GetId(): True}, {})) |
2483 self.RefreshView(selection=({connection.GetId(): True}, {})) |
2472 else: |
2484 else: |
2473 self.RefreshScrollBars() |
2485 self.RefreshScrollBars() |
2474 self.RefreshVisibleElements() |
2486 self.RefreshVisibleElements() |
2475 connection.Refresh(rect) |
2487 connection.Refresh(rect) |