Merge branch 'SortableCompare' of https://github.com/Ebag333/Pyfa into Ebag333-SortableCompare

This commit is contained in:
blitzman
2016-12-01 00:07:44 -05:00

View File

@@ -599,6 +599,13 @@ class ItemCompare(wx.Panel):
self.PopulateList()
self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleViewMode)
self.Bind(wx.EVT_LIST_COL_CLICK, self.SortCompareCols)
def SortCompareCols(self,event):
self.Freeze()
self.paramList.ClearAll()
self.PopulateList(event.Column)
self.Thaw()
def UpdateList(self):
self.Freeze()
@@ -620,7 +627,35 @@ class ItemCompare(wx.Panel):
for i, price in enumerate(prices):
self.paramList.SetStringItem(i, len(self.attrs)+1, formatAmount(price.price, 3, 3, 9, currency=True))
def PopulateList(self):
def PopulateList(self, sort=None):
if sort is not None:
if isinstance(sort, basestring):
# A string was passed in, see if we can sort by that attribute name
try:
sort = str(self.attrs.keys()[sort])
except IndexError:
# attribute must not exist
sort = None
elif isinstance(sort, int) and sort == 0:
try:
# Column 0 is the name. We can't sort by name (it's not an attribute),
# BUT we CAN default back to the metaLevel sorting
sort = 'metaLevel'
except IndexError:
# Clicked on a column that's not part of our array (price most likely)
sort = None
elif isinstance(sort, int):
try:
# Remember to reduce by 1, because the attrs array
# starts at 0 while the list has the item name as column 0.
sort = str(self.attrs.keys()[sort - 1])
except IndexError:
# Clicked on a column that's not part of our array (price most likely)
sort = None
self.items = sorted(self.items,key=lambda x: x.attributes[sort].value if sort in x.attributes else None)
self.paramList.InsertColumn(0, "Item")
self.paramList.SetColumnWidth(0, 200)