diff --git a/controller/fit.py b/controller/fit.py index f206e1fb3..a2fb55f59 100644 --- a/controller/fit.py +++ b/controller/fit.py @@ -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: diff --git a/gui/builtinViewColumns/display.py b/gui/builtinViewColumns/display.py index 8602a7ef2..ca108f145 100644 --- a/gui/builtinViewColumns/display.py +++ b/gui/builtinViewColumns/display.py @@ -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): diff --git a/gui/droneView.py b/gui/droneView.py index aa877bf8b..88ab80198 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -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() diff --git a/gui/fittingView.py b/gui/fittingView.py index dd14a31e3..363222641 100644 --- a/gui/fittingView.py +++ b/gui/fittingView.py @@ -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()