diff --git a/rugnux/RugnuxDefaults.h b/rugnux/RugnuxDefaults.h index 2f2442f03..a94b687eb 100644 --- a/rugnux/RugnuxDefaults.h +++ b/rugnux/RugnuxDefaults.h @@ -46,7 +46,7 @@ void ApplyRugnuxExperimentDefaults(DiffractionExperiment &experiment); // it to that lattice, and a stored space group skips the search outright. The CLI calls this and then // applies -C / -S (or a reference MTZ) on top; the viewer instead takes the crystal straight from its // settings panel, which clears both fields when "Unit cell known" is unticked - as it is when a file is -// opened. +// opened or a run's results are shown. void ClearStoredCrystal(DiffractionExperiment &experiment); // Scaling/merging defaults for the workflow. Several differ between rotation and stills because the diff --git a/viewer/JFJochViewerWindow.cpp b/viewer/JFJochViewerWindow.cpp index 2f85ebd3b..6fb7d2481 100644 --- a/viewer/JFJochViewerWindow.cpp +++ b/viewer/JFJochViewerWindow.cpp @@ -627,8 +627,11 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString reading_worker, &JFJochImageReadingWorker::FindCenter); connect(this, &JFJochViewerWindow::datasetReady, settingsPanel, &JFJochViewerSettingsDock::datasetLoaded); + // Both arrive after the datasetLoaded that fills the panel from the new file / run. connect(reading_worker, &JFJochImageReadingWorker::fileOpened, - settingsPanel, &JFJochViewerSettingsDock::fileOpened); + settingsPanel, &JFJochViewerSettingsDock::forgetStoredCrystal); + connect(reading_worker, &JFJochImageReadingWorker::snapshotsChanged, + settingsPanel, &JFJochViewerSettingsDock::forgetStoredCrystal); connect(this, &JFJochViewerWindow::imageReady, settingsPanel, &JFJochViewerSettingsDock::loadImage); connect(settingsPanel, &JFJochViewerSettingsDock::ringsFromCalibration, diff --git a/viewer/widgets/JFJochViewerSettingsDock.cpp b/viewer/widgets/JFJochViewerSettingsDock.cpp index 1a7dc456a..b953a1d5d 100644 --- a/viewer/widgets/JFJochViewerSettingsDock.cpp +++ b/viewer/widgets/JFJochViewerSettingsDock.cpp @@ -1022,7 +1022,7 @@ void JFJochViewerSettingsDock::datasetLoaded(std::shared_ptrsetChecked(false); // a change emits the experiment without the crystal } diff --git a/viewer/widgets/JFJochViewerSettingsDock.h b/viewer/widgets/JFJochViewerSettingsDock.h index f6f9faf58..3bed5212f 100644 --- a/viewer/widgets/JFJochViewerSettingsDock.h +++ b/viewer/widgets/JFJochViewerSettingsDock.h @@ -42,9 +42,9 @@ public: public slots: void datasetLoaded(std::shared_ptr dataset); - // A new file: the crystal it stores is shown but not used until "Known unit cell" is ticked, as a - // bare `rugnux` forgets it (ClearStoredCrystal). - void fileOpened(); + // A new file, or a run's results shown: the crystal they store is shown but not used until "Known + // unit cell" is ticked, as a bare `rugnux` forgets it (ClearStoredCrystal). + void forgetStoredCrystal(); void loadImage(std::shared_ptr image); void referenceLoaded(ReferenceMtzInfo info); // worker reports a (un)loaded reference MTZ // Dataset re-processing reads a stored HDF5 file, so it is unavailable on a live HTTP stream: diff --git a/viewer/windows/JFJochProcessingJobsWindow.cpp b/viewer/windows/JFJochProcessingJobsWindow.cpp index 9ff12cdb2..0ba1ddbe4 100644 --- a/viewer/windows/JFJochProcessingJobsWindow.cpp +++ b/viewer/windows/JFJochProcessingJobsWindow.cpp @@ -432,10 +432,9 @@ void JFJochProcessingJobsWindow::newJob(ProcessMode mode, CalibrationSelection c // // The cell and space group come from the settings panel and nowhere else: with "Unit cell known" // ticked they are indexed and merged with, unticked the panel clears both and the run determines - // them from the data (-C / -S versus bare `rugnux`). A newly opened file starts unticked - its stored - // crystal is shown but not used, as `rugnux` forgets it - so what a run uses is always the crystal - // shown on screen. A finished job's _process.h5 becoming the active snapshot does tick it with the - // run's crystal (a run that ended in P1 shows P1), which can be cleared before the next run. + // them from the data (-C / -S versus bare `rugnux`). A newly opened file, and a run's results when + // they are shown, start unticked - the crystal they store is shown but not used, as `rugnux` forgets + // it - so what a run uses is always the crystal ticked on screen. DiffractionExperiment experiment = inputs.experiment; const auto polarization = experiment.GetPolarizationFactor(); ApplyRugnuxExperimentDefaults(experiment);