(self, callingWindow, context, rootMenu, i, pitem)
| 51 | return pos, item |
| 52 | |
| 53 | def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): |
| 54 | msw = "wxMSW" in wx.PlatformInfo |
| 55 | menu_lvl1 = wx.Menu() |
| 56 | |
| 57 | self.context = context |
| 58 | self.callingWindow = callingWindow |
| 59 | |
| 60 | self.eventSetMap = {} |
| 61 | |
| 62 | # Auto-generated sets |
| 63 | for setName in sorted(self.structedImplantSets): |
| 64 | setData = self.structedImplantSets[setName] |
| 65 | if len(setData) == 1: |
| 66 | for implantIDs in setData.values(): |
| 67 | menuitem_lvl1 = self._addSet(rootMenu, implantIDs, setName) |
| 68 | menu_lvl1.Append(menuitem_lvl1) |
| 69 | else: |
| 70 | menuitem_lvl1 = self._addCategory(rootMenu, setName) |
| 71 | menu_lvl2 = wx.Menu() |
| 72 | for gradeName in sorted(setData, key=self._gradeSorter): |
| 73 | implantIDs = setData[gradeName] |
| 74 | menuitem_lvl2 = self._addSet(rootMenu if msw else menu_lvl1, implantIDs, gradeName) |
| 75 | menu_lvl2.Append(menuitem_lvl2) |
| 76 | menu_lvl2.Bind(wx.EVT_MENU, self.handleSelection) |
| 77 | menuitem_lvl1.SetSubMenu(menu_lvl2) |
| 78 | menu_lvl1.Append(menuitem_lvl1) |
| 79 | |
| 80 | # Separator |
| 81 | if self.userImplantSets and self.structedImplantSets: |
| 82 | menu_lvl1.AppendSeparator() |
| 83 | |
| 84 | # Saved sets |
| 85 | if self.userImplantSets: |
| 86 | menuitem_lvl1 = self._addCategory(rootMenu, 'Saved Sets') |
| 87 | menu_lvl2 = wx.Menu() |
| 88 | for implantSet in sorted(self.userImplantSets, key=lambda i: i.name): |
| 89 | menuitem_lvl2 = self._addSet(rootMenu if msw else menu_lvl1, implantSet, implantSet.name) |
| 90 | menu_lvl2.Append(menuitem_lvl2) |
| 91 | menu_lvl2.Bind(wx.EVT_MENU, self.handleSelection) |
| 92 | menuitem_lvl1.SetSubMenu(menu_lvl2) |
| 93 | menu_lvl1.Append(menuitem_lvl1) |
| 94 | |
| 95 | menu_lvl1.Bind(wx.EVT_MENU, self.handleSelection) |
| 96 | return menu_lvl1 |
| 97 | |
| 98 | def handleSelection(self, event): |
| 99 | impSet = self.eventSetMap.get(event.Id, None) |
nothing calls this directly
no test coverage detected