diff --git a/gui/boosterView.py b/gui/boosterView.py index ffcc58e8f..fbb4ace7b 100644 --- a/gui/boosterView.py +++ b/gui/boosterView.py @@ -32,6 +32,9 @@ class BoosterView(d.Display): def __init__(self, parent): d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL | wx.BORDER_NONE) + + self.lastFitId = None + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) @@ -42,10 +45,29 @@ class BoosterView(d.Display): self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu) def fitChanged(self, event): + + #Clear list and get out if current fitId is None + if event.fitID is None and self.lastFitId is not None: + self.DeleteAllItems() + self.lastFitId = None + event.Skip() + return + cFit = service.Fit.getInstance() fit = cFit.getFit(event.fitID) stuff = fit.boosters if fit is not None else None + + if event.fitID != self.lastFitId: + self.lastFitId = event.fitID + + item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) + + if item != -1: + self.EnsureVisible(item) + + self.deselectItems() + self.populate(stuff) self.refresh(stuff) event.Skip() diff --git a/gui/droneView.py b/gui/droneView.py index a401d518d..581545769 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -51,7 +51,7 @@ class DroneView(d.Display): def __init__(self, parent): d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL | wx.BORDER_NONE) - self.lastFitId = -1 + self.lastFitId = None self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) diff --git a/gui/implantView.py b/gui/implantView.py index ed9e4e91a..7fcbd8562 100644 --- a/gui/implantView.py +++ b/gui/implantView.py @@ -31,6 +31,9 @@ class ImplantView(d.Display): def __init__(self, parent): d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL | wx.BORDER_NONE) + + self.lastFitId = None + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) @@ -53,12 +56,30 @@ class ImplantView(d.Display): wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) def fitChanged(self, event): + #Clear list and get out if current fitId is None + if event.fitID is None and self.lastFitId is not None: + self.DeleteAllItems() + self.lastFitId = None + event.Skip() + return + cFit = service.Fit.getInstance() fit = cFit.getFit(event.fitID) self.original = fit.implants if fit is not None else None self.implants = stuff = fit.implants if fit is not None else None if stuff is not None: stuff.sort(key=lambda implant: implant.slot) + + if event.fitID != self.lastFitId: + self.lastFitId = event.fitID + + item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) + + if item != -1: + self.EnsureVisible(item) + + self.deselectItems() + self.populate(stuff) self.refresh(stuff) event.Skip() diff --git a/gui/projectedView.py b/gui/projectedView.py index 630a9b8d4..28e2ad3c7 100644 --- a/gui/projectedView.py +++ b/gui/projectedView.py @@ -49,6 +49,9 @@ class ProjectedView(d.Display): def __init__(self, parent): d.Display.__init__(self, parent, style = wx.LC_SINGLE_SEL | wx.BORDER_NONE) + + self.lastFitId = None + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_RIGHT_DOWN, self.click) @@ -108,6 +111,13 @@ class ProjectedView(d.Display): return fit.name def fitChanged(self, event): + #Clear list and get out if current fitId is None + if event.fitID is None and self.lastFitId is not None: + self.DeleteAllItems() + self.lastFitId = None + event.Skip() + return + cFit = service.Fit.getInstance() fit = cFit.getFit(event.fitID) stuff = [] @@ -124,6 +134,15 @@ class ProjectedView(d.Display): stuff.extend(self.drones) stuff.extend(self.fits) + if event.fitID != self.lastFitId: + self.lastFitId = event.fitID + + item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) + + if item != -1: + self.EnsureVisible(item) + + self.deselectItems() self.update(stuff) def get(self, row):