fix: fill model inside thread

This commit is contained in:
aclist 2026-06-08 19:27:40 +09:00
parent 4b9687a84d
commit b17b8c24ff
6 changed files with 15 additions and 13 deletions

View File

@ -291,7 +291,7 @@ class Controller(GObject.GObject):
dialog = ExceptionDialog(self, str(e))
dialog.run()
def set_custom_folder(self) -> "Path" | None:
def set_custom_folder(self) -> Union["Path", None]:
picker = FolderPicker(self.mediator.window)
return picker.pick_folder()

View File

@ -61,12 +61,14 @@ class ModManager:
self.thread_man.set_cleanup_func(func)
return
func = StoredFunc(self._on_mods_loaded, mods)
self.thread_man.set_cleanup_func(func)
def _on_mods_loaded(self, mods: list[list[Any]]) -> None:
self.store = ModelFactory().make_mod_store()
self.store.extend(mods)
func = StoredFunc(self._on_mods_loaded)
self.thread_man.set_cleanup_func(func)
# def _on_mods_loaded(self, mods: list[list[Any]]) -> None:
def _on_mods_loaded(self) -> None:
self.treeview.set_model(self.store)
msg = self.format_mod_statusbar()
total_mods = len(self.store)

View File

@ -23,6 +23,7 @@ from dzgui.views.pages.help import Help
from dzgui.views.pages.keys import Keybindings
from dzgui.views.pages.log import Log
from dzgui.views.pages.mods import Mods
from dzgui.views.pages.offline import OfflineLoader
from dzgui.views.pages.options import Options
from dzgui.views.pages.preconnect import PreConnectionAssistant
from dzgui.views.pages.servers import ServerNotebook
@ -110,8 +111,6 @@ class Notebook(ScrollableMixin, Gtk.Notebook): # type: ignore
self.connection = PreConnectionAssistant(MainController)
from dzgui.views.pages.offline import OfflineLoader
self.offline = OfflineLoader(MainController)
self.pages = {

View File

@ -15,13 +15,13 @@ class Mods(NoOverlayScrolledWindow):
def __init__(self, controller: "Controller") -> None:
super().__init__()
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.controller = controller
self.emitter = controller.get_emitter()
self.tree = ModTreeView(controller)
self.tree.set_vexpand(True)
self.controller = controller
self.controller.register_widget("modtreeview", self.tree)
self.emitter = controller.get_emitter()
self.offline_button = Gtk.Button(
label="Play offline",
halign=Gtk.Align.START,
@ -30,11 +30,11 @@ class Mods(NoOverlayScrolledWindow):
)
self.offline_button.connect("clicked", self._on_offline_clicked)
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.box.add(self.offline_button)
self.box.add(self.tree)
self.add(self.box)
self.controller.register_widget("modtreeview", self.tree)
self.connect("map", self._on_map)
self.connect("unmap", self._on_unmap)

View File

@ -4,6 +4,7 @@ from typing import Any, TYPE_CHECKING
from dzgui.const.constants import APP_NAME, HEX_RED
from dzgui.const.enum import ContextMenuGroup
from dzgui.util import strings, localize
from dzgui.views.mixins.cursor_mixin import CursorMixin
from dzgui.views.mixins.context_mixin import ContextMixin
from dzgui.views.mixins.mods_mixin import ModsMixin
from dzgui.views.trees.tree_base import TreeView

View File

@ -4,7 +4,7 @@ description = "DayZ server browser and mod manager for Linux"
authors = [
{name = "aclist"}
]
version = "7.0.0b10"
version = "7.0.0b12"
license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
readme = "README.md"