PLCOpenEditor.py
changeset 412 e0a6a5952d13
parent 372 8cab11dd2325
child 413 127d524a5f1d
child 415 d3d8f8f0b678
equal deleted inserted replaced
375:65ccc896b115 412:e0a6a5952d13
  1800                 AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Program")
  1800                 AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Program")
  1801                 self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id)
  1801                 self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id)
  1802                 menu.AppendMenu(wx.NewId(), "Change POU Type To", change_menu)
  1802                 menu.AppendMenu(wx.NewId(), "Change POU Type To", change_menu)
  1803             new_id = wx.NewId()
  1803             new_id = wx.NewId()
  1804             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Rename")
  1804             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Rename")
  1805             self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id)
  1805             self.Bind(wx.EVT_MENU, lambda ev: self.OnRenamePouMenu(ev, item), id=new_id)
  1806             new_id = wx.NewId()
  1806             new_id = wx.NewId()
  1807             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Delete")
  1807             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Delete")
  1808             self.Bind(wx.EVT_MENU, self.OnRemovePouMenu, id=new_id)
  1808             self.Bind(wx.EVT_MENU, lambda ev: self.OnRemovePouMenu(ev, item), id=new_id)
  1809             self.PopupMenu(menu)
  1809             self.PopupMenu(menu)
  1810         elif type == ITEM_CONFIGURATION:
  1810         elif type == ITEM_CONFIGURATION:
  1811             menu = wx.Menu(title='')
  1811             menu = wx.Menu(title='')
  1812             new_id = wx.NewId()
  1812             new_id = wx.NewId()
  1813             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Resource")
  1813             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Resource")
  1814             self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id)
  1814             self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id)
  1815             new_id = wx.NewId()
  1815             new_id = wx.NewId()
  1816             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Delete")
  1816             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Delete")
  1817             self.Bind(wx.EVT_MENU, self.OnRemoveConfigurationMenu, id=new_id)
  1817             self.Bind(wx.EVT_MENU, lambda ev: self.OnRemoveConfigurationMenu(ev, item), id=new_id)
  1818             self.PopupMenu(menu)
  1818             self.PopupMenu(menu)
  1819         elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]:
  1819         elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]:
  1820             menu = wx.Menu(title='')
  1820             menu = wx.Menu(title='')
  1821             new_id = wx.NewId()
  1821             new_id = wx.NewId()
  1822             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Delete")
  1822             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Delete")
  1823             if type == ITEM_DATATYPE:
  1823             if type == ITEM_DATATYPE:
  1824                 self.Bind(wx.EVT_MENU, self.OnRemoveDataTypeMenu, id=new_id)
  1824                 self.Bind(wx.EVT_MENU, lambda ev: self.OnRemoveDataTypeMenu(ev, item), id=new_id)
  1825             elif type == ITEM_TRANSITION:
  1825             elif type == ITEM_TRANSITION:
  1826                 self.Bind(wx.EVT_MENU, self.OnRemoveTransitionMenu, id=new_id)
  1826                 self.Bind(wx.EVT_MENU, lambda ev: self.OnRemoveTransitionMenu(ev, item), id=new_id)
  1827             elif type == ITEM_ACTION:
  1827             elif type == ITEM_ACTION:
  1828                 self.Bind(wx.EVT_MENU, self.OnRemoveActionMenu, id=new_id)
  1828                 self.Bind(wx.EVT_MENU, lambda ev: self.OnRemoveActionMenu(ev, item), id=new_id)
  1829             elif type == ITEM_RESOURCE:
  1829             elif type == ITEM_RESOURCE:
  1830                 self.Bind(wx.EVT_MENU, self.OnRemoveResourceMenu, id=new_id)
  1830                 self.Bind(wx.EVT_MENU, lambda ev: self.OnRemoveResourceMenu(ev, item), id=new_id)
  1831             self.PopupMenu(menu)
  1831             self.PopupMenu(menu)
  1832         elif type in ITEMS_UNEDITABLE:
  1832         elif type in ITEMS_UNEDITABLE:
  1833             if name == "Data Types":
  1833             if name == "Data Types":
  1834                 menu = wx.Menu(title='')
  1834                 menu = wx.Menu(title='')
  1835                 new_id = wx.NewId()
  1835                 new_id = wx.NewId()
  2461 
  2461 
  2462 #-------------------------------------------------------------------------------
  2462 #-------------------------------------------------------------------------------
  2463 #                        Remove Project Elements Functions
  2463 #                        Remove Project Elements Functions
  2464 #-------------------------------------------------------------------------------
  2464 #-------------------------------------------------------------------------------
  2465 
  2465 
  2466     def OnRemoveDataTypeMenu(self, event):
  2466     def OnRemoveDataTypeMenu(self, event, selected):
  2467         selected = self.TypesTree.GetSelection()
       
  2468         if self.TypesTree.GetPyData(selected) == ITEM_DATATYPE:
  2467         if self.TypesTree.GetPyData(selected) == ITEM_DATATYPE:
  2469             name = self.TypesTree.GetItemText(selected)
  2468             name = self.TypesTree.GetItemText(selected)
  2470             if not self.Controler.DataTypeIsUsed(name, self.Debug):
  2469             if not self.Controler.DataTypeIsUsed(name, self.Debug):
  2471                 self.Controler.ProjectRemoveDataType(name)
  2470                 self.Controler.ProjectRemoveDataType(name)
  2472                 tagname = self.Controler.ComputeDataTypeName(name)
  2471                 tagname = self.Controler.ComputeDataTypeName(name)
  2481                 message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. It can't be removed!"%name, "Error", wx.OK|wx.ICON_ERROR)
  2480                 message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. It can't be removed!"%name, "Error", wx.OK|wx.ICON_ERROR)
  2482                 message.ShowModal()
  2481                 message.ShowModal()
  2483                 message.Destroy()
  2482                 message.Destroy()
  2484         event.Skip()
  2483         event.Skip()
  2485 
  2484 
  2486     def OnRenamePouMenu(self, event):
  2485     def OnRenamePouMenu(self, event, selected):
  2487         selected = self.TypesTree.GetSelection()
       
  2488         if self.TypesTree.GetPyData(selected) == ITEM_POU: 
  2486         if self.TypesTree.GetPyData(selected) == ITEM_POU: 
  2489             wx.CallAfter(self.TypesTree.EditLabel, selected)
  2487             wx.CallAfter(self.TypesTree.EditLabel, selected)
  2490         event.Skip()
  2488         event.Skip()
  2491 
  2489 
  2492     def OnRemovePouMenu(self, event):
  2490     def OnRemovePouMenu(self, event, selected):
  2493         selected = self.TypesTree.GetSelection()
       
  2494         if self.TypesTree.GetPyData(selected) == ITEM_POU:
  2491         if self.TypesTree.GetPyData(selected) == ITEM_POU:
  2495             name = self.TypesTree.GetItemText(selected)
  2492             name = self.TypesTree.GetItemText(selected)
  2496             if not self.Controler.PouIsUsed(name, self.Debug):
  2493             if not self.Controler.PouIsUsed(name, self.Debug):
  2497                 self.Controler.ProjectRemovePou(name)
  2494                 self.Controler.ProjectRemovePou(name)
  2498                 tagname = self.Controler.ComputePouName(name)
  2495                 tagname = self.Controler.ComputePouName(name)
  2510                 message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. It can't be removed!"%name, "Error", wx.OK|wx.ICON_ERROR)
  2507                 message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. It can't be removed!"%name, "Error", wx.OK|wx.ICON_ERROR)
  2511                 message.ShowModal()
  2508                 message.ShowModal()
  2512                 message.Destroy()
  2509                 message.Destroy()
  2513         event.Skip()
  2510         event.Skip()
  2514 
  2511 
  2515     def OnRemoveTransitionMenu(self, event):
  2512     def OnRemoveTransitionMenu(self, event, selected):
  2516         selected = self.TypesTree.GetSelection()
       
  2517         if self.TypesTree.GetPyData(selected) == ITEM_TRANSITION: 
  2513         if self.TypesTree.GetPyData(selected) == ITEM_TRANSITION: 
  2518             transition = self.TypesTree.GetItemText(selected)
  2514             transition = self.TypesTree.GetItemText(selected)
  2519             item = self.TypesTree.GetItemParent(selected)
  2515             item = self.TypesTree.GetItemParent(selected)
  2520             item_type = self.TypesTree.GetPyData(item)
  2516             item_type = self.TypesTree.GetPyData(item)
  2521             while item_type != ITEM_POU:
  2517             while item_type != ITEM_POU:
  2531             self.RefreshTitle()
  2527             self.RefreshTitle()
  2532             self.RefreshEditMenu()
  2528             self.RefreshEditMenu()
  2533             self.RefreshTypesTree()
  2529             self.RefreshTypesTree()
  2534         event.Skip()
  2530         event.Skip()
  2535 
  2531 
  2536     def OnRemoveActionMenu(self, event):
  2532     def OnRemoveActionMenu(self, event, selected):
  2537         selected = self.TypesTree.GetSelection()
       
  2538         if self.TypesTree.GetPyData(selected) == ITEM_ACTION: 
  2533         if self.TypesTree.GetPyData(selected) == ITEM_ACTION: 
  2539             action = self.TypesTree.GetItemText(selected)
  2534             action = self.TypesTree.GetItemText(selected)
  2540             item = self.TypesTree.GetItemParent(selected)
  2535             item = self.TypesTree.GetItemParent(selected)
  2541             item_type = self.TypesTree.GetPyData(item)
  2536             item_type = self.TypesTree.GetPyData(item)
  2542             while item_type != ITEM_POU:
  2537             while item_type != ITEM_POU:
  2552             self.RefreshTitle()
  2547             self.RefreshTitle()
  2553             self.RefreshEditMenu()
  2548             self.RefreshEditMenu()
  2554             self.RefreshTypesTree()
  2549             self.RefreshTypesTree()
  2555         event.Skip()
  2550         event.Skip()
  2556 
  2551 
  2557     def OnRemoveConfigurationMenu(self, event):
  2552     def OnRemoveConfigurationMenu(self, event, selected):
  2558         selected = self.TypesTree.GetSelection()
       
  2559         if self.TypesTree.GetPyData(selected) == ITEM_CONFIGURATION: 
  2553         if self.TypesTree.GetPyData(selected) == ITEM_CONFIGURATION: 
  2560             name = self.TypesTree.GetItemText(selected)
  2554             name = self.TypesTree.GetItemText(selected)
  2561             self.Controler.ProjectRemoveConfiguration(name)
  2555             self.Controler.ProjectRemoveConfiguration(name)
  2562             tagname = self.Controler.ComputeConfigurationName(name)
  2556             tagname = self.Controler.ComputeConfigurationName(name)
  2563             idx = self.IsOpened(tagname)
  2557             idx = self.IsOpened(tagname)
  2568             self.RefreshEditMenu()
  2562             self.RefreshEditMenu()
  2569             self.RefreshTypesTree()
  2563             self.RefreshTypesTree()
  2570             self.RefreshInstancesTree()
  2564             self.RefreshInstancesTree()
  2571         event.Skip()
  2565         event.Skip()
  2572 
  2566 
  2573     def OnRemoveResourceMenu(self, event):
  2567     def OnRemoveResourceMenu(self, event, selected):
  2574         selected = self.TypesTree.GetSelection()
       
  2575         if self.TypesTree.GetPyData(selected) == ITEM_RESOURCE:
  2568         if self.TypesTree.GetPyData(selected) == ITEM_RESOURCE:
  2576             resource = self.TypesTree.GetItemText(selected)
  2569             resource = self.TypesTree.GetItemText(selected)
  2577             item = self.TypesTree.GetItemParent(selected)
  2570             item = self.TypesTree.GetItemParent(selected)
  2578             item_type = self.TypesTree.GetPyData(item)
  2571             item_type = self.TypesTree.GetPyData(item)
  2579             while item_type != ITEM_CONFIGURATION:
  2572             while item_type != ITEM_CONFIGURATION: