Block welcome dialog open button when project list is not visible
This commit is contained in:
@@ -108,7 +108,7 @@ class GuiWelcome(QDialog):
|
|||||||
# =======
|
# =======
|
||||||
|
|
||||||
self.btnBox = QDialogButtonBox(QDialogButtonBox.Open | QDialogButtonBox.Cancel, self)
|
self.btnBox = QDialogButtonBox(QDialogButtonBox.Open | QDialogButtonBox.Cancel, self)
|
||||||
self.btnBox.accepted.connect(self.tabOpen.openSelectedItem)
|
self.btnBox.accepted.connect(self._openSelectedItem)
|
||||||
self.btnBox.rejected.connect(self.close)
|
self.btnBox.rejected.connect(self.close)
|
||||||
|
|
||||||
self.newButton = self.btnBox.addButton(self.tr("New Project"), QDialogButtonBox.ActionRole)
|
self.newButton = self.btnBox.addButton(self.tr("New Project"), QDialogButtonBox.ActionRole)
|
||||||
@@ -195,6 +195,13 @@ class GuiWelcome(QDialog):
|
|||||||
self._openProjectPath(path)
|
self._openProjectPath(path)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def _openSelectedItem(self) -> None:
|
||||||
|
"""Open the currently selected project item."""
|
||||||
|
if self.mainStack.currentWidget() == self.tabOpen:
|
||||||
|
self.tabOpen.openSelectedItem()
|
||||||
|
return
|
||||||
|
|
||||||
@pyqtSlot(Path)
|
@pyqtSlot(Path)
|
||||||
def _openProjectPath(self, path: Path) -> None:
|
def _openProjectPath(self, path: Path) -> None:
|
||||||
"""Emit a project open signal."""
|
"""Emit a project open signal."""
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ from datetime import datetime
|
|||||||
from pytestqt.qtbot import QtBot
|
from pytestqt.qtbot import QtBot
|
||||||
|
|
||||||
from PyQt5.QtCore import QPoint, Qt
|
from PyQt5.QtCore import QPoint, Qt
|
||||||
from PyQt5.QtWidgets import QAction, QFileDialog, QMenu
|
from PyQt5.QtWidgets import QAction, QDialogButtonBox, QFileDialog, QMenu
|
||||||
|
|
||||||
from novelwriter import CONFIG, SHARED
|
from novelwriter import CONFIG, SHARED
|
||||||
from novelwriter.enum import nwItemClass
|
from novelwriter.enum import nwItemClass
|
||||||
@@ -103,7 +103,7 @@ def testToolWelcome_Open(qtbot: QtBot, monkeypatch, nwGUI, fncPath):
|
|||||||
qtbot.mouseClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10)
|
qtbot.mouseClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10)
|
||||||
assert tabOpen.selectedPath.text() == "Path: /stuff/project_one"
|
assert tabOpen.selectedPath.text() == "Path: /stuff/project_one"
|
||||||
|
|
||||||
# Double Click item
|
# Double click item
|
||||||
qtbot.mouseClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10)
|
qtbot.mouseClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10)
|
||||||
with monkeypatch.context() as mp:
|
with monkeypatch.context() as mp:
|
||||||
mp.setattr(welcome, "close", lambda *a: None)
|
mp.setattr(welcome, "close", lambda *a: None)
|
||||||
@@ -111,6 +111,14 @@ def testToolWelcome_Open(qtbot: QtBot, monkeypatch, nwGUI, fncPath):
|
|||||||
qtbot.mouseDClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10)
|
qtbot.mouseDClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10)
|
||||||
assert signal.args and signal.args[0] == Path("/stuff/project_one")
|
assert signal.args and signal.args[0] == Path("/stuff/project_one")
|
||||||
|
|
||||||
|
# Press open button
|
||||||
|
qtbot.mouseClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10)
|
||||||
|
with monkeypatch.context() as mp:
|
||||||
|
mp.setattr(welcome, "close", lambda *a: None)
|
||||||
|
with qtbot.waitSignal(welcome.openProjectRequest, timeout=5000) as signal:
|
||||||
|
welcome.btnBox.button(QDialogButtonBox.StandardButton.Open).click()
|
||||||
|
assert signal.args and signal.args[0] == Path("/stuff/project_one")
|
||||||
|
|
||||||
# Context Menu
|
# Context Menu
|
||||||
def getMenuForPos(pos: QPoint) -> QMenu | None:
|
def getMenuForPos(pos: QPoint) -> QMenu | None:
|
||||||
nonlocal tabOpen
|
nonlocal tabOpen
|
||||||
|
|||||||
Reference in New Issue
Block a user