|
2 | 2 | from logbook import Logger |
3 | 3 |
|
4 | 4 | import gui.builtinMarketBrowser.pfSearchBox as SBox |
| 5 | +import gui.globalEvents as GE |
5 | 6 | from config import slotColourMap, slotColourMapDark |
6 | 7 | from eos.saveddata.module import Module |
7 | 8 | from gui.builtinMarketBrowser.events import ItemSelected, RECENTLY_USED_MODULES, CHARGES_FOR_FIT |
@@ -52,6 +53,8 @@ def __init__(self, parent, marketBrowser): |
52 | 53 | self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.itemActivated) |
53 | 54 | self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) |
54 | 55 |
|
| 56 | + self.mainFrame.Bind(GE.FIT_CHANGED, self.selectedFittingChanged) |
| 57 | + |
55 | 58 | self.active = [] |
56 | 59 |
|
57 | 60 | def delaySearch(self, evt): |
@@ -95,15 +98,7 @@ def selectionMade(self, context): |
95 | 98 | if seldata == RECENTLY_USED_MODULES: |
96 | 99 | items = self.sMkt.getRecentlyUsed() |
97 | 100 | elif seldata == CHARGES_FOR_FIT: |
98 | | - fitId = self.mainFrame.getActiveFit() |
99 | | - items = set() |
100 | | - if fitId is not None: |
101 | | - fit = self.sFit.getFit(fitId) |
102 | | - items = set() |
103 | | - for mod in fit.modules: |
104 | | - charges = Ammo.getInstance().getModuleFlatAmmo(mod) |
105 | | - for charge in charges: |
106 | | - items.add(charge) |
| 101 | + items = self.getChargesForActiveFit() |
107 | 102 | elif seldata is not None: |
108 | 103 | # If market group treeview item doesn't have children (other market groups or dummies), |
109 | 104 | # then it should have items in it and we want to request them |
@@ -132,6 +127,32 @@ def selectionMade(self, context): |
132 | 127 | btn.setUserSelection(True) |
133 | 128 | self.filterItemStore() |
134 | 129 |
|
| 130 | + def getChargesForActiveFit(self): |
| 131 | + fitId = self.mainFrame.getActiveFit() |
| 132 | + |
| 133 | + # no active fit => no charges |
| 134 | + if fitId is None: |
| 135 | + return set() |
| 136 | + |
| 137 | + sAmmo = Ammo.getInstance() |
| 138 | + fit = self.sFit.getFit(fitId) |
| 139 | + items = set() |
| 140 | + for mod in fit.modules: |
| 141 | + charges = sAmmo.getModuleFlatAmmo(mod) |
| 142 | + for charge in charges: |
| 143 | + items.add(charge) |
| 144 | + return items |
| 145 | + |
| 146 | + def selectedFittingChanged(self, event): |
| 147 | + event.Skip() |
| 148 | + activeFitID = self.mainFrame.getActiveFit() |
| 149 | + if activeFitID is not None and activeFitID not in event.fitIDs: |
| 150 | + return |
| 151 | + |
| 152 | + items = self.getChargesForActiveFit() |
| 153 | + self.updateItemStore(items) |
| 154 | + self.filterItemStore() |
| 155 | + |
135 | 156 | def updateItemStore(self, items): |
136 | 157 | self.unfilteredStore = items |
137 | 158 |
|
|
0 commit comments