Merge branch 'testing' into dev
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
*.egg-info
|
*.egg-info
|
||||||
setup.iss
|
setup.iss
|
||||||
novelwriter.desktop
|
novelwriter.desktop
|
||||||
|
novelWriter.pyw
|
||||||
i18n/*.qm
|
i18n/*.qm
|
||||||
i18n/*.qph
|
i18n/*.qph
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,39 @@
|
|||||||
# novelWriter Changelog
|
# novelWriter Changelog
|
||||||
|
|
||||||
|
## Version 1.2.2 [2021-03-28]
|
||||||
|
|
||||||
|
### Release Notes
|
||||||
|
|
||||||
|
This patch release is a bug fix release addressing some inconsistencies and issues with the
|
||||||
|
document header buttons when Focus Mode is active. The keyboard shortcuts for search and replace
|
||||||
|
should now also work in Focus Mode. In addition, the setup script for novelWriter has been improved
|
||||||
|
when installing on Windows.
|
||||||
|
|
||||||
|
### Detailed Changelog
|
||||||
|
|
||||||
|
**Bugfixes**
|
||||||
|
|
||||||
|
* The way Focus Mode worked when activated through the menu and through the document header button
|
||||||
|
were inconsistent. The header button would deactivate the edit, search and close buttons, while
|
||||||
|
the menu entry would not. These two methods now call the same set of functions to ensure the
|
||||||
|
behaviour is consistent. PR #717.
|
||||||
|
* Closing the document while in Focus Mode now ends Focus Mode. Previously, the editor would be
|
||||||
|
left stuck in Focus Mode with no way to exit. PR #717.
|
||||||
|
|
||||||
|
**User Interface**
|
||||||
|
|
||||||
|
* The keyboard shortcuts for the search and replace tool now also work in Focus Mode. Previously,
|
||||||
|
the menu entries and their shortcuts were deactivated in this mode. Issue #716. PR #717.
|
||||||
|
|
||||||
|
**Installation**
|
||||||
|
|
||||||
|
* The setup script command do build minimal install archive files now also generate SHA 256 sum
|
||||||
|
files. PR #724.
|
||||||
|
* The setup script will now copy the `novelWriter.py` file to `novelWriter.pyw` if it doesn't exist
|
||||||
|
when the `win-install` command is run. Issue #727. PR #728.
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
## Version 1.2.1 [2021-03-21]
|
## Version 1.2.1 [2021-03-21]
|
||||||
|
|
||||||
### Release Notes
|
### Release Notes
|
||||||
|
|||||||
@@ -3,6 +3,17 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Release Notes for 1.2.2</h2>
|
||||||
|
<p><i>Released on 28 March 2021</i></p>
|
||||||
|
<p>This patch release is a bug fix release addressing some inconsistencies and issues with the
|
||||||
|
document header buttons when Focus Mode is active. The keyboard shortcuts for search and replace
|
||||||
|
should now also work in Focus Mode. In addition, the setup script for novelWriter has been improved
|
||||||
|
when installing on Windows.</p>
|
||||||
|
|
||||||
|
<p><i>See also the <a href="https://github.com/vkbo/novelWriter/releases">Releases</a> page.</i></p>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
|
||||||
<h2>Release Notes for 1.2.1</h2>
|
<h2>Release Notes for 1.2.1</h2>
|
||||||
<p><i>Released on 21 March 2021</i></p>
|
<p><i>Released on 21 March 2021</i></p>
|
||||||
<p>This patch release is a bug fix release addressing issues with the document editor's search and
|
<p>This patch release is a bug fix release addressing issues with the document editor's search and
|
||||||
@@ -10,8 +21,6 @@ replace tool. Due to some recently added restrictions on when various tools are
|
|||||||
on which part of the main window has the user's focus, the search tool keyboard shortcuts and
|
on which part of the main window has the user's focus, the search tool keyboard shortcuts and
|
||||||
buttons were blocked when they shouldn't. This release resolves these issues.</p>
|
buttons were blocked when they shouldn't. This release resolves these issues.</p>
|
||||||
|
|
||||||
<p><i>See also the <a href="https://github.com/vkbo/novelWriter/releases">Releases</a> page.</i></p>
|
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
<h2>Release Notes for 1.2</h2>
|
<h2>Release Notes for 1.2</h2>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from nw.constants.constants import (
|
|||||||
)
|
)
|
||||||
from nw.constants.enum import (
|
from nw.constants.enum import (
|
||||||
nwAlert, nwDocAction, nwItemClass, nwItemLayout, nwItemType, nwOutline,
|
nwAlert, nwDocAction, nwItemClass, nwItemLayout, nwItemType, nwOutline,
|
||||||
nwDocInsert
|
nwDocInsert, nwWidget
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
@@ -26,4 +26,5 @@ __all__ = [
|
|||||||
"nwItemType",
|
"nwItemType",
|
||||||
"nwOutline",
|
"nwOutline",
|
||||||
"nwDocInsert",
|
"nwDocInsert",
|
||||||
|
"nwWidget",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -112,6 +112,15 @@ class nwAlert(Enum):
|
|||||||
|
|
||||||
# END Enum nwAlert
|
# END Enum nwAlert
|
||||||
|
|
||||||
|
class nwWidget(Enum):
|
||||||
|
|
||||||
|
TREE = 1
|
||||||
|
EDITOR = 2
|
||||||
|
VIEWER = 3
|
||||||
|
OUTLINE = 4
|
||||||
|
|
||||||
|
# END Enum nwWidget
|
||||||
|
|
||||||
class nwOutline(Enum):
|
class nwOutline(Enum):
|
||||||
|
|
||||||
TITLE = 0
|
TITLE = 0
|
||||||
|
|||||||
+11
-13
@@ -2223,7 +2223,6 @@ class GuiDocEditHeader(QWidget):
|
|||||||
|
|
||||||
fPx = int(0.9*self.theTheme.fontPixelSize)
|
fPx = int(0.9*self.theTheme.fontPixelSize)
|
||||||
hSp = self.mainConf.pxInt(6)
|
hSp = self.mainConf.pxInt(6)
|
||||||
self.buttonSize = fPx + hSp
|
|
||||||
|
|
||||||
# Main Widget Settings
|
# Main Widget Settings
|
||||||
self.setAutoFillBackground(True)
|
self.setAutoFillBackground(True)
|
||||||
@@ -2369,6 +2368,17 @@ class GuiDocEditHeader(QWidget):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def updateFocusMode(self):
|
||||||
|
"""Update the minimise/maximise icon of the Focus Mode button.
|
||||||
|
This function is called by the GuiMain class via the
|
||||||
|
toggleFocusMode function and should not be activated directly.
|
||||||
|
"""
|
||||||
|
if self.theParent.isFocusMode:
|
||||||
|
self.minmaxButton.setIcon(self.theTheme.getIcon("minimise"))
|
||||||
|
else:
|
||||||
|
self.minmaxButton.setIcon(self.theTheme.getIcon("maximise"))
|
||||||
|
return
|
||||||
|
|
||||||
##
|
##
|
||||||
# Slots
|
# Slots
|
||||||
##
|
##
|
||||||
@@ -2399,18 +2409,6 @@ class GuiDocEditHeader(QWidget):
|
|||||||
"""Switch on or off Focus Mode.
|
"""Switch on or off Focus Mode.
|
||||||
"""
|
"""
|
||||||
self.theParent.toggleFocusMode()
|
self.theParent.toggleFocusMode()
|
||||||
if self.theParent.isFocusMode:
|
|
||||||
self.minmaxButton.setIcon(self.theTheme.getIcon("minimise"))
|
|
||||||
self.setContentsMargins(self.buttonSize, 0, 0, 0)
|
|
||||||
self.editButton.setVisible(False)
|
|
||||||
self.searchButton.setVisible(False)
|
|
||||||
self.closeButton.setVisible(False)
|
|
||||||
else:
|
|
||||||
self.minmaxButton.setIcon(self.theTheme.getIcon("maximise"))
|
|
||||||
self.setContentsMargins(0, 0, 0, 0)
|
|
||||||
self.editButton.setVisible(True)
|
|
||||||
self.searchButton.setVisible(True)
|
|
||||||
self.closeButton.setVisible(True)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|||||||
+5
-5
@@ -33,7 +33,7 @@ from PyQt5.QtWidgets import QMenuBar, QAction
|
|||||||
|
|
||||||
from nw.constants import (
|
from nw.constants import (
|
||||||
trConst, nwItemType, nwItemClass, nwDocAction, nwDocInsert, nwKeyWords,
|
trConst, nwItemType, nwItemClass, nwDocAction, nwDocInsert, nwKeyWords,
|
||||||
nwLabels, nwUnicode
|
nwLabels, nwUnicode, nwWidget
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -471,28 +471,28 @@ class GuiMainMenu(QMenuBar):
|
|||||||
self.aFocusTree = QAction(self.tr("Focus Project Tree"), self)
|
self.aFocusTree = QAction(self.tr("Focus Project Tree"), self)
|
||||||
self.aFocusTree.setStatusTip(self.tr("Move focus to project tree"))
|
self.aFocusTree.setStatusTip(self.tr("Move focus to project tree"))
|
||||||
self.aFocusTree.setShortcut("Alt+1")
|
self.aFocusTree.setShortcut("Alt+1")
|
||||||
self.aFocusTree.triggered.connect(lambda: self.theParent.setFocus(1))
|
self.aFocusTree.triggered.connect(lambda: self.theParent.switchFocus(nwWidget.TREE))
|
||||||
self.viewMenu.addAction(self.aFocusTree)
|
self.viewMenu.addAction(self.aFocusTree)
|
||||||
|
|
||||||
# View > Document Pane 1
|
# View > Document Pane 1
|
||||||
self.aFocusEditor = QAction(self.tr("Focus Document Editor"), self)
|
self.aFocusEditor = QAction(self.tr("Focus Document Editor"), self)
|
||||||
self.aFocusEditor.setStatusTip(self.tr("Move focus to left document pane"))
|
self.aFocusEditor.setStatusTip(self.tr("Move focus to left document pane"))
|
||||||
self.aFocusEditor.setShortcut("Alt+2")
|
self.aFocusEditor.setShortcut("Alt+2")
|
||||||
self.aFocusEditor.triggered.connect(lambda: self.theParent.setFocus(2))
|
self.aFocusEditor.triggered.connect(lambda: self.theParent.switchFocus(nwWidget.EDITOR))
|
||||||
self.viewMenu.addAction(self.aFocusEditor)
|
self.viewMenu.addAction(self.aFocusEditor)
|
||||||
|
|
||||||
# View > Document Pane 2
|
# View > Document Pane 2
|
||||||
self.aFocusView = QAction(self.tr("Focus Document Viewer"), self)
|
self.aFocusView = QAction(self.tr("Focus Document Viewer"), self)
|
||||||
self.aFocusView.setStatusTip(self.tr("Move focus to right document pane"))
|
self.aFocusView.setStatusTip(self.tr("Move focus to right document pane"))
|
||||||
self.aFocusView.setShortcut("Alt+3")
|
self.aFocusView.setShortcut("Alt+3")
|
||||||
self.aFocusView.triggered.connect(lambda: self.theParent.setFocus(3))
|
self.aFocusView.triggered.connect(lambda: self.theParent.switchFocus(nwWidget.VIEWER))
|
||||||
self.viewMenu.addAction(self.aFocusView)
|
self.viewMenu.addAction(self.aFocusView)
|
||||||
|
|
||||||
# View > Outline
|
# View > Outline
|
||||||
self.aFocusOutline = QAction(self.tr("Focus Outline"), self)
|
self.aFocusOutline = QAction(self.tr("Focus Outline"), self)
|
||||||
self.aFocusOutline.setStatusTip(self.tr("Move focus to outline"))
|
self.aFocusOutline.setStatusTip(self.tr("Move focus to outline"))
|
||||||
self.aFocusOutline.setShortcut("Alt+4")
|
self.aFocusOutline.setShortcut("Alt+4")
|
||||||
self.aFocusOutline.triggered.connect(lambda: self.theParent.setFocus(4))
|
self.aFocusOutline.triggered.connect(lambda: self.theParent.switchFocus(nwWidget.OUTLINE))
|
||||||
self.viewMenu.addAction(self.aFocusOutline)
|
self.viewMenu.addAction(self.aFocusOutline)
|
||||||
|
|
||||||
# View > Separator
|
# View > Separator
|
||||||
|
|||||||
+24
-10
@@ -46,7 +46,7 @@ from nw.gui import (
|
|||||||
GuiProjectTree, GuiProjectWizard, GuiTheme, GuiWordList, GuiWritingStats
|
GuiProjectTree, GuiProjectWizard, GuiTheme, GuiWordList, GuiWritingStats
|
||||||
)
|
)
|
||||||
from nw.core import NWProject, NWDoc, NWIndex
|
from nw.core import NWProject, NWDoc, NWIndex
|
||||||
from nw.constants import nwItemType, nwItemClass, nwAlert, nwLists
|
from nw.constants import nwItemType, nwItemClass, nwAlert, nwLists, nwWidget
|
||||||
from nw.common import getGuiItem, hexToInt
|
from nw.common import getGuiItem, hexToInt
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -567,6 +567,10 @@ class GuiMain(QMainWindow):
|
|||||||
logger.error("No project open")
|
logger.error("No project open")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# Disable focus mode if it is active
|
||||||
|
if self.isFocusMode:
|
||||||
|
self.toggleFocusMode()
|
||||||
|
|
||||||
self.docEditor.saveCursorPosition()
|
self.docEditor.saveCursorPosition()
|
||||||
if self.docEditor.docChanged:
|
if self.docEditor.docChanged:
|
||||||
self.saveDocument()
|
self.saveDocument()
|
||||||
@@ -813,10 +817,10 @@ class GuiMain(QMainWindow):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
if self.treeView.hasFocus():
|
if self.docEditor.anyFocus() or self.isFocusMode:
|
||||||
tHandle = self.treeView.getSelectedHandle()
|
|
||||||
elif self.docEditor.hasFocus():
|
|
||||||
tHandle = self.docEditor.theHandle
|
tHandle = self.docEditor.theHandle
|
||||||
|
else:
|
||||||
|
tHandle = self.treeView.getSelectedHandle()
|
||||||
|
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
logger.warning("No item selected")
|
logger.warning("No item selected")
|
||||||
@@ -1176,18 +1180,18 @@ class GuiMain(QMainWindow):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def setFocus(self, paneNo):
|
def switchFocus(self, paneNo):
|
||||||
"""Switch focus between main GUI views.
|
"""Switch focus between main GUI views.
|
||||||
"""
|
"""
|
||||||
if paneNo == 1:
|
if paneNo == nwWidget.TREE:
|
||||||
self.treeView.setFocus()
|
self.treeView.setFocus()
|
||||||
elif paneNo == 2:
|
elif paneNo == nwWidget.EDITOR:
|
||||||
self.mainTabs.setCurrentWidget(self.splitDocs)
|
self.mainTabs.setCurrentWidget(self.splitDocs)
|
||||||
self.docEditor.setFocus()
|
self.docEditor.setFocus()
|
||||||
elif paneNo == 3:
|
elif paneNo == nwWidget.VIEWER:
|
||||||
self.mainTabs.setCurrentWidget(self.splitDocs)
|
self.mainTabs.setCurrentWidget(self.splitDocs)
|
||||||
self.docViewer.setFocus()
|
self.docViewer.setFocus()
|
||||||
elif paneNo == 4:
|
elif paneNo == nwWidget.OUTLINE:
|
||||||
self.mainTabs.setCurrentWidget(self.splitOutline)
|
self.mainTabs.setCurrentWidget(self.splitOutline)
|
||||||
self.projView.setFocus()
|
self.projView.setFocus()
|
||||||
return
|
return
|
||||||
@@ -1224,6 +1228,7 @@ class GuiMain(QMainWindow):
|
|||||||
if self.isFocusMode:
|
if self.isFocusMode:
|
||||||
logger.debug("Activating Focus Mode")
|
logger.debug("Activating Focus Mode")
|
||||||
self.mainTabs.setCurrentWidget(self.splitDocs)
|
self.mainTabs.setCurrentWidget(self.splitDocs)
|
||||||
|
self.switchFocus(nwWidget.EDITOR)
|
||||||
else:
|
else:
|
||||||
logger.debug("Deactivating Focus Mode")
|
logger.debug("Deactivating Focus Mode")
|
||||||
|
|
||||||
@@ -1235,6 +1240,7 @@ class GuiMain(QMainWindow):
|
|||||||
|
|
||||||
hideDocFooter = self.isFocusMode and self.mainConf.hideFocusFooter
|
hideDocFooter = self.isFocusMode and self.mainConf.hideFocusFooter
|
||||||
self.docEditor.docFooter.setVisible(not hideDocFooter)
|
self.docEditor.docFooter.setVisible(not hideDocFooter)
|
||||||
|
self.docEditor.docHeader.updateFocusMode()
|
||||||
|
|
||||||
if self.splitView.isVisible():
|
if self.splitView.isVisible():
|
||||||
self.splitView.setVisible(False)
|
self.splitView.setVisible(False)
|
||||||
@@ -1272,11 +1278,12 @@ class GuiMain(QMainWindow):
|
|||||||
"""
|
"""
|
||||||
# Project
|
# Project
|
||||||
self.addAction(self.mainMenu.aSaveProject)
|
self.addAction(self.mainMenu.aSaveProject)
|
||||||
|
self.addAction(self.mainMenu.aEditItem)
|
||||||
self.addAction(self.mainMenu.aExitNW)
|
self.addAction(self.mainMenu.aExitNW)
|
||||||
|
|
||||||
# Document
|
# Document
|
||||||
self.addAction(self.mainMenu.aSaveDoc)
|
self.addAction(self.mainMenu.aSaveDoc)
|
||||||
self.addAction(self.mainMenu.aFileDetails)
|
self.addAction(self.mainMenu.aCloseDoc)
|
||||||
|
|
||||||
# Edit
|
# Edit
|
||||||
self.addAction(self.mainMenu.aEditUndo)
|
self.addAction(self.mainMenu.aEditUndo)
|
||||||
@@ -1320,6 +1327,13 @@ class GuiMain(QMainWindow):
|
|||||||
for mAction, _ in self.mainMenu.mInsKWItems.values():
|
for mAction, _ in self.mainMenu.mInsKWItems.values():
|
||||||
self.addAction(mAction)
|
self.addAction(mAction)
|
||||||
|
|
||||||
|
# Search
|
||||||
|
self.addAction(self.mainMenu.aFind)
|
||||||
|
self.addAction(self.mainMenu.aReplace)
|
||||||
|
self.addAction(self.mainMenu.aFindNext)
|
||||||
|
self.addAction(self.mainMenu.aFindPrev)
|
||||||
|
self.addAction(self.mainMenu.aReplaceNext)
|
||||||
|
|
||||||
# Format
|
# Format
|
||||||
self.addAction(self.mainMenu.aFmtEmph)
|
self.addAction(self.mainMenu.aFmtEmph)
|
||||||
self.addAction(self.mainMenu.aFmtStrong)
|
self.addAction(self.mainMenu.aFmtStrong)
|
||||||
|
|||||||
@@ -291,7 +291,8 @@ def makeMinimalPackage(targetOS):
|
|||||||
else:
|
else:
|
||||||
targName = ""
|
targName = ""
|
||||||
|
|
||||||
outFile = os.path.join("dist", f"novelWriter-{__version__}-minimal{targName}.zip")
|
zipFile = f"novelWriter-{__version__}-minimal{targName}.zip"
|
||||||
|
outFile = os.path.join("dist", zipFile)
|
||||||
if os.path.isfile(outFile):
|
if os.path.isfile(outFile):
|
||||||
os.unlink(outFile)
|
os.unlink(outFile)
|
||||||
|
|
||||||
@@ -332,7 +333,17 @@ def makeMinimalPackage(targetOS):
|
|||||||
zipObj.write(aFile)
|
zipObj.write(aFile)
|
||||||
|
|
||||||
print("")
|
print("")
|
||||||
print("Built file: %s" % outFile)
|
print("Created File: %s" % outFile)
|
||||||
|
|
||||||
|
try:
|
||||||
|
shaFile = open(outFile+".sha256", mode="w")
|
||||||
|
subprocess.call(["sha256sum", zipFile], stdout=shaFile, cwd="dist")
|
||||||
|
shaFile.close()
|
||||||
|
print("SHA256 Sum: %s" % (outFile+".sha256"))
|
||||||
|
except Exception as e:
|
||||||
|
print("Could not generate sha256 file")
|
||||||
|
print(str(e))
|
||||||
|
|
||||||
print("")
|
print("")
|
||||||
|
|
||||||
return
|
return
|
||||||
@@ -710,6 +721,9 @@ def winInstall():
|
|||||||
targetPy = os.path.join(targetDir, "novelWriter.pyw")
|
targetPy = os.path.join(targetDir, "novelWriter.pyw")
|
||||||
targetIcon = os.path.join(targetDir, "nw", "assets", "icons", "novelwriter.ico")
|
targetIcon = os.path.join(targetDir, "nw", "assets", "icons", "novelwriter.ico")
|
||||||
|
|
||||||
|
if not os.path.isfile(targetPy):
|
||||||
|
shutil.copy2(os.path.join(targetDir, "novelWriter.py"), targetPy)
|
||||||
|
|
||||||
print("Collecting Info ...")
|
print("Collecting Info ...")
|
||||||
print("Desktop Folder: %s" % desktopDir)
|
print("Desktop Folder: %s" % desktopDir)
|
||||||
print("Start Menu Folder: %s" % startMenuDir)
|
print("Start Menu Folder: %s" % startMenuDir)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ from PyQt5.QtWidgets import QAction, QMessageBox, QDialog
|
|||||||
from nw.gui.itemeditor import GuiItemEditor
|
from nw.gui.itemeditor import GuiItemEditor
|
||||||
from nw.gui.doceditor import GuiDocEditor
|
from nw.gui.doceditor import GuiDocEditor
|
||||||
from nw.gui.projtree import GuiProjectTree
|
from nw.gui.projtree import GuiProjectTree
|
||||||
from nw.constants import nwItemType, nwDocAction
|
from nw.constants import nwItemType, nwDocAction, nwWidget
|
||||||
|
|
||||||
keyDelay = 2
|
keyDelay = 2
|
||||||
typeDelay = 1
|
typeDelay = 1
|
||||||
@@ -117,14 +117,14 @@ def testGuiEditor_Main(qtbot, monkeypatch, nwGUI, fncDir, fncProj, refDir, outDi
|
|||||||
nwGUI.mainConf.autoScroll = True
|
nwGUI.mainConf.autoScroll = True
|
||||||
|
|
||||||
# Add a Character File
|
# Add a Character File
|
||||||
nwGUI.setFocus(1)
|
nwGUI.switchFocus(nwWidget.TREE)
|
||||||
nwGUI.treeView.clearSelection()
|
nwGUI.treeView.clearSelection()
|
||||||
nwGUI.treeView._getTreeItem("71ee45a3c0db9").setSelected(True)
|
nwGUI.treeView._getTreeItem("71ee45a3c0db9").setSelected(True)
|
||||||
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
||||||
assert nwGUI.openSelectedItem()
|
assert nwGUI.openSelectedItem()
|
||||||
|
|
||||||
# Type something into the document
|
# Type something into the document
|
||||||
nwGUI.setFocus(2)
|
nwGUI.switchFocus(nwWidget.EDITOR)
|
||||||
qtbot.keyClick(nwGUI.docEditor, "a", modifier=Qt.ControlModifier, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, "a", modifier=Qt.ControlModifier, delay=keyDelay)
|
||||||
for c in "# Jane Doe":
|
for c in "# Jane Doe":
|
||||||
qtbot.keyClick(nwGUI.docEditor, c, delay=typeDelay)
|
qtbot.keyClick(nwGUI.docEditor, c, delay=typeDelay)
|
||||||
@@ -139,14 +139,14 @@ def testGuiEditor_Main(qtbot, monkeypatch, nwGUI, fncDir, fncProj, refDir, outDi
|
|||||||
qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay)
|
||||||
|
|
||||||
# Add a Plot File
|
# Add a Plot File
|
||||||
nwGUI.setFocus(1)
|
nwGUI.switchFocus(nwWidget.TREE)
|
||||||
nwGUI.treeView.clearSelection()
|
nwGUI.treeView.clearSelection()
|
||||||
nwGUI.treeView._getTreeItem("44cb730c42048").setSelected(True)
|
nwGUI.treeView._getTreeItem("44cb730c42048").setSelected(True)
|
||||||
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
||||||
assert nwGUI.openSelectedItem()
|
assert nwGUI.openSelectedItem()
|
||||||
|
|
||||||
# Type something into the document
|
# Type something into the document
|
||||||
nwGUI.setFocus(2)
|
nwGUI.switchFocus(nwWidget.EDITOR)
|
||||||
qtbot.keyClick(nwGUI.docEditor, "a", modifier=Qt.ControlModifier, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, "a", modifier=Qt.ControlModifier, delay=keyDelay)
|
||||||
for c in "# Main Plot":
|
for c in "# Main Plot":
|
||||||
qtbot.keyClick(nwGUI.docEditor, c, delay=typeDelay)
|
qtbot.keyClick(nwGUI.docEditor, c, delay=typeDelay)
|
||||||
@@ -161,7 +161,7 @@ def testGuiEditor_Main(qtbot, monkeypatch, nwGUI, fncDir, fncProj, refDir, outDi
|
|||||||
qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay)
|
||||||
|
|
||||||
# Add a World File
|
# Add a World File
|
||||||
nwGUI.setFocus(1)
|
nwGUI.switchFocus(nwWidget.TREE)
|
||||||
nwGUI.treeView.clearSelection()
|
nwGUI.treeView.clearSelection()
|
||||||
nwGUI.treeView._getTreeItem("811786ad1ae74").setSelected(True)
|
nwGUI.treeView._getTreeItem("811786ad1ae74").setSelected(True)
|
||||||
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
nwGUI.treeView.newTreeItem(nwItemType.FILE, None)
|
||||||
@@ -173,7 +173,7 @@ def testGuiEditor_Main(qtbot, monkeypatch, nwGUI, fncDir, fncProj, refDir, outDi
|
|||||||
nwGUI.docEditor.replaceText("")
|
nwGUI.docEditor.replaceText("")
|
||||||
|
|
||||||
# Type something into the document
|
# Type something into the document
|
||||||
nwGUI.setFocus(2)
|
nwGUI.switchFocus(nwWidget.EDITOR)
|
||||||
qtbot.keyClick(nwGUI.docEditor, "a", modifier=Qt.ControlModifier, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, "a", modifier=Qt.ControlModifier, delay=keyDelay)
|
||||||
for c in "# Main Location":
|
for c in "# Main Location":
|
||||||
qtbot.keyClick(nwGUI.docEditor, c, delay=typeDelay)
|
qtbot.keyClick(nwGUI.docEditor, c, delay=typeDelay)
|
||||||
@@ -192,7 +192,7 @@ def testGuiEditor_Main(qtbot, monkeypatch, nwGUI, fncDir, fncProj, refDir, outDi
|
|||||||
nwGUI._autoSaveProject()
|
nwGUI._autoSaveProject()
|
||||||
|
|
||||||
# Select the 'New Scene' file
|
# Select the 'New Scene' file
|
||||||
nwGUI.setFocus(1)
|
nwGUI.switchFocus(nwWidget.TREE)
|
||||||
nwGUI.treeView.clearSelection()
|
nwGUI.treeView.clearSelection()
|
||||||
nwGUI.treeView._getTreeItem("73475cb40a568").setExpanded(True)
|
nwGUI.treeView._getTreeItem("73475cb40a568").setExpanded(True)
|
||||||
nwGUI.treeView._getTreeItem("31489056e0916").setExpanded(True)
|
nwGUI.treeView._getTreeItem("31489056e0916").setExpanded(True)
|
||||||
@@ -200,7 +200,7 @@ def testGuiEditor_Main(qtbot, monkeypatch, nwGUI, fncDir, fncProj, refDir, outDi
|
|||||||
assert nwGUI.openSelectedItem()
|
assert nwGUI.openSelectedItem()
|
||||||
|
|
||||||
# Type something into the document
|
# Type something into the document
|
||||||
nwGUI.setFocus(2)
|
nwGUI.switchFocus(nwWidget.EDITOR)
|
||||||
qtbot.keyClick(nwGUI.docEditor, "a", modifier=Qt.ControlModifier, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, "a", modifier=Qt.ControlModifier, delay=keyDelay)
|
||||||
for c in "# Novel":
|
for c in "# Novel":
|
||||||
qtbot.keyClick(nwGUI.docEditor, c, delay=typeDelay)
|
qtbot.keyClick(nwGUI.docEditor, c, delay=typeDelay)
|
||||||
@@ -300,7 +300,7 @@ def testGuiEditor_Main(qtbot, monkeypatch, nwGUI, fncDir, fncProj, refDir, outDi
|
|||||||
qtbot.wait(stepDelay)
|
qtbot.wait(stepDelay)
|
||||||
|
|
||||||
# Open and view the edited document
|
# Open and view the edited document
|
||||||
nwGUI.setFocus(3)
|
nwGUI.switchFocus(nwWidget.VIEWER)
|
||||||
assert nwGUI.openDocument("0e17daca5f3e1")
|
assert nwGUI.openDocument("0e17daca5f3e1")
|
||||||
assert nwGUI.viewDocument("0e17daca5f3e1")
|
assert nwGUI.viewDocument("0e17daca5f3e1")
|
||||||
qtbot.wait(stepDelay)
|
qtbot.wait(stepDelay)
|
||||||
|
|||||||
@@ -28,7 +28,9 @@ from PyQt5.QtGui import QTextCursor, QTextBlock
|
|||||||
from PyQt5.QtWidgets import QAction, QFileDialog, QMessageBox
|
from PyQt5.QtWidgets import QAction, QFileDialog, QMessageBox
|
||||||
|
|
||||||
from nw.gui.doceditor import GuiDocEditor
|
from nw.gui.doceditor import GuiDocEditor
|
||||||
from nw.constants import nwUnicode, nwDocAction, nwDocInsert, nwKeyWords
|
from nw.constants import (
|
||||||
|
nwUnicode, nwDocAction, nwDocInsert, nwKeyWords, nwWidget
|
||||||
|
)
|
||||||
|
|
||||||
keyDelay = 2
|
keyDelay = 2
|
||||||
typeDelay = 1
|
typeDelay = 1
|
||||||
@@ -366,7 +368,7 @@ def testGuiMenu_Insert(qtbot, monkeypatch, nwGUI, fncDir, fncProj):
|
|||||||
|
|
||||||
assert nwGUI.treeView._getTreeItem("0e17daca5f3e1") is not None
|
assert nwGUI.treeView._getTreeItem("0e17daca5f3e1") is not None
|
||||||
|
|
||||||
nwGUI.setFocus(1)
|
nwGUI.switchFocus(nwWidget.TREE)
|
||||||
nwGUI.treeView.clearSelection()
|
nwGUI.treeView.clearSelection()
|
||||||
nwGUI.treeView._getTreeItem("0e17daca5f3e1").setSelected(True)
|
nwGUI.treeView._getTreeItem("0e17daca5f3e1").setSelected(True)
|
||||||
assert nwGUI.openSelectedItem()
|
assert nwGUI.openSelectedItem()
|
||||||
|
|||||||
Reference in New Issue
Block a user