diff --git a/gui/builtinAdditionPanes/commandView.py b/gui/builtinAdditionPanes/commandView.py index e4a7b6d5a..74481f274 100644 --- a/gui/builtinAdditionPanes/commandView.py +++ b/gui/builtinAdditionPanes/commandView.py @@ -70,7 +70,7 @@ class CommandView(d.Display): self.lastFitId = None self.mainFrame.Bind(GE.FIT_CHANGED, AddCommandFit.fitChanged) - self.mainFrame.Bind(GE.FIT_REMOVED, AddCommandFit.populateFits) + self.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved) self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) @@ -82,6 +82,13 @@ class CommandView(d.Display): self.SetDropTarget(CommandViewDrop(self.handleListDrag)) + def OnFitRemoved(self, event): + event.Skip() + AddCommandFit.populateFits(event) + fitID = self.mainFrame.getActiveFit() + fit = Fit.getInstance().getFit(fitID) + self.refreshContents(fit) + @staticmethod def handleListDrag(x, y, data): """ @@ -131,12 +138,6 @@ class CommandView(d.Display): event.Skip() return - stuff = [] - if fit is not None: - self.fits = fit.commandFits[:] - self.fits.sort(key=self.fitSort) - stuff.extend(self.fits) - if event.fitID != self.lastFitId: self.lastFitId = event.fitID @@ -147,13 +148,20 @@ class CommandView(d.Display): self.unselectAll() - if not stuff: - stuff = [DummyEntry("Drag a fit to this area")] - - self.update(stuff) + self.refreshContents(fit) event.Skip() + def refreshContents(self, fit): + stuff = [] + if fit is not None: + self.fits = fit.commandFits[:] + self.fits.sort(key=self.fitSort) + stuff.extend(self.fits) + if not stuff: + stuff = [DummyEntry("Drag a fit to this area")] + self.update(stuff) + def click(self, event): mainRow, _ = self.HitTest(event.Position) if mainRow != -1: diff --git a/gui/builtinAdditionPanes/projectedView.py b/gui/builtinAdditionPanes/projectedView.py index 1e2a18323..0336dfd1b 100644 --- a/gui/builtinAdditionPanes/projectedView.py +++ b/gui/builtinAdditionPanes/projectedView.py @@ -82,6 +82,7 @@ class ProjectedView(d.Display): self.lastFitId = None self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_RIGHT_DOWN, self.click) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) @@ -93,6 +94,12 @@ class ProjectedView(d.Display): self.SetDropTarget(ProjectedViewDrop(self.handleListDrag)) + def OnFitRemoved(self, event): + event.Skip() + fitID = self.mainFrame.getActiveFit() + fit = Fit.getInstance().getFit(fitID) + self.refreshContents(fit) + def handleListDrag(self, x, y, data): """ Handles dragging of items from various pyfa displays which support it @@ -174,6 +181,23 @@ class ProjectedView(d.Display): event.Skip() return + + + 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.unselectAll() + + self.refreshContents(fit) + + event.Skip() + + def refreshContents(self, fit): stuff = [] if fit is not None: self.originalFits = fit.projectedFits @@ -194,24 +218,10 @@ class ProjectedView(d.Display): stuff.extend(self.modules) stuff.extend(self.drones) stuff.extend(self.fighters) - - 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.unselectAll() - if not stuff: stuff = [DummyEntry('Drag an item or fit, or use right-click menu for wormhole effects')] - self.update(stuff) - event.Skip() - def get(self, row): if row == -1: return None