add action to context menu to replace single set fit parameter with general fit parameter

This commit is contained in:
Dominik Demuth 2023-09-08 18:59:14 +02:00
parent b8bab2af7b
commit dee1271fe1
3 changed files with 16 additions and 1 deletions

View File

@ -13,6 +13,7 @@ class FitModelWidget(QtWidgets.QWidget, Ui_FitParameter):
value_requested = QtCore.pyqtSignal(object) value_requested = QtCore.pyqtSignal(object)
value_changed = QtCore.pyqtSignal(str) value_changed = QtCore.pyqtSignal(str)
state_changed = QtCore.pyqtSignal() state_changed = QtCore.pyqtSignal()
replace_single_value = QtCore.pyqtSignal(object)
def __init__(self, label: str = 'Fitparameter', parent=None, fixed: bool = False): def __init__(self, label: str = 'Fitparameter', parent=None, fixed: bool = False):
super().__init__(parent) super().__init__(parent)
@ -32,6 +33,7 @@ class FitModelWidget(QtWidgets.QWidget, Ui_FitParameter):
self.checkBox.stateChanged.connect(self.enableBounds) self.checkBox.stateChanged.connect(self.enableBounds)
self.global_checkbox.stateChanged.connect(lambda: self.state_changed.emit()) self.global_checkbox.stateChanged.connect(lambda: self.state_changed.emit())
self.parameter_line.values_requested.connect(lambda: self.value_requested.emit(self)) self.parameter_line.values_requested.connect(lambda: self.value_requested.emit(self))
self.parameter_line.replace_single_values.connect(lambda: self.replace_single_value.emit(None))
self.parameter_line.editingFinished.connect(lambda: self.value_changed.emit(self.parameter_line.text())) self.parameter_line.editingFinished.connect(lambda: self.value_changed.emit(self.parameter_line.text()))
self.fixed_check.toggled.connect(self.set_fixed) self.fixed_check.toggled.connect(self.set_fixed)

View File

@ -78,6 +78,7 @@ class QFitParameterWidget(QtWidgets.QWidget, Ui_FormFit):
widgt.state_changed.connect(self.make_global) widgt.state_changed.connect(self.make_global)
widgt.value_requested.connect(self.look_for_value) widgt.value_requested.connect(self.look_for_value)
widgt.value_changed.connect(self.change_global_parameter) widgt.value_changed.connect(self.change_global_parameter)
widgt.replace_single_value.connect(self.delete_single_parameter)
self.global_parameter.append(widgt) self.global_parameter.append(widgt)
self.scrollwidget.layout().addWidget(widgt) self.scrollwidget.layout().addWidget(widgt)
@ -148,6 +149,13 @@ class QFitParameterWidget(QtWidgets.QWidget, Ui_FormFit):
if value is None: if value is None:
self.change_data(self.comboBox.currentIndex()) self.change_data(self.comboBox.currentIndex())
def delete_single_parameter(self):
idx = self.global_parameter.index(self.sender())
for i in range(self.comboBox.count()):
set_id = self.comboBox.itemData(i)
self.data_values[set_id][idx] = None
self.change_data(self.comboBox.currentIndex())
def change_single_choice(self, _, value, sender=None): def change_single_choice(self, _, value, sender=None):
if sender is None: if sender is None:
sender = self.sender() sender = self.sender()

View File

@ -52,19 +52,24 @@ class QDelayWidget(QtWidgets.QWidget):
class LineEdit(QtWidgets.QLineEdit): class LineEdit(QtWidgets.QLineEdit):
values_requested = QtCore.pyqtSignal() values_requested = QtCore.pyqtSignal()
replace_single_values = QtCore.pyqtSignal()
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent=parent) super().__init__(parent=parent)
def contextMenuEvent(self, evt): def contextMenuEvent(self, evt):
menu = self.createStandardContextMenu() menu = self.createStandardContextMenu()
request_action = menu.addAction('Use value of sets') request_action = menu.addAction('Use numeric value of sets')
set_value_action = menu.addAction('Replace single set values')
action = menu.exec(evt.globalPos()) action = menu.exec(evt.globalPos())
if action == request_action: if action == request_action:
self.values_requested.emit() self.values_requested.emit()
elif action == set_value_action:
self.replace_single_values.emit()
class LineEditPost(QtWidgets.QLineEdit): class LineEditPost(QtWidgets.QLineEdit):
values_requested = QtCore.pyqtSignal() values_requested = QtCore.pyqtSignal()