forked from IPKM/nmreval
194-fitrange (#219)
keyboard-setting of custom fit range; closes #194; helps for #32
This commit is contained in:
@ -2,7 +2,6 @@ from __future__ import annotations
|
||||
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
from numpy import geomspace, linspace
|
||||
@ -17,13 +16,13 @@ from ..Qt import QtGui, QtPrintSupport
|
||||
from ..data.shift_graphs import QShift
|
||||
from ..data.signaledit import QPreviewDialog, QBaselineDialog
|
||||
from ..dsc.glass_dialog import TgCalculator
|
||||
from ..fit.fit_toolbar import FitToolbar
|
||||
from ..fit.result import FitExtension, QFitResult
|
||||
from ..graphs.graphwindow import QGraphWindow
|
||||
from ..graphs.movedialog import QMover
|
||||
from ..io.fcbatchreader import QFCReader
|
||||
from ..io.filedialog import *
|
||||
from ..lib.iconloading import make_action_icons, get_icon
|
||||
from ..lib.pg_objects import RegionItem
|
||||
from ..lib.starter import make_starter
|
||||
from ..math.binning import BinningWindow
|
||||
from ..math.evaluation import QEvalDialog
|
||||
@ -97,12 +96,6 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
|
||||
self.norm_toolbutton.setIcon(get_icon('normal'))
|
||||
self.toolbar_edit.addWidget(self.norm_toolbutton)
|
||||
|
||||
self.fitlim_button = QtWidgets.QToolButton(self)
|
||||
self.fitlim_button.setMenu(self.menuLimits)
|
||||
self.fitlim_button.setPopupMode(self.fitlim_button.InstantPopup)
|
||||
self.fitlim_button.setIcon(get_icon('fit_region'))
|
||||
self.toolBar_fit.addWidget(self.fitlim_button)
|
||||
|
||||
while self.tabWidget.count() > 2:
|
||||
self.tabWidget.removeTab(self.tabWidget.count()-1)
|
||||
|
||||
@ -120,9 +113,11 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
|
||||
# noinspection PyUnresolvedReferences
|
||||
self.statusBar.addWidget(self.mousepos)
|
||||
|
||||
self.fitregion = RegionItem()
|
||||
self._fit_plot_id = None
|
||||
|
||||
self.fit_toolbar = FitToolbar(self.action_FitWidget, self.menuLimits, self)
|
||||
self.addToolBar(self.fit_toolbar)
|
||||
|
||||
self.setGeometry(QtWidgets.QStyle.alignedRect(
|
||||
QtCore.Qt.LayoutDirection.LeftToRight,
|
||||
QtCore.Qt.AlignmentFlag.AlignCenter,
|
||||
@ -138,11 +133,6 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
|
||||
self.ac_group.addAction(self.action_nm_fit)
|
||||
self.ac_group.addAction(self.action_odr_fit)
|
||||
|
||||
self.ac_group2 = QtWidgets.QActionGroup(self)
|
||||
self.ac_group2.addAction(self.action_no_range)
|
||||
self.ac_group2.addAction(self.action_x_range)
|
||||
self.ac_group2.addAction(self.action_custom_range)
|
||||
|
||||
def _init_signals(self):
|
||||
self.actionRedo = self.management.undostack.createRedoAction(self)
|
||||
icon = QtGui.QIcon.fromTheme("edit-redo")
|
||||
@ -158,7 +148,7 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
|
||||
|
||||
self.action_save_fit_parameter.triggered.connect(self.save_fit_parameter)
|
||||
# noinspection PyUnresolvedReferences
|
||||
self.ac_group2.triggered.connect(self.change_fit_limits)
|
||||
self.fit_toolbar.limit_group.triggered.connect(self.change_fit_limits)
|
||||
|
||||
self.t1action.triggered.connect(lambda: self._show_tab('t1_temp'))
|
||||
self.action_edit.triggered.connect(self.do_preview)
|
||||
@ -899,29 +889,28 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
|
||||
for item in self.fit_dialog.preview_lines:
|
||||
self.current_graph_widget.add_external(item)
|
||||
if self.action_custom_range.isChecked():
|
||||
self.current_graph_widget.add_external(self.fitregion)
|
||||
self.current_graph_widget.add_external(self.fit_toolbar.region)
|
||||
|
||||
block_window = True
|
||||
else:
|
||||
for item in self.fit_dialog.preview_lines:
|
||||
self.current_graph_widget.remove_external(item)
|
||||
self.current_graph_widget.remove_external(self.fitregion)
|
||||
self.current_graph_widget.remove_external(self.fit_toolbar.region)
|
||||
|
||||
return block_window
|
||||
|
||||
@QtCore.pyqtSlot(QtWidgets.QAction)
|
||||
def change_fit_limits(self, action: QtWidgets.QAction):
|
||||
if self.current_graph_widget is None:
|
||||
return
|
||||
|
||||
if action == self.action_custom_range and self.fit_dialog.isVisible():
|
||||
self.current_graph_widget.add_external(self.fitregion)
|
||||
self.current_graph_widget.add_external(self.fit_toolbar.region)
|
||||
else:
|
||||
self.current_graph_widget.remove_external(self.fitregion)
|
||||
self.current_graph_widget.remove_external(self.fit_toolbar.region)
|
||||
|
||||
def start_fit(self, parameter, links, fit_options):
|
||||
fit_options['limits'] = {
|
||||
self.action_no_range: 'none',
|
||||
self.action_x_range: 'x',
|
||||
self.action_custom_range: self.fitregion.getRegion()
|
||||
}[self.ac_group2.checkedAction()]
|
||||
fit_options['limits'] = self.fit_toolbar.get_limit()
|
||||
|
||||
fit_options['fit_mode'] = {
|
||||
self.action_lm_fit: 'lsq',
|
||||
|
Reference in New Issue
Block a user