Compare commits

..
1 Commits
Author SHA1 Message Date
aclist 9354ed7df5 Merge fb36425083 into d3f64c1ba5 2026-05-18 21:24:02 +00:00
12 changed files with 29 additions and 20 deletions

No files matched your search

+1
View File
@@ -11,3 +11,4 @@ uv.lock
.coverage .coverage
pyapp-latest/ pyapp-latest/
dist/ dist/
cpython
+1 -1
View File
@@ -106,7 +106,7 @@ class A2SInfo:
def get_netmask() -> str: def get_netmask() -> str:
hostname = os.uname()[1] hostname = os.uname()[1]
i = socket.gethostbyname(f"{hostname}.local") i = socket.gethostbyname(hostname)
netmask = i.rsplit(".", 1)[0] netmask = i.rsplit(".", 1)[0]
return netmask return netmask
+1
View File
@@ -22,6 +22,7 @@ import gi
gi.require_version("Gtk", "3.0") gi.require_version("Gtk", "3.0")
from gi.repository.Gtk import main_quit # noqa E402 from gi.repository.Gtk import main_quit # noqa E402
# import dzgui.api.servers as Servers
if TYPE_CHECKING: if TYPE_CHECKING:
from dzgui.config.userprefs import UserPrefs from dzgui.config.userprefs import UserPrefs
from dzgui.controllers.mc import Controller from dzgui.controllers.mc import Controller
+6 -4
View File
@@ -125,8 +125,6 @@ class ServerModelManager:
@call_on_thread(dialog.scanning) @call_on_thread(dialog.scanning)
def dump_lan(self, port: int, early_abort: bool) -> None: def dump_lan(self, port: int, early_abort: bool) -> None:
self.first_iteration = True
servers = [] servers = []
ports = range(1, 256) ports = range(1, 256)
failure_func = StoredFunc(self._cleanup_on_failure) failure_func = StoredFunc(self._cleanup_on_failure)
@@ -141,11 +139,15 @@ class ServerModelManager:
res = future.result(timeout=LAN_TIMEOUT) res = future.result(timeout=LAN_TIMEOUT)
if res is None: if res is None:
continue continue
servers.append(res)
if early_abort is True: if early_abort is True:
# NOTE: on first non-empty hit, flag pending threads to close # NOTE: on first non-empty hit, flag pending threads to close
event.set() event.set()
break servers.append(res)
self.thread_man.set_cleanup_func(
StoredFunc(self._cleanup_on_success)
)
return
servers.append(res)
except Exception as e: except Exception as e:
logger.critical(e) logger.critical(e)
self.thread_man.set_cleanup_func(failure_func, destroy_first=True) self.thread_man.set_cleanup_func(failure_func, destroy_first=True)
+6 -4
View File
@@ -2,13 +2,15 @@ import json
from pathlib import Path from pathlib import Path
from typing import Any from typing import Any
def read_json(path: Path) -> Any: def read_json(path: Path) -> Any:
try: try:
with open(path, "r") as infile: with open(path, "r") as infile:
data = json.load(infile) try:
return data data = json.load(infile)
except Exception as e: return data
except json.decoder.JSONDecodeError as e:
raise e
except OSError as e:
raise e raise e
+1 -1
View File
@@ -101,7 +101,7 @@ build_corrupted = (
"Steam settings or DayZ installation may be corrupted. Try restarting Steam." "Steam settings or DayZ installation may be corrupted. Try restarting Steam."
) )
api_warn_msg = """No servers returned. Please wait and try again. api_warn_msg = """No servers returned. Please wait and try again.
This usually indicates a transitory network timeout. If this issue persists, your API key or network may be malfunctioning. If this issue persists, your API key may be defunct or your network is blocking requests.
""" """
server_timeout = "Timed out when querying server, check IP or try again later." server_timeout = "Timed out when querying server, check IP or try again later."
server_error = ( server_error = (
+1 -1
View File
@@ -262,8 +262,8 @@ class Grid(Gtk.Grid):
self.emitter.connect("server_page_toggled", self.toggle_filter_panels) self.emitter.connect("server_page_toggled", self.toggle_filter_panels)
# TODO: drop, use map/signal
def hide_widgets_on_init(self) -> None: def hide_widgets_on_init(self) -> None:
self.conpan.set_lan_visible(False)
self.right_panel.sel_panel.hide() self.right_panel.sel_panel.hide()
def toggle_filter_panels(self, emitter: "Emitter", state: bool) -> None: def toggle_filter_panels(self, emitter: "Emitter", state: bool) -> None:
+4 -2
View File
@@ -278,7 +278,9 @@ class ConnectPanel(Gtk.Box):
for el in self.lan, self.fav, self.add_panel: for el in self.lan, self.fav, self.add_panel:
self.add(el) self.add(el)
self.lan.set_visible(False)
def set_lan_visible(self, state: bool) -> None:
self.lan.set_visible(state)
def _on_lan_tab_toggled(self, emitter: "Emitter", state: bool) -> None: def _on_lan_tab_toggled(self, emitter: "Emitter", state: bool) -> None:
self.lan.set_visible(state) self.set_lan_visible(state)
+2 -2
View File
@@ -11,5 +11,5 @@ class ModsMixin:
self, tree: TreeView, path: Gtk.TreePath, column: Gtk.TreeViewColumn self, tree: TreeView, path: Gtk.TreePath, column: Gtk.TreeViewColumn
) -> None: ) -> None:
mod = self.get_value_at_index(2) path = self.get_focused_row_path() # type: ignore
self.controller.open_workshop_page(mod) # type: ignore self.controller.open_mod_page(path) # type: ignore
+1 -1
View File
@@ -17,7 +17,7 @@ from dzgui.views.trees.tree_server_mods import ServerModTreeView
import gi import gi
gi.require_version("Gtk", "3.0") gi.require_version("Gtk", "3.0")
from gi.repository import Gdk, Gtk # noqa E402 from gi.repository import Gdk, Gtk # type: ignore # noqa E402
if TYPE_CHECKING: if TYPE_CHECKING:
+4 -2
View File
@@ -162,8 +162,8 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
def _on_map(self, widget: Self) -> None: def _on_map(self, widget: Self) -> None:
# TODO: disable filter panel if current model is None # TODO: disable filter panel if current model is None
state = self.get_enum() is ServerTab.LAN if self.get_enum() is ServerTab.LAN:
self.emitter.emit("lan_tab_toggled", state) self.emitter.emit("lan_tab_toggled", True)
store = self.filter_man.get_map_store() store = self.filter_man.get_map_store()
@@ -178,6 +178,8 @@ class ServerTreeView(ContextMixin, TreeView): # type: ignore
# NOTE: removes queue checker for this tab # NOTE: removes queue checker for this tab
GLib.Source.remove(self.queue_id) GLib.Source.remove(self.queue_id)
self.emitter.disconnect(self.handler_id) self.emitter.disconnect(self.handler_id)
if self.get_enum() is ServerTab.LAN:
self.emitter.emit("lan_tab_toggled", False)
def _on_col_width_changed( def _on_col_width_changed(
self, col: Gtk.TreeViewColumn, width: GObject.ParamSpecInt self, col: Gtk.TreeViewColumn, width: GObject.ParamSpecInt
+1 -2
View File
@@ -9,7 +9,6 @@ root = Path(__file__).resolve().parents[1]
output = root.joinpath("dist") output = root.joinpath("dist")
pyapp_dir = root.joinpath("pyapp-latest") pyapp_dir = root.joinpath("pyapp-latest")
cpython = root.joinpath("build/cpython/airgapped.tar.gz")
builder = build.ProjectBuilder(root) builder = build.ProjectBuilder(root)
wheel = builder.build("wheel", output_directory=output) wheel = builder.build("wheel", output_directory=output)
@@ -34,7 +33,7 @@ env["PYAPP_PASS_LOCATION"] = "true"
env["PYAPP_SKIP_INSTALL"] = "true" env["PYAPP_SKIP_INSTALL"] = "true"
env["PYAPP_DISTRIBUTION_EMBED"] = "true" env["PYAPP_DISTRIBUTION_EMBED"] = "true"
env["PYAPP_FULL_ISOLATION"] = "true" env["PYAPP_FULL_ISOLATION"] = "true"
env["PYAPP_DISTRIBUTION_PATH"] = str(cpython) env["PYAPP_DISTRIBUTION_PATH"] = "cpython/airgapped.tar.gz"
env["PYAPP_DISTRIBUTION_PYTHON_PATH"] = "python/bin/python3" env["PYAPP_DISTRIBUTION_PYTHON_PATH"] = "python/bin/python3"
proc = subprocess.run(["cargo", "build", "--release"], env=env, cwd=pyapp_dir) proc = subprocess.run(["cargo", "build", "--release"], env=env, cwd=pyapp_dir)