Allow novel model refresh

This commit is contained in:
Veronica Berglyd Olsen
2025-03-22 16:51:10 +01:00
parent cf42eeeae3
commit edf765f91f
2 changed files with 24 additions and 8 deletions
+21 -7
View File
@@ -120,20 +120,34 @@ class Index:
self._generateNovelModel(tHandle)
return self._novelModels.get(tHandle)
def refreshNovelModel(self, tHandle: str) -> None:
"""Refresh a novel model."""
if model := self.getNovelModel(tHandle):
model.beginResetModel()
model.clear()
self._appendSubTreeToModel(tHandle, model)
model.endResetModel()
return
def _generateNovelModel(self, tHandle: str) -> None:
"""Generate a novel model for a specific handle."""
if (item := SHARED.project.tree[tHandle]) and item.isRootType() and item.isNovelLike():
model = NovelModel()
for handle in SHARED.project.tree.subTree(tHandle):
if (
(node := self._itemIndex[handle])
and node.item.isDocumentLayout()
and node.item.isActive
):
model.append(node)
self._appendSubTreeToModel(tHandle, model)
self._novelModels[tHandle] = model
return
def _appendSubTreeToModel(self, tHandle: str, model: NovelModel) -> None:
"""Append all active novel documents to a novel model."""
for handle in SHARED.project.tree.subTree(tHandle):
if (
(node := self._itemIndex[handle])
and node.item.isDocumentLayout()
and node.item.isActive
):
model.append(node)
return
##
# Public Methods
##
+3 -1
View File
@@ -323,7 +323,9 @@ class GuiNovelToolBar(QWidget):
@pyqtSlot()
def _refreshNovelTree(self) -> None:
"""Rebuild the current tree."""
self.novelView.setCurrentNovel(SHARED.project.data.getLastHandle("novelTree"))
if rootHandle := self.novelValue.handle:
SHARED.project.index.refreshNovelModel(rootHandle)
# self.novelView.setCurrentNovel(SHARED.project.data.getLastHandle("novelTree"))
return
@pyqtSlot()