Refresh model when document heading count changes

This commit is contained in:
Veronica Berglyd Olsen
2025-03-22 21:10:01 +01:00
parent 9990ebf193
commit ef652355bf
6 changed files with 59 additions and 81 deletions
-11
View File
@@ -115,7 +115,6 @@ class GuiDocEditor(QPlainTextEdit):
editedStatusChanged = pyqtSignal(bool)
itemHandleChanged = pyqtSignal(str)
loadDocumentTagRequest = pyqtSignal(str, Enum)
novelItemMetaChanged = pyqtSignal(str)
novelStructureChanged = pyqtSignal()
openDocumentRequest = pyqtSignal(str, Enum, str, bool)
requestNewNoteCreation = pyqtSignal(str, nwItemClass)
@@ -498,18 +497,8 @@ class GuiDocEditor(QPlainTextEdit):
self.setDocumentChanged(False)
self.docTextChanged.emit(self._docHandle, self._lastEdit)
oldCount = SHARED.project.index.getHandleHeaderCount(tHandle)
SHARED.project.index.scanText(tHandle, text)
newCount = SHARED.project.index.getHandleHeaderCount(tHandle)
if self._nwItem.itemClass == nwItemClass.NOVEL:
if oldCount == newCount:
self.novelItemMetaChanged.emit(tHandle)
else:
self.novelStructureChanged.emit()
# Update the status bar
self.updateStatusMessage.emit(self.tr("Saved Document: {0}").format(self._nwItem.itemName))
return True
+11 -18
View File
@@ -96,7 +96,6 @@ class GuiNovelView(QWidget):
def updateTheme(self) -> None:
"""Update theme elements."""
self.novelBar.updateTheme()
self.refreshTree()
return
def initSettings(self) -> None:
@@ -174,12 +173,6 @@ class GuiNovelView(QWidget):
self.novelTree.setActiveHandle(tHandle)
return
@pyqtSlot()
def refreshTree(self) -> None:
"""Refresh the current tree."""
# self.novelTree.refreshTree(rootHandle=SHARED.project.data.getLastHandle("novelTree"))
return
@pyqtSlot(str, Enum)
def updateRootItem(self, tHandle: str, change: nwChange) -> None:
"""If any root item changes, rebuild the novel root menu."""
@@ -296,6 +289,8 @@ class GuiNovelToolBar(QWidget):
self.novelValue.refreshNovelList()
self.tbNovel.setVisible(self.novelValue.count() > 1)
self._forceRefreshNovelTree()
return
def clearContent(self) -> None:
@@ -328,7 +323,7 @@ class GuiNovelToolBar(QWidget):
refresh when content structure changes.
"""
self._active = state
if self._active:
if self._active and self._refresh.get(self.novelValue.handle, False):
self._refreshNovelTree(self.novelValue.handle)
return
@@ -339,21 +334,19 @@ class GuiNovelToolBar(QWidget):
@pyqtSlot()
def _forceRefreshNovelTree(self) -> None:
"""Rebuild the current tree."""
self._refresh[self.novelValue.handle] = True
self._refreshNovelTree(self.novelValue.handle)
if tHandle := self.novelValue.handle:
SHARED.project.index.refreshNovelModel(tHandle)
self._refresh[tHandle] = False
return
@pyqtSlot(str)
def _refreshNovelTree(self, tHandle: str) -> None:
"""Refresh or schedule refresh of a novel tree."""
if tHandle:
if self._active:
if self._refresh.get(tHandle, False):
SHARED.project.index.refreshNovelModel(tHandle)
self._refresh[tHandle] = False
else:
self._refresh[tHandle] = True
print(self._refresh)
if self._active:
SHARED.project.index.refreshNovelModel(tHandle)
self._refresh[tHandle] = False
else:
self._refresh[tHandle] = True
return
@pyqtSlot()
+1 -1
View File
@@ -694,7 +694,7 @@ class GuiIcons:
else:
icon = self._loadIcon(name, color, w, h)
self._qIcons[key] = icon
logger.info("Icon: %s", key)
logger.debug("Icon: %s", key)
return icon
def getToggleIcon(self, name: str, size: tuple[int, int], color: str | None = None) -> QIcon: