Block welcome dialog open button when project list is not visible

This commit is contained in:
Veronica Berglyd Olsen
2024-02-20 12:48:14 +01:00
parent 8b701f8651
commit eab8bb2351
2 changed files with 18 additions and 3 deletions
+8 -1
View File
@@ -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."""
+10 -2
View File
@@ -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