Change set selection from doc header to use a signal/slot set
This commit is contained in:
@@ -97,6 +97,7 @@ class GuiDocEditor(QPlainTextEdit):
|
||||
spellCheckStateChanged = pyqtSignal(bool)
|
||||
closeDocumentRequest = pyqtSignal()
|
||||
toggleFocusModeRequest = pyqtSignal()
|
||||
requestProjectItemSelected = pyqtSignal(str, bool)
|
||||
|
||||
def __init__(self, mainGui: GuiMain) -> None:
|
||||
super().__init__(parent=mainGui)
|
||||
@@ -2943,7 +2944,8 @@ class GuiDocEditHeader(QWidget):
|
||||
"""Capture a click on the title and ensure that the item is
|
||||
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
|
||||
|
||||
# END Class GuiDocEditHeader
|
||||
|
||||
@@ -59,6 +59,7 @@ class GuiDocViewer(QTextBrowser):
|
||||
documentLoaded = pyqtSignal(str)
|
||||
loadDocumentTagRequest = pyqtSignal(str, Enum)
|
||||
togglePanelVisibility = pyqtSignal()
|
||||
requestProjectItemSelected = pyqtSignal(str, bool)
|
||||
|
||||
def __init__(self, mainGui: GuiMain) -> None:
|
||||
super().__init__(parent=mainGui)
|
||||
@@ -834,7 +835,8 @@ class GuiDocViewHeader(QWidget):
|
||||
"""Capture a click on the title and ensure that the item is
|
||||
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
|
||||
|
||||
# END Class GuiDocViewHeader
|
||||
|
||||
@@ -138,7 +138,6 @@ class GuiProjectView(QWidget):
|
||||
self.emptyTrash = self.projTree.emptyTrash
|
||||
self.requestDeleteItem = self.projTree.requestDeleteItem
|
||||
self.getSelectedHandle = self.projTree.getSelectedHandle
|
||||
self.setSelectedHandle = self.projTree.setSelectedHandle
|
||||
self.changedSince = self.projTree.changedSince
|
||||
self.createNewNote = self.projTree.createNewNote
|
||||
|
||||
@@ -203,6 +202,12 @@ class GuiProjectView(QWidget):
|
||||
# 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)
|
||||
def updateItemValues(self, tHandle: str) -> None:
|
||||
"""Update tree item"""
|
||||
|
||||
@@ -284,10 +284,12 @@ class GuiMain(QMainWindow):
|
||||
self.docEditor.spellCheckStateChanged.connect(self.mainMenu.setSpellCheckState)
|
||||
self.docEditor.closeDocumentRequest.connect(self.closeDocEditor)
|
||||
self.docEditor.toggleFocusModeRequest.connect(self.toggleFocusMode)
|
||||
self.docEditor.requestProjectItemSelected.connect(self.projView.setSelectedHandle)
|
||||
|
||||
self.docViewer.documentLoaded.connect(self.docViewerPanel.updateHandle)
|
||||
self.docViewer.loadDocumentTagRequest.connect(self._followTag)
|
||||
self.docViewer.togglePanelVisibility.connect(self._toggleViewerPanelVisibility)
|
||||
self.docViewer.requestProjectItemSelected.connect(self.projView.setSelectedHandle)
|
||||
|
||||
self.docViewerPanel.loadDocumentTagRequest.connect(self._followTag)
|
||||
self.docViewerPanel.openDocumentRequest.connect(self._openDocument)
|
||||
|
||||
@@ -23,8 +23,8 @@ import pytest
|
||||
|
||||
from mocked import causeException
|
||||
|
||||
from PyQt5.QtGui import QTextCursor
|
||||
from PyQt5.QtCore import Qt, QUrl
|
||||
from PyQt5.QtGui import QMouseEvent, QTextCursor
|
||||
from PyQt5.QtCore import QEvent, QPoint, Qt, QUrl
|
||||
from PyQt5.QtWidgets import QMenu, qApp, QAction
|
||||
|
||||
from novelwriter import CONFIG, SHARED
|
||||
@@ -58,7 +58,10 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, prjLipsum):
|
||||
assert nwGUI.projView.projTree.getSelectedHandle() is None
|
||||
|
||||
# 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"
|
||||
|
||||
# Reload the text
|
||||
@@ -127,7 +130,7 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, prjLipsum):
|
||||
assert docViewer.docAction(nwDocAction.COPY) is False
|
||||
|
||||
# Open again via menu
|
||||
assert nwGUI.projView.setSelectedHandle("88243afbe5ed8")
|
||||
assert nwGUI.projView.projTree.setSelectedHandle("88243afbe5ed8")
|
||||
nwGUI.mainMenu.aViewDoc.activate(QAction.Trigger)
|
||||
|
||||
# Open context menu
|
||||
|
||||
Reference in New Issue
Block a user