diff --git a/nw/config.py b/nw/config.py index 5acf8774..fbb384ab 100644 --- a/nw/config.py +++ b/nw/config.py @@ -288,7 +288,8 @@ class Config: return True def loadConfig(self): - + """Load preferences from file and replace default settings. + """ logger.debug("Loading config file") cnfParse = configparser.ConfigParser() try: @@ -453,7 +454,8 @@ class Config: return True def saveConfig(self): - + """Save the current preferences to file. + """ logger.debug("Saving config file") cnfParse = configparser.ConfigParser() @@ -546,7 +548,6 @@ class Config: def loadRecentCache(self): """Load the cache file for recent projects. """ - if self.dataPath is None: return False @@ -587,7 +588,6 @@ class Config: def saveRecentCache(self): """Save the cache dictionary of recent projects. """ - if self.dataPath is None: return False @@ -619,6 +619,18 @@ class Config: } return True + def removeFromRecentCache(self, thePath): + """Trying to remove a path from the recent projects cache. + """ + if thePath in self.recentProj: + del self.recentProj[thePath] + logger.verbose("Removed recent: %s" % thePath) + self.saveRecentCache() + else: + logger.error("Unknown recent: %s" % thePath) + return False + return True + ## # Setters and Getters ## @@ -737,7 +749,6 @@ class Config: def _checkOptionalPackages(self): """Cheks if we have the optional packages used by some features. """ - try: import enchant self.hasEnchant = True diff --git a/nw/gui/dialogs/projectload.py b/nw/gui/dialogs/projectload.py index 17950b37..b3492d9a 100644 --- a/nw/gui/dialogs/projectload.py +++ b/nw/gui/dialogs/projectload.py @@ -31,9 +31,10 @@ import nw 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 + QAbstractItemView, QTreeWidgetItem, QDialogButtonBox, QLabel, QShortcut ) from nw.common import formatInt @@ -119,6 +120,10 @@ class GuiProjectLoad(QDialog): self._populateList() self._doSelectRecent() + keyDelete = QShortcut(self.listBox) + keyDelete.setKey(QKeySequence(Qt.Key_Delete)) + keyDelete.activated.connect(self._keyPressDelete) + logger.debug("GuiProjectLoad initialisation complete") return @@ -179,6 +184,15 @@ class GuiProjectLoad(QDialog): self.accept() return + def _keyPressDelete(self): + """Remove an entry from the recent projects list. + """ + selList = self.listBox.selectedItems() + if selList: + self.mainConf.removeFromRecentCache(selList[0].text(3)) + self._populateList() + return + ## # Internal Functions ##