diff --git a/mantidimaging/gui/utility/qt_helpers.py b/mantidimaging/gui/utility/qt_helpers.py index 8bbf83c0b74..aaabe81a53a 100644 --- a/mantidimaging/gui/utility/qt_helpers.py +++ b/mantidimaging/gui/utility/qt_helpers.py @@ -130,19 +130,19 @@ def set_spin_box(box, cast_func): right_widget.setText(default_value) if on_change is not None: - right_widget.editingFinished.connect(lambda: on_change()) + right_widget.editingFinished.connect(lambda: on_change(None)) elif dtype == 'int' or dtype == Type.INT: right_widget = Qt.QSpinBox() set_spin_box(right_widget, int) if on_change is not None: - right_widget.valueChanged.connect(lambda: on_change()) + right_widget.valueChanged.connect(lambda: on_change(None)) elif dtype == 'float' or dtype == Type.FLOAT: right_widget = Qt.QDoubleSpinBox() set_spin_box(right_widget, float) if on_change is not None: - right_widget.valueChanged.connect(lambda: on_change()) + right_widget.valueChanged.connect(lambda: on_change(None)) elif dtype == 'bool' or dtype == Type.BOOL: right_widget = Qt.QCheckBox() @@ -157,7 +157,7 @@ def set_spin_box(box, cast_func): raise ValueError(f"Cannot convert value {default_value} to a Boolean.") if on_change is not None: - right_widget.stateChanged[int].connect(lambda: on_change()) + right_widget.stateChanged[int].connect(lambda: on_change(None)) elif dtype == "choice" or dtype == Type.CHOICE: right_widget = Qt.QComboBox() @@ -165,13 +165,13 @@ def set_spin_box(box, cast_func): if valid_values: right_widget.addItems(valid_values) if on_change is not None: - right_widget.currentIndexChanged[int].connect(lambda: on_change()) + right_widget.currentIndexChanged[int].connect(lambda: on_change(None)) elif dtype == 'stack' or dtype == Type.STACK: from mantidimaging.gui.widgets.stack_selector import StackSelectorWidgetView right_widget = StackSelectorWidgetView(filters_view) if on_change is not None: - right_widget.currentIndexChanged[int].connect(lambda: on_change()) + right_widget.currentIndexChanged[int].connect(lambda: on_change(None)) elif dtype == 'button' or dtype == Type.BUTTON: left_widget = Qt.QPushButton(label) diff --git a/mantidimaging/gui/windows/operations/presenter.py b/mantidimaging/gui/windows/operations/presenter.py index 3c4eab68fbd..15f18692450 100644 --- a/mantidimaging/gui/windows/operations/presenter.py +++ b/mantidimaging/gui/windows/operations/presenter.py @@ -103,7 +103,7 @@ def set_preview_image_index(self, image_idx): preview_idx_spin.setValue(self.model.preview_image_idx) # Trigger preview updating - self.view.auto_update_triggered.emit() + self.view.auto_update_triggered.emit(None) def do_register_active_filter(self): filter_name = self.view.filterSelector.currentText() @@ -220,8 +220,7 @@ def _do_apply_filter_sync(self, apply_to): def do_update_previews(self): self.view.clear_previews() - # Disable preview image index scrollbox to prevent double-increase - self.view.previewImageIndex.setEnabled(False) + self.view.disable_spin_boxes() if self.stack is not None: stack_presenter = self.stack.presenter subset: Images = stack_presenter.get_image(self.model.preview_image_idx) @@ -255,8 +254,7 @@ def do_update_previews(self): # Ensure all of it is visible self.view.previews.auto_range() - # Enable preview image index box when preview has been created - self.view.previewImageIndex.setEnabled(True) + self.view.enable_spin_boxes() @staticmethod def _update_preview_image(image_data: Optional[np.ndarray], image: ImageItem): diff --git a/mantidimaging/gui/windows/operations/view.py b/mantidimaging/gui/windows/operations/view.py index dcea55ffed8..8e50089eda6 100644 --- a/mantidimaging/gui/windows/operations/view.py +++ b/mantidimaging/gui/windows/operations/view.py @@ -24,7 +24,7 @@ class FiltersWindowView(BaseMainWindowView): - auto_update_triggered = Qt.pyqtSignal() + auto_update_triggered = Qt.pyqtSignal(object) splitter: QSplitter collapseToggleButton: QPushButton @@ -66,7 +66,7 @@ def __init__(self, main_window: 'MainWindowView'): # Handle stack selection self.stackSelector.stack_selected_uuid.connect(self.presenter.set_stack_uuid) - self.stackSelector.stack_selected_uuid.connect(self.auto_update_triggered.emit) + self.stackSelector.stack_selected_uuid.connect(lambda: self.auto_update_triggered.emit(None)) # Handle apply filter self.applyButton.clicked.connect(lambda: self.presenter.notify(PresNotification.APPLY_FILTER)) @@ -113,7 +113,7 @@ def cleanup(self): def show(self): super(FiltersWindowView, self).show() - self.auto_update_triggered.emit() + self.auto_update_triggered.emit(None) def handle_filter_selection(self, filter_name: str): """ @@ -131,7 +131,7 @@ def handle_filter_selection(self, filter_name: str): # Update preview on filter selection (on the off chance the default # options are valid) - self.auto_update_triggered.emit() + self.auto_update_triggered.emit(None) def on_auto_update_triggered(self): """ @@ -288,3 +288,10 @@ def toggle_filters_section(self): else: self.splitter.setSizes([200, 9999]) self.collapseToggleButton.setText("<<") + + def disable_spin_boxes(self): + self.previewImageIndex.setEnabled(False) + print(self.filterPropertiesLayout) + + def enable_spin_boxes(self): + self.previewImageIndex.setEnabled(True)