From 9be1b96226651a2e7557117648e6196a2e779877 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Thu, 8 Aug 2019 09:45:14 +0300 Subject: [PATCH] Add modules to recents when they are removed too --- gui/builtinMarketBrowser/itemView.py | 17 +---------------- gui/fitCommands/gui/booster/add.py | 2 ++ gui/fitCommands/gui/booster/remove.py | 3 +++ gui/fitCommands/gui/cargo/add.py | 2 ++ gui/fitCommands/gui/cargo/remove.py | 3 +++ gui/fitCommands/gui/implant/add.py | 2 ++ gui/fitCommands/gui/implant/remove.py | 3 +++ gui/fitCommands/gui/localDrone/add.py | 2 ++ gui/fitCommands/gui/localDrone/remove.py | 3 +++ gui/fitCommands/gui/localFighter/add.py | 2 ++ gui/fitCommands/gui/localFighter/remove.py | 3 +++ gui/fitCommands/gui/localModule/add.py | 2 ++ gui/fitCommands/gui/localModule/fillAdd.py | 2 ++ gui/fitCommands/gui/localModule/remove.py | 6 ++++++ gui/fitCommands/gui/localModule/replace.py | 2 ++ service/market.py | 12 ++++++++++++ 16 files changed, 50 insertions(+), 16 deletions(-) diff --git a/gui/builtinMarketBrowser/itemView.py b/gui/builtinMarketBrowser/itemView.py index 3ec18ec8b..c8ec7577c 100644 --- a/gui/builtinMarketBrowser/itemView.py +++ b/gui/builtinMarketBrowser/itemView.py @@ -27,7 +27,6 @@ class ItemView(Display): self.unfilteredStore = set() self.filteredStore = set() - self.recentlyUsedModules = [] self.sMkt = marketBrowser.sMkt self.sFit = Fit.getInstance() @@ -53,14 +52,6 @@ class ItemView(Display): self.metaMap = self.makeReverseMetaMap() self.active = [] - # Fill up recently used modules set - pyfalog.debug("Fill up recently used modules set") - for itemID in self.sMkt.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]: - item = self.sMkt.getItem(itemID) - if item is None: - self.sMkt.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"].remove(itemID) - self.recentlyUsedModules.append(item) - def delaySearch(self, evt): sFit = Fit.getInstance() self.searchTimer.Stop() @@ -87,12 +78,6 @@ class ItemView(Display): return if self.mainFrame.getActiveFit(): - - self.sMkt.storeRecentlyUsed(self.active[sel].ID) - self.recentlyUsedModules = [] - for itemID in self.sMkt.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]: - self.recentlyUsedModules.append(self.sMkt.getItem(itemID)) - wx.PostEvent(self.mainFrame, ItemSelected(itemID=self.active[sel].ID)) def treeSelectionChanged(self, event=None): @@ -119,7 +104,7 @@ class ItemView(Display): else: # If method was called but selection wasn't actually made or we have a hit on recently used modules if seldata == RECENTLY_USED_MODULES: - items = self.recentlyUsedModules + items = self.sMkt.getRecentlyUsed() else: items = set() diff --git a/gui/fitCommands/gui/booster/add.py b/gui/fitCommands/gui/booster/add.py index 7dad5862d..8f932ca01 100644 --- a/gui/fitCommands/gui/booster/add.py +++ b/gui/fitCommands/gui/booster/add.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.booster.add import CalcAddBoosterCommand from gui.fitCommands.helpers import BoosterInfo, InternalCommandHistory from service.fit import Fit +from service.market import Market class GuiAddBoosterCommand(wx.Command): @@ -19,6 +20,7 @@ class GuiAddBoosterCommand(wx.Command): def Do(self): cmd = CalcAddBoosterCommand(fitID=self.fitID, boosterInfo=BoosterInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) + Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) diff --git a/gui/fitCommands/gui/booster/remove.py b/gui/fitCommands/gui/booster/remove.py index 9138500bd..b1de9685c 100644 --- a/gui/fitCommands/gui/booster/remove.py +++ b/gui/fitCommands/gui/booster/remove.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.booster.remove import CalcRemoveBoosterCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit +from service.market import Market class GuiRemoveBoostersCommand(wx.Command): @@ -17,10 +18,12 @@ class GuiRemoveBoostersCommand(wx.Command): self.positions = positions def Do(self): + sMkt = Market.getInstance() results = [] for position in sorted(self.positions, reverse=True): cmd = CalcRemoveBoosterCommand(fitID=self.fitID, position=position) results.append(self.internalHistory.submit(cmd)) + sMkt.storeRecentlyUsed(cmd.savedBoosterInfo.itemID) success = any(results) eos.db.flush() sFit = Fit.getInstance() diff --git a/gui/fitCommands/gui/cargo/add.py b/gui/fitCommands/gui/cargo/add.py index d7788aab9..c03ac2bd0 100644 --- a/gui/fitCommands/gui/cargo/add.py +++ b/gui/fitCommands/gui/cargo/add.py @@ -5,6 +5,7 @@ import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.add import CalcAddCargoCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory +from service.market import Market class GuiAddCargoCommand(wx.Command): @@ -19,6 +20,7 @@ class GuiAddCargoCommand(wx.Command): def Do(self): cmd = CalcAddCargoCommand(fitID=self.fitID, cargoInfo=CargoInfo(itemID=self.itemID, amount=self.amount)) success = self.internalHistory.submit(cmd) + Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success diff --git a/gui/fitCommands/gui/cargo/remove.py b/gui/fitCommands/gui/cargo/remove.py index baa27bfdc..f7a346493 100644 --- a/gui/fitCommands/gui/cargo/remove.py +++ b/gui/fitCommands/gui/cargo/remove.py @@ -7,6 +7,7 @@ import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.remove import CalcRemoveCargoCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory +from service.market import Market class GuiRemoveCargosCommand(wx.Command): @@ -18,12 +19,14 @@ class GuiRemoveCargosCommand(wx.Command): self.itemIDs = itemIDs def Do(self): + sMkt = Market.getInstance() results = [] for itemID in self.itemIDs: cmd = CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=itemID, amount=math.inf)) results.append(self.internalHistory.submit(cmd)) + sMkt.storeRecentlyUsed(itemID) success = any(results) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) diff --git a/gui/fitCommands/gui/implant/add.py b/gui/fitCommands/gui/implant/add.py index 62be5b606..43f54b09b 100644 --- a/gui/fitCommands/gui/implant/add.py +++ b/gui/fitCommands/gui/implant/add.py @@ -8,6 +8,7 @@ from gui.fitCommands.calc.implant.add import CalcAddImplantCommand from gui.fitCommands.calc.implant.changeLocation import CalcChangeImplantLocationCommand from gui.fitCommands.helpers import ImplantInfo, InternalCommandHistory from service.fit import Fit +from service.market import Market class GuiAddImplantCommand(wx.Command): @@ -28,6 +29,7 @@ class GuiAddImplantCommand(wx.Command): successSource = False cmd = CalcAddImplantCommand(fitID=self.fitID, implantInfo=ImplantInfo(itemID=self.itemID)) successImplant = self.internalHistory.submit(cmd) + Market.getInstance().storeRecentlyUsed(self.itemID) # Acceptable behavior when we already have passed implant and just switch source, or # when we have source and add implant, but not if we do not change anything success = successSource or successImplant diff --git a/gui/fitCommands/gui/implant/remove.py b/gui/fitCommands/gui/implant/remove.py index 1f10e54e5..c49f0c26c 100644 --- a/gui/fitCommands/gui/implant/remove.py +++ b/gui/fitCommands/gui/implant/remove.py @@ -6,6 +6,7 @@ import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.helpers import InternalCommandHistory from gui.fitCommands.calc.implant.remove import CalcRemoveImplantCommand +from service.market import Market class GuiRemoveImplantsCommand(wx.Command): @@ -17,10 +18,12 @@ class GuiRemoveImplantsCommand(wx.Command): self.positions = positions def Do(self): + sMkt = Market.getInstance() results = [] for position in sorted(self.positions, reverse=True): cmd = CalcRemoveImplantCommand(fitID=self.fitID, position=position) results.append(self.internalHistory.submit(cmd)) + sMkt.storeRecentlyUsed(cmd.savedImplantInfo.itemID) success = any(results) eos.db.flush() sFit = Fit.getInstance() diff --git a/gui/fitCommands/gui/localDrone/add.py b/gui/fitCommands/gui/localDrone/add.py index 2f12b5ab3..1ebeae1d8 100644 --- a/gui/fitCommands/gui/localDrone/add.py +++ b/gui/fitCommands/gui/localDrone/add.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit +from service.market import Market class GuiAddLocalDroneCommand(wx.Command): @@ -20,6 +21,7 @@ class GuiAddLocalDroneCommand(wx.Command): def Do(self): cmd = CalcAddLocalDroneCommand(fitID=self.fitID, droneInfo=DroneInfo(itemID=self.itemID, amount=self.amount, amountActive=0)) success = self.internalHistory.submit(cmd) + Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) diff --git a/gui/fitCommands/gui/localDrone/remove.py b/gui/fitCommands/gui/localDrone/remove.py index f3a978c74..575409158 100644 --- a/gui/fitCommands/gui/localDrone/remove.py +++ b/gui/fitCommands/gui/localDrone/remove.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit +from service.market import Market class GuiRemoveLocalDronesCommand(wx.Command): @@ -18,6 +19,7 @@ class GuiRemoveLocalDronesCommand(wx.Command): self.amount = amount def Do(self): + sMkt = Market.getInstance() results = [] for position in sorted(self.positions, reverse=True): cmd = CalcRemoveLocalDroneCommand( @@ -25,6 +27,7 @@ class GuiRemoveLocalDronesCommand(wx.Command): position=position, amount=self.amount) results.append(self.internalHistory.submit(cmd)) + sMkt.storeRecentlyUsed(cmd.savedDroneInfo.itemID) success = any(results) eos.db.flush() sFit = Fit.getInstance() diff --git a/gui/fitCommands/gui/localFighter/add.py b/gui/fitCommands/gui/localFighter/add.py index fd4f9e192..ffd9fc5c8 100644 --- a/gui/fitCommands/gui/localFighter/add.py +++ b/gui/fitCommands/gui/localFighter/add.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.fighter.localAdd import CalcAddLocalFighterCommand from gui.fitCommands.helpers import FighterInfo, InternalCommandHistory from service.fit import Fit +from service.market import Market class GuiAddLocalFighterCommand(wx.Command): @@ -19,6 +20,7 @@ class GuiAddLocalFighterCommand(wx.Command): def Do(self): cmd = CalcAddLocalFighterCommand(fitID=self.fitID, fighterInfo=FighterInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) + Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) diff --git a/gui/fitCommands/gui/localFighter/remove.py b/gui/fitCommands/gui/localFighter/remove.py index 62ca784bc..e456455c0 100644 --- a/gui/fitCommands/gui/localFighter/remove.py +++ b/gui/fitCommands/gui/localFighter/remove.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.fighter.localRemove import CalcRemoveLocalFighterCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit +from service.market import Market class GuiRemoveLocalFightersCommand(wx.Command): @@ -17,10 +18,12 @@ class GuiRemoveLocalFightersCommand(wx.Command): self.positions = positions def Do(self): + sMkt = Market.getInstance() results = [] for position in sorted(self.positions, reverse=True): cmd = CalcRemoveLocalFighterCommand(fitID=self.fitID, position=position) results.append(self.internalHistory.submit(cmd)) + sMkt.storeRecentlyUsed(cmd.savedFighterInfo.itemID) success = any(results) eos.db.flush() sFit = Fit.getInstance() diff --git a/gui/fitCommands/gui/localModule/add.py b/gui/fitCommands/gui/localModule/add.py index a9d8b2970..85e6ebd83 100644 --- a/gui/fitCommands/gui/localModule/add.py +++ b/gui/fitCommands/gui/localModule/add.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.module.localAdd import CalcAddLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit +from service.market import Market class GuiAddLocalModuleCommand(wx.Command): @@ -20,6 +21,7 @@ class GuiAddLocalModuleCommand(wx.Command): def Do(self): cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=ModuleInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) + Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) diff --git a/gui/fitCommands/gui/localModule/fillAdd.py b/gui/fitCommands/gui/localModule/fillAdd.py index 9adc91c3c..32bd7f662 100644 --- a/gui/fitCommands/gui/localModule/fillAdd.py +++ b/gui/fitCommands/gui/localModule/fillAdd.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.module.localAdd import CalcAddLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit +from service.market import Market class GuiFillWithNewLocalModulesCommand(wx.Command): @@ -25,6 +26,7 @@ class GuiFillWithNewLocalModulesCommand(wx.Command): if not self.internalHistory.submit(cmd): break added_modules += 1 + Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) diff --git a/gui/fitCommands/gui/localModule/remove.py b/gui/fitCommands/gui/localModule/remove.py index c71dec15e..0146c6bdb 100644 --- a/gui/fitCommands/gui/localModule/remove.py +++ b/gui/fitCommands/gui/localModule/remove.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.module.localRemove import CalcRemoveLocalModulesCommand from gui.fitCommands.helpers import InternalCommandHistory, restoreRemovedDummies from service.fit import Fit +from service.market import Market class GuiRemoveLocalModuleCommand(wx.Command): @@ -19,11 +20,16 @@ class GuiRemoveLocalModuleCommand(wx.Command): self.savedRemovedDummies = None def Do(self): + sMkt = Market.getInstance() sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) self.savedTypeIDs = {m.itemID for m in fit.modules if not m.isEmpty} cmd = CalcRemoveLocalModulesCommand(fitID=self.fitID, positions=self.positions) success = self.internalHistory.submit(cmd) + for container in (cmd.savedSubInfos, cmd.savedModInfos): + for position in sorted(container, reverse=True): + modInfo = container[position] + sMkt.storeRecentlyUsed(modInfo.itemID) eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) diff --git a/gui/fitCommands/gui/localModule/replace.py b/gui/fitCommands/gui/localModule/replace.py index 4e4f9ea0a..56340d5ab 100644 --- a/gui/fitCommands/gui/localModule/replace.py +++ b/gui/fitCommands/gui/localModule/replace.py @@ -6,6 +6,7 @@ from gui import globalEvents as GE from gui.fitCommands.calc.module.localReplace import CalcReplaceLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit +from service.market import Market class GuiReplaceLocalModuleCommand(wx.Command): @@ -27,6 +28,7 @@ class GuiReplaceLocalModuleCommand(wx.Command): newModInfo=ModuleInfo(itemID=self.itemID)) results.append(self.internalHistory.submit(cmd)) success = any(results) + Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) diff --git a/service/market.py b/service/market.py index d29131d89..d2d1cbb6e 100644 --- a/service/market.py +++ b/service/market.py @@ -821,10 +821,22 @@ class Market: items.append(item) return items + def getRecentlyUsed(self): + recentlyUsedItems = [] + for itemID in self.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]: + item = self.getItem(itemID) + if item is None: + self.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"].remove(itemID) + recentlyUsedItems.append(item) + return recentlyUsedItems + def storeRecentlyUsed(self, itemID): recentlyUsedModules = self.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"] while itemID in recentlyUsedModules: recentlyUsedModules.remove(itemID) + item = self.getItem(itemID) + if item.isAbyssal: + return while len(recentlyUsedModules) >= 20: recentlyUsedModules.pop(-1) recentlyUsedModules.insert(0, itemID)