Change set selection from doc header to use a signal/slot set

This commit is contained in:
Veronica Berglyd Olsen
2023-11-23 19:04:35 +01:00
parent 84eff433fb
commit d35dfda92f
5 changed files with 21 additions and 7 deletions
+3 -1
View File
@@ -97,6 +97,7 @@ class GuiDocEditor(QPlainTextEdit):
spellCheckStateChanged = pyqtSignal(bool) spellCheckStateChanged = pyqtSignal(bool)
closeDocumentRequest = pyqtSignal() closeDocumentRequest = pyqtSignal()
toggleFocusModeRequest = pyqtSignal() toggleFocusModeRequest = pyqtSignal()
requestProjectItemSelected = pyqtSignal(str, bool)
def __init__(self, mainGui: GuiMain) -> None: def __init__(self, mainGui: GuiMain) -> None:
super().__init__(parent=mainGui) super().__init__(parent=mainGui)
@@ -2943,7 +2944,8 @@ class GuiDocEditHeader(QWidget):
"""Capture a click on the title and ensure that the item is """Capture a click on the title and ensure that the item is
selected in the project tree. selected in the project tree.
""" """
self.mainGui.projView.setSelectedHandle(self._docHandle, doScroll=True) if event.button() == Qt.MouseButton.LeftButton:
self.docEditor.requestProjectItemSelected.emit(self._docHandle, True)
return return
# END Class GuiDocEditHeader # END Class GuiDocEditHeader
+3 -1
View File
@@ -59,6 +59,7 @@ class GuiDocViewer(QTextBrowser):
documentLoaded = pyqtSignal(str) documentLoaded = pyqtSignal(str)
loadDocumentTagRequest = pyqtSignal(str, Enum) loadDocumentTagRequest = pyqtSignal(str, Enum)
togglePanelVisibility = pyqtSignal() togglePanelVisibility = pyqtSignal()
requestProjectItemSelected = pyqtSignal(str, bool)
def __init__(self, mainGui: GuiMain) -> None: def __init__(self, mainGui: GuiMain) -> None:
super().__init__(parent=mainGui) super().__init__(parent=mainGui)
@@ -834,7 +835,8 @@ class GuiDocViewHeader(QWidget):
"""Capture a click on the title and ensure that the item is """Capture a click on the title and ensure that the item is
selected in the project tree. selected in the project tree.
""" """
self.mainGui.projView.setSelectedHandle(self._docHandle, doScroll=True) if event.button() == Qt.MouseButton.LeftButton:
self.docViewer.requestProjectItemSelected.emit(self._docHandle, True)
return return
# END Class GuiDocViewHeader # END Class GuiDocViewHeader
+6 -1
View File
@@ -138,7 +138,6 @@ class GuiProjectView(QWidget):
self.emptyTrash = self.projTree.emptyTrash self.emptyTrash = self.projTree.emptyTrash
self.requestDeleteItem = self.projTree.requestDeleteItem self.requestDeleteItem = self.projTree.requestDeleteItem
self.getSelectedHandle = self.projTree.getSelectedHandle self.getSelectedHandle = self.projTree.getSelectedHandle
self.setSelectedHandle = self.projTree.setSelectedHandle
self.changedSince = self.projTree.changedSince self.changedSince = self.projTree.changedSince
self.createNewNote = self.projTree.createNewNote self.createNewNote = self.projTree.createNewNote
@@ -203,6 +202,12 @@ class GuiProjectView(QWidget):
# Public Slots # Public Slots
## ##
@pyqtSlot(str, bool)
def setSelectedHandle(self, tHandle: str, doScroll: bool = False) -> None:
"""Select an item and optionally scroll it into view."""
self.projTree.setSelectedHandle(tHandle, doScroll=doScroll)
return
@pyqtSlot(str) @pyqtSlot(str)
def updateItemValues(self, tHandle: str) -> None: def updateItemValues(self, tHandle: str) -> None:
"""Update tree item""" """Update tree item"""
+2
View File
@@ -284,10 +284,12 @@ class GuiMain(QMainWindow):
self.docEditor.spellCheckStateChanged.connect(self.mainMenu.setSpellCheckState) self.docEditor.spellCheckStateChanged.connect(self.mainMenu.setSpellCheckState)
self.docEditor.closeDocumentRequest.connect(self.closeDocEditor) self.docEditor.closeDocumentRequest.connect(self.closeDocEditor)
self.docEditor.toggleFocusModeRequest.connect(self.toggleFocusMode) self.docEditor.toggleFocusModeRequest.connect(self.toggleFocusMode)
self.docEditor.requestProjectItemSelected.connect(self.projView.setSelectedHandle)
self.docViewer.documentLoaded.connect(self.docViewerPanel.updateHandle) self.docViewer.documentLoaded.connect(self.docViewerPanel.updateHandle)
self.docViewer.loadDocumentTagRequest.connect(self._followTag) self.docViewer.loadDocumentTagRequest.connect(self._followTag)
self.docViewer.togglePanelVisibility.connect(self._toggleViewerPanelVisibility) self.docViewer.togglePanelVisibility.connect(self._toggleViewerPanelVisibility)
self.docViewer.requestProjectItemSelected.connect(self.projView.setSelectedHandle)
self.docViewerPanel.loadDocumentTagRequest.connect(self._followTag) self.docViewerPanel.loadDocumentTagRequest.connect(self._followTag)
self.docViewerPanel.openDocumentRequest.connect(self._openDocument) self.docViewerPanel.openDocumentRequest.connect(self._openDocument)
+7 -4
View File
@@ -23,8 +23,8 @@ import pytest
from mocked import causeException from mocked import causeException
from PyQt5.QtGui import QTextCursor from PyQt5.QtGui import QMouseEvent, QTextCursor
from PyQt5.QtCore import Qt, QUrl from PyQt5.QtCore import QEvent, QPoint, Qt, QUrl
from PyQt5.QtWidgets import QMenu, qApp, QAction from PyQt5.QtWidgets import QMenu, qApp, QAction
from novelwriter import CONFIG, SHARED from novelwriter import CONFIG, SHARED
@@ -58,7 +58,10 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, prjLipsum):
assert nwGUI.projView.projTree.getSelectedHandle() is None assert nwGUI.projView.projTree.getSelectedHandle() is None
# Re-select via header click # Re-select via header click
docViewer.docHeader.mousePressEvent(None) # type: ignore button = Qt.MouseButton.LeftButton
modifier = Qt.KeyboardModifier.NoModifier
event = QMouseEvent(QEvent.MouseButtonPress, QPoint(), button, button, modifier)
docViewer.docHeader.mousePressEvent(event)
assert nwGUI.projView.projTree.getSelectedHandle() == "88243afbe5ed8" assert nwGUI.projView.projTree.getSelectedHandle() == "88243afbe5ed8"
# Reload the text # Reload the text
@@ -127,7 +130,7 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, prjLipsum):
assert docViewer.docAction(nwDocAction.COPY) is False assert docViewer.docAction(nwDocAction.COPY) is False
# Open again via menu # Open again via menu
assert nwGUI.projView.setSelectedHandle("88243afbe5ed8") assert nwGUI.projView.projTree.setSelectedHandle("88243afbe5ed8")
nwGUI.mainMenu.aViewDoc.activate(QAction.Trigger) nwGUI.mainMenu.aViewDoc.activate(QAction.Trigger)
# Open context menu # Open context menu