Finalize the metaToggles.

This commit is contained in:
cncfanatics
2010-08-23 18:39:22 +02:00
parent 8e4e75bf87
commit 513305ced8
2 changed files with 39 additions and 22 deletions

View File

@@ -38,21 +38,6 @@ class Market():
def __init__(self):
self.activeMetas = set()
def getItems(self, id):
"""
Get the items contained in the marketGroup with the passed id.
Returns a list, where each element is a tuple container:
the id, the name, the icon
"""
items = []
group = eos.db.getMarketGroup(id)
for item in group.items:
icon = item.icon.iconFile if item.icon else ""
items.append((item.ID, item.name, icon))
return items
def getChildren(self, id):
"""
Get the children of the group or marketGroup with the passed id.
@@ -124,10 +109,26 @@ class Market():
return root
def activateMetaGroup(self, name):
self.activeMetas.add(name)
for meta in self.META_MAP[name]:
self.activeMetas.add(meta)
def disableMetaGroup(self, name):
self.activeMetas.remove(name)
for meta in self.META_MAP[name]:
if meta in self.activeMetas:
self.activeMetas.remove(meta)
def getVariations(self, item):
pass
def getVariations(self, marketGroupId):
if len(self.activeMetas) == 0:
return tuple()
mg = eos.db.getMarketGroup(marketGroupId)
l = []
for item in mg.items:
if item.metaGroup is None and 1 in self.activeMetas:
l.append((item.ID, item.name, item.icon.iconFile if item.icon else ""))
vars = eos.db.getVariations(item, metaGroups = tuple(self.activeMetas), eager="icon")
for var in vars:
l.append((var.ID, var.name, var.icon.iconFile if var.icon else ""))
return l

View File

@@ -97,8 +97,10 @@ class MarketBrowser(wx.Panel):
setattr(self, name, btn)
box.Add(btn, 1, wx.ALIGN_CENTER)
btn.Bind(wx.EVT_TOGGLEBUTTON, self.toggleMetagroup)
btn.metaName = name
self.normal.SetValue(True)
cMarket.activateMetaGroup("normal")
p.SetMinSize((wx.SIZE_AUTO_WIDTH, btn.GetSize()[1] + 5))
def addMarketViewImage(self, iconFile):
@@ -141,14 +143,14 @@ class MarketBrowser(wx.Panel):
self.itemView.DeleteAllItems()
self.itemImageList.RemoveAll()
root = event.Item
root = self.marketView.GetSelection()
if self.marketView.GetChildrenCount(root) != 0:
return
cMarket = controller.Market.getInstance()
idNameMap = {}
for id, name, iconFile in cMarket.getItems(self.marketView.GetPyData(root)):
for id, name, iconFile in cMarket.getVariations(self.marketView.GetPyData(root)):
iconId = self.addItemViewImage(iconFile)
index = self.itemView.InsertImageStringItem(sys.maxint, name, iconId)
idNameMap[id] = name
@@ -159,9 +161,23 @@ class MarketBrowser(wx.Panel):
def toggleMetagroup(self, event):
ctrl = wx.GetMouseState().ControlDown()
cMarket = controller.Market.getInstance()
btn = event.EventObject
if not ctrl:
for name in ("normal", "faction", "complex", "officer"):
getattr(self, name).SetValue(False)
cMarket.disableMetaGroup(name)
event.EventObject.SetValue(True)
btn.SetValue(True)
cMarket.activateMetaGroup(btn.metaName)
else:
# Note: using the old value might seem weird,
# But the button hasn't been toggled by wx yet
target = btn.GetValue()
btn.SetValue(target)
if target:
cMarket.activateMetaGroup(btn.metaName)
else:
cMarket.disableMetaGroup(btn.metaName)
self.selectionMade(event)