The parameter SpinBoxes previously would only update if the interpreted
value was changed, missing cases where the text would have changed but
the value stays the same, e.g. removing trailing decimal zeros.
A faulty regular expression within PyQtGraph causes any Parameter with a
suffix that doesn't begin with an alphanumeric character (as matched
with \w) to act abnormally. For instance, entering "100 °C" into the
input boxes gets interpreted as 10 °C.
Patch the FLOAT_REGEX in PyQtGraph to simply match for any character in
the suffix group.
Instead of hiding the inactive control parameter, underline and bold the
active control parameter title, e.g. "Set Current" when control method
is constant current, and "Setpoint" when it is temperature PID.
* Remove unnecessary duplication of `THERMOSTAT_PARAMETERS`
* i -> ch
* Separate ParameterTree and Parameter initiation
* Remove extra "channel" option to root parameters, as the "value"
option is already the channel number
User input always has the same order of magnitude, so allowing multiple
siPrefixes would be unwanted complexity. Don't allow them to be changed.
The Parameter option "noUnitEditing" is added to do so by the following
measures:
1. Don't validate for changed siPrefix (if pinned) and suffix, which
avoids their removal.
2. Avoid getting the cursor embedded within the unit.
Remove all instances of mA scaling scattered all around the code and
specify it in the parameter tree with a single source of truth.
Done by adding the option "pinSiPrefix" for all Parameters of type `int`
or `float`, and using it for current Parameters with unit "mA".
Use a `dict` to map values to thermostat parameters, which correspond to
the `set_param` parameters in the pytec client. New tag
"thermostat:set_param" used in JSON.
- Bugs fix:
1. Params Tree user input will not get overwritten
by incoming report thermostat_data_model.
2. PID Autotune Sampling Period is now set according to Thermostat sampling interval
3. PID Autotune won't get stuck in Fail State
4. Various types disconnection related Bugs
5. Number of Samples stored in the plot cannot be set
6. Limit the max settable output current to be 2000mA
- Improvement:
1. Params Tree settings can be changed with external json
2. Use a Tab system to show a single channel of config instead of two
3. Expose PID Autotune lookback params
4. Icon is changed to Artiq logo
- Restructure:
1. Restructure the code to follow Model-View-Delegate Design Pattern
Also:
* Add aioclient
The old client is synchronous and blocking, and the only way to achieve
true asynchronous IO is to create a new client that interfaces with
asyncio.
* Finish Nix Flake description and make the GUI available for `nix run`