diff --git a/app/gui.py b/app/gui.py index 98388bb..19685dc 100644 --- a/app/gui.py +++ b/app/gui.py @@ -2603,6 +2603,7 @@ class PspSyncPage(QWidget): self._library_items = [] self._lib_raw = {} self._lib_norm = {} + self._lib_path_name = {} self._gen = 0 self._umd_gen = 0 self._umd_iso = None @@ -2694,15 +2695,20 @@ class PspSyncPage(QWidget): self._library_items = list(items or []) self._lib_raw = {} self._lib_norm = {} + self._lib_path_name = {} for it in self._library_items: label = it.get("canonical") or it.get("name") or "" - if not label: - continue - stem = Path(label).stem - self._lib_raw.setdefault(stem.lower(), it) - n = matcher.normalize_name(stem) - if n: - self._lib_norm.setdefault(n, it) + if label: + stem = Path(label).stem + self._lib_raw.setdefault(stem.lower(), it) + n = matcher.normalize_name(stem) + if n: + self._lib_norm.setdefault(n, it) + # Map the on-disk filename to the friendly name for themes/DLC + # (the PSP only stores the raw file, so resolve names by filename). + p = it.get("path") or "" + if p: + self._lib_path_name.setdefault(Path(p).name.lower(), label) self._filter_sync() self._populate(self._inventory) @@ -3075,8 +3081,9 @@ class PspSyncPage(QWidget): table.setItem(row, 3, QTableWidgetItem(added)) table.setItem(row, 4, NumericItem(f"{size / (1024 * 1024):.1f} MB" if size else "", size)) elif kind == "dlc": + friendly = self._lib_path_name.get((it.get("name") or "").lower()) table.setItem(row, 1, QTableWidgetItem(it.get("id") or "")) - table.setItem(row, 2, name) + table.setItem(row, 2, QTableWidgetItem(friendly or it.get("name") or "")) table.setItem(row, 3, QTableWidgetItem(added)) table.setItem(row, 4, NumericItem(f"{size / (1024 * 1024):.1f} MB" if size else "", size)) else: diff --git a/app/psp.py b/app/psp.py index 64b731d..62bd1da 100644 --- a/app/psp.py +++ b/app/psp.py @@ -222,7 +222,7 @@ def _pkg_items(root): def _theme_items(root): - """Installed themes (``PSP/THEME/*.ptf``).""" + """Installed themes (``PSP/THEME/*.ptf``), named from the PTF header.""" items = [] theme_dir = root / "PSP" / "THEME" if theme_dir.is_dir(): @@ -231,8 +231,17 @@ def _theme_items(root): except OSError: return items for path in entries: - if path.is_file() and path.suffix.lower() == ".ptf": - items.append(_file_item(path, "theme")) + if not path.is_file() or path.suffix.lower() != ".ptf": + continue + item = _file_item(path, "theme") + try: + from . import theme as theme_mod + name = theme_mod.ptf_name(path) + except Exception: # noqa: BLE001 + name = "" + if name: + item["name"] = name + items.append(item) return items