From c4160bbbd8f91b45e5ad0d97e2d58146abcde57f Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sat, 16 May 2026 20:49:43 +0900 Subject: [PATCH] fix: zero-pad revision number --- dzgui/api/pefile.py | 15 ++++++++++----- dzgui/const/constants.py | 3 ++- dzgui/managers/connection.py | 4 ++-- dzgui/views/pages/options.py | 4 ++-- dzgui/views/pages/preconnect.py | 4 +--- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/dzgui/api/pefile.py b/dzgui/api/pefile.py index ff7a619..d9498eb 100644 --- a/dzgui/api/pefile.py +++ b/dzgui/api/pefile.py @@ -239,7 +239,7 @@ class FileVersion: major: int minor: int build: int - revision: int + revision: str @dataclass(slots=True, frozen=True) @@ -281,8 +281,11 @@ def parse_version_number(data: BinaryIO) -> FileVersion: minor = struct.unpack("> 16 & 0xFFFF major = struct.unpack("> 0 & 0xFFFF build = struct.unpack("> 0 & 0xFFFF - revision = struct.unpack("> 16 & 0xFFFF - return FileVersion(major, minor, build, revision) + # NOTE: 0-pad revision number + revision = str(struct.unpack("> 16 & 0xFFFF) + offset = 3 - len(revision) + padded = "0" * offset + revision + return FileVersion(major, minor, build, padded) def seek_to_hex(address: str, data: BinaryIO) -> None: @@ -311,7 +314,8 @@ def get_dayz_version(file: Path) -> DayZVersion: def dayz_version_to_str(v: DayZVersion) -> str: - return ".".join(str(el) for el in [v.major, v.minor, v.patch]) + return ".".join(el for el in list(map(str, [v.major, v.minor, v.patch]))) + # return ".".join(str(el) for el in [v.major, v.minor, v.patch]) def dayz_version_from_str(v: str) -> DayZVersion: @@ -452,5 +456,6 @@ def get_pretty_version(steam_path: Path, appid: int) -> str | None: vers = get_dayz_version(pe_file_path) dayz_version = dayz_version_to_str(vers) return dayz_version - except Exception: + except Exception as e: + print(e) return None diff --git a/dzgui/const/constants.py b/dzgui/const/constants.py index 47a0e5e..f536ec4 100644 --- a/dzgui/const/constants.py +++ b/dzgui/const/constants.py @@ -7,7 +7,8 @@ MIN_COUNT = 1048576 REQUEST_TIMEOUT = 10 APPNAME_DAYZ = "DayZ" -APPNAME_DAYZ_EXP = "DayZ Experimental" +APPNAME_DAYZ_EXP = "DayZ Exp" +APPNAME_DAYZ_EXP_HUMAN = "DayZ Experimental" DAYZ_BINARY = "DayZ_x64.exe" LIBRARYFOLDERS_PATH = "steamapps/libraryfolders.vdf" diff --git a/dzgui/managers/connection.py b/dzgui/managers/connection.py index 1a7f35b..43e2293 100644 --- a/dzgui/managers/connection.py +++ b/dzgui/managers/connection.py @@ -28,7 +28,7 @@ from dzgui.const.constants import ( APPID_DAYZ, APPID_DAYZ_EXP, APPNAME_DAYZ, - APPNAME_DAYZ_EXP, + APPNAME_DAYZ_EXP_HUMAN, ) from dzgui.const.enum import NotebookPage, Preferences from dzgui.init.proc import is_dayz_running, is_steam_running @@ -123,7 +123,7 @@ class ConnectionManager: self.appid = info.game_id self.record = record - builds = {APPID_DAYZ: APPNAME_DAYZ, APPID_DAYZ_EXP: APPNAME_DAYZ_EXP} + builds = {APPID_DAYZ: APPNAME_DAYZ, APPID_DAYZ_EXP: APPNAME_DAYZ_EXP_HUMAN} build = builds[self.appid] binary_missing = False required_mib = 0.0 diff --git a/dzgui/views/pages/options.py b/dzgui/views/pages/options.py index 4e35801..0ae777e 100644 --- a/dzgui/views/pages/options.py +++ b/dzgui/views/pages/options.py @@ -8,7 +8,7 @@ from dzgui.const.constants import ( APPID_DAYZ, APPID_DAYZ_EXP, APPNAME_DAYZ, - APPNAME_DAYZ_EXP, + APPNAME_DAYZ_EXP_HUMAN, FLATPAK_RUN_CMD, FLATPAK_SANDBOX, NO_EXPAND, @@ -173,7 +173,7 @@ class Options(Gtk.Box): version_rows = [ [LeftLabel(APPNAME_DAYZ), self.dayz_version_label], - [LeftLabel(APPNAME_DAYZ_EXP), self.dayz_exp_version_label], + [LeftLabel(APPNAME_DAYZ_EXP_HUMAN), self.dayz_exp_version_label], ] api_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) diff --git a/dzgui/views/pages/preconnect.py b/dzgui/views/pages/preconnect.py index 756209a..bad0cd4 100644 --- a/dzgui/views/pages/preconnect.py +++ b/dzgui/views/pages/preconnect.py @@ -200,8 +200,8 @@ class PreConnectionAssistant(Gtk.ScrolledWindow): ) for child in widgets: child.set_visible(True) - self.raise_window.set_visible(False) + self.raise_window.set_visible(False) self.raise_window.set_sensitive(False) self.ok.set_sensitive(True) self.ok.set_label(preconnect.update_mods) @@ -214,8 +214,6 @@ class PreConnectionAssistant(Gtk.ScrolledWindow): self.ok.emit("clicked") def _on_ok_clicked(self, button: Gtk.Button) -> None: - # TODO: cancel mod downloads - # sets some kind of global event listener self.controller.update_and_connect(self.raise_window.get_active()) def _on_back_clicked(self, button: Gtk.Button) -> None: