PSP Sync: show friendly theme/DLC names instead of raw filenames
This commit is contained in:
+10
-3
@@ -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
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user