Add bindings to add & remove items (no control on items yet, is on TODO)

This commit is contained in:
cncfanatics
2010-08-28 20:07:39 +02:00
parent 3fd04da397
commit b2a44ccac2
4 changed files with 53 additions and 3 deletions

View File

@@ -68,3 +68,16 @@ class Fit(object):
fit = eos.db.getFit(fitID)
fit.fill()
return fit
def appendItem(self, fitID, itemID):
fit = eos.db.getFit(fitID)
item = eos.db.getItem(itemID, eager=("attributes", "group.category"))
if item.group.category.name == "Module":
fit.modules.append(eos.types.Module(item))
eos.db.saveddata_session.flush()
def removeItem(self, fitID, position):
fit = eos.db.getFit(fitID)
fit.modules.toDummy(position)
eos.db.saveddata_session.flush()

2
eos

Submodule eos updated: 498121c99b...c9a60088e7

View File

@@ -68,8 +68,13 @@ class FittingView(wx.ListCtrl):
self.imageListBase = self.imageList.ImageCount
self.activeFitID = None
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
self.Hide() #Don't show ourselves at start
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def addColumn(self, i, col):
self.activeColumns.append(col)
info = wx.ListItem()
@@ -98,11 +103,32 @@ class FittingView(wx.ListCtrl):
else:
self.Show()
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), FitChanged(fitID=fitID))
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
def appendItem(self, itemID):
fitID = self.activeFitID
if fitID != None:
cFit = controller.Fit.getInstance()
cFit.appendItem(fitID, itemID)
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
def removeItem(self, event):
row, _ = self.HitTest(event.Position)
if row != -1:
cFit = controller.Fit.getInstance()
cFit.removeItem(self.activeFitID, self.GetItemData(row))
wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID))
def fitChanged(self, event):
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()
modSlotMap = {}
@@ -122,4 +148,8 @@ class FittingView(wx.ListCtrl):
self.SetColumnWidth(i, 40)
self.SortItems(lambda id1, id2: cmp(slotOrder.index(modSlotMap[id1]), slotOrder.index(modSlotMap[id2])))
for sel in selection:
self.Select(sel)
event.Skip()

View File

@@ -21,6 +21,7 @@ import wx
import bitmapLoader
import gui.mainFrame
from gui.fittingView import FittingView
import gui.marketBrowser as mb
import gui.shipBrowser as sb
import controller
@@ -37,7 +38,7 @@ class MultiSwitch(wx.Notebook):
mainFrame.Bind(sb.EVT_FIT_RENAMED, self.processRename)
mainFrame.Bind(sb.EVT_FIT_SELECTED, self.changeFit)
mainFrame.Bind(sb.EVT_FIT_REMOVED, self.processRemove)
mainFrame.Bind(mb.ITEM_SELECTED, self.itemSelected)
self.imageList = wx.ImageList(16, 16)
self.SetImageList(self.imageList)
@@ -135,3 +136,9 @@ class MultiSwitch(wx.Notebook):
#Deleting a tab might have put us on the "+" tab, make sure we don't stay there
if self.GetSelection() == self.GetPageCount() - 1:
self.SetSelection(self.GetPageCount() - 2)
def itemSelected(self, event):
selected = self.GetSelection()
page = self.GetPage(selected)
if page.type == "fit":
page.view.appendItem(event.itemID)