diff --git a/gui/builtinContextMenus/changeAffectingSkills.py b/gui/builtinContextMenus/changeAffectingSkills.py index fecd77234..5111a8d27 100644 --- a/gui/builtinContextMenus/changeAffectingSkills.py +++ b/gui/builtinContextMenus/changeAffectingSkills.py @@ -60,7 +60,7 @@ class ChangeAffectingSkills(ContextMenu): else: label = "Level %s" % i - id = wx.NewId() + id = ContextMenu.nextID() self.skillIds[id] = (skill, i) menuItem = wx.MenuItem(rootMenu, id, label, kind=wx.ITEM_RADIO) rootMenu.Bind(wx.EVT_MENU, self.handleSkillChange, menuItem) @@ -72,7 +72,7 @@ class ChangeAffectingSkills(ContextMenu): sub = wx.Menu() for skill in self.skills: - skillItem = wx.MenuItem(sub, wx.NewId(), skill.item.name) + skillItem = wx.MenuItem(sub, ContextMenu.nextID(), skill.item.name) grandSub = wx.Menu() skillItem.SetSubMenu(grandSub) if skill.learned: diff --git a/gui/builtinContextMenus/damagePattern.py b/gui/builtinContextMenus/damagePattern.py index 3238b9b43..8d9b6be32 100644 --- a/gui/builtinContextMenus/damagePattern.py +++ b/gui/builtinContextMenus/damagePattern.py @@ -48,7 +48,7 @@ class DamagePattern(ContextMenu): return self.m def addPattern(self, rootMenu, pattern): - id = wx.NewId() + id = ContextMenu.nextID() name = getattr(pattern, "_name", pattern.name) if pattern is not None else "No Profile" self.patternIds[id] = pattern diff --git a/gui/builtinContextMenus/fighterAbilities.py b/gui/builtinContextMenus/fighterAbilities.py index 910703659..9a86c23b1 100644 --- a/gui/builtinContextMenus/fighterAbilities.py +++ b/gui/builtinContextMenus/fighterAbilities.py @@ -20,7 +20,7 @@ class FighterAbility(ContextMenu): def addAbility(self, menu, ability): label = ability.name - id = wx.NewId() + id = ContextMenu.nextID() self.abilityIds[id] = ability menuItem = wx.MenuItem(menu, id, label, kind=wx.ITEM_CHECK) menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) diff --git a/gui/builtinContextMenus/implantSets.py b/gui/builtinContextMenus/implantSets.py index 6ae43039b..8dcf6dd1f 100644 --- a/gui/builtinContextMenus/implantSets.py +++ b/gui/builtinContextMenus/implantSets.py @@ -42,7 +42,7 @@ class ImplantSets(ContextMenu): self.idmap = {} for set in implantSets: - id = wx.NewId() + id = ContextMenu.nextID() mitem = wx.MenuItem(rootMenu, id, set.name) bindmenu.Bind(wx.EVT_MENU, self.handleSelection, mitem) self.idmap[id] = set diff --git a/gui/builtinContextMenus/itemStats.py b/gui/builtinContextMenus/itemStats.py index 17746ac6f..2cffb28dd 100644 --- a/gui/builtinContextMenus/itemStats.py +++ b/gui/builtinContextMenus/itemStats.py @@ -6,8 +6,12 @@ import wx class ItemStats(ContextMenu): def __init__(self): + print 'init' self.mainFrame = gui.mainFrame.MainFrame.getInstance() + def __del__(self): + print 'delete item stats' + def display(self, srcContext, selection): return srcContext in ("marketItemGroup", "marketItemMisc", @@ -59,4 +63,4 @@ class ItemStats(ContextMenu): else: ItemStatsDialog(stuff, fullContext) -ItemStats.register(5) +ItemStats.register() diff --git a/gui/builtinContextMenus/metaSwap.py b/gui/builtinContextMenus/metaSwap.py index 35ae4b36f..5377b40dd 100644 --- a/gui/builtinContextMenus/metaSwap.py +++ b/gui/builtinContextMenus/metaSwap.py @@ -67,11 +67,11 @@ class MetaSwap(ContextMenu): if thisgroup != group: group = thisgroup - id = wx.NewId() + id = ContextMenu.nextID() m.Append(id, u'─ %s ─' % group) m.Enable(id, False) - id = wx.NewId() + id = ContextMenu.nextID() mitem = wx.MenuItem(rootMenu, id, item.name) bindmenu.Bind(wx.EVT_MENU, self.handleModule, mitem) self.moduleLookup[id] = item diff --git a/gui/builtinContextMenus/moduleAmmoPicker.py b/gui/builtinContextMenus/moduleAmmoPicker.py index 24250b7de..3e7ee02cd 100644 --- a/gui/builtinContextMenus/moduleAmmoPicker.py +++ b/gui/builtinContextMenus/moduleAmmoPicker.py @@ -98,7 +98,7 @@ class ModuleAmmoPicker(ContextMenu): return map(self.numericConverter, parts) def addCharge(self, menu, charge): - id = wx.NewId() + id = ContextMenu.nextID() name = charge.name if charge is not None else "Empty" self.chargeIds[id] = charge item = wx.MenuItem(menu, id, name) @@ -112,7 +112,7 @@ class ModuleAmmoPicker(ContextMenu): return item def addSeperator(self, m, text): - id = wx.NewId() + id = ContextMenu.nextID() m.Append(id, u'─ %s ─' % text) m.Enable(id, False) diff --git a/gui/builtinContextMenus/tacticalMode.py b/gui/builtinContextMenus/tacticalMode.py index 3469017a8..3b5cc5043 100644 --- a/gui/builtinContextMenus/tacticalMode.py +++ b/gui/builtinContextMenus/tacticalMode.py @@ -26,7 +26,7 @@ class TacticalMode(ContextMenu): def addMode(self, menu, mode): label = mode.item.name.rsplit()[-2] - id = wx.NewId() + id = ContextMenu.nextID() self.modeIds[id] = mode menuItem = wx.MenuItem(menu, id, label, kind=wx.ITEM_RADIO) menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) diff --git a/gui/builtinContextMenus/targetResists.py b/gui/builtinContextMenus/targetResists.py index 4aeb10ffd..c0f9bf00c 100644 --- a/gui/builtinContextMenus/targetResists.py +++ b/gui/builtinContextMenus/targetResists.py @@ -39,7 +39,7 @@ class TargetResists(ContextMenu): wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) def addPattern(self, rootMenu, pattern): - id = wx.NewId() + id = ContextMenu.nextID() name = getattr(pattern, "_name", pattern.name) if pattern is not None else "No Profile" self.patternIds[id] = pattern @@ -89,7 +89,7 @@ class TargetResists(ContextMenu): # Items that have a parent for menuName, patterns in self.subMenus.items(): # Create parent item for root menu that is simply name of parent - item = wx.MenuItem(rootMenu, wx.NewId(), menuName) + item = wx.MenuItem(rootMenu, ContextMenu.nextID(), menuName) # Create menu for child items grandSub = wx.Menu() diff --git a/gui/builtinContextMenus/whProjector.py b/gui/builtinContextMenus/whProjector.py index ac1bb66cb..ba0677e20 100644 --- a/gui/builtinContextMenus/whProjector.py +++ b/gui/builtinContextMenus/whProjector.py @@ -29,7 +29,7 @@ class WhProjector(ContextMenu): sub.AppendItem(subItem) for swData in sorted(effdata[swType], key=lambda tpl: tpl[2]): - wxid = wx.NewId() + wxid = ContextMenu.nextID() swObj, swName, swClass = swData self.idmap[wxid] = (swObj, swName) grandSubItem = wx.MenuItem(grandSub, wxid, swClass) diff --git a/gui/contextMenu.py b/gui/contextMenu.py index 14312aa6e..821043570 100644 --- a/gui/contextMenu.py +++ b/gui/contextMenu.py @@ -21,11 +21,13 @@ import wx class ContextMenu(object): menus = [] + ids = []#[wx.NewId() for x in xrange(200)] # init with decent amount + idxid = -1 @classmethod def register(cls, numIds=200): - cls.ids = [wx.NewId() for x in xrange(numIds)] - cls._ididx = -1 + #cls.ids = [wx.NewId() for x in xrange(numIds)] + #cls._ididx = -1 ContextMenu.menus.append(cls) @classmethod @@ -46,6 +48,8 @@ class ContextMenu(object): (('marketItemGroup', 'Implant'),) (('fittingShip', 'Ship'),) """ + cls.idxid = -1 + start = wx.NewId() rootMenu = wx.Menu() rootMenu.info = {} @@ -70,7 +74,7 @@ class ContextMenu(object): bitmap = m.getBitmap(srcContext, selection) multiple = not isinstance(bitmap, wx.Bitmap) for it, text in enumerate(texts): - id = m.nextID(m.__class__) + id = cls.nextID() rootItem = wx.MenuItem(rootMenu, id, text) rootMenu.info[id] = (m, fullContext, it) @@ -111,7 +115,7 @@ class ContextMenu(object): if amount > 0 and i != len(fullContexts) - 1: rootMenu.AppendSeparator() end = wx.NewId() - print end, end - start + print end - start - 1, " IDs created for this menu" return rootMenu if empty is False else None @classmethod @@ -137,12 +141,16 @@ class ContextMenu(object): def getSubMenu(self, context, selection, rootMenu, i, pitem): return None - def nextID(self, m): - print m._ididx - m._ididx += 1 - id = m.ids[m._ididx % len(m.ids)] - print id - return id + @classmethod + def nextID(cls): + cls.idxid += 1 + print "current id: ",cls.idxid + + if cls.idxid >= len(cls.ids): # We don't ahve an ID for this index, create one + print "Creating new id, idx: ", cls.idxid, "; current length: ", len(cls.ids) + cls.ids.append(wx.NewId()) + + return cls.ids[cls.idxid] def getText(self, context, selection): """