[us-commits] [ehb54/ultrascan3] 6c91cf: Add gui_script commands for the UV-Vis module

emre brookes noreply at github.com
Fri Aug 7 10:02:49 MDT 2026


  Branch: refs/heads/ehb54-issue-994
  Home:   https://github.com/ehb54/ultrascan3
  Commit: 6c91cf6a276ec740abe198a0a3421a3eddd91daf
      https://github.com/ehb54/ultrascan3/commit/6c91cf6a276ec740abe198a0a3421a3eddd91daf
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-07 (Fri, 07 Aug 2026)

  Changed paths:
    M us_somo/develop/include/us_hydrodyn_dad.h
    M us_somo/develop/libus_somo.pro
    M us_somo/develop/src/us_hydrodyn.cpp
    M us_somo/develop/src/us_hydrodyn_dad.cpp
    A us_somo/develop/src/us_hydrodyn_dad_script.cpp
    M us_somo/develop/src/us_hydrodyn_dad_util.cpp
    M us_somo/develop/src/us_hydrodyn_script.cpp

  Log Message:
  -----------
  Add gui_script commands for the UV-Vis module

The UV-Vis module had no scripted path: gui_script knew nothing about it
and us_saxs_cmds_t does not reach it, so every change to the module could
only be exercised by hand in the GUI.

Add a "dad" command family to gui_script_run(): open, settimes,
lambdarange, lambdas, load, list, select, makealambda and save. Together
these load a wavelength list and an absorption matrix, build the A(t)
curves, make A(lambda) and write the results, with no interaction.

That needs the module to run without dialogs, so US_Hydrodyn_Dad gains a
script_mode plus the values dad_load() would otherwise prompt for. With
it set, the wavelength confirmation, the wavelength crop and the start
time and interval dialogs are all answered from the script. The
non-interactive entry points live in a new us_hydrodyn_dad_script.cpp.

Also add saxs_options iqscaleangstrom and iqscalenm, since whether q
values are converted from 1/nm on load was otherwise unreachable from a
script.

dad open reaches US_Hydrodyn_Saxs::dad() through the meta-object rather
than making the slot public, so no interface widens for scripting alone.

Fix an unrelated crash found by the first script run: US_Hydrodyn's
constructor initialises around thirty *_widget flags but misses
dad_widget, mals_widget and mals_saxs_widget, added later with those
windows, and nulls no window pointer. US_Hydrodyn_Saxs::dad(), mals()
and mals_saxs() test the flag and then dereference the matching window,
so an indeterminate read is a segmentation fault. Interactive runs
survive on zeroed heap; the headless run did not.

Refs ehb54/ultrascan-tickets#994

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>



To unsubscribe from these emails, change your notification settings at https://github.com/ehb54/ultrascan3/settings/notifications


More information about the us-commits mailing list