PLCOpenEditor.py
changeset 428 3b19c34bac04
parent 427 22d16c457d87
child 429 c270d61a671d
equal deleted inserted replaced
427:22d16c457d87 428:3b19c34bac04
  1807                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id)
  1807                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id)
  1808                 new_id = wx.NewId()
  1808                 new_id = wx.NewId()
  1809                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
  1809                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
  1810                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id)
  1810                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id)
  1811                 menu.AppendSeparator()
  1811                 menu.AppendSeparator()
       
  1812 
  1812             new_id = wx.NewId()
  1813             new_id = wx.NewId()
  1813             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Create a new POU from"))
  1814             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Create a new POU from"))
  1814             self.Bind(wx.EVT_MENU, self.OnCreatePouFromMenu, id=new_id)
  1815             self.Bind(wx.EVT_MENU, self.OnCreatePouFromMenu, id=new_id)
       
  1816 
       
  1817             AppendMenu(menu, help='', id=wx.ID_COPY, kind=wx.ITEM_NORMAL, text=_("Copy"))
       
  1818             self.Bind(wx.EVT_MENU, self.OnCopyPou, id=wx.ID_COPY)
       
  1819 
  1815             pou_type = self.Controler.GetPouType(name, self.Debug)
  1820             pou_type = self.Controler.GetPouType(name, self.Debug)
  1816             if pou_type in ["function", "functionBlock"]:
  1821             if pou_type in ["function", "functionBlock"]:
  1817                 change_menu = wx.Menu(title='')
  1822                 change_menu = wx.Menu(title='')
  1818                 if pou_type == "function":
  1823                 if pou_type == "function":
  1819                     new_id = wx.NewId()
  1824                     new_id = wx.NewId()
  1853                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType"))
  1858                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType"))
  1854                 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id)
  1859                 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id)
  1855                 self.PopupMenu(menu)
  1860                 self.PopupMenu(menu)
  1856             elif name in ["Functions", "Function Blocks", "Programs"]:
  1861             elif name in ["Functions", "Function Blocks", "Programs"]:
  1857                 menu = wx.Menu(title='')
  1862                 menu = wx.Menu(title='')
       
  1863 
  1858                 new_id = wx.NewId()
  1864                 new_id = wx.NewId()
  1859                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Pou"))
  1865                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Pou"))
  1860                 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction({"Functions" : "function", "Function Blocks" : "functionBlock", "Programs" : "program"}[name]), id=new_id)
  1866                 self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction({"Functions" : "function", "Function Blocks" : "functionBlock", "Programs" : "program"}[name]), id=new_id)
       
  1867 
       
  1868                 AppendMenu(menu, help='', id=wx.ID_PASTE, kind=wx.ITEM_NORMAL, text=_("Paste"))
       
  1869                 self.Bind(wx.EVT_MENU, self.OnPastePou, id=wx.ID_PASTE)
       
  1870 
       
  1871                 if self.GetCopyBuffer() is None:
       
  1872                     menu.Enable(wx.ID_PASTE, False)
       
  1873 
  1861                 self.PopupMenu(menu)
  1874                 self.PopupMenu(menu)
  1862             elif name == "Configurations":
  1875             elif name == "Configurations":
  1863                 menu = wx.Menu(title='')
  1876                 menu = wx.Menu(title='')
  1864                 new_id = wx.NewId()
  1877                 new_id = wx.NewId()
  1865                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration"))
  1878                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration"))
  2476                 self.RefreshTypesTree()
  2489                 self.RefreshTypesTree()
  2477                 self.RefreshLibraryTree()
  2490                 self.RefreshLibraryTree()
  2478                 self.RefreshToolBar()
  2491                 self.RefreshToolBar()
  2479         event.Skip()
  2492         event.Skip()
  2480 
  2493 
       
  2494     def OnCopyPou(self, event):
       
  2495         selected = self.TypesTree.GetSelection()
       
  2496 
       
  2497         pou_name = self.TypesTree.GetItemText(selected)
       
  2498         pou = self.Controler.Project.getpou(pou_name)
       
  2499 
       
  2500         pou_xml = pou.generateXMLText('pou', 0)
       
  2501         self.SetCopyBuffer(pou_xml)
       
  2502 
       
  2503     def OnPastePou(self, event):
       
  2504         selected = self.TypesTree.GetSelection()
       
  2505 
       
  2506         pou_type = self.TypesTree.GetItemText(selected)
       
  2507         pou_type = UNEDITABLE_NAMES_DICT[pou_type] # one of 'Functions', 'Function Blocks' or 'Programs'
       
  2508         pou_type = {'Functions': 'function', 'Function Blocks': 'functionBlock', 'Programs': 'program'}[pou_type]
       
  2509 
       
  2510         pou_xml = self.GetCopyBuffer()
       
  2511 
       
  2512         result = self.Controler.PastePou(pou_type, pou_xml)
       
  2513 
       
  2514         if result is not None:
       
  2515             message = wx.MessageDialog(self, result, _("Error"), wx.OK|wx.ICON_ERROR)
       
  2516             message.ShowModal()
       
  2517             message.Destroy()
       
  2518         else:
       
  2519             self.RefreshTitle()
       
  2520             self.RefreshEditMenu()
       
  2521             self.RefreshTypesTree()
       
  2522             self.RefreshLibraryTree()
       
  2523             self.RefreshToolBar()
       
  2524 
  2481 #-------------------------------------------------------------------------------
  2525 #-------------------------------------------------------------------------------
  2482 #                        Remove Project Elements Functions
  2526 #                        Remove Project Elements Functions
  2483 #-------------------------------------------------------------------------------
  2527 #-------------------------------------------------------------------------------
  2484 
  2528 
  2485     def OnRemoveDataTypeMenu(self, event):
  2529     def OnRemoveDataTypeMenu(self, event):