Add a checkbox for drones instead of + & -, group drones by 5 by default (will be able to be changed via rightclick, later)

This commit is contained in:
cncfanatics
2010-09-05 15:04:05 +02:00
parent f06448cc60
commit a31ea5f712
6 changed files with 40 additions and 37 deletions

View File

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

2
eos

Submodule eos updated: a87155ebf8...7cea84e99b

View File

@@ -1,5 +1,5 @@
__all__ = ["moduleState", "moduleNameOrSlot", "attributeDisplay", "maxRange",
"name", "droneDps", "droneNameAmount", "checkbox"]
"name", "droneDps", "droneNameAmount", "droneCheckbox"]
columns = {}
def registerColumn(column):

View File

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

View File

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

View File

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