First iteration of the drone view, as well as a bunch of other related changes
This commit is contained in:
@@ -78,7 +78,7 @@ class Fit(object):
|
||||
def appendModule(self, fitID, itemID):
|
||||
fit = eos.db.getFit(fitID)
|
||||
item = eos.db.getItem(itemID, eager=("attributes", "group.category"))
|
||||
if item.group.category.name == "Module":
|
||||
if item.category.name == "Module":
|
||||
m = eos.types.Module(item)
|
||||
if m.isValidState(State.ACTIVE):
|
||||
m.state = State.ACTIVE
|
||||
@@ -86,9 +86,9 @@ class Fit(object):
|
||||
if m.fits(fit):
|
||||
fit.modules.append(m)
|
||||
|
||||
eos.db.saveddata_session.flush()
|
||||
fit.clear()
|
||||
fit.calculateModifiedAttributes()
|
||||
eos.db.saveddata_session.flush()
|
||||
fit.clear()
|
||||
fit.calculateModifiedAttributes()
|
||||
return fit
|
||||
|
||||
def removeModule(self, fitID, position):
|
||||
@@ -98,3 +98,23 @@ class Fit(object):
|
||||
fit.clear()
|
||||
fit.calculateModifiedAttributes()
|
||||
return fit
|
||||
|
||||
def addDrone(self, fitID, itemID):
|
||||
fit = eos.db.getFit(fitID)
|
||||
item = eos.db.getItem(itemID, eager=("attributes", "group.category"))
|
||||
if item.category.name == "Drone":
|
||||
fit.drones.appendItem(item)
|
||||
|
||||
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
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
import wx
|
||||
import gui.mainFrame
|
||||
from gui.builtinViewColumns import *
|
||||
import sys
|
||||
|
||||
class Display(wx.ListCtrl):
|
||||
def __init__(self, parent):
|
||||
@@ -72,3 +73,30 @@ class Display(wx.ListCtrl):
|
||||
def clearItemImages(self):
|
||||
for i in xrange(self.imageList.ImageCount - 1, self.imageListBase, -1):
|
||||
self.imageList.Remove(i)
|
||||
|
||||
def populate(self, stuff):
|
||||
selection = []
|
||||
sel = self.GetFirstSelected()
|
||||
while sel != -1:
|
||||
selection.append(sel)
|
||||
sel = self.GetNextSelected(sel)
|
||||
|
||||
self.DeleteAllItems()
|
||||
self.clearItemImages()
|
||||
|
||||
if stuff is not None:
|
||||
for id, st in enumerate(stuff):
|
||||
index = self.InsertStringItem(sys.maxint, "")
|
||||
for i, col in enumerate(self.activeColumns):
|
||||
self.SetStringItem(index, i, col.getText(st), col.getImageId(st))
|
||||
self.SetItemData(index, id)
|
||||
|
||||
|
||||
for i, col in enumerate(self.activeColumns):
|
||||
if not col.resized:
|
||||
self.SetColumnWidth(i, wx.LIST_AUTOSIZE)
|
||||
if self.GetColumnWidth(i) < 40:
|
||||
self.SetColumnWidth(i, 40)
|
||||
|
||||
for sel in selection:
|
||||
self.Select(sel)
|
||||
|
||||
@@ -31,7 +31,7 @@ class DroneDps(ViewColumn):
|
||||
self.imageId = fittingView.imageList.Add(bitmap)
|
||||
|
||||
def getText(self, stuff):
|
||||
return stuff.item.name
|
||||
return "%.1f" % stuff.dps
|
||||
|
||||
def getImageId(self, mod):
|
||||
return -1
|
||||
|
||||
@@ -29,7 +29,7 @@ class DroneNameAmount(ViewColumn):
|
||||
self.columnText = "Name"
|
||||
|
||||
def getText(self, drone):
|
||||
return "%dX %s (%d Active)" % (drone.amount, stuff.item.name, drone.amountActive)
|
||||
return "%dx %s (%d Active)" % (drone.amount, drone.item.name, drone.amountActive)
|
||||
|
||||
def getImageId(self, mod):
|
||||
return -1
|
||||
|
||||
@@ -19,8 +19,10 @@
|
||||
|
||||
import wx
|
||||
|
||||
import controller
|
||||
import gui.mainFrame
|
||||
import gui.fittingView as fv
|
||||
import gui.marketBrowser as mb
|
||||
import gui.builtinViewColumns.display as d
|
||||
|
||||
class DroneView(d.Display):
|
||||
@@ -33,6 +35,27 @@ class DroneView(d.Display):
|
||||
def __init__(self, parent):
|
||||
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):
|
||||
pass
|
||||
cFit = controller.Fit.getInstance()
|
||||
fit = cFit.getFit(event.fitID)
|
||||
|
||||
self.populate(fit.drones)
|
||||
|
||||
def addItem(self, event):
|
||||
cFit = controller.Fit.getInstance()
|
||||
fitID = self.mainFrame.getActiveFit()
|
||||
cFit.addDrone(fitID, event.itemID)
|
||||
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 = controller.Fit.getInstance()
|
||||
cFit.removeDrone(fitID, self.GetItemData(row))
|
||||
|
||||
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID))
|
||||
|
||||
@@ -66,42 +66,20 @@ class FittingView(d.Display):
|
||||
cFit = controller.Fit.getInstance()
|
||||
cFit.removeModule(self.activeFitID, self.mods[self.GetItemData(row)].position)
|
||||
|
||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID))
|
||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID))
|
||||
|
||||
def fitChanged(self, event):
|
||||
self.Hide()
|
||||
cFit = controller.Fit.getInstance()
|
||||
fit = cFit.getFit(event.fitID)
|
||||
selection = []
|
||||
sel = self.GetFirstSelected()
|
||||
while sel != -1:
|
||||
selection.append(sel)
|
||||
sel = self.GetNextSelected(sel)
|
||||
|
||||
self.DeleteAllItems()
|
||||
self.clearItemImages()
|
||||
|
||||
slotOrder = [Slot.SUBSYSTEM, Slot.HIGH, Slot.MED, Slot.LOW, Slot.RIG]
|
||||
|
||||
self.mods = fit.modules[:]
|
||||
self.mods.sort(key=lambda mod: (slotOrder.index(mod.slot), mod.position))
|
||||
|
||||
if fit is not None:
|
||||
for modid, mod in enumerate(self.mods):
|
||||
index = self.InsertStringItem(sys.maxint, "")
|
||||
for i, col in enumerate(self.activeColumns):
|
||||
self.SetStringItem(index, i, col.getText(mod), col.getImageId(mod))
|
||||
self.SetItemData(index, modid)
|
||||
self.mods = fit.modules[:]
|
||||
self.mods.sort(key=lambda mod: (slotOrder.index(mod.slot), mod.position))
|
||||
else:
|
||||
self.mods = None
|
||||
|
||||
self.populate(self.mods)
|
||||
|
||||
for i, col in enumerate(self.activeColumns):
|
||||
if not col.resized:
|
||||
self.SetColumnWidth(i, wx.LIST_AUTOSIZE)
|
||||
if self.GetColumnWidth(i) < 40:
|
||||
self.SetColumnWidth(i, 40)
|
||||
|
||||
for sel in selection:
|
||||
self.Select(sel)
|
||||
|
||||
self.Show()
|
||||
event.Skip()
|
||||
|
||||
@@ -91,6 +91,11 @@ class MainFrame(wx.Frame):
|
||||
#Show ourselves
|
||||
self.Show()
|
||||
|
||||
def getActiveFit(self):
|
||||
sel = self.fitMultiSwitch.GetSelection()
|
||||
view = self.fitMultiSwitch.GetPage(sel).view
|
||||
return view.activeFitID
|
||||
|
||||
def mouseHit(self, event):
|
||||
tab, _ = self.notebookBrowsers.HitTest(event.Position)
|
||||
if tab != -1:
|
||||
|
||||
@@ -106,7 +106,6 @@ class MultiSwitch(wx.Notebook):
|
||||
self.SetPageImage(tab, self.imageList.Add(bitmap))
|
||||
|
||||
def pageChanged(self, event):
|
||||
print "p"
|
||||
selection = event.Selection
|
||||
page = self.GetPage(selection)
|
||||
if hasattr(page, "type") and page.type == "fit":
|
||||
@@ -123,6 +122,8 @@ class MultiSwitch(wx.Notebook):
|
||||
self.setTabTitle(selected, fitID)
|
||||
view.changeFit(fitID)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def processRename(self, event):
|
||||
fitID = event.fitID
|
||||
# Loop through every tab and check if they're our culprit, if so, change tab name
|
||||
@@ -133,6 +134,8 @@ class MultiSwitch(wx.Notebook):
|
||||
if view.activeFitID == fitID:
|
||||
self.setTabTitle(i, fitID)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def processRemove(self, event):
|
||||
fitID = event.fitID
|
||||
for i in xrange(self.GetPageCount() - 2, -1, -1):
|
||||
@@ -147,8 +150,12 @@ class MultiSwitch(wx.Notebook):
|
||||
if self.GetSelection() == self.GetPageCount() - 1:
|
||||
self.SetSelection(self.GetPageCount() - 2)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def itemSelected(self, event):
|
||||
selected = self.GetSelection()
|
||||
page = self.GetPage(selected)
|
||||
if page.type == "fit":
|
||||
page.view.appendItem(event.itemID)
|
||||
|
||||
event.Skip()
|
||||
|
||||
Reference in New Issue
Block a user