From bc3e7ec4119fb8e59ebe3ea6485802dc635bf29d Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Sat, 18 Sep 2010 16:11:40 +0200 Subject: [PATCH] Start an early implant implementation --- eos | 2 +- gui/builtinViewColumns/name.py | 12 +++++++++- gui/droneView.py | 1 + gui/implantView.py | 41 +++++++++++++++++++++++++++++++--- service/fit.py | 34 +++++++++++++++++++++++++++- 5 files changed, 84 insertions(+), 6 deletions(-) diff --git a/eos b/eos index 6974c56c9..598ecb4f2 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit 6974c56c9ae2a96cf0b3f722d1d56768aa39eb25 +Subproject commit 598ecb4f267124fafceb9096569bb7cb732d1e30 diff --git a/gui/builtinViewColumns/name.py b/gui/builtinViewColumns/name.py index 549cc461d..c1ce9ade1 100644 --- a/gui/builtinViewColumns/name.py +++ b/gui/builtinViewColumns/name.py @@ -32,6 +32,16 @@ class StuffName(ViewColumn): return stuff.item.name def getImageId(self, mod): - return -1 + iconFile = mod.item.icon.iconFile if mod.item.icon else "" + if iconFile: + bitmap = bitmapLoader.getBitmap(iconFile, "pack") + if bitmap is None: + iconId = -1 + else: + iconId = self.fittingView.imageList.Add(bitmap) + else: + iconId = -1 + + return iconId builtinViewColumns.registerColumn(StuffName) diff --git a/gui/droneView.py b/gui/droneView.py index f1bb32c69..1d56d2def 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -47,6 +47,7 @@ class DroneView(d.Display): stuff = fit.drones if fit is not None else None self.populate(stuff) self.refresh(stuff) + event.Skip() def addItem(self, event): cFit = service.Fit.getInstance() diff --git a/gui/implantView.py b/gui/implantView.py index 32455de69..c3de35dc6 100644 --- a/gui/implantView.py +++ b/gui/implantView.py @@ -18,8 +18,43 @@ #=============================================================================== import wx +import service +from gui.builtinViewColumns import display as d +import gui.fittingView as fv +import gui.marketBrowser as mb + +class ImplantView(d.Display): + DEFAULT_COLS = ["Name", + "attr:implantness"] -class ImplantView(wx.Panel): def __init__(self, parent): - wx.Panel.__init__(self, parent) - self.SetBackgroundColour('red') + 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.implants 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.addImplant(fitID, 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.removeImplant(fitID, self.GetItemData(row)) + wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID)) \ No newline at end of file diff --git a/service/fit.py b/service/fit.py index 0b8c3691c..be4321504 100644 --- a/service/fit.py +++ b/service/fit.py @@ -72,10 +72,42 @@ class Fit(object): eos.db.commit() return fit + def addImplant(self, fitID, itemID): + if fitID is None: + return False + + fit = eos.db.getFit(fitID) + item = eos.db.getItem(itemID, eager=("attributes", "group.category")) + try: + implant = eos.types.Implant(item) + except ValueError: + return False + + fit.implants.freeSlot(implant) + fit.implants.append(implant) + fit.clear() + fit.calculateModifiedAttributes() + return True + + def removeImplant(self, fitID, position): + if fitID is None: + return False + + fit = eos.db.getFit(fitID) + implant = fit.implants[position] + fit.implants.remove(implant) + 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")) - m = eos.types.Module(item) + try: + m = eos.types.Module(item) + except ValueError: + return False + if m.fits(fit): numSlots = len(fit.modules) fit.modules.append(m)