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
+15 -1
View File
@@ -120,10 +120,25 @@ class Index:
self._generateNovelModel(tHandle) self._generateNovelModel(tHandle)
return self._novelModels.get(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: def _generateNovelModel(self, tHandle: str) -> None:
"""Generate a novel model for a specific handle.""" """Generate a novel model for a specific handle."""
if (item := SHARED.project.tree[tHandle]) and item.isRootType() and item.isNovelLike(): if (item := SHARED.project.tree[tHandle]) and item.isRootType() and item.isNovelLike():
model = NovelModel() model = NovelModel()
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): for handle in SHARED.project.tree.subTree(tHandle):
if ( if (
(node := self._itemIndex[handle]) (node := self._itemIndex[handle])
@@ -131,7 +146,6 @@ class Index:
and node.item.isActive and node.item.isActive
): ):
model.append(node) model.append(node)
self._novelModels[tHandle] = model
return return
## ##
+3 -1
View File
@@ -323,7 +323,9 @@ class GuiNovelToolBar(QWidget):
@pyqtSlot() @pyqtSlot()
def _refreshNovelTree(self) -> None: def _refreshNovelTree(self) -> None:
"""Rebuild the current tree.""" """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 return
@pyqtSlot() @pyqtSlot()