From 8660e36bad7082b63b04888e880bf7572cb895ac Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 11 Dec 2010 14:09:57 +0200 Subject: [PATCH] Make sure drone view gets in sync with current fit (clear its content if there is no active fitting), also , make sure the first item is visible/all selected items deselected in case we switch to other fit --- gui/droneView.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gui/droneView.py b/gui/droneView.py index 602a9f5bf..a401d518d 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -50,6 +50,9 @@ 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.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) @@ -98,14 +101,34 @@ class DroneView(d.Display): drone.item.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) self.original = fit.drones if fit is not None else None self.drones = stuff = fit.drones[:] if fit is not None else None + if stuff is not None: stuff.sort(key=self.droneKey) + + 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) event.Skip()