From 5eb89a172d01573d9476cb7688f576b879eb7b52 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 19 Aug 2026 15:46:02 +0900 Subject: [PATCH] feat: add DebugDialog to preconnect --- dzgui/api/steam.py | 16 ++++++++++++++++ dzgui/controllers/mc.py | 3 +++ dzgui/managers/connection.py | 8 ++++++++ dzgui/views/pages/preconnect.py | 12 ++++++++++++ 4 files changed, 39 insertions(+) diff --git a/dzgui/api/steam.py b/dzgui/api/steam.py index c5b0074..6139e9a 100644 --- a/dzgui/api/steam.py +++ b/dzgui/api/steam.py @@ -150,6 +150,22 @@ def get_remote_signatures(mods: list[str]) -> list[tuple[str, str, int, int]]: return hashes +def connect_debug(client: str, addr: str, appid: int, name: str, mods: list[str]) -> str: + concat = concat_mods(mods) + client_args = concat_bash_args(client) + params = [ + "-applaunch", + str(appid), + f"-connect={addr}", + "-nolauncher", + "-nosplash", + "-skipintro", + f"-name={name}", + f"-mod={concat}", + ] + client_args.extend(params) + return " ".join(client_args) + # TODO: set config to name=user, use official server and no mods, # ensure that formatted string is identical to fixture with same hash def connect(client: str, addr: str, appid: int, name: str, mods: list[str]) -> int: diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index b8b69fc..e6af0d6 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -526,6 +526,9 @@ class Controller(GObject.GObject): ind = self.config_man.get_start_tab() self.get_servers().notebook.set_current_page(ind) + def get_debug_args(self) -> str: + return self.connection_man.get_debug_args() + def update_and_load_to_menu(self) -> None: self.connection_man.update_and_connect(menu_only=True) diff --git a/dzgui/managers/connection.py b/dzgui/managers/connection.py index 9baf109..44cde10 100644 --- a/dzgui/managers/connection.py +++ b/dzgui/managers/connection.py @@ -13,6 +13,7 @@ from dzgui.api.shortcuts import Shortcuts from dzgui.api.steam import ( connect, + connect_debug, get_app_allows_downloads, get_app_name, get_needs_update, @@ -304,6 +305,13 @@ class ConnectionManager: dialog.set_secondary_text(kb.DZG_006) dialog.run() + def get_debug_args(self) -> str: + addr = f"{self.record.ip}:{self.record.gameport}" + playername = self.controller.query_config(Preferences.NAME) + return connect_debug( + self.client, addr, self.appid, playername, self.remote_mod_ids + ) + def _connect_steam(self, menu_only: bool) -> None: addr = f"{self.record.ip}:{self.record.gameport}" playername = self.controller.query_config(Preferences.NAME) diff --git a/dzgui/views/pages/preconnect.py b/dzgui/views/pages/preconnect.py index 2e07de0..b9f7bd9 100644 --- a/dzgui/views/pages/preconnect.py +++ b/dzgui/views/pages/preconnect.py @@ -11,6 +11,7 @@ from dzgui.util.keys import is_ctrl_mask from dzgui.util.localize import number from dzgui.strings.server_mods import checkmark from dzgui.strings import preconnect +from dzgui.views.dialogs.generic import DebugDialog from dzgui.views.components.frame import HeadingFrame from dzgui.views.trees.tree_server_mods import ServerModTreeView @@ -120,6 +121,12 @@ class PreConnectionAssistant(Gtk.Box): spacing=5, ) box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5) + # TODO: + if self.controller.get_prefs().is_debug: + # TODO: strings + debug = Gtk.Button(label="Debug", halign=Gtk.Align.START) + debug.connect("clicked", self._on_debug_clicked) + box.add(debug) for button in self.back, self.ok, self.connect_last: box.add(button) self.button_box.add(box) @@ -221,6 +228,11 @@ class PreConnectionAssistant(Gtk.Box): def _on_connect_last_clicked(self, button: Gtk.Button) -> None: self.controller.update_and_load_to_menu() + def _on_debug_clicked(self, button: Gtk.Button) -> None: + args = self.controller.get_debug_args() + d = DebugDialog(self.controller, args) + d.run() + def _on_ok_clicked(self, button: Gtk.Button) -> None: self.controller.update_and_connect()