PSP Sync: show friendly theme/DLC names instead of raw filenames

This commit is contained in:
2026-09-08 22:51:36 -04:00
parent 46c675ce79
commit 62ce4b1913
2 changed files with 27 additions and 11 deletions
+15 -8
View File
@@ -2603,6 +2603,7 @@ class PspSyncPage(QWidget):
self._library_items = [] self._library_items = []
self._lib_raw = {} self._lib_raw = {}
self._lib_norm = {} self._lib_norm = {}
self._lib_path_name = {}
self._gen = 0 self._gen = 0
self._umd_gen = 0 self._umd_gen = 0
self._umd_iso = None self._umd_iso = None
@@ -2694,15 +2695,20 @@ class PspSyncPage(QWidget):
self._library_items = list(items or []) self._library_items = list(items or [])
self._lib_raw = {} self._lib_raw = {}
self._lib_norm = {} self._lib_norm = {}
self._lib_path_name = {}
for it in self._library_items: for it in self._library_items:
label = it.get("canonical") or it.get("name") or "" label = it.get("canonical") or it.get("name") or ""
if not label: if label:
continue stem = Path(label).stem
stem = Path(label).stem self._lib_raw.setdefault(stem.lower(), it)
self._lib_raw.setdefault(stem.lower(), it) n = matcher.normalize_name(stem)
n = matcher.normalize_name(stem) if n:
if n: self._lib_norm.setdefault(n, it)
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._filter_sync()
self._populate(self._inventory) self._populate(self._inventory)
@@ -3075,8 +3081,9 @@ class PspSyncPage(QWidget):
table.setItem(row, 3, QTableWidgetItem(added)) table.setItem(row, 3, QTableWidgetItem(added))
table.setItem(row, 4, NumericItem(f"{size / (1024 * 1024):.1f} MB" if size else "", size)) table.setItem(row, 4, NumericItem(f"{size / (1024 * 1024):.1f} MB" if size else "", size))
elif kind == "dlc": 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, 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, 3, QTableWidgetItem(added))
table.setItem(row, 4, NumericItem(f"{size / (1024 * 1024):.1f} MB" if size else "", size)) table.setItem(row, 4, NumericItem(f"{size / (1024 * 1024):.1f} MB" if size else "", size))
else: else:
+12 -3
View File
@@ -222,7 +222,7 @@ def _pkg_items(root):
def _theme_items(root): def _theme_items(root):
"""Installed themes (``PSP/THEME/*.ptf``).""" """Installed themes (``PSP/THEME/*.ptf``), named from the PTF header."""
items = [] items = []
theme_dir = root / "PSP" / "THEME" theme_dir = root / "PSP" / "THEME"
if theme_dir.is_dir(): if theme_dir.is_dir():
@@ -231,8 +231,17 @@ def _theme_items(root):
except OSError: except OSError:
return items return items
for path in entries: for path in entries:
if path.is_file() and path.suffix.lower() == ".ptf": if not path.is_file() or path.suffix.lower() != ".ptf":
items.append(_file_item(path, "theme")) 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 return items