BeremizIDE.py
branchwx.NewID_abuse_fix
changeset 2569 4f4d778c9376
parent 2566 66a3c64c8dd0
child 2571 d968d586ad16
equal deleted inserted replaced
2567:eb9392511989 2569:4f4d778c9376
   274                                (wx.ID_SAVE, "save", _(u'Save'), None),
   274                                (wx.ID_SAVE, "save", _(u'Save'), None),
   275                                (wx.ID_SAVEAS, "saveas", _(u'Save As...'), None),
   275                                (wx.ID_SAVEAS, "saveas", _(u'Save As...'), None),
   276                                (wx.ID_PRINT, "print", _(u'Print'), None)])
   276                                (wx.ID_PRINT, "print", _(u'Print'), None)])
   277 
   277 
   278     def _RecursiveAddMenuItems(self, menu, items):
   278     def _RecursiveAddMenuItems(self, menu, items):
   279         for name, text, help, children in items:
   279         for name, text, helpstr, children in items:
   280             new_id = wx.NewId()
       
   281             if len(children) > 0:
   280             if len(children) > 0:
   282                 new_menu = wx.Menu(title='')
   281                 new_menu = wx.Menu(title='')
   283                 menu.AppendMenu(new_id, text, new_menu)
   282                 menu.AppendMenu(wx.ID_ANY, text, new_menu)
   284                 self._RecursiveAddMenuItems(new_menu, children)
   283                 self._RecursiveAddMenuItems(new_menu, children)
   285             else:
   284             else:
   286                 AppendMenu(menu, help=help, id=new_id,
   285                 item = menu.Append(wx.ID_ANY, text, helpstr)
   287                            kind=wx.ITEM_NORMAL, text=text)
   286                 self.Bind(wx.EVT_MENU, self.GetAddConfNodeFunction(name), item)
   288                 self.Bind(wx.EVT_MENU, self.GetAddConfNodeFunction(name),
       
   289                           id=new_id)
       
   290 
   287 
   291     def _init_coll_AddMenu_Items(self, parent):
   288     def _init_coll_AddMenu_Items(self, parent):
   292         IDEFrame._init_coll_AddMenu_Items(self, parent, False)
   289         IDEFrame._init_coll_AddMenu_Items(self, parent, False)
   293         self._RecursiveAddMenuItems(parent, GetAddMenuItems())
   290         self._RecursiveAddMenuItems(parent, GetAddMenuItems())
   294 
   291 
   297             return wx.MessageBox(
   294             return wx.MessageBox(
   298                 version.GetCommunityHelpMsg(),
   295                 version.GetCommunityHelpMsg(),
   299                 _(u'Community support'),
   296                 _(u'Community support'),
   300                 wx.OK | wx.ICON_INFORMATION)
   297                 wx.OK | wx.ICON_INFORMATION)
   301 
   298 
   302         id = wx.NewId()
   299         item = parent.Append(wx.ID_ANY, _(u'Community support'), '')
   303         parent.Append(help='', id=id, kind=wx.ITEM_NORMAL, text=_(u'Community support'))
   300         self.Bind(wx.EVT_MENU, handler, item)
   304         self.Bind(wx.EVT_MENU, handler, id=id)
       
   305 
   301 
   306         parent.Append(help='', id=wx.ID_ABOUT,
   302         parent.Append(help='', id=wx.ID_ABOUT,
   307                       kind=wx.ITEM_NORMAL, text=_(u'About'))
   303                       kind=wx.ITEM_NORMAL, text=_(u'About'))
   308         self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT)
   304         self.Bind(wx.EVT_MENU, self.OnAboutMenu, id=wx.ID_ABOUT)
   309 
   305 
   694         for idx, projectpath in enumerate(recent_projects):
   690         for idx, projectpath in enumerate(recent_projects):
   695             text = u'&%d: %s' % (idx + 1, projectpath)
   691             text = u'&%d: %s' % (idx + 1, projectpath)
   696 
   692 
   697             if idx < self.RecentProjectsMenu.GetMenuItemCount():
   693             if idx < self.RecentProjectsMenu.GetMenuItemCount():
   698                 item = self.RecentProjectsMenu.FindItemByPosition(idx)
   694                 item = self.RecentProjectsMenu.FindItemByPosition(idx)
   699                 id = item.GetId()
       
   700                 item.SetItemLabel(text)
   695                 item.SetItemLabel(text)
   701                 self.Disconnect(id, id, wx.EVT_BUTTON._getEvtType())
   696                 self.Disconnect(id, id, wx.EVT_BUTTON._getEvtType())
   702             else:
   697             else:
   703                 id = wx.NewId()
   698                 item = self.RecentProjectsMenu.Append(wx.ID_ANY, text, '')
   704                 AppendMenu(self.RecentProjectsMenu, help='', id=id,
   699             self.Bind(wx.EVT_MENU, self.GenerateOpenRecentProjectFunction(projectpath), item)
   705                            kind=wx.ITEM_NORMAL, text=text)
       
   706             self.Bind(wx.EVT_MENU, self.GenerateOpenRecentProjectFunction(projectpath), id=id)
       
   707 
   700 
   708     def GenerateOpenRecentProjectFunction(self, projectpath):
   701     def GenerateOpenRecentProjectFunction(self, projectpath):
   709         def OpenRecentProject(event):
   702         def OpenRecentProject(event):
   710             if self.CTR is not None and not self.CheckSaveBeforeClosing():
   703             if self.CTR is not None and not self.CheckSaveBeforeClosing():
   711                 return
   704                 return
   981 
   974 
   982             confnode = item_infos["confnode"]
   975             confnode = item_infos["confnode"]
   983             if confnode is not None:
   976             if confnode is not None:
   984                 menu_items = confnode.GetContextualMenuItems()
   977                 menu_items = confnode.GetContextualMenuItems()
   985                 if menu_items is not None:
   978                 if menu_items is not None:
   986                     for text, help, callback in menu_items:
   979                     for text, helpstr, callback in menu_items:
   987                         new_id = wx.NewId()
   980                         item = confnode_menu.Append(wx.ID_ANY, text, helpstr)
   988                         confnode_menu.Append(help=help, id=new_id, kind=wx.ITEM_NORMAL, text=text)
   981                         self.Bind(wx.EVT_MENU, callback, item)
   989                         self.Bind(wx.EVT_MENU, callback, id=new_id)
       
   990                 else:
   982                 else:
   991                     for name, XSDClass, help in confnode.CTNChildrenTypes:
   983                     for name, XSDClass, helpstr in confnode.CTNChildrenTypes:
   992                         if not hasattr(XSDClass, 'CTNMaxCount') or not confnode.Children.get(name) \
   984                         if not hasattr(XSDClass, 'CTNMaxCount') or not confnode.Children.get(name) \
   993                                 or len(confnode.Children[name]) < XSDClass.CTNMaxCount:
   985                                 or len(confnode.Children[name]) < XSDClass.CTNMaxCount:
   994                             new_id = wx.NewId()
   986                             item = confnode_menu.Append(wx.ID_ANY, _("Add") + " " + name, helpstr)
   995                             confnode_menu.Append(help=help, id=new_id, kind=wx.ITEM_NORMAL, text=_("Add") + " " + name)
   987                             self.Bind(wx.EVT_MENU, self.GetAddConfNodeFunction(name, confnode), item)
   996                             self.Bind(wx.EVT_MENU, self.GetAddConfNodeFunction(name, confnode), id=new_id)
   988             item = confnode_menu.Append(wx.ID_ANY, _("Delete"))
   997             new_id = wx.NewId()
   989             self.Bind(wx.EVT_MENU, self.GetDeleteMenuFunction(confnode), item)
   998             AppendMenu(confnode_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
       
   999             self.Bind(wx.EVT_MENU, self.GetDeleteMenuFunction(confnode), id=new_id)
       
  1000 
   990 
  1001             self.PopupMenu(confnode_menu)
   991             self.PopupMenu(confnode_menu)
  1002             confnode_menu.Destroy()
   992             confnode_menu.Destroy()
  1003 
   993 
  1004             event.Skip()
   994             event.Skip()