From 22edebbf9bf6e6a401b491adb58cc23a59dcc5c9 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Fri, 18 May 2018 01:18:31 -0400 Subject: [PATCH] More stuff for #1586 --- gui/builtinViews/fittingView.py | 25 +++++++++++++++++++++++-- gui/statsPane.py | 1 - 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 0dd531aa8..380578d8e 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -222,6 +222,16 @@ class FittingView(d.Display): wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID)) def Destroy(self): + # @todo: when wxPython 4.0.2 is release, https://github.com/pyfa-org/Pyfa/issues/1586#issuecomment-390074915 + # Make sure to remove the shitty checks that I have to put in place for these handlers to ignore when self is None + print("+++++ Destroy " + repr(self)) + + # print(self.parent.Unbind(EVT_NOTEBOOK_PAGE_CHANGED)) + # print(self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.fitChanged)) + # print(self.mainFrame.Unbind(EVT_FIT_RENAMED, handler=self.fitRenamed )) + # print(self.mainFrame.Unbind(EVT_FIT_REMOVED, handler=self.fitRemoved)) + # print(self.mainFrame.Unbind(ITEM_SELECTED, handler=self.appendItem)) + d.Display.Destroy(self) def pageChanged(self, event): @@ -284,6 +294,9 @@ class FittingView(d.Display): """ print('_+_+_+_+_+_ Fit Removed: {} {} activeFitID: {}, eventFitID: {}'.format(repr(self), str(bool(self)), self.activeFitID, event.fitID)) pyfalog.debug("FittingView::fitRemoved") + if not self: + event.Skip() + return if event.fitID == self.getActiveFit(): pyfalog.debug(" Deleted fit is currently active") self.parent.DeletePage(self.parent.GetPageIndex(self)) @@ -304,6 +317,9 @@ class FittingView(d.Display): event.Skip() def fitRenamed(self, event): + if not self: + event.Skip() + return fitID = event.fitID if fitID == self.getActiveFit(): self.updateTab() @@ -340,6 +356,9 @@ class FittingView(d.Display): self.parent.SetPageTextIcon(pageIndex, text, bitmap) def appendItem(self, event): + if not self: + event.Skip() + return if self.parent.IsActive(self): itemID = event.itemID fitID = self.activeFitID @@ -520,8 +539,10 @@ class FittingView(d.Display): self.populate(self.mods) def fitChanged(self, event): - pyfalog.debug('fittingView::fitChanged(): {} {} activeFitID: {}, eventFitID: {}'.format(repr(self), str(bool(self)), self.activeFitID, event.fitID)) - + print('====== Fit Changed: {} {} activeFitID: {}, eventFitID: {}'.format(repr(self), str(bool(self)), self.activeFitID, event.fitID)) + if not self: + event.Skip() + return try: if self.activeFitID is not None and self.activeFitID == event.fitID: self.generateMods() diff --git a/gui/statsPane.py b/gui/statsPane.py index 02316258a..b3984ccfa 100644 --- a/gui/statsPane.py +++ b/gui/statsPane.py @@ -69,7 +69,6 @@ class StatsPane(wx.Panel): pyfalog.error("Unknown setting for view: {0}", aView) def fitChanged(self, event): - pyfalog.info("StatsPane::fitChanged, updating stats view") sFit = Fit.getInstance() fit = sFit.getFit(event.fitID) for view in self.views: