feat: lazy refresh model on page change (WIP)

This commit is contained in:
aclist committed 2026-01-01 02:41:05 +09:00
1 parent 72c1081b48
commit e7735e0472
5 files changed
+62 -6

No files matched your search

+20
View File
@@ -307,6 +307,7 @@ class Controller:
def show_developers_page(self) -> None:
self.open_page(NotebookPage.DEVELOPERS)
# TODO: focus first row
def open_page(self, page: NotebookPage) -> None:
self.mediator.grid.notebook.set_page_by_enum(page)
@@ -593,3 +594,22 @@ class Controller:
def get_crumbs_cache(self) -> None:
return self.crumbs_cache
self.crumbs_cache = text
def refresh_tree(self) -> None:
treeview = self.mediator.notebook.servers.get_active_treeview()
treeview.set_loaded(False)
self.populate_model()
def populate_model(self) -> None:
# TODO: always use same server model, store in servertreeview class
treeview = self.mediator.notebook.servers.get_active_treeview()
if treeview.get_loaded() is False:
new_model = self.model_manager.new_model()
func = treeview.get_query_func()
if func is not None:
model = treeview.get_model()
model.clear()
data = func()
model.append(data)
treeview.set_loaded(True)
self.update_server_status()
+4 -4
View File
@@ -89,10 +89,10 @@ class ModelManager:
self.filtered = None
self.success = True
def __new__(cls) -> Self:
if not hasattr(cls, "instance"):
cls.instance = super(ModelManager, cls).__new__(cls)
return cls.instance
#def __new__(cls) -> Self:
# if not hasattr(cls, "instance"):
# cls.instance = super(ModelManager, cls).__new__(cls)
# return cls.instance
def get_recent_store(self) -> ListStore:
return self.recent_store