feat: add interactive folder selection for CSV saves and stabilize cross-platform dependency locking

This commit is contained in:
jack
2026-06-18 10:30:51 -07:00
parent e545c245d7
commit 1119733929
5 changed files with 201 additions and 36 deletions
@@ -303,7 +303,8 @@ class DeviceController(QObject):
"""Read wafer memory in a background thread.
Uses the family code and port from the last detect.
Emits readResult on completion, then auto-chains to parseAndSaveData.
Emits readResult on completion; QML prompts for the save directory
before calling parseAndSaveData.
"""
if self._operation_in_progress:
self._append_log("Already busy — ignoring read request")
@@ -350,9 +351,7 @@ class DeviceController(QObject):
self._raw_bytes = data
self.readResult.emit({"success": True, "bytes": len(data)})
self._set_operation_progress(False)
# Auto-chain: read → parse → save (matches C# behavior).
# Parse runs on main thread — it's CPU-bound but bounded (~1s).
self.parseAndSaveData(family_code, port)
self._append_log("Memory read complete - choose save directory to save CSV")
self._save_status()
return
self._connection_status = "Disconnected"
@@ -489,6 +488,7 @@ class DeviceController(QObject):
return
self._append_log(f"Saved CSV: {csv_path}")
self._last_csv_path = csv_path
# Load data into the QAbstractTableModel
self._data_model.load_data(temp_data, cols)