IDEFrame.py
branchpython3
changeset 3789 8def429216ca
parent 3770 1eee037e81f7
child 3791 c98646b1c981
equal deleted inserted replaced
3788:d5014da90054 3789:8def429216ca
   135 def GetDeleteElementFunction(remove_function, parent_type=None, check_function=None):
   135 def GetDeleteElementFunction(remove_function, parent_type=None, check_function=None):
   136     def DeleteElementFunction(self, selected):
   136     def DeleteElementFunction(self, selected):
   137         name = self.ProjectTree.GetItemText(selected)
   137         name = self.ProjectTree.GetItemText(selected)
   138         if check_function is None or check_function(name):
   138         if check_function is None or check_function(name):
   139             if parent_type is not None:
   139             if parent_type is not None:
   140                 item_infos = self.ProjectTree.GetPyData(selected)
   140                 item_infos = self.ProjectTree.GetItemData(selected)
   141                 parent_name = item_infos["tagname"].split("::")[1]
   141                 parent_name = item_infos["tagname"].split("::")[1]
   142                 remove_function(self.Controler, parent_name, name)
   142                 remove_function(self.Controler, parent_name, name)
   143             else:
   143             else:
   144                 remove_function(self.Controler, name)
   144                 remove_function(self.Controler, name)
   145     return DeleteElementFunction
   145     return DeleteElementFunction
  1291     def OnDeleteMenu(self, event):
  1291     def OnDeleteMenu(self, event):
  1292         window = self.FindFocus()
  1292         window = self.FindFocus()
  1293         if window == self.ProjectTree or window is None:
  1293         if window == self.ProjectTree or window is None:
  1294             selected = self.ProjectTree.GetSelection()
  1294             selected = self.ProjectTree.GetSelection()
  1295             if selected is not None and selected.IsOk():
  1295             if selected is not None and selected.IsOk():
  1296                 function = self.DeleteFunctions.get(self.ProjectTree.GetPyData(selected)["type"], None)
  1296                 function = self.DeleteFunctions.get(self.ProjectTree.GetItemData(selected)["type"], None)
  1297                 if function is not None:
  1297                 if function is not None:
  1298                     function(self, selected)
  1298                     function(self, selected)
  1299                     self.CloseTabsWithoutModel()
  1299                     self.CloseTabsWithoutModel()
  1300                     self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, PROJECTTREE,
  1300                     self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, PROJECTTREE,
  1301                                   POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
  1301                                   POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
  1521 
  1521 
  1522     def RefreshProjectTree(self):
  1522     def RefreshProjectTree(self):
  1523         # Extract current selected item tagname
  1523         # Extract current selected item tagname
  1524         selected = self.ProjectTree.GetSelection()
  1524         selected = self.ProjectTree.GetSelection()
  1525         if selected is not None and selected.IsOk():
  1525         if selected is not None and selected.IsOk():
  1526             item_infos = self.ProjectTree.GetPyData(selected)
  1526             item_infos = self.ProjectTree.GetItemData(selected)
  1527             tagname = item_infos.get("tagname", None)
  1527             tagname = item_infos.get("tagname", None)
  1528         else:
  1528         else:
  1529             tagname = None
  1529             tagname = None
  1530 
  1530 
  1531         # Refresh treectrl items according to project infos
  1531         # Refresh treectrl items according to project infos
  1601 
  1601 
  1602     def RecursiveProjectTreeItemSelection(self, root, items):
  1602     def RecursiveProjectTreeItemSelection(self, root, items):
  1603         found = False
  1603         found = False
  1604         item, root_cookie = self.ProjectTree.GetFirstChild(root)
  1604         item, root_cookie = self.ProjectTree.GetFirstChild(root)
  1605         while item is not None and item.IsOk() and not found:
  1605         while item is not None and item.IsOk() and not found:
  1606             item_infos = self.ProjectTree.GetPyData(item)
  1606             item_infos = self.ProjectTree.GetItemData(item)
  1607             if (item_infos["name"].split(":")[-1].strip(), item_infos["type"]) == items[0]:
  1607             if (item_infos["name"].split(":")[-1].strip(), item_infos["type"]) == items[0]:
  1608                 if len(items) == 1:
  1608                 if len(items) == 1:
  1609                     self.SelectedItem = item
  1609                     self.SelectedItem = item
  1610                     self.ProjectTree.SelectItem(item)
  1610                     self.ProjectTree.SelectItem(item)
  1611                     self.ResetSelectedItem()
  1611                     self.ResetSelectedItem()
  1622 
  1622 
  1623     def OnProjectTreeBeginDrag(self, event):
  1623     def OnProjectTreeBeginDrag(self, event):
  1624         selected_item = (self.SelectedItem
  1624         selected_item = (self.SelectedItem
  1625                          if self.SelectedItem is not None
  1625                          if self.SelectedItem is not None
  1626                          else event.GetItem())
  1626                          else event.GetItem())
  1627         if selected_item.IsOk() and self.ProjectTree.GetPyData(selected_item)["type"] == ITEM_POU:
  1627         if selected_item.IsOk() and self.ProjectTree.GetItemData(selected_item)["type"] == ITEM_POU:
  1628             block_name = self.ProjectTree.GetItemText(selected_item)
  1628             block_name = self.ProjectTree.GetItemText(selected_item)
  1629             block_type = self.Controler.GetPouType(block_name)
  1629             block_type = self.Controler.GetPouType(block_name)
  1630             if block_type != "program":
  1630             if block_type != "program":
  1631                 data = wx.TextDataObject(str((block_name, block_type, "")))
  1631                 data = wx.TextDataObject(str((block_name, block_type, "")))
  1632                 dragSource = wx.DropSource(self.ProjectTree)
  1632                 dragSource = wx.DropSource(self.ProjectTree)
  1634                 dragSource.DoDragDrop()
  1634                 dragSource.DoDragDrop()
  1635             self.ResetSelectedItem()
  1635             self.ResetSelectedItem()
  1636 
  1636 
  1637     def OnProjectTreeItemBeginEdit(self, event):
  1637     def OnProjectTreeItemBeginEdit(self, event):
  1638         selected = event.GetItem()
  1638         selected = event.GetItem()
  1639         if self.ProjectTree.GetPyData(selected)["type"] in ITEMS_UNEDITABLE:
  1639         if self.ProjectTree.GetItemData(selected)["type"] in ITEMS_UNEDITABLE:
  1640             event.Veto()
  1640             event.Veto()
  1641         else:
  1641         else:
  1642             event.Skip()
  1642             event.Skip()
  1643 
  1643 
  1644     def OnProjectTreeItemEndEdit(self, event):
  1644     def OnProjectTreeItemEndEdit(self, event):
  1651             elif new_name.upper() in IEC_KEYWORDS:
  1651             elif new_name.upper() in IEC_KEYWORDS:
  1652                 message = _("\"%s\" is a keyword. It can't be used!") % new_name
  1652                 message = _("\"%s\" is a keyword. It can't be used!") % new_name
  1653             else:
  1653             else:
  1654                 item = event.GetItem()
  1654                 item = event.GetItem()
  1655                 old_name = self.ProjectTree.GetItemText(item)
  1655                 old_name = self.ProjectTree.GetItemText(item)
  1656                 item_infos = self.ProjectTree.GetPyData(item)
  1656                 item_infos = self.ProjectTree.GetItemData(item)
  1657                 if item_infos["type"] == ITEM_PROJECT:
  1657                 if item_infos["type"] == ITEM_PROJECT:
  1658                     self.Controler.SetProjectProperties(name=new_name)
  1658                     self.Controler.SetProjectProperties(name=new_name)
  1659                 elif item_infos["type"] == ITEM_DATATYPE:
  1659                 elif item_infos["type"] == ITEM_DATATYPE:
  1660                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectDataTypeNames() if name != old_name]:
  1660                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectDataTypeNames() if name != old_name]:
  1661                         message = _("\"%s\" data type already exists!") % new_name
  1661                         message = _("\"%s\" data type already exists!") % new_name
  1755                 self._Refresh(TITLE, FILEMENU, EDITMENU)
  1755                 self._Refresh(TITLE, FILEMENU, EDITMENU)
  1756                 event.Skip()
  1756                 event.Skip()
  1757 
  1757 
  1758     def OnProjectTreeItemActivated(self, event):
  1758     def OnProjectTreeItemActivated(self, event):
  1759         selected = event.GetItem()
  1759         selected = event.GetItem()
  1760         item_infos = self.ProjectTree.GetPyData(selected)
  1760         item_infos = self.ProjectTree.GetItemData(selected)
  1761         if item_infos["type"] == ITEM_PROJECT:
  1761         if item_infos["type"] == ITEM_PROJECT:
  1762             self.EditProjectSettings()
  1762             self.EditProjectSettings()
  1763         else:
  1763         else:
  1764             if item_infos["type"] in [ITEM_DATATYPE, ITEM_POU,
  1764             if item_infos["type"] in [ITEM_DATATYPE, ITEM_POU,
  1765                                       ITEM_CONFIGURATION, ITEM_RESOURCE,
  1765                                       ITEM_CONFIGURATION, ITEM_RESOURCE,
  1767                 self.EditProjectElement(item_infos["type"], item_infos["tagname"])
  1767                 self.EditProjectElement(item_infos["type"], item_infos["tagname"])
  1768             event.Skip()
  1768             event.Skip()
  1769 
  1769 
  1770     def ProjectTreeItemSelect(self, select_item):
  1770     def ProjectTreeItemSelect(self, select_item):
  1771         if select_item is not None and select_item.IsOk():
  1771         if select_item is not None and select_item.IsOk():
  1772             item_infos = self.ProjectTree.GetPyData(select_item)
  1772             item_infos = self.ProjectTree.GetItemData(select_item)
  1773             if item_infos["type"] in [ITEM_DATATYPE, ITEM_POU,
  1773             if item_infos["type"] in [ITEM_DATATYPE, ITEM_POU,
  1774                                       ITEM_CONFIGURATION, ITEM_RESOURCE,
  1774                                       ITEM_CONFIGURATION, ITEM_RESOURCE,
  1775                                       ITEM_TRANSITION, ITEM_ACTION]:
  1775                                       ITEM_TRANSITION, ITEM_ACTION]:
  1776                 self.EditProjectElement(item_infos["type"], item_infos["tagname"], True)
  1776                 self.EditProjectElement(item_infos["type"], item_infos["tagname"], True)
  1777                 self.PouInstanceVariablesPanel.SetPouType(item_infos["tagname"])
  1777                 self.PouInstanceVariablesPanel.SetPouType(item_infos["tagname"])
  1786     def OnProjectTreeMotion(self, event):
  1786     def OnProjectTreeMotion(self, event):
  1787         if not event.Dragging():
  1787         if not event.Dragging():
  1788             pt = wx.Point(event.GetX(), event.GetY())
  1788             pt = wx.Point(event.GetX(), event.GetY())
  1789             item, flags = self.ProjectTree.HitTest(pt)
  1789             item, flags = self.ProjectTree.HitTest(pt)
  1790             if item is not None and item.IsOk() and flags & wx.TREE_HITTEST_ONITEMLABEL:
  1790             if item is not None and item.IsOk() and flags & wx.TREE_HITTEST_ONITEMLABEL:
  1791                 item_infos = self.ProjectTree.GetPyData(item)
  1791                 item_infos = self.ProjectTree.GetItemData(item)
  1792                 if item != self.LastToolTipItem and self.LastToolTipItem is not None:
  1792                 if item != self.LastToolTipItem and self.LastToolTipItem is not None:
  1793                     self.ProjectTree.SetToolTip(None)
  1793                     self.ProjectTree.SetToolTip(None)
  1794                     self.LastToolTipItem = None
  1794                     self.LastToolTipItem = None
  1795                 if self.LastToolTipItem != item and \
  1795                 if self.LastToolTipItem != item and \
  1796                    item_infos["type"] in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]:
  1796                    item_infos["type"] in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]:
  1814                 self.ProjectTree.SetToolTip(None)
  1814                 self.ProjectTree.SetToolTip(None)
  1815                 self.LastToolTipItem = None
  1815                 self.LastToolTipItem = None
  1816         event.Skip()
  1816         event.Skip()
  1817 
  1817 
  1818     def OnProjectTreeItemChanging(self, event):
  1818     def OnProjectTreeItemChanging(self, event):
  1819         if self.ProjectTree.GetPyData(event.GetItem())["type"] not in ITEMS_UNEDITABLE and self.SelectedItem is None:
  1819         if self.ProjectTree.GetItemData(event.GetItem())["type"] not in ITEMS_UNEDITABLE and self.SelectedItem is None:
  1820             self.SelectedItem = event.GetItem()
  1820             self.SelectedItem = event.GetItem()
  1821             event.Veto()
  1821             event.Veto()
  1822         else:
  1822         else:
  1823             event.Skip()
  1823             event.Skip()
  1824 
  1824 
  1896     def OnProjectTreeRightUp(self, event):
  1896     def OnProjectTreeRightUp(self, event):
  1897         item = event.GetItem()
  1897         item = event.GetItem()
  1898         self.ProjectTree.SelectItem(item)
  1898         self.ProjectTree.SelectItem(item)
  1899         self.ProjectTreeItemSelect(item)
  1899         self.ProjectTreeItemSelect(item)
  1900         name = self.ProjectTree.GetItemText(item)
  1900         name = self.ProjectTree.GetItemText(item)
  1901         item_infos = self.ProjectTree.GetPyData(item)
  1901         item_infos = self.ProjectTree.GetItemData(item)
  1902 
  1902 
  1903         menu = None
  1903         menu = None
  1904         if item_infos["type"] in ITEMS_UNEDITABLE + [ITEM_PROJECT]:
  1904         if item_infos["type"] in ITEMS_UNEDITABLE + [ITEM_PROJECT]:
  1905             if item_infos["type"] == ITEM_PROJECT:
  1905             if item_infos["type"] == ITEM_PROJECT:
  1906                 name = "Project"
  1906                 name = "Project"
  1931 
  1931 
  1932             elif name == "Transitions":
  1932             elif name == "Transitions":
  1933                 menu = wx.Menu(title='')
  1933                 menu = wx.Menu(title='')
  1934                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Transition"))
  1934                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Transition"))
  1935                 parent = self.ProjectTree.GetItemParent(item)
  1935                 parent = self.ProjectTree.GetItemParent(item)
  1936                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1936                 parent_type = self.ProjectTree.GetItemData(parent)["type"]
  1937                 while parent_type != ITEM_POU:
  1937                 while parent_type != ITEM_POU:
  1938                     parent = self.ProjectTree.GetItemParent(parent)
  1938                     parent = self.ProjectTree.GetItemParent(parent)
  1939                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1939                     parent_type = self.ProjectTree.GetItemData(parent)["type"]
  1940                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.ProjectTree.GetItemText(parent)), new_item)
  1940                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.ProjectTree.GetItemText(parent)), new_item)
  1941 
  1941 
  1942             elif name == "Actions":
  1942             elif name == "Actions":
  1943                 menu = wx.Menu(title='')
  1943                 menu = wx.Menu(title='')
  1944                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Action"))
  1944                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Action"))
  1945                 parent = self.ProjectTree.GetItemParent(item)
  1945                 parent = self.ProjectTree.GetItemParent(item)
  1946                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1946                 parent_type = self.ProjectTree.GetItemData(parent)["type"]
  1947                 while parent_type != ITEM_POU:
  1947                 while parent_type != ITEM_POU:
  1948                     parent = self.ProjectTree.GetItemParent(parent)
  1948                     parent = self.ProjectTree.GetItemParent(parent)
  1949                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1949                     parent_type = self.ProjectTree.GetItemData(parent)["type"]
  1950                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.ProjectTree.GetItemText(parent)), new_item)
  1950                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.ProjectTree.GetItemText(parent)), new_item)
  1951 
  1951 
  1952             elif name == "Resources":
  1952             elif name == "Resources":
  1953                 menu = wx.Menu(title='')
  1953                 menu = wx.Menu(title='')
  1954                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Resource"))
  1954                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Resource"))
  1955                 parent = self.ProjectTree.GetItemParent(item)
  1955                 parent = self.ProjectTree.GetItemParent(item)
  1956                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1956                 parent_type = self.ProjectTree.GetItemData(parent)["type"]
  1957                 while parent_type not in [ITEM_CONFIGURATION, ITEM_PROJECT]:
  1957                 while parent_type not in [ITEM_CONFIGURATION, ITEM_PROJECT]:
  1958                     parent = self.ProjectTree.GetItemParent(parent)
  1958                     parent = self.ProjectTree.GetItemParent(parent)
  1959                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1959                     parent_type = self.ProjectTree.GetItemData(parent)["type"]
  1960                 parent_name = None
  1960                 parent_name = None
  1961                 if parent_type == ITEM_PROJECT:
  1961                 if parent_type == ITEM_PROJECT:
  1962                     config_names = self.Controler.GetProjectConfigNames()
  1962                     config_names = self.Controler.GetProjectConfigNames()
  1963                     if len(config_names) > 0:
  1963                     if len(config_names) > 0:
  1964                         parent_name = config_names[0]
  1964                         parent_name = config_names[0]
  2399         return OnAddResourceMenu
  2399         return OnAddResourceMenu
  2400 
  2400 
  2401     def GenerateChangePouTypeFunction(self, name, new_type):
  2401     def GenerateChangePouTypeFunction(self, name, new_type):
  2402         def OnChangePouTypeMenu(event):
  2402         def OnChangePouTypeMenu(event):
  2403             selected = self.ProjectTree.GetSelection()
  2403             selected = self.ProjectTree.GetSelection()
  2404             if self.ProjectTree.GetPyData(selected)["type"] == ITEM_POU:
  2404             if self.ProjectTree.GetItemData(selected)["type"] == ITEM_POU:
  2405                 self.Controler.ProjectChangePouType(name, new_type)
  2405                 self.Controler.ProjectChangePouType(name, new_type)
  2406                 self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, PROJECTTREE, LIBRARYTREE)
  2406                 self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, PROJECTTREE, LIBRARYTREE)
  2407         return OnChangePouTypeMenu
  2407         return OnChangePouTypeMenu
  2408 
  2408 
  2409     def OnCopyPou(self, event):
  2409     def OnCopyPou(self, event):
  2416             self._Refresh(EDITMENU)
  2416             self._Refresh(EDITMENU)
  2417 
  2417 
  2418     def OnPastePou(self, event):
  2418     def OnPastePou(self, event):
  2419         selected = self.ProjectTree.GetSelection()
  2419         selected = self.ProjectTree.GetSelection()
  2420 
  2420 
  2421         if self.ProjectTree.GetPyData(selected)["type"] != ITEM_PROJECT:
  2421         if self.ProjectTree.GetItemData(selected)["type"] != ITEM_PROJECT:
  2422             pou_type = self.ProjectTree.GetItemText(selected)
  2422             pou_type = self.ProjectTree.GetItemText(selected)
  2423             pou_type = self.UNEDITABLE_NAMES_DICT[pou_type]  # one of 'Functions', 'Function Blocks' or 'Programs'
  2423             pou_type = self.UNEDITABLE_NAMES_DICT[pou_type]  # one of 'Functions', 'Function Blocks' or 'Programs'
  2424             pou_type = {'Functions': 'function', 'Function Blocks': 'functionBlock', 'Programs': 'program'}[pou_type]
  2424             pou_type = {'Functions': 'function', 'Function Blocks': 'functionBlock', 'Programs': 'program'}[pou_type]
  2425         else:
  2425         else:
  2426             pou_type = None
  2426             pou_type = None
  2461             self.Controler.PouIsUsed,
  2461             self.Controler.PouIsUsed,
  2462             _("Remove Pou"), name)
  2462             _("Remove Pou"), name)
  2463 
  2463 
  2464     def OnRemoveDataTypeMenu(self, event):
  2464     def OnRemoveDataTypeMenu(self, event):
  2465         selected = self.ProjectTree.GetSelection()
  2465         selected = self.ProjectTree.GetSelection()
  2466         if self.ProjectTree.GetPyData(selected)["type"] == ITEM_DATATYPE:
  2466         if self.ProjectTree.GetItemData(selected)["type"] == ITEM_DATATYPE:
  2467             name = self.ProjectTree.GetItemText(selected)
  2467             name = self.ProjectTree.GetItemText(selected)
  2468             if self.CheckDataTypeIsUsedBeforeDeletion(name):
  2468             if self.CheckDataTypeIsUsedBeforeDeletion(name):
  2469                 self.Controler.ProjectRemoveDataType(name)
  2469                 self.Controler.ProjectRemoveDataType(name)
  2470                 tagname = ComputeDataTypeName(name)
  2470                 tagname = ComputeDataTypeName(name)
  2471                 idx = self.IsOpened(tagname)
  2471                 idx = self.IsOpened(tagname)
  2473                     self.TabsOpened.DeletePage(idx)
  2473                     self.TabsOpened.DeletePage(idx)
  2474                 self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, PROJECTTREE)
  2474                 self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, PROJECTTREE)
  2475 
  2475 
  2476     def OnRenamePouMenu(self, event):
  2476     def OnRenamePouMenu(self, event):
  2477         selected = self.ProjectTree.GetSelection()
  2477         selected = self.ProjectTree.GetSelection()
  2478         if self.ProjectTree.GetPyData(selected)["type"] == ITEM_POU:
  2478         if self.ProjectTree.GetItemData(selected)["type"] == ITEM_POU:
  2479             wx.CallAfter(self.ProjectTree.EditLabel, selected)
  2479             wx.CallAfter(self.ProjectTree.EditLabel, selected)
  2480 
  2480 
  2481     def OnRemovePouMenu(self, event):
  2481     def OnRemovePouMenu(self, event):
  2482         selected = self.ProjectTree.GetSelection()
  2482         selected = self.ProjectTree.GetSelection()
  2483         if self.ProjectTree.GetPyData(selected)["type"] == ITEM_POU:
  2483         if self.ProjectTree.GetItemData(selected)["type"] == ITEM_POU:
  2484             name = self.ProjectTree.GetItemText(selected)
  2484             name = self.ProjectTree.GetItemText(selected)
  2485             if self.CheckPouIsUsedBeforeDeletion(name):
  2485             if self.CheckPouIsUsedBeforeDeletion(name):
  2486                 self.Controler.ProjectRemovePou(name)
  2486                 self.Controler.ProjectRemovePou(name)
  2487                 tagname = ComputePouName(name)
  2487                 tagname = ComputePouName(name)
  2488                 idx = self.IsOpened(tagname)
  2488                 idx = self.IsOpened(tagname)
  2490                     self.TabsOpened.DeletePage(idx)
  2490                     self.TabsOpened.DeletePage(idx)
  2491                 self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, PROJECTTREE, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
  2491                 self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, PROJECTTREE, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
  2492 
  2492 
  2493     def OnRemoveTransitionMenu(self, event):
  2493     def OnRemoveTransitionMenu(self, event):
  2494         selected = self.ProjectTree.GetSelection()
  2494         selected = self.ProjectTree.GetSelection()
  2495         item_infos = self.ProjectTree.GetPyData(selected)
  2495         item_infos = self.ProjectTree.GetItemData(selected)
  2496         if item_infos["type"] == ITEM_TRANSITION:
  2496         if item_infos["type"] == ITEM_TRANSITION:
  2497             transition = self.ProjectTree.GetItemText(selected)
  2497             transition = self.ProjectTree.GetItemText(selected)
  2498             pou_name = item_infos["tagname"].split("::")[1]
  2498             pou_name = item_infos["tagname"].split("::")[1]
  2499             self.Controler.ProjectRemovePouTransition(pou_name, transition)
  2499             self.Controler.ProjectRemovePouTransition(pou_name, transition)
  2500             tagname = ComputePouTransitionName(pou_name, transition)
  2500             tagname = ComputePouTransitionName(pou_name, transition)
  2503                 self.TabsOpened.DeletePage(idx)
  2503                 self.TabsOpened.DeletePage(idx)
  2504             self._Refresh(TITLE, FILEMENU, EDITMENU, PROJECTTREE)
  2504             self._Refresh(TITLE, FILEMENU, EDITMENU, PROJECTTREE)
  2505 
  2505 
  2506     def OnRemoveActionMenu(self, event):
  2506     def OnRemoveActionMenu(self, event):
  2507         selected = self.ProjectTree.GetSelection()
  2507         selected = self.ProjectTree.GetSelection()
  2508         item_infos = self.ProjectTree.GetPyData(selected)
  2508         item_infos = self.ProjectTree.GetItemData(selected)
  2509         if item_infos["type"] == ITEM_ACTION:
  2509         if item_infos["type"] == ITEM_ACTION:
  2510             action = self.ProjectTree.GetItemText(selected)
  2510             action = self.ProjectTree.GetItemText(selected)
  2511             pou_name = item_infos["tagname"].split("::")[1]
  2511             pou_name = item_infos["tagname"].split("::")[1]
  2512             self.Controler.ProjectRemovePouAction(pou_name, action)
  2512             self.Controler.ProjectRemovePouAction(pou_name, action)
  2513             tagname = ComputePouActionName(pou_name, action)
  2513             tagname = ComputePouActionName(pou_name, action)
  2516                 self.TabsOpened.DeletePage(idx)
  2516                 self.TabsOpened.DeletePage(idx)
  2517             self._Refresh(TITLE, FILEMENU, EDITMENU, PROJECTTREE)
  2517             self._Refresh(TITLE, FILEMENU, EDITMENU, PROJECTTREE)
  2518 
  2518 
  2519     def OnRemoveConfigurationMenu(self, event):
  2519     def OnRemoveConfigurationMenu(self, event):
  2520         selected = self.ProjectTree.GetSelection()
  2520         selected = self.ProjectTree.GetSelection()
  2521         if self.ProjectTree.GetPyData(selected)["type"] == ITEM_CONFIGURATION:
  2521         if self.ProjectTree.GetItemData(selected)["type"] == ITEM_CONFIGURATION:
  2522             name = self.ProjectTree.GetItemText(selected)
  2522             name = self.ProjectTree.GetItemText(selected)
  2523             self.Controler.ProjectRemoveConfiguration(name)
  2523             self.Controler.ProjectRemoveConfiguration(name)
  2524             tagname = ComputeConfigurationName(name)
  2524             tagname = ComputeConfigurationName(name)
  2525             idx = self.IsOpened(tagname)
  2525             idx = self.IsOpened(tagname)
  2526             if idx is not None:
  2526             if idx is not None:
  2527                 self.TabsOpened.DeletePage(idx)
  2527                 self.TabsOpened.DeletePage(idx)
  2528             self._Refresh(TITLE, FILEMENU, EDITMENU, PROJECTTREE, POUINSTANCEVARIABLESPANEL)
  2528             self._Refresh(TITLE, FILEMENU, EDITMENU, PROJECTTREE, POUINSTANCEVARIABLESPANEL)
  2529 
  2529 
  2530     def OnRemoveResourceMenu(self, event):
  2530     def OnRemoveResourceMenu(self, event):
  2531         selected = self.ProjectTree.GetSelection()
  2531         selected = self.ProjectTree.GetSelection()
  2532         item_infos = self.ProjectTree.GetPyData(selected)
  2532         item_infos = self.ProjectTree.GetItemData(selected)
  2533         if item_infos["type"] == ITEM_RESOURCE:
  2533         if item_infos["type"] == ITEM_RESOURCE:
  2534             resource = self.ProjectTree.GetItemText(selected)
  2534             resource = self.ProjectTree.GetItemText(selected)
  2535             config_name = item_infos["tagname"].split("::")[1]
  2535             config_name = item_infos["tagname"].split("::")[1]
  2536             self.Controler.ProjectRemoveConfigurationResource(config_name, resource)
  2536             self.Controler.ProjectRemoveConfigurationResource(config_name, resource)
  2537             tagname = ComputeConfigurationResourceName(config_name, selected)
  2537             tagname = ComputeConfigurationResourceName(config_name, selected)