Change populate to not autorefresh. Only ever call populate if the

amount of slots in a fit changes or if the fit itself changes, call
refresh in all other cases
This commit is contained in:
cncfanatics
2010-09-15 17:44:23 +02:00
parent 32531728b0
commit bf6932b6cc
4 changed files with 23 additions and 29 deletions

View File

@@ -77,6 +77,7 @@ class Fit(object):
item = eos.db.getItem(itemID, eager=("attributes", "group.category"))
m = eos.types.Module(item)
if m.fits(fit):
numSlots = len(fit.modules)
fit.modules.append(m)
if m.isValidState(State.ACTIVE):
m.state = State.ACTIVE
@@ -86,20 +87,22 @@ class Fit(object):
fit.fill()
eos.db.commit()
return True
return numSlots != len(fit.modules)
else:
return False
def removeModule(self, fitID, position):
fit = eos.db.getFit(fitID)
if fit.modules[position].isEmpty:
return False
return None
numSlots = len(fit.modules)
fit.modules.toDummy(position)
eos.db.commit()
fit.clear()
fit.calculateModifiedAttributes()
return True
fit.fill()
eos.db.commit()
return numSlots != len(fit.modules)
def addDrone(self, fitID, itemID):
if fitID == None:

View File

@@ -97,16 +97,6 @@ class Display(wx.ListCtrl):
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, col.size)
if self.GetColumnWidth(i) < 40 and col.size == wx.LIST_AUTOSIZE:
self.SetColumnWidth(i, 40)
for sel in selection:
self.Select(sel)
@@ -122,6 +112,12 @@ class Display(wx.ListCtrl):
self.SetStringItem(item, i, col.getText(st), col.getImageId(st))
self.SetItemData(item, id)
for i, col in enumerate(self.activeColumns):
if not col.resized:
self.SetColumnWidth(i, col.size)
if self.GetColumnWidth(i) < 40 and col.size == wx.LIST_AUTOSIZE:
self.SetColumnWidth(i, 40)
self.Thaw()
def getColumn(self, point):

View File

@@ -44,7 +44,9 @@ class DroneView(d.Display):
cFit = controller.Fit.getInstance()
fit = cFit.getFit(event.fitID)
self.populate(fit.drones if fit is not None else None)
stuff = fit.drones if fit is not None else None
self.populate(stuff)
self.refresh(stuff)
def addItem(self, event):
cFit = controller.Fit.getInstance()

View File

@@ -42,7 +42,6 @@ class FittingView(d.Display):
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
self.Hide() #Don't show ourselves at start
self.activeFitID = None
self.ignore = False
#Gets called from the fitMultiSwitch when it decides its time
def changeFit(self, fitID):
@@ -52,32 +51,26 @@ class FittingView(d.Display):
else:
self.Show()
self.ignore = True
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
self.ignore = False
self.slotsChanged()
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
def appendItem(self, itemID):
fitID = self.activeFitID
if fitID != None:
cFit = controller.Fit.getInstance()
cFit.appendModule(fitID, itemID)
self.ignore = True
populate = cFit.appendModule(fitID, itemID)
if populate: self.slotsChanged()
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
self.ignore = False
self.slotsChanged()
def removeItem(self, event):
row, _ = self.HitTest(event.Position)
if row != -1:
cFit = controller.Fit.getInstance()
trigger = cFit.removeModule(self.activeFitID, self.mods[self.GetItemData(row)].position)
populate = cFit.removeModule(self.activeFitID, self.mods[self.GetItemData(row)].position)
if trigger:
self.ignore = True
if populate is not None:
if populate: self.slotsChanged(populate)
wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID))
self.ignore = False
self.slotsChanged()
def generateMods(self):
cFit = controller.Fit.getInstance()
@@ -96,7 +89,7 @@ class FittingView(d.Display):
self.populate(self.mods)
def fitChanged(self, event):
if self.ignore:
if event.fitID != self.activeFitID:
return
self.generateMods()