From be4b78ee1cb3afa4baed66850c16bb8346295038 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 12 Jun 2016 12:38:25 -0400 Subject: [PATCH] Module replacement when dropping market module onto fitting view (#528) --- gui/builtinViews/fittingView.py | 16 +++++++++++++++- service/fit.py | 2 -- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index d16c0f251..7db037082 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -186,7 +186,7 @@ class FittingView(d.Display): elif data[0] == "cargo": self.swapCargo(x, y, int(data[1])) elif data[0] == "market": - wx.PostEvent(self.mainFrame, gui.marketBrowser.ItemSelected(itemID=int(data[1]))) + self.addModule(x, y, int(data[1])) def handleDrag(self, type, fitID): #Those are drags coming from pyfa sources, NOT builtin wx drags @@ -343,6 +343,20 @@ class FittingView(d.Display): self.slotsChanged() wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.activeFitID)) + def addModule(self, x, y, srcIdx): + '''Add a module from the market browser''' + mstate = wx.GetMouseState() + + dstRow, _ = self.HitTest((x, y)) + if dstRow != -1 and dstRow not in self.blanks: + sFit = service.Fit.getInstance() + fitID = self.mainFrame.getActiveFit() + moduleChanged = sFit.changeModule(fitID, self.mods[dstRow].position, srcIdx) + if moduleChanged is None: + # the new module doesn't fit in specified slot, try to simply append it + wx.PostEvent(self.mainFrame, gui.marketBrowser.ItemSelected(itemID=srcIdx)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit())) + def swapCargo(self, x, y, srcIdx): '''Swap a module from cargo to fitting window''' mstate = wx.GetMouseState() diff --git a/service/fit.py b/service/fit.py index 71f8c873d..6b5a3672b 100644 --- a/service/fit.py +++ b/service/fit.py @@ -477,8 +477,6 @@ class Fit(object): def changeModule(self, fitID, position, newItemID): fit = eos.db.getFit(fitID) - if fit.modules[position].isEmpty: - return None # Dummy it out in case the next bit fails fit.modules.toDummy(position)