feat(wafer): introduce layout metadata modeling and shape resolution helpers

- Define WaferLayout subclass to wrap sensor lists with shape and size attributes.
- Add resolve_shape_and_size resolver to infer wafer shape/size from filename prefix or sensor count.
- Update Sensor dataclass to support dynamic side alignments and coordinates offsets.
- Expose waferShape and waferSize properties from SessionController for QML data-bindings.
This commit is contained in:
jack
2026-06-15 11:19:32 -07:00
parent 5b186df888
commit cea4fb782e
5 changed files with 217 additions and 37 deletions
+6 -12
View File
@@ -193,21 +193,15 @@ class FileBrowser(QObject):
# Fall back to CSV/header parsing if sidecar is malformed.
pass
meta = self._metadata_from_filename(csv_path)
parser_data, _ = self._parser.parse(str(csv_path))
if parser_data is not None:
wafer = parser_data.serial or ""
date_text = ""
if parser_data.serial:
meta.wafer = parser_data.serial
if parser_data.date != datetime.min:
date_text = CSVFileMetadata.format_date(parser_data.date)
return CSVFileMetadata(
wafer=wafer,
date=date_text,
chamber="",
notes="",
filename=str(csv_path),
)
meta.date = CSVFileMetadata.format_date(parser_data.date)
return self._metadata_from_filename(csv_path)
return meta
def _metadata_from_filename(self, csv_path: Path) -> CSVFileMetadata:
match = re.match(
@@ -238,7 +232,7 @@ class FileBrowser(QObject):
QStandardPaths.DocumentsLocation
)
base_dir = Path(documents_dir) if documents_dir else (Path.home() / "Documents")
return base_dir / "isc_data"
return base_dir / "ISC_DATA"
def _set_current_directory(self, directory: Path) -> None:
normalized = Path(directory)