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)
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"""
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user