diff --git a/eos b/eos index 99f082f82..26d81a6e0 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit 99f082f82bfc18900839db09772c6c8301ab4d13 +Subproject commit 26d81a6e0f7f2dc7de4d85c950a47a68a1383f52 diff --git a/gui/boosterView.py b/gui/boosterView.py index 964c5f5e3..c19542d7c 100644 --- a/gui/boosterView.py +++ b/gui/boosterView.py @@ -18,8 +18,44 @@ #=============================================================================== import wx +import service +from gui.builtinViewColumns import display as d +import gui.fittingView as fv +import gui.marketBrowser as mb + +class BoosterView(d.Display): + DEFAULT_COLS = ["Name", + "attr:boosterness"] -class BoosterView(wx.Panel): def __init__(self, parent): - wx.Panel.__init__(self, parent) - self.SetBackgroundColour('blue') + d.Display.__init__(self, parent) + self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) + self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) + + def fitChanged(self, event): + cFit = service.Fit.getInstance() + fit = cFit.getFit(event.fitID) + + stuff = fit.boosters if fit is not None else None + self.populate(stuff) + self.refresh(stuff) + event.Skip() + + def addItem(self, event): + cFit = service.Fit.getInstance() + fitID = self.mainFrame.getActiveFit() + trigger = cFit.addBooster(fitID, event.itemID) + print event.itemID + if trigger: + wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID)) + + event.Skip() + + def removeItem(self, event): + row, _ = self.HitTest(event.Position) + if row != -1: + fitID = self.mainFrame.getActiveFit() + cFit = service.Fit.getInstance() + cFit.removeBooster(fitID, self.GetItemData(row)) + wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID)) diff --git a/service/fit.py b/service/fit.py index be4321504..2fd32ae0d 100644 --- a/service/fit.py +++ b/service/fit.py @@ -100,6 +100,35 @@ class Fit(object): fit.calculateModifiedAttributes() return True + def addBooster(self, fitID, itemID): + if fitID is None: + return False + + fit = eos.db.getFit(fitID) + item = eos.db.getItem(itemID, eager=("attributes", "group.category")) + try: + booster = eos.types.Booster(item) + except ValueError: + return False + + fit.boosters.freeSlot(booster) + fit.boosters.append(booster) + fit.clear() + fit.calculateModifiedAttributes() + return True + + def removeBooster(self, fitID, position): + if fitID is None: + return False + + fit = eos.db.getFit(fitID) + booster = fit.boosters[position] + fit.implants.remove(booster) + fit.clear() + fit.calculateModifiedAttributes() + return True + + def appendModule(self, fitID, itemID): fit = eos.db.getFit(fitID) item = eos.db.getItem(itemID, eager=("attributes", "group.category")) @@ -191,4 +220,4 @@ class Fit(object): fit = eos.db.getFit(fitID) fit.character = eos.db.getCharacter(charID) fit.clear() - fit.calculateModifiedAttributes() \ No newline at end of file + fit.calculateModifiedAttributes()