summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorChristian Kolset <ckolset@colostate.edu>2026-07-29 13:03:24 -0600
committerChristian Kolset <ckolset@colostate.edu>2026-07-29 13:03:24 -0600
commitd9ca58e48cf92438087ac24ee261c2c4911316b1 (patch)
tree7d2b01d5703842b955b3e1f0ccb15f1f35274a43 /ui
parentb407a079000f6a4b04ecf38eca17c57719e7a7ec (diff)
Add editable device display name, persist it across profile save/load
DeviceInfo.name existed but was hardcoded per device type and never operator-editable. Adds a Display Name field to Add Device and makes the Info-tab Name field in the device config dialog editable, and threads the name through get_save_config()/ProfileManager.apply() so a custom name survives a .labdaq save/reload instead of reverting to the type default. Name is applied post-construction rather than as a constructor kwarg, since no device factory declares a "name" param. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Diffstat (limited to 'ui')
-rw-r--r--ui/add_device_dialog.py8
-rw-r--r--ui/config_dialog.py9
-rw-r--r--ui/windows/devices_window.py2
3 files changed, 17 insertions, 2 deletions
diff --git a/ui/add_device_dialog.py b/ui/add_device_dialog.py
index 2956a96..68ec3ad 100644
--- a/ui/add_device_dialog.py
+++ b/ui/add_device_dialog.py
@@ -299,6 +299,10 @@ class AddDeviceDialog(QDialog):
self._id_edit.setPlaceholderText("Leave blank for auto")
cfg_form.addRow("Device ID:", self._id_edit)
+ self._name_edit = QLineEdit()
+ self._name_edit.setPlaceholderText("Leave blank to use the default type name")
+ cfg_form.addRow("Display Name:", self._name_edit)
+
self._fmt_cb = QComboBox()
self._fmt_cb.addItems(list(_FORMAT_LABELS.keys()))
self._fmt_lbl = QLabel("Protocol / Format:")
@@ -449,6 +453,10 @@ class AddDeviceDialog(QDialog):
panel.set_simulate(sim)
dev = panel.build_device(dev_id)
+ display_name = self._name_edit.text().strip()
+ if display_name:
+ dev.info.name = display_name
+
self.created_device = dev
self.accept()
except Exception as e:
diff --git a/ui/config_dialog.py b/ui/config_dialog.py
index d9bc9df..5a95821 100644
--- a/ui/config_dialog.py
+++ b/ui/config_dialog.py
@@ -59,7 +59,14 @@ class DeviceConfigDialog(QDialog):
e = QLineEdit(str(v)); e.setReadOnly(True); return e
form.addRow("Device ID:", _ro(info.device_id))
- form.addRow("Name:", _ro(info.name))
+
+ def _on_name_edited():
+ info.name = name_edit.text().strip() or info.name
+ self.setWindowTitle(f"Configure — {info.name} [{info.device_id}]")
+
+ name_edit = QLineEdit(info.name)
+ name_edit.editingFinished.connect(_on_name_edited)
+ form.addRow("Name:", name_edit)
form.addRow("Type:", _ro(info.device_type))
form.addRow("Description:", _ro(info.description))
form.addRow("Manufacturer:", _ro(info.manufacturer))
diff --git a/ui/windows/devices_window.py b/ui/windows/devices_window.py
index ac9d13c..2c484e8 100644
--- a/ui/windows/devices_window.py
+++ b/ui/windows/devices_window.py
@@ -349,7 +349,7 @@ class DevicesWindow(QWidget):
dev = self.registry.get_instance(device_id)
if dev:
DeviceConfigDialog(dev, self).exec()
- self._ch_tab.refresh()
+ self.refresh() # rebuilds device rows (picks up a renamed display name) + Signals tab
self.device_reconfigured.emit(device_id)
def _on_remove(self, device_id: str):