From 90937484079b06e38d5fb8c62a765fd8a0ae1713 Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Sun, 15 Aug 2010 21:15:45 +0200 Subject: [PATCH] Populate the itemView with items when a marketGroup is selected. Note: We're using a treeview instead of a listView here, because it looks exactly like we want out of the box. --- controller/market.py | 15 +++++++++++++++ gui/marketBrowser.py | 24 +++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/controller/market.py b/controller/market.py index 16854074b..8d0b30926 100644 --- a/controller/market.py +++ b/controller/market.py @@ -29,6 +29,21 @@ class Market(): return cls.instance + 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. diff --git a/gui/marketBrowser.py b/gui/marketBrowser.py index 73c42fa83..caf8c4e1b 100644 --- a/gui/marketBrowser.py +++ b/gui/marketBrowser.py @@ -46,9 +46,12 @@ class MarketBrowser(wx.Panel): self.marketRoot = self.marketView.AddRoot("Market") self.itemRoot = self.itemView.AddRoot("Market") - self.marketImageList = wx.ImageList(24, 24) + self.marketImageList = wx.ImageList(16, 16) self.marketView.SetImageList(self.marketImageList) + self.itemImageList = wx.ImageList(16, 16) + self.itemView.SetImageList(self.itemImageList) + cMarket = controller.Market.getInstance() root = cMarket.getMarketRoot() @@ -60,6 +63,7 @@ class MarketBrowser(wx.Panel): #Bind our lookup method to when the tree gets expanded self.marketView.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup) + self.marketView.Bind(wx.EVT_TREE_SEL_CHANGED, self.selectionMade) def expandLookup(self, event): root = event.Item @@ -69,11 +73,25 @@ class MarketBrowser(wx.Panel): #A DUMMY! Keeeel!!! EBUL DUMMY MUST DIAF! self.marketView.Delete(child) - rootId = self.marketView.GetPyData(root) #Add 'real stoof!' instead - for id, name, iconFile, more in cMarket.getChildren(rootId): + for id, name, iconFile, more in cMarket.getChildren(self.marketView.GetPyData(root)): if iconFile: iconId = self.marketImageList.Add(bitmapLoader.getBitmap(iconFile, "pack")) else: iconId = -1 childId = self.marketView.AppendItem(root, name, iconId, data=wx.TreeItemData(id)) if more: self.marketView.AppendItem(childId, "dummy") + + def selectionMade(self, event): + self.itemView.DeleteChildren(self.itemRoot) + self.itemImageList.RemoveAll() + + root = event.Item + if self.marketView.GetChildrenCount(root) != 0: + return + + + cMarket = controller.Market.getInstance() + for id, name, iconFile in cMarket.getItems(self.marketView.GetPyData(root)): + if iconFile: iconId = self.itemImageList.Add(bitmapLoader.getBitmap(iconFile, "pack")) + else: iconId = -1 + self.itemView.AppendItem(self.itemRoot, name, iconId, data=wx.TreeItemData(id))