From 1252d9728a2ba3bf9b2100faf3c5190fb11d780c Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 24 May 2020 19:37:59 +0200 Subject: [PATCH] Moved the code for browsing for projects to the open projects dialog --- nw/gui/dialogs/projectload.py | 56 ++++++++++++++++++++++------------- nw/guimain.py | 35 ++++++++-------------- 2 files changed, 49 insertions(+), 42 deletions(-) diff --git a/nw/gui/dialogs/projectload.py b/nw/gui/dialogs/projectload.py index b3492d9a..3b64848b 100644 --- a/nw/gui/dialogs/projectload.py +++ b/nw/gui/dialogs/projectload.py @@ -28,25 +28,27 @@ import logging import nw +from os import path from datetime import datetime from PyQt5.QtCore import Qt from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import ( QDialog, QHBoxLayout, QVBoxLayout, QGridLayout, QPushButton, QTreeWidget, - QAbstractItemView, QTreeWidgetItem, QDialogButtonBox, QLabel, QShortcut + QAbstractItemView, QTreeWidgetItem, QDialogButtonBox, QLabel, QShortcut, + QFileDialog, QLineEdit ) from nw.common import formatInt +from nw.constants import nwFiles logger = logging.getLogger(__name__) class GuiProjectLoad(QDialog): - NONE_STATE = 0 - BROWSE_STATE = 1 - NEW_STATE = 2 - OPEN_STATE = 3 + NONE_STATE = 0 + NEW_STATE = 1 + OPEN_STATE = 2 def __init__(self, theParent): QDialog.__init__(self, theParent) @@ -88,16 +90,23 @@ class GuiProjectLoad(QDialog): treeHead.setTextAlignment(1, Qt.AlignRight) treeHead.setTextAlignment(2, Qt.AlignRight) - self.lblRecent = QLabel("Recently Opened:") - self.lblPath = QLabel("Path:") - self.selPath = QLabel("") - self.selPath.setWordWrap(True) + self.lblRecent = QLabel("Recently Opened Projects") + self.lblPath = QLabel("Path") + self.selPath = QLineEdit("") + self.selPath.setEnabled(False) - self.projectForm.addWidget(self.lblRecent, 0, 0, 1, 2) - self.projectForm.addWidget(self.listBox, 1, 0, 1, 2) - self.projectForm.addWidget(self.lblPath, 2, 0, 1, 1, Qt.AlignTop) - self.projectForm.addWidget(self.selPath, 2, 1, 1, 1, Qt.AlignTop) + self.browseButton = QPushButton("...") + self.browseButton.setMaximumWidth(30) + self.browseButton.clicked.connect(self._doBrowse) + + self.projectForm.addWidget(self.lblRecent, 0, 0, 1, 3) + self.projectForm.addWidget(self.listBox, 1, 0, 1, 3) + self.projectForm.addWidget(self.lblPath, 2, 0, 1, 1) + self.projectForm.addWidget(self.selPath, 2, 1, 1, 1) + self.projectForm.addWidget(self.browseButton, 2, 2, 1, 1) + self.projectForm.setColumnStretch(0, 0) self.projectForm.setColumnStretch(1, 1) + self.projectForm.setColumnStretch(2, 0) self.projectForm.setVerticalSpacing(4) self.projectForm.setHorizontalSpacing(8) @@ -110,9 +119,6 @@ class GuiProjectLoad(QDialog): self.newButton = self.buttonBox.addButton("New", QDialogButtonBox.ActionRole) self.newButton.clicked.connect(self._doNewProject) - self.browseButton = self.buttonBox.addButton("Browse", QDialogButtonBox.ActionRole) - self.browseButton.clicked.connect(self._doBrowse) - self.outerBox.addLayout(self.innerBox) self.outerBox.addWidget(self.buttonBox) self.setLayout(self.outerBox) @@ -160,10 +166,20 @@ class GuiProjectLoad(QDialog): project browser dialog. """ logger.verbose("GuiProjectLoad browse button clicked") - self._saveDialogState() - self.openPath = None - self.openState = self.BROWSE_STATE - self.accept() + if self.mainConf.showGUI: + dlgOpt = QFileDialog.Options() + dlgOpt |= QFileDialog.DontUseNativeDialog + projFile, _ = QFileDialog.getOpenFileName( + self, "Open novelWriter Project", "", + "novelWriter Project File (%s);;All Files (*)" % nwFiles.PROJ_FILE, + options=dlgOpt + ) + if projFile: + thePath = path.abspath(path.dirname(projFile)) + self.selPath.setText(thePath) + self.openPath = thePath + self.openState = self.OPEN_STATE + self.accept() return def _doClose(self): diff --git a/nw/guimain.py b/nw/guimain.py index b15edbe9..aaf37144 100644 --- a/nw/guimain.py +++ b/nw/guimain.py @@ -264,8 +264,6 @@ class GuiMain(QMainWindow): if dlgProj.result() == QDialog.Accepted: if dlgProj.openState == GuiProjectLoad.OPEN_STATE: self.openProject(dlgProj.openPath) - elif dlgProj.openState == GuiProjectLoad.BROWSE_STATE: - self.openProject(dlgProj.openPath) elif dlgProj.openState == GuiProjectLoad.NEW_STATE: self.newProject() @@ -354,13 +352,11 @@ class GuiMain(QMainWindow): return saveOK - def openProject(self, projFile=None): + def openProject(self, projFile): """Open a project. The parameter projFile is passed from the - open recent projects menu, so it can be set. If not, we pop the - dialog. + open recent projects menu, and must be set to be forwarded to + the project class. Otherwise, we just return. """ - if projFile is None: - projFile = self.openProjectDialog() if projFile is None: return False @@ -484,6 +480,8 @@ class GuiMain(QMainWindow): return True def saveDocument(self): + """Save the current documents. + """ if self.hasProject: self.docEditor.saveText() return True @@ -491,7 +489,6 @@ class GuiMain(QMainWindow): def viewDocument(self, tHandle=None): """Load a document for viewing in the view panel. """ - if tHandle is None: tHandle = self.treeView.getSelectedHandle() if tHandle is None: @@ -521,7 +518,6 @@ class GuiMain(QMainWindow): """Import the text contained in an out-of-project text file, and insert the text into the currently open document. """ - lastPath = self.mainConf.lastPath extFilter = [ @@ -610,6 +606,8 @@ class GuiMain(QMainWindow): ## def openSelectedItem(self): + """Open the selected documents. + """ tHandle = self.treeView.getSelectedHandle() if tHandle is None: logger.warning("No item selected") @@ -626,6 +624,8 @@ class GuiMain(QMainWindow): return True def editItem(self): + """Open the edit item dialog. + """ tHandle = self.treeView.getSelectedHandle() if tHandle is None: logger.warning("No item selected") @@ -654,7 +654,6 @@ class GuiMain(QMainWindow): def rebuildIndex(self): """Rebuild the entire index. """ - if not self.hasProject: return False @@ -708,19 +707,9 @@ class GuiMain(QMainWindow): # Main Dialogs ## - def openProjectDialog(self): - dlgOpt = QFileDialog.Options() - dlgOpt |= QFileDialog.DontUseNativeDialog - projFile, _ = QFileDialog.getOpenFileName( - self, "Open novelWriter Project", "", - "novelWriter Project File (%s);;All Files (*)" % nwFiles.PROJ_FILE, - options=dlgOpt - ) - if projFile: - return projFile - return None - def saveProjectDialog(self): + """Select where to save project. + """ dlgOpt = QFileDialog.Options() dlgOpt |= QFileDialog.ShowDirsOnly dlgOpt |= QFileDialog.DontUseNativeDialog @@ -732,6 +721,8 @@ class GuiMain(QMainWindow): return None def newProjectDialog(self): + """Select where to save new project. + """ dlgOpt = QFileDialog.Options() dlgOpt |= QFileDialog.ShowDirsOnly dlgOpt |= QFileDialog.DontUseNativeDialog