Move ID pool to context menu class rather than individual menu items

This commit is contained in:
blitzmann
2016-05-15 12:18:56 -04:00
parent 5176cc3b06
commit d061a13b58
11 changed files with 36 additions and 24 deletions

View File

@@ -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:

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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()

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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()

View File

@@ -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)

View File

@@ -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):
"""