Add load from csv
This commit is contained in:
parent
b77802dca7
commit
f50631521c
@ -1,4 +1,6 @@
|
|||||||
''' cpdctrl_gui/ui/main_window.py '''
|
''' cpdctrl_gui/ui/main_window.py '''
|
||||||
|
import os.path
|
||||||
|
|
||||||
from PyQt6.QtCore import Qt, QTimer
|
from PyQt6.QtCore import Qt, QTimer
|
||||||
from PyQt6.QtWidgets import QMainWindow, QWidget, QHBoxLayout, QLabel, QStatusBar, QFileDialog, \
|
from PyQt6.QtWidgets import QMainWindow, QWidget, QHBoxLayout, QLabel, QStatusBar, QFileDialog, \
|
||||||
QVBoxLayout
|
QVBoxLayout
|
||||||
@ -134,6 +136,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.topbar.add_button("meas_start", "Start", QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStart), self.measure_start)
|
self.topbar.add_button("meas_start", "Start", QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStart), self.measure_start)
|
||||||
self.topbar.add_button("meas_stop", "Stop", QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStop), self.measure_stop)
|
self.topbar.add_button("meas_stop", "Stop", QIcon.fromTheme(QIcon.ThemeIcon.MediaPlaybackStop), self.measure_stop)
|
||||||
self.topbar.add_button("meas_save", "Save", QIcon.fromTheme(QIcon.ThemeIcon.DocumentSaveAs), self.measurement_save)
|
self.topbar.add_button("meas_save", "Save", QIcon.fromTheme(QIcon.ThemeIcon.DocumentSaveAs), self.measurement_save)
|
||||||
|
self.topbar.add_button("meas_load", "Load", QIcon.fromTheme(QIcon.ThemeIcon.DocumentOpen), self.measurement_load_dialog)
|
||||||
self.topbar.add_separator()
|
self.topbar.add_separator()
|
||||||
self.topbar.add_button("app_settings", "Settings", QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties), self.app_open_settings)
|
self.topbar.add_button("app_settings", "Settings", QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties), self.app_open_settings)
|
||||||
self.topbar.addAction(self.a_open_help)
|
self.topbar.addAction(self.a_open_help)
|
||||||
@ -237,6 +240,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.topbar.disable_button("connect_vmdev")
|
self.topbar.disable_button("connect_vmdev")
|
||||||
self.topbar.disable_button("connect_leddev")
|
self.topbar.disable_button("connect_leddev")
|
||||||
self.topbar.disable_button("meas_save")
|
self.topbar.disable_button("meas_save")
|
||||||
|
self.topbar.disable_button("meas_load")
|
||||||
self.topbar.enable_button("meas_stop")
|
self.topbar.enable_button("meas_stop")
|
||||||
self.w_plot.clear_data()
|
self.w_plot.clear_data()
|
||||||
|
|
||||||
@ -304,6 +308,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.topbar.enable_button("connect_vmdev")
|
self.topbar.enable_button("connect_vmdev")
|
||||||
self.topbar.enable_button("connect_leddev")
|
self.topbar.enable_button("connect_leddev")
|
||||||
self.topbar.enable_button("meas_save")
|
self.topbar.enable_button("meas_save")
|
||||||
|
self.topbar.enable_button("meas_load")
|
||||||
self.topbar.disable_button("meas_stop")
|
self.topbar.disable_button("meas_stop")
|
||||||
|
|
||||||
def measure_update(self):
|
def measure_update(self):
|
||||||
@ -341,6 +346,33 @@ class MainWindow(QMainWindow):
|
|||||||
else:
|
else:
|
||||||
self.set_status(f"Aborted saving data, no file selected")
|
self.set_status(f"Aborted saving data, no file selected")
|
||||||
|
|
||||||
|
def measurement_load(self, filepath):
|
||||||
|
if self.measurement_is_running():
|
||||||
|
QMessageBox.critical(self, "Measurement running", "Can not load data while measurement is running")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
if os.path.isfile(filepath):
|
||||||
|
data, mdata = DataCollector.load_data_from_csv(filepath)
|
||||||
|
else:
|
||||||
|
raise FileNotFoundError(f"No such file or directory {filepath} not found")
|
||||||
|
self.w_plot.set_data(data[:,1], data[:,2], data[:,3])
|
||||||
|
|
||||||
|
def measurement_load_dialog(self):
|
||||||
|
if self.measurement_is_running():
|
||||||
|
QMessageBox.critical(self, "Measurement running", "Can not load data while measurement is running")
|
||||||
|
return
|
||||||
|
|
||||||
|
last_dir = AppConfig.MAIN_CFG.get_or("tmp_last_measurement_load_dir", "")
|
||||||
|
file_path, _ = QFileDialog.getOpenFileName(self, "Load File", last_dir, "CSV Files (*.csv)")
|
||||||
|
if file_path:
|
||||||
|
dir_name = os.path.dirname(file_path)
|
||||||
|
AppConfig.MAIN_CFG.set("tmp_last_measurement_load_dir", dir_name)
|
||||||
|
self.measurement_load(file_path)
|
||||||
|
else:
|
||||||
|
self.set_status(f"Aborted loading data, no file selected")
|
||||||
|
self.measurement_load(file_path)
|
||||||
|
|
||||||
def led_script_load(self):
|
def led_script_load(self):
|
||||||
script = self.w_measurement_settings.get_value("led_script")
|
script = self.w_measurement_settings.get_value("led_script")
|
||||||
try:
|
try:
|
||||||
|
@ -117,6 +117,19 @@ class Plot(pg.GraphicsLayoutWidget):
|
|||||||
self.n_data_total += 1
|
self.n_data_total += 1
|
||||||
|
|
||||||
|
|
||||||
|
def set_data(self, data_t, data_v, data_l):
|
||||||
|
"""
|
||||||
|
Set the data to be plotted, without updating the internal arrays
|
||||||
|
"""
|
||||||
|
# self.data_t = data_t
|
||||||
|
# self.data_v = data_v
|
||||||
|
# self.data_l = data_l
|
||||||
|
# self.n_data_array = len(data_t)
|
||||||
|
# self.n_data_total = len(data_t)
|
||||||
|
# self.n_data_take_every_nth = 1
|
||||||
|
self.v_line.setData(data_t, data_v)
|
||||||
|
self.l_line.setData(data_t, data_l)
|
||||||
|
|
||||||
def clear_data(self):
|
def clear_data(self):
|
||||||
"""
|
"""
|
||||||
Clear the lines and data
|
Clear the lines and data
|
||||||
|
Loading…
x
Reference in New Issue
Block a user