Source code for mafw.steering_gui.views.globals_editor

#  Copyright 2026 European Union
#  Author: Bulgheroni Antonio (antonio.bulgheroni@ec.europa.eu)
#  SPDX-License-Identifier: EUPL-1.2
"""Expose the globals editor fields required by the steering GUI.

:Author: Bulgheroni Antonio (antonio.bulgheroni@ec.europa.eu)
:Description: Provide input fields for the analysis metadata and flags managed by the controller.
"""

from __future__ import annotations

from PySide6.QtCore import Signal
from PySide6.QtWidgets import QCheckBox, QFormLayout, QLineEdit, QWidget

from mafw.steering_gui.utils import block_signals


[docs] class GlobalsEditor(QWidget): """Editor that exposes analysis metadata and global flags without touching the builder.""" analysis_name_changed = Signal(str) description_changed = Signal(str) new_only_changed = Signal(bool) create_standard_tables_changed = Signal(bool) def __init__(self, parent: QWidget | None = None) -> None: super().__init__(parent) self.analysis_name_edit = QLineEdit() self.description_edit = QLineEdit() self.new_only_checkbox = QCheckBox('Run only new data') self.new_only_checkbox.setChecked(False) self.create_standard_tables_checkbox = QCheckBox('Create standard tables') self.create_standard_tables_checkbox.setChecked(False) self.analysis_name_edit.textChanged.connect(self.analysis_name_changed) self.description_edit.textChanged.connect(self.description_changed) self.new_only_checkbox.toggled.connect(self.new_only_changed) self.create_standard_tables_checkbox.toggled.connect(self.create_standard_tables_changed) layout = QFormLayout() layout.addRow('Analysis Name', self.analysis_name_edit) layout.addRow('Description', self.description_edit) layout.addRow('', self.new_only_checkbox) layout.addRow('', self.create_standard_tables_checkbox) self.setLayout(layout)
[docs] def set_data( self, analysis_name: str | None, description: str | None, new_only: bool | None, create_standard_tables: bool | None, ) -> None: """Populate the widgets and avoid re-triggering their change signals.""" with block_signals( self.analysis_name_edit, self.description_edit, self.new_only_checkbox, self.create_standard_tables_checkbox, ): self.analysis_name_edit.setText(analysis_name or '') self.description_edit.setText(description or '') self.new_only_checkbox.setChecked(bool(new_only)) self.create_standard_tables_checkbox.setChecked(bool(create_standard_tables))
[docs] def current_values(self) -> tuple[str, str, bool, bool]: """Return the current UI values without normalizing them.""" return ( self.analysis_name_edit.text(), self.description_edit.text(), self.new_only_checkbox.isChecked(), self.create_standard_tables_checkbox.isChecked(), )