diff --git a/mkpfs/gui/panels/batch.py b/mkpfs/gui/panels/batch.py index e6db1c3..f7f4550 100644 --- a/mkpfs/gui/panels/batch.py +++ b/mkpfs/gui/panels/batch.py @@ -8,7 +8,7 @@ from ..batch_preview import BatchQueuePreview from ..i18n import tr from ..theme import _BORDER_BRIGHT -from ..widgets import NeonCheckbox, PathRow, SectionLabel +from ..widgets import NeonCheckbox, OptionRow, PathRow, SectionLabel from .base import BasePanel @@ -27,6 +27,7 @@ def __init__(self, parent: Any) -> None: """ self._src: ctk.StringVar = ctk.StringVar() self._out: ctk.StringVar = ctk.StringVar() + self._version: ctk.StringVar = ctk.StringVar(value="PS5") self._compress: ctk.BooleanVar = ctk.BooleanVar(value=True) self._overwrite: ctk.BooleanVar = ctk.BooleanVar(value=False) self._dry_run: ctk.BooleanVar = ctk.BooleanVar(value=False) @@ -72,13 +73,17 @@ def _build_controls(self, card: "GlassCard") -> None: # ruff: ignore[undefined- opt: ctk.CTkFrame = ctk.CTkFrame(card, fg_color="transparent") opt.grid(row=7, column=0, columnspan=2, sticky="ew", padx=16, pady=(0, 14)) - opt.columnconfigure((0, 1), weight=1) + opt.columnconfigure((0, 1, 2), weight=1) + + OptionRow(opt, tr("bt_version"), self._version, ["PS5", "PS4"], accent=self._accent).grid( + row=0, column=0, sticky="ew", padx=(0, 8), pady=(0, 8) + ) chk_left: ctk.CTkFrame = ctk.CTkFrame(opt, fg_color="transparent") - chk_left.grid(row=0, column=0, sticky="nw") + chk_left.grid(row=0, column=1, sticky="nw", padx=(8, 0)) chk_right: ctk.CTkFrame = ctk.CTkFrame(opt, fg_color="transparent") - chk_right.grid(row=0, column=1, sticky="nw", padx=(8, 0)) + chk_right.grid(row=0, column=2, sticky="nw", padx=(8, 0)) # Left column: Compression, Overwrite NeonCheckbox(chk_left, text=tr("bt_compress"), variable=self._compress, accent=self._accent).pack( @@ -111,6 +116,8 @@ def _run_command(self) -> None: "batch", src, out, + "--version", + self._version.get(), ] if not self._compress.get(): diff --git a/mkpfs/gui/panels/pack_file.py b/mkpfs/gui/panels/pack_file.py index 8448083..d759a50 100644 --- a/mkpfs/gui/panels/pack_file.py +++ b/mkpfs/gui/panels/pack_file.py @@ -9,7 +9,7 @@ from ..i18n import tr from ..metadata_preview import MetadataPreview from ..theme import _BORDER_BRIGHT -from ..widgets import GlassCard, NeonCheckbox, PathRow, SectionLabel +from ..widgets import GlassCard, NeonCheckbox, OptionRow, PathRow, SectionLabel from .base import BasePanel @@ -28,6 +28,7 @@ def __init__(self, parent: Any) -> None: """ self._src: ctk.StringVar = ctk.StringVar() self._out: ctk.StringVar = ctk.StringVar() + self._version: ctk.StringVar = ctk.StringVar(value="PS5") self._compress: ctk.BooleanVar = ctk.BooleanVar(value=True) self._temp_folder: ctk.StringVar = ctk.StringVar() self._metadata_preview: MetadataPreview | None = None @@ -86,6 +87,10 @@ def _build_controls(self, card: GlassCard) -> None: opt.grid(row=7, column=0, columnspan=2, sticky="ew", padx=16, pady=(0, 14)) opt.columnconfigure((0, 1), weight=1) + OptionRow(opt, tr("pkf_version"), self._version, ["PS5", "PS4"], accent=self._accent).grid( + row=0, column=0, sticky="ew", padx=(0, 8), pady=(0, 8) + ) + chk: ctk.CTkFrame = ctk.CTkFrame(opt, fg_color="transparent") chk.grid(row=0, column=1, sticky="nw", padx=(8, 0)) @@ -128,7 +133,7 @@ def _run_command(self) -> None: if not src or not out: self._emit(tr("pkf_err"), "error") return - args: list[str] = ["pack", "file", src, out] + args: list[str] = ["pack", "file", src, out, "--version", self._version.get()] if not self._compress.get(): args.append("--no-compress") if temp := self._temp_folder.get().strip(): diff --git a/mkpfs/gui/panels/pack_folder.py b/mkpfs/gui/panels/pack_folder.py index c25f011..4eb6c88 100644 --- a/mkpfs/gui/panels/pack_folder.py +++ b/mkpfs/gui/panels/pack_folder.py @@ -9,7 +9,7 @@ from ..i18n import tr from ..metadata_preview import MetadataPreview from ..theme import _BORDER_BRIGHT -from ..widgets import GlassCard, NeonCheckbox, PathRow, SectionLabel +from ..widgets import GlassCard, NeonCheckbox, OptionRow, PathRow, SectionLabel from .base import BasePanel @@ -28,6 +28,7 @@ def __init__(self, parent: Any) -> None: """ self._src: ctk.StringVar = ctk.StringVar() self._out: ctk.StringVar = ctk.StringVar() + self._version: ctk.StringVar = ctk.StringVar(value="PS5") self._compress: ctk.BooleanVar = ctk.BooleanVar(value=True) self._signed: ctk.BooleanVar = ctk.BooleanVar(value=False) self._verify_after: ctk.BooleanVar = ctk.BooleanVar(value=False) @@ -78,13 +79,17 @@ def _build_controls(self, card: GlassCard) -> None: ) opt: ctk.CTkFrame = ctk.CTkFrame(card, fg_color="transparent") opt.grid(row=7, column=0, columnspan=2, sticky="ew", padx=16, pady=(0, 14)) - opt.columnconfigure((0, 1), weight=1) + opt.columnconfigure((0, 1, 2), weight=1) + + OptionRow(opt, tr("pf_version"), self._version, ["PS5", "PS4"], accent=self._accent).grid( + row=0, column=0, sticky="ew", padx=(0, 8), pady=(0, 8) + ) chk_left: ctk.CTkFrame = ctk.CTkFrame(opt, fg_color="transparent") - chk_left.grid(row=0, column=0, sticky="nw") + chk_left.grid(row=0, column=1, sticky="nw", padx=(8, 0)) chk_right: ctk.CTkFrame = ctk.CTkFrame(opt, fg_color="transparent") - chk_right.grid(row=0, column=1, sticky="nw", padx=(8, 0)) + chk_right.grid(row=0, column=2, sticky="nw", padx=(8, 0)) # Left column: Compression, Signed NeonCheckbox(chk_left, text=tr("pf_compress"), variable=self._compress, accent=self._accent).pack( @@ -140,7 +145,7 @@ def _run_command(self) -> None: if not out: self._emit(tr("pf_err_out"), "error") return - args: list[str] = ["pack", "folder", src, out] + args: list[str] = ["pack", "folder", src, out, "--version", self._version.get()] if not self._compress.get(): args.append("--no-compress") if self._signed.get():