From 3bffaa01dc2356a1f7430fcb5c5873ae14c7b77e Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 25 Jul 2024 19:21:52 +0200 Subject: [PATCH] Update viewer panel when importance labels change (#1992) --- novelwriter/core/status.py | 5 ++++- novelwriter/gui/docviewerpanel.py | 7 +++++++ novelwriter/guimain.py | 1 + novelwriter/shared.py | 9 +++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/novelwriter/core/status.py b/novelwriter/core/status.py index c29c34a2..de017f51 100644 --- a/novelwriter/core/status.py +++ b/novelwriter/core/status.py @@ -121,7 +121,7 @@ class NWStatus: return key def update(self, update: list[tuple[str | None, StatusEntry]]) -> None: - """Update the list of statuses, and from removed list.""" + """Update the list of statuses.""" self._store.clear() for key, entry in update: self._store[self._checkKey(key)] = entry @@ -130,6 +130,9 @@ class NWStatus: if self._default not in self._store: self._default = next(iter(self._store)) if self._store else None + # Emit the change signal + SHARED.projectSingalProxy({"event": "statusLabels", "kind": self._prefix}) + return def check(self, value: str) -> str: diff --git a/novelwriter/gui/docviewerpanel.py b/novelwriter/gui/docviewerpanel.py index 8944711a..be9ad287 100644 --- a/novelwriter/gui/docviewerpanel.py +++ b/novelwriter/gui/docviewerpanel.py @@ -189,6 +189,13 @@ class GuiDocViewerPanel(QWidget): self._updateTabVisibility() return + @pyqtSlot(str) + def updateStatusLabels(self, kind: str) -> None: + """Update the importance labels.""" + if kind == "i": + self._loadAllTags() + return + ## # Private Slots ## diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index bae89b43..8e800ae4 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -222,6 +222,7 @@ class GuiMain(QMainWindow): SHARED.projectStatusChanged.connect(self.mainStatus.updateProjectStatus) SHARED.projectStatusMessage.connect(self.mainStatus.setStatusMessage) SHARED.spellLanguageChanged.connect(self.mainStatus.setLanguage) + SHARED.statusLabelsChanged.connect(self.docViewerPanel.updateStatusLabels) self.mainMenu.requestDocAction.connect(self._passDocumentAction) self.mainMenu.requestDocInsert.connect(self._passDocumentInsert) diff --git a/novelwriter/shared.py b/novelwriter/shared.py index 2c8f9ce3..3a12bdf9 100644 --- a/novelwriter/shared.py +++ b/novelwriter/shared.py @@ -64,6 +64,7 @@ class SharedData(QObject): indexCleared = pyqtSignal() indexAvailable = pyqtSignal() mainClockTick = pyqtSignal() + statusLabelsChanged = pyqtSignal(str) def __init__(self) -> None: super().__init__() @@ -309,6 +310,14 @@ class SharedData(QObject): self.indexAvailable.emit() return + def projectSingalProxy(self, data: dict) -> None: + """Emit signals on project data change.""" + event = data.get("event") + logger.debug("Received '%s' event from project data", event) + if event == "statusLabels": + self.statusLabelsChanged.emit(data.get("kind", "")) + return + ## # Alert Boxes ##