diff --git a/gui/builtinViewColumns/display.py b/gui/builtinViewColumns/display.py index 95b082b1a..8602a7ef2 100644 --- a/gui/builtinViewColumns/display.py +++ b/gui/builtinViewColumns/display.py @@ -85,7 +85,7 @@ class Display(wx.ListCtrl): selection = [] self.Freeze() - + sel = self.GetFirstSelected() while sel != -1: selection.append(sel) @@ -113,6 +113,17 @@ class Display(wx.ListCtrl): self.Thaw() + def refresh(self, stuff): + self.Freeze() + item = -1 + for id, st in enumerate(stuff): + item = self.GetNextItem(item) + for i, col in enumerate(self.activeColumns): + self.SetStringItem(item, i, col.getText(st), col.getImageId(st)) + self.SetItemData(item, id) + + self.Thaw() + def getColumn(self, point): x = point[0] total = 0 diff --git a/gui/fittingView.py b/gui/fittingView.py index 318e5762b..dd14a31e3 100644 --- a/gui/fittingView.py +++ b/gui/fittingView.py @@ -42,6 +42,7 @@ 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): @@ -51,14 +52,20 @@ class FittingView(d.Display): else: self.Show() + self.ignore = True wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID)) + self.ignore = False + self.slotsChanged() def appendItem(self, itemID): fitID = self.activeFitID if fitID != None: cFit = controller.Fit.getInstance() cFit.appendModule(fitID, itemID) + self.ignore = True wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID)) + self.ignore = False + self.slotsChanged() def removeItem(self, event): row, _ = self.HitTest(event.Position) @@ -67,11 +74,14 @@ class FittingView(d.Display): trigger = cFit.removeModule(self.activeFitID, self.mods[self.GetItemData(row)].position) if trigger: + self.ignore = True wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID)) + self.ignore = False + self.slotsChanged() - def fitChanged(self, event): + def generateMods(self): cFit = controller.Fit.getInstance() - fit = cFit.getFit(event.fitID) + fit = cFit.getFit(self.activeFitID) slotOrder = [Slot.SUBSYSTEM, Slot.HIGH, Slot.MED, Slot.LOW, Slot.RIG] @@ -81,6 +91,14 @@ class FittingView(d.Display): else: self.mods = None + def slotsChanged(self): + self.generateMods() self.populate(self.mods) + def fitChanged(self, event): + if self.ignore: + return + + self.generateMods() + self.refresh(self.mods) event.Skip()