diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 53a8b14..2aaf407 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -525,3 +525,13 @@ class Controller(GObject.GObject): def present_window(self) -> None: self.mediator.window.present_with_time(Gdk.CURRENT_TIME) + + def is_cancel_pending(self) -> bool: + if self.get_exit_event().is_set(): + return True + if self.get_cancel_event().is_set(): + self.clear_cancel_event() + return True + return False + + diff --git a/dzgui/managers/connection.py b/dzgui/managers/connection.py index a8f5cb2..9fefb74 100644 --- a/dzgui/managers/connection.py +++ b/dzgui/managers/connection.py @@ -278,8 +278,7 @@ class ConnectionManager: self.thread_man.show_cancel(False) self.thread_man.update_dialog(waiting_for_launch) while True: - # TODO: check cancel event - if self.controller.get_exit_event().is_set(): + if self.controller.is_cancel_pending(): # TODO: some facility to also close spawned steam process return if is_dayz_running(): @@ -298,11 +297,7 @@ class ConnectionManager: prefs = self.controller.get_prefs() for title, mod, stamp, size in self.missing_mods: - # TODO: check cancel and exit events - if self.controller.get_exit_event().is_set(): - return - if self.controller.get_cancel_event().is_set(): - self.controller.clear_cancel_event() + if self.controller.is_cancel_pending(): return enqueue_mod(mod, self.appid) time.sleep(3) @@ -316,12 +311,11 @@ class ConnectionManager: # NOTE: Steam updates mod chunks in parallel, will finish at the same time while mod_path.is_dir() is False: + if self.controller.is_cancel_pending(): + return time.sleep(1) while True: - if self.controller.get_exit_event().is_set(): - return - if self.controller.get_cancel_event().is_set(): - self.controller.clear_cancel_event() + if self.controller.is_cancel_pending(): return cur_size = get_mod_dir_size(mod_path) if cur_size == size: diff --git a/dzgui/model/servers.py b/dzgui/model/servers.py index a336409..1a61bba 100644 --- a/dzgui/model/servers.py +++ b/dzgui/model/servers.py @@ -138,13 +138,9 @@ class ServerModelManager: futures = [executor.submit(Servers.test_ip, i, port, event) for i in ports] for future in as_completed(futures): try: - if self.controller.get_exit_event().is_set(): + if self.controller.is_cancel_pending(): event.set() return - if self.controller.get_cancel_event().is_set(): - event.set() - self.controller.clear_cancel_event() - return res = future.result(timeout=LAN_TIMEOUT) if res is None: continue