350 def _init_coll_AddMenu_Items(self, parent): |
350 def _init_coll_AddMenu_Items(self, parent): |
351 IDEFrame._init_coll_AddMenu_Items(self, parent, False) |
351 IDEFrame._init_coll_AddMenu_Items(self, parent, False) |
352 new_id = wx.NewId() |
352 new_id = wx.NewId() |
353 AppendMenu(parent, help='', id=new_id, |
353 AppendMenu(parent, help='', id=new_id, |
354 kind=wx.ITEM_NORMAL, text=_(u'&Resource')) |
354 kind=wx.ITEM_NORMAL, text=_(u'&Resource')) |
|
355 self.Bind(wx.EVT_MENU, self.AddResourceMenu, id=new_id) |
355 for name, XSDClass, help in ProjectController.CTNChildrenTypes: |
356 for name, XSDClass, help in ProjectController.CTNChildrenTypes: |
356 new_id = wx.NewId() |
357 new_id = wx.NewId() |
357 AppendMenu(parent, help='', id=new_id, |
358 AppendMenu(parent, help='', id=new_id, |
358 kind=wx.ITEM_NORMAL, text=help) |
359 kind=wx.ITEM_NORMAL, text=help) |
359 self.Bind(wx.EVT_MENU, self._GetAddConfNodeFunction(name), id=new_id) |
360 self.Bind(wx.EVT_MENU, self.GetAddConfNodeFunction(name), id=new_id) |
360 |
361 |
361 def _init_coll_HelpMenu_Items(self, parent): |
362 def _init_coll_HelpMenu_Items(self, parent): |
362 parent.Append(help='', id=wx.ID_ABOUT, |
363 parent.Append(help='', id=wx.ID_ABOUT, |
363 kind=wx.ITEM_NORMAL, text=_(u'About')) |
364 kind=wx.ITEM_NORMAL, text=_(u'About')) |
364 self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT) |
365 self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT) |
730 self.MenuBar.UpdateMenus() |
731 self.MenuBar.UpdateMenus() |
731 |
732 |
732 def RefreshAll(self): |
733 def RefreshAll(self): |
733 self.RefreshStatusToolBar() |
734 self.RefreshStatusToolBar() |
734 |
735 |
735 def _GetAddConfNodeFunction(self, name, confnode=None): |
|
736 def OnConfNodeMenu(event): |
|
737 wx.CallAfter(self.AddConfNode, name, confnode) |
|
738 return OnConfNodeMenu |
|
739 |
|
740 def GetMenuCallBackFunction(self, method): |
736 def GetMenuCallBackFunction(self, method): |
741 """ Generate the callbackfunc for a given CTR method""" |
737 """ Generate the callbackfunc for a given CTR method""" |
742 def OnMenu(event): |
738 def OnMenu(event): |
743 # Disable button to prevent re-entrant call |
739 # Disable button to prevent re-entrant call |
744 event.GetEventObject().Disable() |
740 event.GetEventObject().Disable() |
906 confnode = item_infos["confnode"] |
902 confnode = item_infos["confnode"] |
907 if confnode is not None and len(confnode.CTNChildrenTypes) > 0: |
903 if confnode is not None and len(confnode.CTNChildrenTypes) > 0: |
908 for name, XSDClass, help in confnode.CTNChildrenTypes: |
904 for name, XSDClass, help in confnode.CTNChildrenTypes: |
909 new_id = wx.NewId() |
905 new_id = wx.NewId() |
910 confnode_menu.Append(help=help, id=new_id, kind=wx.ITEM_NORMAL, text=name) |
906 confnode_menu.Append(help=help, id=new_id, kind=wx.ITEM_NORMAL, text=name) |
911 self.Bind(wx.EVT_MENU, self._GetAddConfNodeFunction(name, confnode), id=new_id) |
907 self.Bind(wx.EVT_MENU, self.GetAddConfNodeFunction(name, confnode), id=new_id) |
912 |
908 |
913 new_id = wx.NewId() |
909 new_id = wx.NewId() |
914 AppendMenu(confnode_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) |
910 AppendMenu(confnode_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete")) |
915 self.Bind(wx.EVT_MENU, self.GetDeleteMenuFunction(confnode), id=new_id) |
911 self.Bind(wx.EVT_MENU, self.GetDeleteMenuFunction(confnode), id=new_id) |
916 |
912 |
949 elif words[0] == "R": |
945 elif words[0] == "R": |
950 return self.RecursiveProjectTreeItemSelection(root, [(words[2], ITEM_RESOURCE)]) |
946 return self.RecursiveProjectTreeItemSelection(root, [(words[2], ITEM_RESOURCE)]) |
951 else: |
947 else: |
952 IDEFrame.SelectProjectTreeItem(self, tagname) |
948 IDEFrame.SelectProjectTreeItem(self, tagname) |
953 |
949 |
|
950 def GetAddConfNodeFunction(self, name, confnode=None): |
|
951 def AddConfNodeMenuFunction(event): |
|
952 wx.CallAfter(self.AddConfNode, name, confnode) |
|
953 return AddConfNodeMenuFunction |
|
954 |
954 def GetDeleteMenuFunction(self, confnode): |
955 def GetDeleteMenuFunction(self, confnode): |
955 def DeleteMenuFunction(event): |
956 def DeleteMenuFunction(event): |
956 wx.CallAfter(self.DeleteConfNode, confnode) |
957 wx.CallAfter(self.DeleteConfNode, confnode) |
957 return DeleteMenuFunction |
958 return DeleteMenuFunction |
958 |
959 |
|
960 def AddResourceMenu(self, event): |
|
961 config_names = self.CTR.GetProjectConfigNames() |
|
962 if len(config_names) > 0: |
|
963 tagname = self.Controler.ProjectAddConfigurationResource(config_names[0]) |
|
964 if tagname is not None: |
|
965 self._Refresh(TITLE, FILEMENU, EDITMENU, PROJECTTREE, POUINSTANCEVARIABLESPANEL) |
|
966 self.EditProjectElement(ITEM_RESOURCE, tagname) |
|
967 |
959 def AddConfNode(self, ConfNodeType, confnode=None): |
968 def AddConfNode(self, ConfNodeType, confnode=None): |
960 if self.CTR.CheckProjectPathPerm(): |
969 if self.CTR.CheckProjectPathPerm(): |
961 dialog = wx.TextEntryDialog(self, _("Please enter a name for confnode:"), _("Add ConfNode"), "", wx.OK|wx.CANCEL) |
970 ConfNodeName = "%s-0" % ConfNodeType |
962 if dialog.ShowModal() == wx.ID_OK: |
971 if confnode is not None: |
963 ConfNodeName = dialog.GetValue() |
972 confnode.CTNAddChild(ConfNodeName, ConfNodeType) |
964 if confnode is not None: |
973 else: |
965 confnode.CTNAddChild(ConfNodeName, ConfNodeType) |
974 self.CTR.CTNAddChild(ConfNodeName, ConfNodeType) |
966 else: |
975 self._Refresh(TITLE, FILEMENU, PROJECTTREE) |
967 self.CTR.CTNAddChild(ConfNodeName, ConfNodeType) |
976 |
968 self._Refresh(TITLE, FILEMENU, PROJECTTREE) |
|
969 dialog.Destroy() |
|
970 |
|
971 def DeleteConfNode(self, confnode): |
977 def DeleteConfNode(self, confnode): |
972 if self.CTR.CheckProjectPathPerm(): |
978 if self.CTR.CheckProjectPathPerm(): |
973 dialog = wx.MessageDialog(self, _("Really delete confnode ?"), _("Remove confnode"), wx.YES_NO|wx.NO_DEFAULT) |
979 dialog = wx.MessageDialog(self, _("Really delete confnode ?"), _("Remove confnode"), wx.YES_NO|wx.NO_DEFAULT) |
974 if dialog.ShowModal() == wx.ID_YES: |
980 if dialog.ShowModal() == wx.ID_YES: |
975 confnode.CTNRemove() |
981 confnode.CTNRemove() |