forked from M-Labs/artiq
gui: save/restore state of pyqtgraph plots (closes #98)
This commit is contained in:
parent
34a9c8c12d
commit
0be0b199c1
|
@ -94,6 +94,12 @@ class NumberDisplay(dockarea.Dock):
|
||||||
n = "---"
|
n = "---"
|
||||||
self.number.display(n)
|
self.number.display(n)
|
||||||
|
|
||||||
|
def save_state(self):
|
||||||
|
return None
|
||||||
|
|
||||||
|
def restore_state(self, state):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class XYDisplaySettings(_SimpleSettings):
|
class XYDisplaySettings(_SimpleSettings):
|
||||||
_window_title = "XY plot"
|
_window_title = "XY plot"
|
||||||
|
@ -155,6 +161,12 @@ class XYDisplay(dockarea.Dock):
|
||||||
if fit is not None:
|
if fit is not None:
|
||||||
self.plot.plot(x, fit)
|
self.plot.plot(x, fit)
|
||||||
|
|
||||||
|
def save_state(self):
|
||||||
|
return self.plot.saveState()
|
||||||
|
|
||||||
|
def restore_state(self, state):
|
||||||
|
self.plot.restoreState(state)
|
||||||
|
|
||||||
|
|
||||||
class HistogramDisplaySettings(_SimpleSettings):
|
class HistogramDisplaySettings(_SimpleSettings):
|
||||||
_window_title = "Histogram"
|
_window_title = "Histogram"
|
||||||
|
@ -191,7 +203,14 @@ class HistogramDisplay(dockarea.Dock):
|
||||||
|
|
||||||
if y and len(x) == len(y) + 1:
|
if y and len(x) == len(y) + 1:
|
||||||
self.plot.clear()
|
self.plot.clear()
|
||||||
self.plot.plot(x, y, stepMode=True, fillLevel=0, brush=(0, 0, 255, 150))
|
self.plot.plot(x, y, stepMode=True, fillLevel=0,
|
||||||
|
brush=(0, 0, 255, 150))
|
||||||
|
|
||||||
|
def save_state(self):
|
||||||
|
return self.plot.saveState()
|
||||||
|
|
||||||
|
def restore_state(self, state):
|
||||||
|
self.plot.restoreState(state)
|
||||||
|
|
||||||
|
|
||||||
display_types = OrderedDict([
|
display_types = OrderedDict([
|
||||||
|
|
|
@ -120,20 +120,28 @@ class ResultsDock(dockarea.Dock):
|
||||||
dsp.sigClosed.connect(on_close)
|
dsp.sigClosed.connect(on_close)
|
||||||
self.dock_area.addDock(dsp)
|
self.dock_area.addDock(dsp)
|
||||||
self.dock_area.floatDock(dsp)
|
self.dock_area.floatDock(dsp)
|
||||||
|
return dsp
|
||||||
|
|
||||||
def save_state(self):
|
def save_state(self):
|
||||||
r = dict()
|
r = dict()
|
||||||
for name, display in self.displays.items():
|
for name, display in self.displays.items():
|
||||||
r[name] = {
|
r[name] = {
|
||||||
"ty": _get_display_type_name(type(display)),
|
"ty": _get_display_type_name(type(display)),
|
||||||
"settings": display.settings
|
"settings": display.settings,
|
||||||
|
"state": display.save_state()
|
||||||
}
|
}
|
||||||
return r
|
return r
|
||||||
|
|
||||||
def restore_state(self, state):
|
def restore_state(self, state):
|
||||||
for name, desc in state.items():
|
for name, desc in state.items():
|
||||||
try:
|
try:
|
||||||
self.create_display(desc["ty"], None, name, desc["settings"])
|
dsp = self.create_display(desc["ty"], None, name,
|
||||||
|
desc["settings"])
|
||||||
except:
|
except:
|
||||||
logger.warning("Failed to create display '%s'", name,
|
logger.warning("Failed to create display '%s'", name,
|
||||||
exc_info=True)
|
exc_info=True)
|
||||||
|
try:
|
||||||
|
dsp.restore_state(desc["state"])
|
||||||
|
except:
|
||||||
|
logger.warning("Failed to restore display state of '%s'",
|
||||||
|
name, exc_info=True)
|
||||||
|
|
Loading…
Reference in New Issue