[ui/structure] updating repros to tab bar with individual plots and nix blocks
This commit is contained in:
parent
574e9a8110
commit
8f6c9b1e5e
@ -7,7 +7,10 @@ from PyQt6.QtGui import QAction, QIcon, QKeySequence
|
||||
from PyQt6.QtCore import Qt, QSize, QThreadPool, QMutex
|
||||
from PyQt6.QtWidgets import (
|
||||
QGridLayout,
|
||||
QPushButton,
|
||||
QTabWidget,
|
||||
QToolBar,
|
||||
QVBoxLayout,
|
||||
QWidget,
|
||||
QMainWindow,
|
||||
QPlainTextEdit,
|
||||
@ -52,6 +55,8 @@ class PyRelacs(QMainWindow):
|
||||
self.mccdaq = MccDaq()
|
||||
end = time.time()
|
||||
log.debug(f"Connection to DAQ took {end - start}")
|
||||
else:
|
||||
self.mccdaq = None
|
||||
|
||||
self.repros = Repro()
|
||||
|
||||
@ -60,6 +65,8 @@ class PyRelacs(QMainWindow):
|
||||
) # Ensure icons are displayed with text
|
||||
self.setWindowTitle("PyRelacs")
|
||||
|
||||
self.create_nix_file(f"{_root}/test.nix", self.config.metadata)
|
||||
|
||||
self.mutex = QMutex()
|
||||
|
||||
self.figure = pg.GraphicsLayoutWidget()
|
||||
@ -73,10 +80,13 @@ class PyRelacs(QMainWindow):
|
||||
self.setStatusBar(QStatusBar(self))
|
||||
self.create_actions()
|
||||
self.create_toolbars()
|
||||
self.repro_tabs = QTabWidget()
|
||||
self.create_repros_tabs()
|
||||
|
||||
layout = QGridLayout()
|
||||
layout.addWidget(self.figure, 0, 0, 2, 2)
|
||||
layout.addWidget(self.text, 2, 0, 1, 2)
|
||||
layout.addWidget(self.repro_tabs, 2, 0, 2, 2)
|
||||
layout.addWidget(self.text, 4, 0, 1, 1)
|
||||
|
||||
widget = QWidget()
|
||||
widget.setLayout(layout)
|
||||
@ -104,14 +114,13 @@ class PyRelacs(QMainWindow):
|
||||
self.continously_plot = Continously(self.figure, self.buffer)
|
||||
# self.continously_plot.plot()
|
||||
|
||||
if self.config.settings.daq:
|
||||
if self.mccdaq:
|
||||
log.debug("Creating Daq Generator")
|
||||
self.daq_producer = DaqProducer(self.buffer, self.mccdaq.daq_device, [1, 1])
|
||||
log.debug("Creating Sinus Generator")
|
||||
self.sinus_producer = SinProducer(self.buffer)
|
||||
|
||||
self.nix_writer = NixWriter(self.buffer)
|
||||
self.create_nix_file(f"{_root}/test.nix", self.config.metadata)
|
||||
|
||||
def create_actions(self):
|
||||
self._rlx_exitaction = QAction(QIcon(":/icons/exit.png"), "Exit", self)
|
||||
@ -127,7 +136,7 @@ class PyRelacs(QMainWindow):
|
||||
self._daq_connectaction = QAction(
|
||||
QIcon(":icons/connect.png"), "Connect DAQ", self
|
||||
)
|
||||
if self.config.settings.daq:
|
||||
if self.mccdaq:
|
||||
self._daq_connectaction.setStatusTip("Connect to daq device")
|
||||
# self._daq_connectaction.setShortcut(QKeySequence("Alt+d"))
|
||||
self._daq_connectaction.triggered.connect(self.mccdaq.connect_dac)
|
||||
@ -146,7 +155,7 @@ class PyRelacs(QMainWindow):
|
||||
# # self._daq_calibaction.setShortcut(QKeySequence("Alt+d"))
|
||||
# self._daq_calibaction.triggered.connect(self.calibration_plot.plot)
|
||||
|
||||
self._run_action = QAction(QIcon(":/icons/record.png"), "Run", self)
|
||||
self._run_action = QAction(QIcon(":/icons/record.png"), "RunDAQ", self)
|
||||
self._run_action.triggered.connect(self.run_daq)
|
||||
|
||||
self._run_sinus_action = QAction(QIcon(":/icons/record.png"), "Sinus", self)
|
||||
@ -211,18 +220,60 @@ class PyRelacs(QMainWindow):
|
||||
daq_toolbar.addAction(self._record)
|
||||
self.addToolBar(Qt.ToolBarArea.TopToolBarArea, daq_toolbar)
|
||||
|
||||
repro_toolbar = QToolBar("Repros")
|
||||
def create_repros_tabs(self):
|
||||
repro_names, file_names = self.repros.names_of_repros(
|
||||
include_repros=self.config.settings.repros
|
||||
)
|
||||
nix_blocks = {
|
||||
rep: self.nix_file.create_block(f"{rep}", "Data Repro")
|
||||
for rep in repro_names
|
||||
}
|
||||
figures_repros = {rep: pg.GraphicsLayoutWidget() for rep in repro_names}
|
||||
for rep, fn in zip(repro_names, file_names):
|
||||
repro_action = QAction(rep, self)
|
||||
repro_action.setStatusTip(rep)
|
||||
repro_action.triggered.connect(
|
||||
lambda checked, n=rep, f=fn: self.run_repro(n, f)
|
||||
tab = QWidget()
|
||||
tab_layout = QGridLayout()
|
||||
|
||||
run_repro_button = QPushButton(f"Run {rep}")
|
||||
run_repro_button.setCheckable(True)
|
||||
run_repro_button.clicked.connect(
|
||||
lambda checked, n=rep, f=fn: self.run_repro(
|
||||
n,
|
||||
f,
|
||||
nix_blocks,
|
||||
figures_repros,
|
||||
self.mccdaq,
|
||||
self.config,
|
||||
)
|
||||
)
|
||||
tab_layout.addWidget(run_repro_button, 0, 0, 1, 0)
|
||||
tab_layout.addWidget(figures_repros[rep], 1, 0, 1, 1)
|
||||
tab.setLayout(tab_layout)
|
||||
self.repro_tabs.addTab(tab, f"{rep}")
|
||||
|
||||
def run_repro(
|
||||
self,
|
||||
name_of_repro: str,
|
||||
file_of_repro: str,
|
||||
nix_block,
|
||||
figures,
|
||||
*args,
|
||||
):
|
||||
self.text.appendPlainText(f"started Repro {name_of_repro}, {file_of_repro}")
|
||||
nix_block_repro = nix_block[name_of_repro]
|
||||
figure_repro = figures[name_of_repro]
|
||||
worker = Worker(
|
||||
self.repros.run_repro,
|
||||
name_of_repro,
|
||||
file_of_repro,
|
||||
nix_block_repro,
|
||||
figure_repro,
|
||||
*args[-2:],
|
||||
)
|
||||
repro_toolbar.addAction(repro_action)
|
||||
self.addToolBar(Qt.ToolBarArea.BottomToolBarArea, repro_toolbar)
|
||||
worker.signals.result.connect(self.print_output)
|
||||
worker.signals.finished.connect(self.thread_complete)
|
||||
worker.signals.progress.connect(self.progress_fn)
|
||||
|
||||
self.threadpool.start(worker)
|
||||
|
||||
def create_nix_file(self, file_path, metadata):
|
||||
self.nix_file = nixio.File.open(
|
||||
@ -311,17 +362,6 @@ class PyRelacs(QMainWindow):
|
||||
if hasattr(PyRelacs, "daq_device"):
|
||||
log.debug("Stopping DAQ")
|
||||
self.daq_producer.stop_aquisition()
|
||||
embed()
|
||||
exit()
|
||||
|
||||
def run_repro(self, n, fn):
|
||||
self.text.appendPlainText(f"started Repro {n}, {fn}")
|
||||
worker = Worker(self.repros.run_repro, self.nix_calibration, n, fn)
|
||||
worker.signals.result.connect(self.print_output)
|
||||
worker.signals.finished.connect(self.thread_complete)
|
||||
worker.signals.progress.connect(self.progress_fn)
|
||||
|
||||
self.threadpool.start(worker)
|
||||
|
||||
def add_to_textfield(self, s: str):
|
||||
self.text.appendPlainText(s)
|
||||
@ -330,7 +370,7 @@ class PyRelacs(QMainWindow):
|
||||
log.info("exit button!")
|
||||
self.stop_recording()
|
||||
self.add_to_textfield("exiting")
|
||||
if self.config.settings.daq:
|
||||
if self.mccdaq:
|
||||
self.mccdaq.disconnect_daq()
|
||||
log.info("closing GUI")
|
||||
self.close()
|
||||
|
Loading…
Reference in New Issue
Block a user