From d5c5e2698e086296b7b8f6aefb0e120eff450a3c Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Mon, 27 May 2019 13:46:40 +0300 Subject: [PATCH] Redraw only after some delay (reuse market search delay for that) --- gui/builtinGraphs/fitDpsVsRange.py | 8 ++++++++ gui/builtinMarketBrowser/itemView.py | 2 +- gui/graph.py | 8 ++++++++ gui/graphFrame.py | 11 ++++++++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/gui/builtinGraphs/fitDpsVsRange.py b/gui/builtinGraphs/fitDpsVsRange.py index 9b39a8ed6..a17cf067a 100644 --- a/gui/builtinGraphs/fitDpsVsRange.py +++ b/gui/builtinGraphs/fitDpsVsRange.py @@ -47,5 +47,13 @@ class FitDpsVsRangeGraph(Graph): ('signatureRadius', ExtraInput(inputDefault=None, inputLabel='Target signature radius (m)', inputIconID=1390)), ('angle', ExtraInput(inputDefault=0, inputLabel='Target angle (degrees)', inputIconID=1389))]) + @property + def hasTargets(self): + return True + + @property + def hasVectors(self): + return True + FitDpsVsRangeGraph.register() diff --git a/gui/builtinMarketBrowser/itemView.py b/gui/builtinMarketBrowser/itemView.py index 1751c7ad9..304c86573 100644 --- a/gui/builtinMarketBrowser/itemView.py +++ b/gui/builtinMarketBrowser/itemView.py @@ -61,7 +61,7 @@ class ItemView(Display): def delaySearch(self, evt): sFit = Fit.getInstance() self.searchTimer.Stop() - self.searchTimer.Start(sFit.serviceFittingOptions["marketSearchDelay"], True) # 150ms + self.searchTimer.Start(sFit.serviceFittingOptions["marketSearchDelay"], True) def startDrag(self, event): row = self.GetFirstSelected() diff --git a/gui/graph.py b/gui/graph.py index bd1ef1f40..9129bf334 100644 --- a/gui/graph.py +++ b/gui/graph.py @@ -54,6 +54,14 @@ class Graph(metaclass=ABCMeta): def yDefs(self): raise NotImplementedError + @property + def hasTargets(self): + return False + + @property + def hasVectors(self): + return False + @property def redrawOnEffectiveChange(self): return False diff --git a/gui/graphFrame.py b/gui/graphFrame.py index 1cc7414c2..81c4c31fa 100644 --- a/gui/graphFrame.py +++ b/gui/graphFrame.py @@ -162,6 +162,9 @@ class GraphFrame(wx.Frame): ctrlPanelSizer.Add(self.inputsSizer, 1, wx.EXPAND | wx.ALL, 0) self.graphCtrlPanel.SetSizer(ctrlPanelSizer) + self.drawTimer = wx.Timer(self) + self.Bind(wx.EVT_TIMER, self.draw, self.drawTimer) + for view in Graph.views: view = view() self.graphSelection.Append(view.name, view) @@ -330,12 +333,18 @@ class GraphFrame(wx.Frame): self.Layout() self.draw() + def delayedDraw(self, event=None): + self.drawTimer.Stop() + self.drawTimer.Start(Fit.getInstance().serviceFittingOptions["marketSearchDelay"], True) + def draw(self, event=None): global mpl_version if event is not None: event.Skip() + self.drawTimer.Stop() + # todo: FIX THIS, see #1430. draw() is not being unbound properly when the window closes, this is an easy fix, # but not a proper solution if not self: @@ -446,7 +455,7 @@ class GraphFrame(wx.Frame): def onFieldChanged(self, event): view = self.getView() view.clearCache() - self.draw() + self.delayedDraw() def AppendFitToList(self, fitID): sFit = Fit.getInstance()