more interactive edit

This commit is contained in:
Dominik Demuth
2023-10-25 20:04:49 +02:00
parent 6339bdc2cc
commit 7fe564a61e
10 changed files with 921 additions and 241 deletions

View File

@ -15,7 +15,7 @@ from nmreval.io.sessionwriter import NMRWriter
from .management import UpperManagement
from ..Qt import QtGui, QtPrintSupport
from ..data.shift_graphs import QShift
from ..data.signaledit import QApodDialog, QBaselineDialog, QPhasedialog
from ..data.signaledit import QPreviewDialog, QBaselineDialog
from ..dsc.glass_dialog import TgCalculator
from ..fit.result import FitExtension, QFitResult
from ..graphs.graphwindow import QGraphWindow
@ -164,7 +164,7 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
self.ac_group2.triggered.connect(self.change_fit_limits)
self.t1action.triggered.connect(lambda: self._show_tab('t1_temp'))
self.action_edit.triggered.connect(lambda: self._show_tab('signal'))
self.action_edit.triggered.connect(self.do_preview)
self.actionPick_position.triggered.connect(lambda: self._show_tab('pick'))
self.actionIntegration.triggered.connect(lambda: self._show_tab('integrate'))
self.action_FitWidget.triggered.connect(lambda: self._show_tab('fit'))
@ -214,7 +214,7 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
self.t1tauwidget.newData.connect(self.management.add_new_data)
self.editsignalwidget.do_something.connect(self.management.apply)
self.editsignalwidget.preview_triggered.connect(self.do_preview)
# self.editsignalwidget.preview_triggered.connect(self.do_preview)
self.action_sort_pts.triggered.connect(lambda: self.management.apply('sort', ()))
self.action_calc_eps_derivative.triggered.connect(self.management.bds_deriv)
@ -784,29 +784,22 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
editor.finished.connect(self.management.apply)
editor.exec()
@QtCore.pyqtSlot(str)
def do_preview(self, mode):
@QtCore.pyqtSlot()
def do_preview(self):
dialog = QPreviewDialog(self)
if mode == 'ap':
dialog = QApodDialog(parent=self)
elif mode == 'ph':
dialog = QPhasedialog(parent=self)
else:
raise ValueError('Unknown preview mode %s' % str(mode))
dialog.setRange(*self.current_graph_widget.ranges, self.current_graph_widget.log)
success = True
for sid in self.current_graph_widget.active:
data_mode = self.management[sid].mode
tobeadded = False
if (data_mode == 'fid') or (data_mode == 'spectrum' and mode == 'ph'):
tobeadded = True
if data_mode in ('fid', 'spectrum'):
success = dialog.add_data(self.management[sid].data)
if tobeadded:
dialog.add_data(*self.management.get_data(sid, xy_only=True))
if not success:
break
if dialog.exec() == QtWidgets.QDialog.Accepted:
self.management.apply(mode, dialog.get_value())
if success and dialog.exec() == QtWidgets.QDialog.Accepted:
self.management.edit_signals(dialog.get_value())
@QtCore.pyqtSlot(name='on_actionMove_between_plots_triggered')
def move_sets_dialog(self):

View File

@ -418,6 +418,13 @@ class UpperManagement(QtCore.QObject):
self.undostack.push(single_undo)
self.undostack.endMacro()
def edit_signals(self: UpperManagement, args: list[tuple]) -> None:
self.undostack.beginMacro('Edit signals')
for sid in self.graphs[self.current_graph]:
single_undo = EditCommand(self.data[sid], *args)
self.undostack.push(single_undo)
self.undostack.endMacro()
def cut(self):
if self.current_graph:
xlim, _ = self.graphs[self.current_graph].ranges