From a31ea5f712b081653579a50ad280747d80d83a11 Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Sun, 5 Sep 2010 15:04:05 +0200 Subject: [PATCH] Add a checkbox for drones instead of + & -, group drones by 5 by default (will be able to be changed via rightclick, later) --- controller/fit.py | 45 ++++++++++--------- eos | 2 +- gui/builtinViewColumns/__init__.py | 2 +- .../{checkbox.py => droneCheckbox.py} | 12 +++-- gui/builtinViewColumns/droneNameAmount.py | 2 +- gui/droneView.py | 14 +++--- 6 files changed, 40 insertions(+), 37 deletions(-) rename gui/builtinViewColumns/{checkbox.py => droneCheckbox.py} (90%) diff --git a/controller/fit.py b/controller/fit.py index b1363c590..d63b5966a 100644 --- a/controller/fit.py +++ b/controller/fit.py @@ -106,38 +106,41 @@ class Fit(object): fit = eos.db.getFit(fitID) item = eos.db.getItem(itemID, eager=("attributes", "group.category")) if item.category.name == "Drone": - fit.drones.appendItem(item) + d = fit.drones.find(item) + if d is None or d.amountActive == d.amount or d.amount >= 5: + d = eos.types.Drone(item) + fit.drones.append(d) + d.amount += 1 + eos.db.saveddata_session.flush() fit.clear() fit.calculateModifiedAttributes() + return fit def removeDrone(self, fitID, i): - fit = eos.db.getFit(fitID) - fit.drones.removeItem(fit.drones[i].item, 1) - - eos.db.saveddata_session.flush() - fit.clear() - fit.calculateModifiedAttributes() - return fit - - def activateDrone(self, fitID, i): - fit = eos.db.getFit(fitID) - d = fit.drones[i] - if d.amountActive < d.amount: - d.amountActive += 1 - - eos.db.saveddata_session.flush() - fit.clear() - fit.calculateModifiedAttributes() - return fit - - def deactivateDrone(self, fitID, i): fit = eos.db.getFit(fitID) d = fit.drones[i] + d.amount -= 1 if d.amountActive > 0: d.amountActive -= 1 + if d.amount == 0: + del fit.drones[i] + + eos.db.saveddata_session.flush() + fit.clear() + fit.calculateModifiedAttributes() + return fit + + def toggleDrone(self, fitID, i): + fit = eos.db.getFit(fitID) + d = fit.drones[i] + if d.amount == d.amountActive: + d.amountActive = 0 + else: + d.amountActive = d.amount + eos.db.saveddata_session.flush() fit.clear() fit.calculateModifiedAttributes() diff --git a/eos b/eos index a87155ebf..7cea84e99 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit a87155ebf8aaf845c7419860940d9f1e7a121b00 +Subproject commit 7cea84e99b70c08ef61c95d3f6492ec11642bf52 diff --git a/gui/builtinViewColumns/__init__.py b/gui/builtinViewColumns/__init__.py index 1cc571252..9e9c135f8 100644 --- a/gui/builtinViewColumns/__init__.py +++ b/gui/builtinViewColumns/__init__.py @@ -1,5 +1,5 @@ __all__ = ["moduleState", "moduleNameOrSlot", "attributeDisplay", "maxRange", - "name", "droneDps", "droneNameAmount", "checkbox"] + "name", "droneDps", "droneNameAmount", "droneCheckbox"] columns = {} def registerColumn(column): diff --git a/gui/builtinViewColumns/checkbox.py b/gui/builtinViewColumns/droneCheckbox.py similarity index 90% rename from gui/builtinViewColumns/checkbox.py rename to gui/builtinViewColumns/droneCheckbox.py index 6d876f7b1..edfe91974 100644 --- a/gui/builtinViewColumns/checkbox.py +++ b/gui/builtinViewColumns/droneCheckbox.py @@ -22,14 +22,12 @@ from gui.viewColumn import ViewColumn import gui.mainFrame import wx -class Checkbox(ViewColumn): - name = "Checkbox" +class DroneCheckbox(ViewColumn): + name = "Drone Checkbox" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.resizable = False self.size = 16 - self.checked = False - for name, state in (("checked", wx.CONTROL_CHECKED), ("unchecked", 0)): bitmap = wx.EmptyBitmap(16, 16) dc = wx.MemoryDC() @@ -42,10 +40,10 @@ class Checkbox(ViewColumn): def getText(self, mod): return "" - def getImageId(self, mod): - if self.checked: + def getImageId(self, drone): + if drone.amountActive > 0: return self.checkedId else: return self.uncheckedId -builtinViewColumns.registerColumn(Checkbox) +builtinViewColumns.registerColumn(DroneCheckbox) diff --git a/gui/builtinViewColumns/droneNameAmount.py b/gui/builtinViewColumns/droneNameAmount.py index 516f5e156..2d0916d84 100644 --- a/gui/builtinViewColumns/droneNameAmount.py +++ b/gui/builtinViewColumns/droneNameAmount.py @@ -29,7 +29,7 @@ class DroneNameAmount(ViewColumn): self.columnText = "Name" def getText(self, drone): - return "%dx %s (%d Active)" % (drone.amount, drone.item.name, drone.amountActive) + return "%dx %s" % (drone.amount, drone.item.name) def getImageId(self, mod): return -1 diff --git a/gui/droneView.py b/gui/droneView.py index 865e777cb..8f4b873c2 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -23,11 +23,10 @@ import controller import gui.fittingView as fv import gui.marketBrowser as mb import gui.builtinViewColumns.display as d -from gui.builtinViewColumns.checkbox import Checkbox - +from gui.builtinViewColumns.droneCheckbox import DroneCheckbox class DroneView(d.Display): - DEFAULT_COLS = ["Checkbox", + DEFAULT_COLS = ["Drone Checkbox", "Drone Name/Amount", "Drone DPS", "Max range", @@ -58,7 +57,7 @@ class DroneView(d.Display): row, _ = self.HitTest(event.Position) if row != -1: col = self.getColumn(event.Position) - if col != self.getColIndex(Checkbox): + if col != self.getColIndex(DroneCheckbox): fitID = self.mainFrame.getActiveFit() cFit = controller.Fit.getInstance() cFit.removeDrone(fitID, self.GetItemData(row)) @@ -68,5 +67,8 @@ class DroneView(d.Display): row, _ = self.HitTest(event.Position) if row != -1: col = self.getColumn(event.Position) - if col == self.getColIndex(Checkbox): - pass + if col == self.getColIndex(DroneCheckbox): + fitID = self.mainFrame.getActiveFit() + cFit = controller.Fit.getInstance() + cFit.toggleDrone(fitID, row) + wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID))