Commit Graph
4 Commits
Author SHA1 Message Date
leonarski_fandClaude Opus 5 54968a245f viewer: the file manager starts where the data is, and follows a dataset opened elsewhere
Build Packages / Create release (push) Successful in 18s
Build Packages / build:rugnux:aarch64 (cross) (push) Successful in 7m41s
Build Packages / build:rugnux-tgz (x86_64) (push) Successful in 8m36s
Build Packages / build:viewer-tgz:cpu (push) Successful in 10m51s
Build Packages / build:viewer-tgz:cuda (push) Successful in 11m28s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m37s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 15m40s
Build Packages / build:windows:nocuda (push) Successful in 16m50s
Build Packages / build:windows:cuda (push) Successful in 19m6s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 23m20s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 15m57s
Build Packages / build:rugnux:windows (push) Successful in 10m23s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 19m21s
Build Packages / Generate python client (push) Successful in 48s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 19m11s
Build Packages / Build documentation (push) Successful in 1m23s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 19m36s
Build Packages / build:rpm (rocky8) (push) Successful in 17m45s
Build Packages / build:rpm (rocky9) (push) Successful in 19m12s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 14m20s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 15m11s
Build Packages / Unit tests (push) Successful in 1h42m33s
Two things a beamline user did every session by hand. The browser's default root
now resolves JUNGFRAUJOCH_DATA_ROOT, then the root last used, then - for an SLS
account, which is eNNNNN against a pNNNNN group - /sls/mx/data/pNNNNN/raw, then
home. The environment variable stays the general mechanism and keeps precedence;
the account rule is there because it needs nothing rolled out to benefit from it.
Both go through DefaultRoot(), so a reset resolves them the same way a first run
does.

A dataset opened from the File menu or over D-Bus now expands and selects itself
in the browser when it lies inside the current root. Containment is tested on
resolved paths, so a sibling directory sharing a prefix is not inside it.

Neither says anything when it does not apply: an account that is not a beamline
one, a directory that is not there, a dataset outside the root - each is a bare
return, because for everyone who is not at this one facility the condition should
be invisible. Following never writes the root, so the location the user chose is
still the location they get back.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011GxZqDiFP3KqriBhNdcR56
2026-09-13 12:21:59 +02:00
leonarski_fandClaude Fable 5 7d872fd762 viewer: plot choices persist per dataset kind, and settings reset live
The dataset-info plot remembers the selected quantity and the Grid/Per-image
toggle states across restarts, with grid scans and standard scans each
keeping their own favourite (QSettings groups datasetInfoPlot/gridScan and
/standard). Choices are stored as the combo item's data code, not its index,
so a saved choice survives the plot list changing and a code no longer
offered falls back to the first item. Favourites are saved on every explicit
user action and applied whenever a dataset of the other kind loads; loads of
the same kind keep the in-session state, and the live-source default still
wins until the user picks. The unconditional Grid auto-check on grid scans
moved into the favourite's default, so unchecking Grid on a grid dataset now
sticks.

View > "Reset all settings to defaults" clears the whole settings store after
confirmation and brings the running session to a first-start state in place:
default layout, window size, display settings (Indigo, Auto off, HDR off),
plot choices, and the file manager root. Because the live state then equals
the defaults, saving on close stays enabled and later changes persist as
usual.

File > Quit now closes the main window instead of calling
QApplication::quit(), so closeEvent runs and the persistent settings are
saved on that path too - previously they were saved only when the window was
closed by the window manager.

The file manager root persistence was audited and left unchanged: saved on
every successful change, restored behind JUNGFRAUJOCH_DATA_ROOT, and a
vanished directory falls back to the home directory.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WbjnQhutnboy4qbxwmgDAX
2026-09-13 10:16:55 +02:00
leonarski_fandClaude Opus 5 a7a4c28925 jfjoch_viewer: the inspector states the numbers it used to hide
Build Packages / Unit tests (push) Successful in 49m15s
Build Packages / build:windows:nocuda (push) Successful in 18m5s
Build Packages / build:windows:cuda (push) Successful in 20m26s
Build Packages / build:viewer-tgz:cpu (push) Successful in 7m17s
Build Packages / build:viewer-tgz:cuda (push) Successful in 8m15s
Build Packages / build:rugnux-tgz (x86_64) (push) Successful in 6m57s
Build Packages / build:rugnux:windows (push) Successful in 10m56s
Build Packages / build:rugnux:aarch64 (cross) (push) Successful in 5m0s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m21s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m22s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 11m49s
Build Packages / build:rpm (rocky8) (push) Successful in 11m57s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 9m5s
Build Packages / XDS test (neggia plugin) (push) Successful in 5m45s
Build Packages / Generate python client (push) Successful in 10s
Build Packages / Build documentation (push) Successful in 36s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (JFJoch plugin) (push) Failing after 3h12m36s
Build Packages / XDS test (durin plugin) (push) Failing after 3h12m38s
Build Packages / DIALS test (push) Failing after 3h12m40s
Build Packages / build:rpm (ubuntu2204) (push) Failing after 3h12m42s
Build Packages / build:rpm (rocky9) (push) Failing after 3h12m44s
Build Packages / build:rpm (rocky9_sls9) (push) Failing after 3h12m46s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Failing after 3h12m48s
Build Packages / build:rpm (rocky9_nocuda) (push) Failing after 3h12m50s
Six changes to the desktop viewer, all in what it shows and what it is
called:

- The left-hand reprocessing panel is titled "Processing" (it sits next
  to "File manager"); the jobs panel that held that name is "Jobs".
- The file manager lists *.cbf beside the HDF5 datasets. A CBF is one
  frame per file and opening any of them opens its sweep, which is what
  the File > Open dialog already did.
- Image statistics: collection time, detector distance, beam centre and
  wavelength were in the dataset row's tooltip, where a number nobody
  hovers over is a number nobody reads. They are rows of their own, in
  the order a person asks for them - what the dataset is, how it was
  collected, then what this image contains. Source/instrument and sample
  are bold like every other value. The B-factor row is gone.
- A "Spots + background" plot: spot count on the left axis, background
  per pixel on the right, since a common scale would flatten one of
  them. The axis labels take the colour of their line - a legend costs
  exactly the vertical room those labels need at this dock height. It is
  what a live (HTTP) connection selects by default, until the user picks
  something else.
- Expanding the powder-calibration section no longer widens the settings
  panel past the space it has. Two buttons side by side cannot be
  narrower than both their labels, and a combo is never narrower than
  its longest entry - a 40-character cell in the calibrant list set the
  minimum width of the whole dock. One button per row, the cell in a
  tooltip, and both combos allowed to elide.
- The grid/per-image toggles both rebuild the metric selector now. The
  grid button did not, so leaving per-image mode through it left the
  per-image plot types listed - X-ray fluorescence offered as a metric
  of a grid scan - and their values were then read as per-dataset
  metrics. Each mode also remembers its own selection instead of
  carrying an index across two unrelated lists.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011oVDk7aukYqfPZBLHn5nGg
2026-09-11 22:07:54 +02:00
leonarski_fandClaude Sonnet 5 d24cdfcff4 jfjoch_viewer: navigation keys, one-shot auto-contrast, file manager panel, cleanup
* Dataset-info plot hover shows a horizontal crosshair alongside the existing
  vertical one, so a run of hovers reads as a level or a drift at a glance.
* `A` applies auto-contrast once instead of switching on persistent Auto mode
  (a new `oneShotAutoForeground()`, distinct from the toolbar's Auto toggle);
  pressing it a second time on the same image switches Auto on for good, and
  pressing it while Auto is already on leaves it on. The value itself comes
  from one `AutoForegroundValue()` shared with the continuous Auto path.
* `Home`/`End`/`Page Up`/`Page Down` navigate the dataset (first/last image,
  one image forward/back); claimed in the diffraction view's keyPressEvent
  before QGraphicsView's default handling, which otherwise eats them to
  scroll the viewport.
* Alt+wheel dataset navigation is removed - some window managers already
  took it before the app ever saw it, per the caveat that used to sit next
  to its entry in the shortcuts list.
* The image strip dock and its dedicated thumbnail-rendering machinery in
  the reading worker (SetThumbnail*, RenderThumbnail_i) are removed; it cost
  a lot and nothing else used any of it.
* Toolbar text: "Colour" -> "Color".
* Color map, Auto and HDR mode now persist across sessions, the same way the
  window layout already does.
* The Inspector's "Dataset:" path wraps at '/' (a zero-width space after
  each one) instead of being cut off when it doesn't fit one line.
* LoadFile no longer reopens an already-open file - it forwards straight to
  LoadImage instead - which was the likely cause of a D-Bus client's per-image
  navigation lagging behind the same navigation done via the grid-scan hover.
* New file-manager dock (left, tabbed with Settings via tabifyDockWidget):
  a directory tree filtered to *_master.h5/*_process.h5, rooted at
  JUNGFRAUJOCH_DATA_ROOT if set, else the last-browsed root, else the home
  directory. Most beamline users care about opening images, not
  reprocessing settings, so it's the tab raised by default. Its filter box
  narrows files only - a directory always passes - because filtering the
  directories too hid the matching files under any directory whose own name
  did not match, and hid the root's ancestors, which left the tree with no
  valid root index until the root was set again by hand.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PogHY7bWXV4bpctDPdyuDN
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 18:45:20 +02:00