nmreval/src/gui_qt/io/tntreader.py

110 lines
3.3 KiB
Python
Raw Normal View History

2022-10-20 15:23:15 +00:00
from nmreval.io.tntreader import TNTReader
2022-03-08 09:27:40 +00:00
from ..Qt import QtCore, QtWidgets
from .._py.tntdialog import Ui_tntdialog
class QTNTReader(QtWidgets.QDialog, Ui_tntdialog):
data_read = QtCore.pyqtSignal(dict)
file_ext = ['.tnt']
def __init__(self, fname=None, parent=None):
super().__init__(parent=parent)
self.setupUi(self)
self.reader = TNTReader(fname)
self.frame.hide()
if fname is not None:
if self.reader.onedimensional:
self.export()
else:
self.set_gui()
def __call__(self, fname, *args, **kwargs):
self.reader(fname)
for s in [self.widget, self.widget_2, self.widget_3]:
s.__call__()
self.frame.hide()
self.frame_2.show()
self.unknown_delay_combobox.clear()
if self.reader.onedimensional:
self.export()
else:
self.set_gui()
return self
def set_gui(self):
self.label_3.setText(' x '.join(map(str, self.reader.shape)))
for i, w in enumerate([self.widget, self.widget_2, self.widget_3], start=1):
if self.reader.shape[i] == 1:
w.hide()
else:
w.label.setText('Dimension {}'.format(i+1))
w.dim = i
w.add_items([x[0] for x in self.reader.delays.items() if len(x[1]) == self.reader.shape[i]])
w.get_data.connect(self.show_delays)
w.newDelay.connect(self.calc_delays)
for x in self.reader.delays.items():
if len(x[1]) in self.reader.shape[1:]:
continue
else:
self.unknown_delay_combobox.addItem(x[0])
if self.unknown_delay_combobox.count() == 0:
self.frame_2.hide()
@QtCore.pyqtSlot(str)
def show_delays(self, label):
vals = self.reader.delays[str(label)]
self.sender().vals = '\n'.join(map(str, vals))
def calc_delays(self):
self.frame.show()
self._caller = self.sender()
@QtCore.pyqtSlot(name='on_pushButton_2_clicked')
def cancel_delay(self):
self.frame.hide()
@QtCore.pyqtSlot(name='on_pushButton_clicked')
def add_delay(self):
try:
s = float(self.start_lineedit.text())
except ValueError:
return
try:
e = float(self.end_lineedit.text())
except ValueError:
return
d = []
for w in [self.widget, self.widget_2, self.widget_3]:
if w.isVisible():
d.append(w.comboBox.currentText())
self.reader.add_delay(s, e, self._caller.dim, self.lineEdit.text(),
staggered=self.checkBox_2.isChecked(), stag_steps=int(self.spinBox.value()),
log=self.checkBox.isChecked())
self._caller.add_items(self.lineEdit.text())
self.frame.hide()
def export(self):
d = []
for w in [self.widget, self.widget_2, self.widget_3]:
if w.isVisible():
d.append(w.comboBox.currentText())
else:
d.append(None)
ret_dic = self.reader.export(d)
self.data_read.emit(ret_dic)
self.close()
return ret_dic
def accept(self):
self.export()