From 0e39b29c5d8f8d5004f5246cbc127c7d2c0cae4f Mon Sep 17 00:00:00 2001 From: atse Date: Thu, 27 Jun 2024 17:28:12 +0800 Subject: [PATCH] ctrl_panel: Pin down units for editable fields Avoids awkward value editing --- pytec/pytec/gui/view/param_tree.json | 47 +++++++++++----------------- pytec/tec_qt.py | 2 +- 2 files changed, 20 insertions(+), 29 deletions(-) diff --git a/pytec/pytec/gui/view/param_tree.json b/pytec/pytec/gui/view/param_tree.json index 397c846..04f9e9f 100644 --- a/pytec/pytec/gui/view/param_tree.json +++ b/pytec/pytec/gui/view/param_tree.json @@ -44,7 +44,7 @@ "children": [ { "name": "i_set", - "title": "Set Current", + "title": "Set Current (mA)", "type": "float", "value": 0, "step": 100, @@ -54,7 +54,6 @@ ], "triggerOnShow": true, "decimals": 6, - "suffix": "mA", "param": [ "pwm", "ch", @@ -65,7 +64,7 @@ }, { "name": "target", - "title": "Set Temperature", + "title": "Set Temperature (°C)", "type": "float", "value": 25, "step": 0.1, @@ -73,7 +72,7 @@ -273, 300 ], - "format": "{value:.4f} °C", + "format": "{value:.4f}", "param": [ "pid", "ch", @@ -93,7 +92,7 @@ "children": [ { "name": "max_i_pos", - "title": "Max Cooling Current", + "title": "Max Cooling Current (mA)", "type": "float", "value": 0, "step": 100, @@ -102,7 +101,6 @@ 0, 2000 ], - "suffix": "mA", "param": [ "pwm", "ch", @@ -113,7 +111,7 @@ }, { "name": "max_i_neg", - "title": "Max Heating Current", + "title": "Max Heating Current (mA)", "type": "float", "value": 0, "step": 100, @@ -122,7 +120,6 @@ 0, 2000 ], - "suffix": "mA", "param": [ "pwm", "ch", @@ -133,7 +130,7 @@ }, { "name": "max_v", - "title": "Max Absolute Voltage", + "title": "Max Absolute Voltage (V)", "type": "float", "value": 0, "step": 0.1, @@ -142,7 +139,6 @@ 5 ], "siPrefix": true, - "suffix": "V", "param": [ "pwm", "ch", @@ -164,7 +160,7 @@ "children": [ { "name": "t0", - "title": "T₀", + "title": "T₀ (°C)", "type": "float", "value": 25, "step": 0.1, @@ -172,7 +168,7 @@ -100, 100 ], - "format": "{value:.4f} °C", + "format": "{value:.4f}", "param": [ "s-h", "ch", @@ -183,12 +179,11 @@ }, { "name": "r0", - "title": "R₀", + "title": "R₀ (Ω)", "type": "float", "value": 10000, "step": 1, "siPrefix": true, - "suffix": "Ω", "param": [ "s-h", "ch", @@ -199,11 +194,10 @@ }, { "name": "b", - "title": "B", + "title": "B (K)", "type": "float", "value": 3950, "step": 1, - "suffix": "K", "decimals": 4, "param": [ "s-h", @@ -293,7 +287,7 @@ "children": [ { "name": "output_min", - "title": "Minimum", + "title": "Minimum (mA)", "type": "float", "step": 100, "limits": [ @@ -301,7 +295,6 @@ 2000 ], "decimals": 6, - "suffix": "mA", "param": [ "pid", "ch", @@ -312,7 +305,7 @@ }, { "name": "output_max", - "title": "Maximum", + "title": "Maximum (mA)", "type": "float", "step": 100, "limits": [ @@ -320,7 +313,6 @@ 2000 ], "decimals": 6, - "suffix": "mA", "param": [ "pid", "ch", @@ -340,11 +332,11 @@ "children": [ { "name": "target_temp", - "title": "Target Temperature", + "title": "Target Temperature (°C)", "type": "float", "value": 20, "step": 0.1, - "format": "{value:.4f} °C", + "format": "{value:.4f}", "pid_autotune": [ "target_temp", "ch" @@ -353,7 +345,7 @@ }, { "name": "test_current", - "title": "Test Current", + "title": "Test Current (mA)", "type": "float", "value": 0, "decimals": 6, @@ -362,7 +354,6 @@ -2000, 2000 ], - "suffix": "mA", "pid_autotune": [ "test_current", "ch" @@ -371,12 +362,12 @@ }, { "name": "temp_swing", - "title": "Temperature Swing", + "title": "Temperature Swing (°C)", "type": "float", "value": 1.5, "step": 0.1, "prefix": "±", - "format": "{value:.4f} °C", + "format": "{value:.4f}", "pid_autotune": [ "temp_swing", "ch" @@ -385,11 +376,11 @@ }, { "name": "lookback", - "title": "Lookback", + "title": "Lookback (s)", "type": "float", "value": 3.0, "step": 0.1, - "format": "{value:.4f} s", + "format": "{value:.4f}", "pid_autotune": [ "lookback", "ch" diff --git a/pytec/tec_qt.py b/pytec/tec_qt.py index fe75fab..373540a 100644 --- a/pytec/tec_qt.py +++ b/pytec/tec_qt.py @@ -267,7 +267,7 @@ class MainWindow(QtWidgets.QMainWindow): for inner_param, change, data in changes: if change == "value": if inner_param.opts.get("param", None) is not None: - if inner_param.opts.get("suffix", None) == "mA": + if inner_param.opts.get("title", None).endswith(" (mA)"): data /= 1000 # Given in mA thermostat_param = inner_param.opts["param"]