From b06ce24d4ad3e9b54b04b0707ccd3580fa1be6a2 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sat, 18 Jul 2015 15:20:15 -0400 Subject: [PATCH] Fix attribute view items (two of the same item would merge into one, even if they had different modifiers. now simply list them individually) --- gui/itemStats.py | 49 +++++++++++++++++------------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/gui/itemStats.py b/gui/itemStats.py index 4701cbe90..408adb96d 100644 --- a/gui/itemStats.py +++ b/gui/itemStats.py @@ -660,23 +660,24 @@ class ItemAffectedBy (wx.Panel): self.buildModuleView(root) self.ExpandCollapseTree() - def sortAttrDisplayName(self, attr): - info = self.stuff.item.attributes.get(attr) - if info and info.displayName != "": - return info.displayName - return attr + def sortAttrDisplayName(self, attr): + info = self.stuff.item.attributes.get(attr) + if info and info.displayName != "": + return info.displayName + + return attr + def buildAttributeView(self, root): # We first build a usable dictionary of items. The key is either a fit # if the afflictions stem from a projected fit, or self.stuff if they # are local afflictions (everything else, even gang boosts at this time) # The value of this is yet another dictionary in the following format: # - # "atribute name": { + # "attribute name": { # "Module Name": [ # class of affliction, - # set of afflictors (such as 2 of the same module), - # info on affliction (attribute name, modifier, and modification amount), + # afflictor info (afflictor, modifier, and modification amount), # whether this affliction is actually used (unlearned skills are not used) # ] # } @@ -707,19 +708,9 @@ class ItemAffectedBy (wx.Panel): # items hold our module: info mappings if attrName not in items: - items[attrName] = {} + items[attrName] = [] - if afflictor.item.name not in items[attrName]: - items[attrName][afflictor.item.name] = [type(afflictor), set(), [], getattr(afflictor, "projected", False)] - - info = items[attrName][afflictor.item.name] - info[1].add(afflictor) - # If info[1] > 1, there are two separate modules working. - # Check to make sure we only include the modifier once - # See GH issue 154 - if len(info[1]) > 1 and (attrName, modifier, amount) in info[2]: - continue - info[2].append((attrName, modifier, amount)) + items[attrName].append((type(afflictor), afflictor, modifier, amount, getattr(afflictor, "projected", False))) # Make sure projected fits are on top rootOrder = container.keys() @@ -754,7 +745,6 @@ class ItemAffectedBy (wx.Panel): else: attrIcon = self.imageList.Add(bitmapLoader.getBitmap("07_15", "pack")) - if self.showRealNames: display = attrName saved = displayName @@ -768,24 +758,19 @@ class ItemAffectedBy (wx.Panel): self.treeItems.append(child) items = attributes[attrName] - for itemName, info in items.iteritems(): - afflictorType, afflictors, attrData, projected = info - attrName, attrModifier, attrAmount = attrData[0] - counter = len(afflictors) - baseAfflictor = afflictors.pop() + items.sort(key=lambda x: self.ORDER.index(x[0])) + for itemInfo in items: + afflictorType, afflictor, attrModifier, attrAmount, projected = itemInfo if afflictorType == Ship: itemIcon = self.imageList.Add(bitmapLoader.getBitmap("ship_small", "icons")) - elif baseAfflictor.item.icon: - bitmap = bitmapLoader.getBitmap(baseAfflictor.item.icon.iconFile, "pack") + elif afflictor.item.icon: + bitmap = bitmapLoader.getBitmap(afflictor.item.icon.iconFile, "pack") itemIcon = self.imageList.Add(bitmap) if bitmap else -1 else: itemIcon = -1 - displayStr = itemName - - if counter > 1: - displayStr += " x {}".format(counter) + displayStr = afflictor.item.name if projected: displayStr += " (projected)"