382 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, |
382 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, |
383 id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION) |
383 id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION) |
384 self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL) |
384 self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL) |
385 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE) |
385 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE) |
386 |
386 |
387 self.AddToMenuToolBar([(wx.ID_UNDO, wx.ART_UNDO, _(u'Undo'), None), |
387 self.AddToMenuToolBar([(wx.ID_UNDO, "undo.png", _(u'Undo'), None), |
388 (wx.ID_REDO, wx.ART_REDO, _(u'Redo'), None), |
388 (wx.ID_REDO, "redo.png", _(u'Redo'), None), |
389 None, |
389 None, |
390 (wx.ID_CUT, wx.ART_CUT, _(u'Cut'), None), |
390 (wx.ID_CUT, "cut.png", _(u'Cut'), None), |
391 (wx.ID_COPY, wx.ART_COPY, _(u'Copy'), None), |
391 (wx.ID_COPY, "copy.png", _(u'Copy'), None), |
392 (wx.ID_PASTE, wx.ART_PASTE, _(u'Paste'), None)]) |
392 (wx.ID_PASTE, "paste.png", _(u'Paste'), None), |
|
393 None, |
|
394 (ID_PLCOPENEDITOREDITMENUSEARCHINPROJECT, "find.png", _(u'Search in Project'), None)]) |
393 |
395 |
394 def _init_coll_DisplayMenu_Items(self, parent): |
396 def _init_coll_DisplayMenu_Items(self, parent): |
395 AppendMenu(parent, help='', id=wx.ID_REFRESH, |
397 AppendMenu(parent, help='', id=wx.ID_REFRESH, |
396 kind=wx.ITEM_NORMAL, text=_(u'Refresh\tCTRL+R')) |
398 kind=wx.ITEM_NORMAL, text=_(u'Refresh\tCTRL+R')) |
397 if self.EnableDebug: |
399 if self.EnableDebug: |
603 #----------------------------------------------------------------------- |
606 #----------------------------------------------------------------------- |
604 # Creating Tool Bar |
607 # Creating Tool Bar |
605 #----------------------------------------------------------------------- |
608 #----------------------------------------------------------------------- |
606 |
609 |
607 if USE_AUI: |
610 if USE_AUI: |
|
611 MenuToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORMENUTOOLBAR, wx.DefaultPosition, wx.DefaultSize, |
|
612 wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER) |
|
613 MenuToolBar.SetToolBitmapSize(wx.Size(25, 25)) |
|
614 MenuToolBar.Realize() |
|
615 self.Panes["MenuToolBar"] = MenuToolBar |
|
616 self.AUIManager.AddPane(MenuToolBar, wx.aui.AuiPaneInfo(). |
|
617 Name("MenuToolBar").Caption(_("Menu ToolBar")). |
|
618 ToolbarPane().Top(). |
|
619 LeftDockable(False).RightDockable(False)) |
|
620 |
608 EditorToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORTOOLBAR, wx.DefaultPosition, wx.DefaultSize, |
621 EditorToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORTOOLBAR, wx.DefaultPosition, wx.DefaultSize, |
609 wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER) |
622 wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER) |
610 EditorToolBar.SetToolBitmapSize(wx.Size(25, 25)) |
623 EditorToolBar.SetToolBitmapSize(wx.Size(25, 25)) |
611 EditorToolBar.AddRadioTool(ID_PLCOPENEDITOREDITORTOOLBARSELECTION, |
624 EditorToolBar.AddRadioTool(ID_PLCOPENEDITOREDITORTOOLBARSELECTION, |
612 wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, _("Select an object")) |
625 wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, _("Select an object")) |
613 EditorToolBar.Realize() |
626 EditorToolBar.Realize() |
614 self.Panes["EditorToolBar"] = EditorToolBar |
627 self.Panes["EditorToolBar"] = EditorToolBar |
615 self.AUIManager.AddPane(EditorToolBar, wx.aui.AuiPaneInfo(). |
628 self.AUIManager.AddPane(EditorToolBar, wx.aui.AuiPaneInfo(). |
616 Name("EditorToolBar").Caption(_("Editor ToolBar")). |
629 Name("EditorToolBar").Caption(_("Editor ToolBar")). |
617 ToolbarPane().Top(). |
630 ToolbarPane().Top().Position(1). |
618 LeftDockable(False).RightDockable(False)) |
|
619 |
|
620 MenuToolBar = wx.ToolBar(self, ID_PLCOPENEDITOREDITORMENUTOOLBAR, wx.DefaultPosition, wx.DefaultSize, |
|
621 wx.TB_FLAT | wx.TB_NODIVIDER | wx.NO_BORDER) |
|
622 MenuToolBar.SetToolBitmapSize(wx.Size(25, 25)) |
|
623 MenuToolBar.Realize() |
|
624 self.Panes["MenuToolBar"] = MenuToolBar |
|
625 self.AUIManager.AddPane(MenuToolBar, wx.aui.AuiPaneInfo(). |
|
626 Name("MenuToolBar").Caption(_("Menu ToolBar")). |
|
627 ToolbarPane().Top(). |
|
628 LeftDockable(False).RightDockable(False)) |
631 LeftDockable(False).RightDockable(False)) |
629 |
632 |
630 else: |
633 else: |
631 self.EditorToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, |
634 self.EditorToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, |
632 ID_PLCOPENEDITOREDITORTOOLBAR, 'EditorToolBar') |
635 ID_PLCOPENEDITOREDITORTOOLBAR, 'EditorToolBar') |
1664 item, flags = self.TypesTree.HitTest(wx.Point(event.GetX(), event.GetY())) |
1674 item, flags = self.TypesTree.HitTest(wx.Point(event.GetX(), event.GetY())) |
1665 self.TypesTree.SelectItem(item) |
1675 self.TypesTree.SelectItem(item) |
1666 self.TypesTreeItemSelect(item) |
1676 self.TypesTreeItemSelect(item) |
1667 name = self.TypesTree.GetItemText(item) |
1677 name = self.TypesTree.GetItemText(item) |
1668 type = self.TypesTree.GetPyData(item) |
1678 type = self.TypesTree.GetPyData(item) |
1669 if type == ITEM_POU: |
1679 |
1670 menu = wx.Menu(title='') |
1680 menu = None |
1671 if self.Controler.GetPouBodyType(name) == "SFC": |
1681 if type in ITEMS_UNEDITABLE: |
1672 new_id = wx.NewId() |
|
1673 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition")) |
|
1674 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id) |
|
1675 new_id = wx.NewId() |
|
1676 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action")) |
|
1677 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id) |
|
1678 menu.AppendSeparator() |
|
1679 |
|
1680 new_id = wx.NewId() |
|
1681 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU")) |
|
1682 self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id) |
|
1683 |
|
1684 pou_type = self.Controler.GetPouType(name) |
|
1685 if pou_type in ["function", "functionBlock"]: |
|
1686 change_menu = wx.Menu(title='') |
|
1687 if pou_type == "function": |
|
1688 new_id = wx.NewId() |
|
1689 AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block")) |
|
1690 self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id) |
|
1691 new_id = wx.NewId() |
|
1692 AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program")) |
|
1693 self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id) |
|
1694 menu.AppendMenu(wx.NewId(), _("Change POU Type To"), change_menu) |
|
1695 new_id = wx.NewId() |
|
1696 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename")) |
|
1697 self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id) |
|
1698 new_id = wx.NewId() |
|
1699 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) |
|
1700 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id) |
|
1701 self.PopupMenu(menu) |
|
1702 elif type == ITEM_CONFIGURATION: |
|
1703 menu = wx.Menu(title='') |
|
1704 new_id = wx.NewId() |
|
1705 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource")) |
|
1706 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id) |
|
1707 new_id = wx.NewId() |
|
1708 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) |
|
1709 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id) |
|
1710 self.PopupMenu(menu) |
|
1711 elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]: |
|
1712 menu = wx.Menu(title='') |
|
1713 new_id = wx.NewId() |
|
1714 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) |
|
1715 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id) |
|
1716 self.PopupMenu(menu) |
|
1717 elif type in ITEMS_UNEDITABLE: |
|
1718 name = UNEDITABLE_NAMES_DICT[name] |
1682 name = UNEDITABLE_NAMES_DICT[name] |
|
1683 |
1719 if name == "Data Types": |
1684 if name == "Data Types": |
1720 menu = wx.Menu(title='') |
1685 menu = wx.Menu(title='') |
1721 new_id = wx.NewId() |
1686 new_id = wx.NewId() |
1722 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType")) |
1687 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType")) |
1723 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id) |
1688 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id) |
1724 self.PopupMenu(menu) |
1689 |
1725 elif name in ["Functions", "Function Blocks", "Programs"]: |
1690 elif name in ["Functions", "Function Blocks", "Programs"]: |
1726 menu = wx.Menu(title='') |
1691 menu = wx.Menu(title='') |
1727 |
1692 |
1728 new_id = wx.NewId() |
1693 new_id = wx.NewId() |
1729 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add POU")) |
1694 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add POU")) |
1733 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Paste POU")) |
1698 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Paste POU")) |
1734 self.Bind(wx.EVT_MENU, self.OnPastePou, id=new_id) |
1699 self.Bind(wx.EVT_MENU, self.OnPastePou, id=new_id) |
1735 if self.GetCopyBuffer() is None: |
1700 if self.GetCopyBuffer() is None: |
1736 menu.Enable(new_id, False) |
1701 menu.Enable(new_id, False) |
1737 |
1702 |
1738 self.PopupMenu(menu) |
|
1739 elif name == "Configurations": |
1703 elif name == "Configurations": |
1740 menu = wx.Menu(title='') |
1704 menu = wx.Menu(title='') |
1741 new_id = wx.NewId() |
1705 new_id = wx.NewId() |
1742 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration")) |
1706 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration")) |
1743 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, id=new_id) |
1707 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, id=new_id) |
1744 self.PopupMenu(menu) |
1708 |
1745 elif name == "Transitions": |
1709 elif name == "Transitions": |
1746 menu = wx.Menu(title='') |
1710 menu = wx.Menu(title='') |
1747 new_id = wx.NewId() |
1711 new_id = wx.NewId() |
1748 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition")) |
1712 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition")) |
1749 parent = self.TypesTree.GetItemParent(item) |
1713 parent = self.TypesTree.GetItemParent(item) |
1750 parent_type = self.TypesTree.GetPyData(parent) |
1714 parent_type = self.TypesTree.GetPyData(parent) |
1751 while parent_type != ITEM_POU: |
1715 while parent_type != ITEM_POU: |
1752 parent = self.TypesTree.GetItemParent(parent) |
1716 parent = self.TypesTree.GetItemParent(parent) |
1753 parent_type = self.TypesTree.GetPyData(parent) |
1717 parent_type = self.TypesTree.GetPyData(parent) |
1754 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1718 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1755 self.PopupMenu(menu) |
1719 |
1756 elif name == "Actions": |
1720 elif name == "Actions": |
1757 menu = wx.Menu(title='') |
1721 menu = wx.Menu(title='') |
1758 new_id = wx.NewId() |
1722 new_id = wx.NewId() |
1759 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action")) |
1723 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action")) |
1760 parent = self.TypesTree.GetItemParent(item) |
1724 parent = self.TypesTree.GetItemParent(item) |
1761 parent_type = self.TypesTree.GetPyData(parent) |
1725 parent_type = self.TypesTree.GetPyData(parent) |
1762 while parent_type != ITEM_POU: |
1726 while parent_type != ITEM_POU: |
1763 parent = self.TypesTree.GetItemParent(parent) |
1727 parent = self.TypesTree.GetItemParent(parent) |
1764 parent_type = self.TypesTree.GetPyData(parent) |
1728 parent_type = self.TypesTree.GetPyData(parent) |
1765 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1729 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1766 self.PopupMenu(menu) |
1730 |
1767 elif name == "Resources": |
1731 elif name == "Resources": |
1768 menu = wx.Menu(title='') |
1732 menu = wx.Menu(title='') |
1769 new_id = wx.NewId() |
1733 new_id = wx.NewId() |
1770 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource")) |
1734 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource")) |
1771 parent = self.TypesTree.GetItemParent(item) |
1735 parent = self.TypesTree.GetItemParent(item) |
1772 parent_type = self.TypesTree.GetPyData(parent) |
1736 parent_type = self.TypesTree.GetPyData(parent) |
1773 while parent_type != ITEM_CONFIGURATION: |
1737 while parent_type != ITEM_CONFIGURATION: |
1774 parent = self.TypesTree.GetItemParent(parent) |
1738 parent = self.TypesTree.GetItemParent(parent) |
1775 parent_type = self.TypesTree.GetPyData(parent) |
1739 parent_type = self.TypesTree.GetPyData(parent) |
1776 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1740 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1777 self.PopupMenu(menu) |
1741 |
|
1742 else: |
|
1743 if type == ITEM_POU: |
|
1744 menu = wx.Menu(title='') |
|
1745 if self.Controler.GetPouBodyType(name) == "SFC": |
|
1746 new_id = wx.NewId() |
|
1747 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition")) |
|
1748 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id) |
|
1749 new_id = wx.NewId() |
|
1750 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action")) |
|
1751 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id) |
|
1752 menu.AppendSeparator() |
|
1753 |
|
1754 new_id = wx.NewId() |
|
1755 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU")) |
|
1756 self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id) |
|
1757 |
|
1758 pou_type = self.Controler.GetPouType(name) |
|
1759 if pou_type in ["function", "functionBlock"]: |
|
1760 change_menu = wx.Menu(title='') |
|
1761 if pou_type == "function": |
|
1762 new_id = wx.NewId() |
|
1763 AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block")) |
|
1764 self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id) |
|
1765 new_id = wx.NewId() |
|
1766 AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program")) |
|
1767 self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id) |
|
1768 menu.AppendMenu(wx.NewId(), _("Change POU Type To"), change_menu) |
|
1769 new_id = wx.NewId() |
|
1770 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename")) |
|
1771 self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id) |
|
1772 |
|
1773 elif type == ITEM_CONFIGURATION: |
|
1774 menu = wx.Menu(title='') |
|
1775 new_id = wx.NewId() |
|
1776 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource")) |
|
1777 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id) |
|
1778 |
|
1779 elif type in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]: |
|
1780 menu = wx.Menu(title='') |
|
1781 |
|
1782 if menu is not None: |
|
1783 new_id = wx.NewId() |
|
1784 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) |
|
1785 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id) |
|
1786 |
|
1787 if menu is not None: |
|
1788 self.PopupMenu(menu) |
|
1789 menu.Destroy() |
|
1790 |
1778 event.Skip() |
1791 event.Skip() |
1779 |
1792 |
1780 |
1793 |
1781 #------------------------------------------------------------------------------- |
1794 #------------------------------------------------------------------------------- |
1782 # Instances Tree Management Functions |
1795 # Instances Tree Management Functions |
2626 self.Bind(wx.EVT_MENU, self.OnPreviewMenu, id=wx.ID_PREVIEW) |
2637 self.Bind(wx.EVT_MENU, self.OnPreviewMenu, id=wx.ID_PREVIEW) |
2627 self.Bind(wx.EVT_MENU, self.OnPrintMenu, id=wx.ID_PRINT) |
2638 self.Bind(wx.EVT_MENU, self.OnPrintMenu, id=wx.ID_PRINT) |
2628 self.Bind(wx.EVT_MENU, self.OnPropertiesMenu, id=wx.ID_PROPERTIES) |
2639 self.Bind(wx.EVT_MENU, self.OnPropertiesMenu, id=wx.ID_PROPERTIES) |
2629 self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT) |
2640 self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT) |
2630 |
2641 |
2631 self.AddToMenuToolBar([(wx.ID_NEW, wx.ART_NEW, _(u'New'), None), |
2642 self.AddToMenuToolBar([(wx.ID_NEW, "new.png", _(u'New'), None), |
2632 (wx.ID_OPEN, wx.ART_FILE_OPEN, _(u'Open'), None), |
2643 (wx.ID_OPEN, "open.png", _(u'Open'), None), |
2633 (wx.ID_SAVE, wx.ART_FILE_SAVE, _(u'Save'), None), |
2644 (wx.ID_SAVE, "save.png", _(u'Save'), None), |
2634 (wx.ID_SAVEAS, wx.ART_FILE_SAVE_AS, _(u'Save As...'), None), |
2645 (wx.ID_SAVEAS, "saveas.png", _(u'Save As...'), None), |
2635 (wx.ID_PRINT, wx.ART_PRINT, _(u'Print'), None)]) |
2646 (wx.ID_PRINT, "print.png", _(u'Print'), None)]) |
2636 |
2647 |
2637 def _init_coll_HelpMenu_Items(self, parent): |
2648 def _init_coll_HelpMenu_Items(self, parent): |
2638 AppendMenu(parent, help='', id=wx.ID_HELP, |
2649 AppendMenu(parent, help='', id=wx.ID_HELP, |
2639 kind=wx.ITEM_NORMAL, text=_(u'PLCOpenEditor\tF1')) |
2650 kind=wx.ITEM_NORMAL, text=_(u'PLCOpenEditor\tF1')) |
2640 #AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS, |
2651 #AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS, |