Merge pull request #399 from aclist/feat/reaper-proc

feat: config parsers and reaper process monitor
This commit is contained in:
aclist authored and GitHub committed 2026-07-12 10:22:45 +09:00
commit 054fe968d1
25 files changed
+542 -177

No files matched your search

+18 -3
View File
@@ -12,8 +12,11 @@ import dzgui.api.servers as Servers
from dzgui.api.steam import (
connect,
get_remote_signatures,
get_app_allows_downloads,
get_app_name,
get_needs_update,
get_remote_signatures,
get_running_app,
load_to_menu,
subscribe,
)
@@ -32,8 +35,9 @@ from dzgui.const.constants import (
APPNAME_DAYZ,
APPNAME_DAYZ_EXP_HUMAN,
)
from dzgui.api.steam import is_dayz_running
from dzgui.const.enum import NotebookPage, Preferences
from dzgui.init.proc import is_dayz_running, is_steam_running
from dzgui.init.proc import is_steam_running
from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager
from dzgui.strings.dialogs import (
waiting_for_launch,
@@ -81,6 +85,7 @@ class Prerequisites:
mods: list[list[str]]
game_mode: bool
is_last_server: bool
allows_downloads: tuple[bool, str]
class ConnectionManager:
@@ -166,6 +171,15 @@ class ConnectionManager:
dayz_running = is_dayz_running()
running_app = get_running_app()
if running_app is not None:
allows_dl = get_app_allows_downloads(steam_path, running_app)
running_app_name = get_app_name(running_app)
allows_downloads = (allows_dl, running_app_name)
else:
allows_downloads = (True, "")
client_name = self.controller.get_steam_client_name()
client = self.controller.query_config(Preferences.CLIENT)
running = is_steam_running(client)
@@ -191,6 +205,7 @@ class ConnectionManager:
mods=remote_mods,
game_mode=game_mode,
is_last_server=is_last,
allows_downloads=allows_downloads,
)
func = StoredFunc(self.controller.open_connection_assistant, prereqs)
@@ -224,7 +239,7 @@ class ConnectionManager:
) -> tuple[list[list[str]], list[tuple[str, str, int, int]]]:
mods = Servers.get_rules(record)
steam_path = self.controller.query_config(Preferences.DEFAULT)
local = get_local_mod_ids(steam_path)
local = get_local_mod_ids(Path(steam_path))
alpha_mods: list[list[str]] = [
[
+2 -2
View File
@@ -60,7 +60,7 @@ class ModManager:
@call_on_thread(dialogs.fetching_mods)
def load_mods(self) -> None:
mods = get_delimited_mods(self.path)
mods = get_delimited_mods(Path(self.path))
if len(mods) < 1:
msg = self.format_mod_statusbar()
func = StoredFunc(lambda: self.emitter.emit("mods_updated", msg, 0))
@@ -141,7 +141,7 @@ class ModManager:
app_path_exp = PeFile.get_nested_app_path(steam_path, APPID_DAYZ_EXP)
symlink = app_path_exp / md5
symlink.unlink()
except PeFile.AppNotInstalledError:
except Exception:
pass
time.sleep(API_RATE_LIMIT)
+2 -3
View File
@@ -5,10 +5,9 @@ from typing import Callable, TYPE_CHECKING, Union
import dzgui.api.pefile as PeFile
from dzgui.api.mods import is_mission, get_custom_mods
from dzgui.api.steam import launch_offline
from dzgui.api.steam import is_dayz_running, launch_offline
from dzgui.const.constants import APP_NAME, APPID_DAYZ_EXP
from dzgui.const.enum import Preferences
from dzgui.init.proc import is_dayz_running
from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager
from dzgui.model.model_factory import ModelFactory
from dzgui.strings import dialogs
@@ -77,7 +76,7 @@ class OfflineManager:
window.set_sensitive(True)
self.emitter.emit("custom_mods_loaded", store, folder)
@call_on_thread(dialogs.waiting_for_launch)
@call_on_thread(dialogs.waiting_for_launch, show_cancel=True)
def launch(
self,
appid: int,