diff --git a/nw/config.py b/nw/config.py index c7f4ab52..18f2bc8e 100644 --- a/nw/config.py +++ b/nw/config.py @@ -340,6 +340,10 @@ class Config: self.recentList.insert(0,recentPath) return + def clearRecent(self): + self.recentList = [""]*10 + return + def setConfPath(self, newPath): if newPath is None: return True diff --git a/nw/gui/export.py b/nw/gui/export.py index 1b33ade6..1032bb08 100644 --- a/nw/gui/export.py +++ b/nw/gui/export.py @@ -122,6 +122,15 @@ class GuiExport(QDialog): pFormat = self.tabPandoc.outputFormat.currentData() tFormat = GuiExportPandoc.FMT_VIA[pFormat] + if saveTo.startswith("~"): + saveTo = path.expanduser(saveTo) + + exportDir = path.dirname(saveTo) + if not path.isdir(exportDir): + self.theParent.makeAlert("The export folder does not exist.",nwAlert.ERROR) + self.exportStatus.setText("Export failed ...") + return False + nItems = len(self.theProject.treeOrder) if eFormat == GuiExportMain.FMT_PDOC: nItems += int(0.2*nItems) @@ -288,6 +297,9 @@ class GuiExport(QDialog): hScene = self.tabMain.hideScene.isChecked() hSection = self.tabMain.hideSection.isChecked() + if saveTo.startswith("~"): + saveTo = path.expanduser(saveTo) + self.optState.setSetting("wNovel", wNovel) self.optState.setSetting("wNotes", wNotes) self.optState.setSetting("eFormat", eFormat) @@ -563,6 +575,8 @@ class GuiExportMain(QWidget): def _checkFileExtension(self): saveTo = self.exportPath.text() + if saveTo.startswith("~"): + saveTo = path.expanduser(saveTo) fileBits = path.splitext(saveTo) if self.currFormat > 0 and fileBits[0].strip() != "": saveTo = fileBits[0]+self.FMT_EXT[self.currFormat] diff --git a/nw/gui/mainmenu.py b/nw/gui/mainmenu.py index e2f5775d..7a42f6cf 100644 --- a/nw/gui/mainmenu.py +++ b/nw/gui/mainmenu.py @@ -72,6 +72,7 @@ class GuiMainMenu(QMenuBar): return def updateRecentProjects(self): + self.recentMenu.clear() for n in range(len(self.mainConf.recentList)): recentProject = self.mainConf.recentList[n] @@ -79,6 +80,13 @@ class GuiMainMenu(QMenuBar): menuItem = QAction("%s" % recentProject, self.projMenu) menuItem.triggered.connect(lambda menuItem, n=n : self.openRecentProject(menuItem, n)) self.recentMenu.addAction(menuItem) + + self.recentMenu.addSeparator() + menuItem = QAction("Clear Recent Projects", self) + menuItem.setStatusTip("Clear the list of recent projects") + menuItem.triggered.connect(self._clearRecentProjects) + self.recentMenu.addAction(menuItem) + return def updateSpellCheck(self): @@ -150,6 +158,11 @@ class GuiMainMenu(QMenuBar): QDesktopServices.openUrl(QUrl(nw.__docurl__)) return True + def _clearRecentProjects(self): + self.mainConf.clearRecent() + self.updateRecentProjects() + return True + ## # Menu Builders ## diff --git a/nw/project/project.py b/nw/project/project.py index 62345a63..df298dc8 100644 --- a/nw/project/project.py +++ b/nw/project/project.py @@ -358,6 +358,8 @@ class NWProject(): if projPath is None or projPath == "": self.projPath = None else: + if projPath.startswith("~"): + projPath = path.expanduser(projPath) self.projPath = projPath self.setProjectChanged(True) return True