1
0
forked from IPKM/nmreval

value tab plots complex selection; graphwindows shows last path for export; filedialog uses call not init

This commit is contained in:
dominik
2022-11-19 17:59:35 +01:00
parent a61dc40343
commit 4ca8f434aa
11 changed files with 206 additions and 157 deletions

View File

@ -2,7 +2,8 @@ from __future__ import annotations
from typing import Any
import numpy as np
from numpy import ndarray, iscomplexobj, asarray
from pyqtgraph import PlotDataItem
from ..Qt import QtGui, QtCore, QtWidgets
from .._py.valueeditor import Ui_MaskDialog
@ -14,7 +15,7 @@ class ValueEditWidget(QtWidgets.QWidget, Ui_MaskDialog):
itemChanged = QtCore.pyqtSignal(str, tuple, object)
itemDeleted = QtCore.pyqtSignal(str, list)
itemAdded = QtCore.pyqtSignal(str)
values_selected = QtCore.pyqtSignal(str, list, list)
values_selected = QtCore.pyqtSignal(str, str)
split_signal = QtCore.pyqtSignal(str, int)
def __init__(self, parent=None):
@ -37,8 +38,10 @@ class ValueEditWidget(QtWidgets.QWidget, Ui_MaskDialog):
self.tableView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.tableView.customContextMenuRequested.connect(self.ctx)
self.graph_combobox.currentIndexChanged.connect(self._populate_sets)
self.set_combobox.currentIndexChanged.connect(self._populate_table)
self.selection_real = PlotDataItem(x=[], y=[], symbolSize=25, symbol='x',
pen=None, symbolPen='#c9308e', symbolBrush='#c9308e')
self.selection_imag = PlotDataItem(x=[], y=[], symbolSize=25, symbol='+',
pen=None, symbolPen='#dcdcdc', symbolBrush='#dcdcdc')
def __call__(self, items: dict):
self.items = items
@ -58,7 +61,7 @@ class ValueEditWidget(QtWidgets.QWidget, Ui_MaskDialog):
return self
@QtCore.pyqtSlot(int)
@QtCore.pyqtSlot(int, name='on_graph_combobox_currentIndexChanged')
def _populate_sets(self, idx: int):
if idx == -1:
self.graph_combobox.setCurrentIndex(0)
@ -66,6 +69,7 @@ class ValueEditWidget(QtWidgets.QWidget, Ui_MaskDialog):
self.set_combobox.blockSignals(True)
self.set_combobox.clear()
old_figure = self.connected_figure
self.connected_figure = self.graph_combobox.currentData()
if self.items:
@ -80,13 +84,15 @@ class ValueEditWidget(QtWidgets.QWidget, Ui_MaskDialog):
self.set_combobox.setCurrentIndex(sidx)
self.set_combobox.currentIndexChanged.emit(sidx)
@QtCore.pyqtSlot(int)
self.values_selected.emit(old_figure, self.connected_figure)
@QtCore.pyqtSlot(int, name='on_set_combobox_currentIndexChanged')
def _populate_table(self, idx):
self.selection_model.clearSelection()
self.shown_set = self.set_combobox.itemData(idx)
self.requestData.emit(self.set_combobox.itemData(idx))
def set_data(self, data: list, mask: np.ndarray):
def set_data(self, data: list, mask: ndarray):
self.selection_model.clearSelection()
self.model.loadData(data, mask)
self.spinBox.setMaximum(self.model.rowCount())
@ -193,9 +199,16 @@ class ValueEditWidget(QtWidgets.QWidget, Ui_MaskDialog):
try:
yvals.append(float(self.model.data(idx.sibling(idx.row(), 1))))
except ValueError:
yvals.append(complex(self.model.data(idx.sibling(idx.row(), 1))).real)
yvals.append(complex(self.model.data(idx.sibling(idx.row(), 1))))
self.values_selected.emit(self.connected_figure, xvals, yvals)
yvals = asarray(yvals)
if iscomplexobj(yvals):
self.selection_real.setData(x=xvals, y=yvals.real)
self.selection_imag.setData(x=xvals, y=yvals.imag)
else:
self.selection_real.setData(x=xvals, y=yvals)
self.selection_imag.setData(x=[], y=[])
@QtCore.pyqtSlot(name='on_toolButton_clicked')
def goto(self):
@ -227,7 +240,7 @@ class ValueModel(QtCore.QAbstractTableModel):
def columnCount(self, *args, **kwargs) -> int:
return len(self.headers)
def loadData(self, data: list[np.ndarray], mask: np.ndarray):
def loadData(self, data: list[ndarray], mask: ndarray):
self.beginResetModel()
self._data = []
for x, y, y_err in zip(*data):