Merge pull request #19 from vkbo/improvements

Improvements
This commit is contained in:
Veronica K. Berglyd Olsen
2019-05-25 20:15:54 +02:00
committed by GitHub
7 changed files with 59 additions and 20 deletions
-2
View File
@@ -13,11 +13,9 @@
import logging import logging
import nw import nw
from os import path
from PyQt5.QtGui import QFont from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QFrame, QGridLayout, QLabel from PyQt5.QtWidgets import QFrame, QGridLayout, QLabel
from nw.enum import nwItemType, nwItemClass, nwItemLayout
from nw.constants import nwLabels from nw.constants import nwLabels
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
+1 -1
View File
@@ -16,9 +16,9 @@ import enchant
from time import time from time import time
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtWidgets import QTextEdit, QAction, QMenu, QShortcut from PyQt5.QtWidgets import QTextEdit, QAction, QMenu, QShortcut
from PyQt5.QtGui import QTextCursor, QTextOption, QIcon, QKeySequence from PyQt5.QtGui import QTextCursor, QTextOption, QIcon, QKeySequence
from PyQt5.QtCore import Qt, QTimer
from nw.gui.dochighlight import GuiDocHighlighter from nw.gui.dochighlight import GuiDocHighlighter
from nw.gui.wordcounter import WordCounter from nw.gui.wordcounter import WordCounter
+1 -2
View File
@@ -13,10 +13,9 @@
import logging import logging
import nw import nw
from os import path
from PyQt5.QtCore import Qt, QSize from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QIcon, QFont, QColor from PyQt5.QtGui import QIcon, QFont, QColor
from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QAbstractItemView, QInputDialog, QLineEdit, QApplication from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QAbstractItemView, QApplication
from nw.project.item import NWItem from nw.project.item import NWItem
from nw.enum import nwItemType, nwItemClass, nwAlert from nw.enum import nwItemType, nwItemClass, nwAlert
+12 -5
View File
@@ -13,8 +13,8 @@
import logging import logging
import nw import nw
from PyQt5.QtWidgets import qApp, QMenuBar, QAction, QMessageBox
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMenuBar, QAction, QMessageBox
from nw.enum import nwItemType, nwItemClass, nwDocAction from nw.enum import nwItemType, nwItemClass, nwDocAction
@@ -91,8 +91,7 @@ class GuiMainMenu(QMenuBar):
def _menuExit(self): def _menuExit(self):
self.theParent.closeMain() self.theParent.closeMain()
qApp.quit() return
return True
def _toggleSpellCheck(self): def _toggleSpellCheck(self):
self.theProject.setSpellCheck(self.toolsSpellCheck.isChecked()) self.theProject.setSpellCheck(self.toolsSpellCheck.isChecked())
@@ -155,8 +154,9 @@ class GuiMainMenu(QMenuBar):
self.projMenu.addAction(menuItem) self.projMenu.addAction(menuItem)
# Project > Close Project # Project > Close Project
menuItem = QAction("Close Project", self) menuItem = QAction(QIcon.fromTheme("document-revert"), "Close Project", self)
menuItem.setStatusTip("Close Project") menuItem.setStatusTip("Close Project")
menuItem.setShortcut("Ctrl+Shift+W")
menuItem.triggered.connect(lambda : self.theParent.closeProject(False)) menuItem.triggered.connect(lambda : self.theParent.closeProject(False))
self.projMenu.addAction(menuItem) self.projMenu.addAction(menuItem)
@@ -204,7 +204,7 @@ class GuiMainMenu(QMenuBar):
# Project > Edit # Project > Edit
menuItem = QAction(QIcon.fromTheme("document-properties"), "&Edit Item", self) menuItem = QAction(QIcon.fromTheme("document-properties"), "&Edit Item", self)
menuItem.setStatusTip("Change Item Settings") menuItem.setStatusTip("Change Item Settings")
menuItem.setShortcut("Ctrl+E") menuItem.setShortcuts(["Ctrl+E", "F2"])
menuItem.triggered.connect(self.theParent.editItem) menuItem.triggered.connect(self.theParent.editItem)
self.projMenu.addAction(menuItem) self.projMenu.addAction(menuItem)
@@ -263,6 +263,13 @@ class GuiMainMenu(QMenuBar):
menuItem.triggered.connect(lambda : self.theParent.viewDocument(None)) menuItem.triggered.connect(lambda : self.theParent.viewDocument(None))
self.docuMenu.addAction(menuItem) self.docuMenu.addAction(menuItem)
# Document > Close Preview
menuItem = QAction(QIcon.fromTheme("text-html"), "Close Document View", self)
menuItem.setStatusTip("Close Document View Pane")
menuItem.setShortcut("Ctrl+Shift+R")
menuItem.triggered.connect(self.theParent.closeDocViewer)
self.docuMenu.addAction(menuItem)
# # Document > Separator # # Document > Separator
# self.docuMenu.addSeparator() # self.docuMenu.addSeparator()
-1
View File
@@ -13,7 +13,6 @@
import logging import logging
import nw import nw
from os import path
from PyQt5.QtWidgets import QStatusBar, QLabel, QFrame from PyQt5.QtWidgets import QStatusBar, QLabel, QFrame
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
+38 -7
View File
@@ -14,9 +14,12 @@ import logging
import nw import nw
from os import path from os import path
from PyQt5.QtWidgets import QWidget, QMainWindow, QVBoxLayout, QFrame, QSplitter, QFileDialog, QStackedWidget, QShortcut, QMessageBox
from PyQt5.QtGui import QIcon, QPixmap, QColor
from PyQt5.QtCore import Qt, QTimer from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QIcon, QPixmap, QColor
from PyQt5.QtWidgets import (
qApp, QWidget, QMainWindow, QVBoxLayout, QFrame, QSplitter, QFileDialog,
QShortcut, QMessageBox
)
from nw.theme import Theme from nw.theme import Theme
from nw.gui.doctree import GuiDocTree from nw.gui.doctree import GuiDocTree
@@ -75,6 +78,7 @@ class GuiMain(QMainWindow):
self.splitView = QSplitter(Qt.Horizontal) self.splitView = QSplitter(Qt.Horizontal)
self.splitView.addWidget(self.docEditor) self.splitView.addWidget(self.docEditor)
self.splitView.addWidget(self.docViewer) self.splitView.addWidget(self.docViewer)
self.splitView.splitterMoved.connect(self._splitViewMove)
self.splitMain = QSplitter(Qt.Horizontal) self.splitMain = QSplitter(Qt.Horizontal)
self.splitMain.addWidget(self.treePane) self.splitMain.addWidget(self.treePane)
@@ -171,8 +175,7 @@ class GuiMain(QMainWindow):
def clearGUI(self): def clearGUI(self):
self.treeView.clearTree() self.treeView.clearTree()
self.docEditor.clearEditor() self.docEditor.clearEditor()
self.docViewer.clearViewer() self.closeDocViewer()
self.docViewer.setVisible(False)
return True return True
## ##
@@ -428,7 +431,17 @@ class GuiMain(QMainWindow):
# Main Window Actions # Main Window Actions
## ##
def closeMain(self): def closeMain(self, isYes=False):
if not isYes:
msgBox = QMessageBox()
msgRes = msgBox.question(
self, "Exit",
"Do you want to exit %s?" % nw.__package__
)
if msgRes != QMessageBox.Yes:
return False
logger.info("Exiting %s" % nw.__package__) logger.info("Exiting %s" % nw.__package__)
if self._takeDocumentAction(): if self._takeDocumentAction():
self.saveDocument() self.saveDocument()
@@ -439,7 +452,10 @@ class GuiMain(QMainWindow):
self.mainConf.setMainPanePos(self.splitMain.sizes()) self.mainConf.setMainPanePos(self.splitMain.sizes())
self.mainConf.setDocPanePos(self.splitView.sizes()) self.mainConf.setDocPanePos(self.splitView.sizes())
self.mainConf.saveConfig() self.mainConf.saveConfig()
return
qApp.quit()
return True
def setFocus(self, paneNo): def setFocus(self, paneNo):
if paneNo == 1: if paneNo == 1:
@@ -450,6 +466,16 @@ class GuiMain(QMainWindow):
self.docViewer.setFocus() self.docViewer.setFocus()
return return
def closeDocViewer(self):
self.docViewer.clearViewer()
self.theProject.setLastViewed(None)
bPos = self.splitMain.sizes()
self.docViewer.setVisible(False)
vPos = [bPos[1],0]
self.splitView.setSizes(vPos)
self.docEditor.changeWidth()
return not self.docViewer.isVisible()
## ##
# Internal Functions # Internal Functions
## ##
@@ -516,7 +542,6 @@ class GuiMain(QMainWindow):
def closeEvent(self, theEvent): def closeEvent(self, theEvent):
self.closeMain() self.closeMain()
QMainWindow.closeEvent(self,theEvent)
return return
## ##
@@ -557,4 +582,10 @@ class GuiMain(QMainWindow):
self.docEditor.changeWidth() self.docEditor.changeWidth()
return return
def _splitViewMove(self, pWidth, pHeight):
"""Alert dependent GUI elements that the main pane splitter has been moved.
"""
self.docEditor.changeWidth()
return
# END Class GuiMain # END Class GuiMain
+7 -2
View File
@@ -76,7 +76,7 @@ def testMainWindows(qtbot, nwTempGUI, nwRef):
assert nwGUI.treeView._getTreeItem("811786ad1ae74") is not None assert nwGUI.treeView._getTreeItem("811786ad1ae74") is not None
# Select the 'New Scene' file # Select the 'New Scene' file
nwGUI.treeView.setFocus() nwGUI.setFocus(1)
nwGUI.treeView._getTreeItem("73475cb40a568").setExpanded(True) nwGUI.treeView._getTreeItem("73475cb40a568").setExpanded(True)
nwGUI.treeView._getTreeItem("25fc0e7096fc6").setExpanded(True) nwGUI.treeView._getTreeItem("25fc0e7096fc6").setExpanded(True)
nwGUI.treeView._getTreeItem("31489056e0916").setSelected(True) nwGUI.treeView._getTreeItem("31489056e0916").setSelected(True)
@@ -85,7 +85,7 @@ def testMainWindows(qtbot, nwTempGUI, nwRef):
assert nwGUI.mainMenu._toggleSpellCheck() assert nwGUI.mainMenu._toggleSpellCheck()
# Type something into the document # Type something into the document
nwGUI.docEditor.setFocus() nwGUI.setFocus(2)
for c in "# Hello World!": for c in "# Hello World!":
qtbot.keyClick(nwGUI.docEditor, c, delay=keyDelay) qtbot.keyClick(nwGUI.docEditor, c, delay=keyDelay)
qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay) qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay)
@@ -142,10 +142,12 @@ def testMainWindows(qtbot, nwTempGUI, nwRef):
qtbot.wait(stepDelay) qtbot.wait(stepDelay)
# Open and view the edited document # Open and view the edited document
nwGUI.setFocus(3)
assert nwGUI.openDocument("31489056e0916") assert nwGUI.openDocument("31489056e0916")
assert nwGUI.viewDocument("31489056e0916") assert nwGUI.viewDocument("31489056e0916")
qtbot.wait(stepDelay) qtbot.wait(stepDelay)
assert nwGUI.saveProject() assert nwGUI.saveProject()
assert nwGUI.closeDocViewer()
# Check the files # Check the files
projFile = path.join(nwTempGUI,"nwProject.nwx") projFile = path.join(nwTempGUI,"nwProject.nwx")
@@ -153,6 +155,7 @@ def testMainWindows(qtbot, nwTempGUI, nwRef):
sceneFile = path.join(nwTempGUI,"data_3","1489056e0916_main.nwd") sceneFile = path.join(nwTempGUI,"data_3","1489056e0916_main.nwd")
assert cmpFiles(sceneFile, path.join(nwRef,"gui","1_1489056e0916_main.nwd")) assert cmpFiles(sceneFile, path.join(nwRef,"gui","1_1489056e0916_main.nwd"))
nwGUI.closeMain(True)
# qtbot.stopForInteraction() # qtbot.stopForInteraction()
@pytest.mark.gui @pytest.mark.gui
@@ -214,6 +217,7 @@ def testProjectEditor(qtbot, nwTempGUI, nwRef):
projFile = path.join(nwTempGUI,"nwProject.nwx") projFile = path.join(nwTempGUI,"nwProject.nwx")
assert cmpFiles(projFile, path.join(nwRef,"gui","2_nwProject.nwx"), [2]) assert cmpFiles(projFile, path.join(nwRef,"gui","2_nwProject.nwx"), [2])
nwGUI.closeMain(True)
# qtbot.stopForInteraction() # qtbot.stopForInteraction()
@pytest.mark.gui @pytest.mark.gui
@@ -259,4 +263,5 @@ def testItemEditor(qtbot, nwTempGUI, nwRef):
projFile = path.join(nwTempGUI,"nwProject.nwx") projFile = path.join(nwTempGUI,"nwProject.nwx")
assert cmpFiles(projFile, path.join(nwRef,"gui","3_nwProject.nwx"), [2]) assert cmpFiles(projFile, path.join(nwRef,"gui","3_nwProject.nwx"), [2])
nwGUI.closeMain(True)
# qtbot.stopForInteraction() # qtbot.stopForInteraction()