Add modules to recents when they are removed too

This commit is contained in:
DarkPhoenix
2019-08-08 09:45:14 +03:00
parent 11598f9a09
commit 9be1b96226
16 changed files with 50 additions and 16 deletions

View File

@@ -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()

View File

@@ -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)

View File

@@ -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()

View File

@@ -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

View File

@@ -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,)))

View File

@@ -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

View File

@@ -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()

View File

@@ -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)

View File

@@ -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()

View File

@@ -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)

View File

@@ -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()

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)