Redraw only after some delay (reuse market search delay for that)

This commit is contained in:
DarkPhoenix
2019-05-27 13:46:40 +03:00
parent 45452ca680
commit d5c5e2698e
4 changed files with 27 additions and 2 deletions

View File

@@ -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()

View File

@@ -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()

View File

@@ -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

View File

@@ -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()