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:
@ -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):
|
||||
|
Reference in New Issue
Block a user