CI / lint (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
The panels kept the effective detector distance, resolution and transmission in their own attributes, and a sample change overwrote those from the spreadsheet whatever the Database/User toggle said. The fields went on showing the user's numbers while the scan request carried the database ones, so a value had to be re-entered after every mount. The fields are now the only place a value lives. Each setting is worth, in order: what the user typed while "User values" is selected, what the mounted sample asks for, the panel default - one rule, ScanSettingsPanel ._setting, that each panel spells out a line at a time. Overrides are per setting, so a setting the user did not touch keeps following the sample. Along the way: * DbOverrideLineEdit is gone; the panels use NumberLineEdit directly, and the per-widget database/user bookkeeping is replaced by SampleParameters, the one place that knows the aareDB spreadsheet column names. * The (name, widget, converter) mapping loops with getattr/hasattr are replaced by explicit per-field commit slots. * The omega speed cap no longer drives one field's validator from another field's value: it is a read-out plus a check on the pair at Run time. * _add_row/_add_pair_row build the label/field/unit rows, which also puts the Total angle degree sign on its own row instead of the header above. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JHoUkj66jxByS2ypY5h9Mn