Allow novel model refresh
This commit is contained in:
@@ -120,20 +120,34 @@ 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()
|
||||||
for handle in SHARED.project.tree.subTree(tHandle):
|
self._appendSubTreeToModel(tHandle, model)
|
||||||
if (
|
|
||||||
(node := self._itemIndex[handle])
|
|
||||||
and node.item.isDocumentLayout()
|
|
||||||
and node.item.isActive
|
|
||||||
):
|
|
||||||
model.append(node)
|
|
||||||
self._novelModels[tHandle] = model
|
self._novelModels[tHandle] = model
|
||||||
return
|
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
|
# Public Methods
|
||||||
##
|
##
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user