From fdda0ddc748554ee7995942e9429df5f16ed856a Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Thu, 27 Feb 2020 21:54:26 +0100 Subject: [PATCH] Fixed a few issues with loading and saving of outline settings, and fixed zen mode --- nw/gui/elements/outline.py | 46 +++++++++++++++++++++++++++----------- nw/guimain.py | 9 ++++++-- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/nw/gui/elements/outline.py b/nw/gui/elements/outline.py index 0be50914..ed10b1ee 100644 --- a/nw/gui/elements/outline.py +++ b/nw/gui/elements/outline.py @@ -21,7 +21,7 @@ from PyQt5.QtWidgets import ( QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem ) -from nw.constants import nwItemLayout, nwKeyWords, nwLabels, nwFiles +from nw.constants import nwKeyWords, nwLabels logger = logging.getLogger(__name__) @@ -76,9 +76,7 @@ class GuiProjectOutline(QWidget): self.theIndex = self.theParent.theIndex self.optState = self.theProject.optState - self.showWords = True - self.showSynopsis = True - self.showFilePath = False + self.firstView = True self.outerBox = QVBoxLayout() self.mainTree = QTreeWidget() @@ -103,7 +101,35 @@ class GuiProjectOutline(QWidget): return - def saveHeaderState(self): + def refreshTree(self): + """Called whenever the Outline tab is activated and controls + what data to load, and if necessary, force a rebuild of the + tree. + """ + + if self.firstView: + self._loadHeaderState() + self._populateTree() + + self.firstView = False + + return + + def closeOutline(self): + """Called before a project is closed. + """ + + self._saveHeaderState() + self.mainTree.clear() + self.firstView = True + + return + + ## + # Internal Functions + ## + + def _saveHeaderState(self): colW = [] for iCol in range(self.mainTree.columnCount()): @@ -114,7 +140,7 @@ class GuiProjectOutline(QWidget): self.optState.saveSettings() return - def loadHeaderState(self): + def _loadHeaderState(self): treeCols = self.optState.getValue("GuiProjectOutline", "headState", {}) @@ -133,9 +159,7 @@ class GuiProjectOutline(QWidget): return - def populateTree(self): - - self.loadHeaderState() + def _populateTree(self): theLabels = [] for i, n in enumerate(self.treeCols["order"]): @@ -213,10 +237,6 @@ class GuiProjectOutline(QWidget): return - ## - # Internal Functions - ## - def _createTreeItem(self, tHandle, sTitle): nwItem = self.theProject.getItem(tHandle) diff --git a/nw/guimain.py b/nw/guimain.py index 33c883b8..460f096e 100644 --- a/nw/guimain.py +++ b/nw/guimain.py @@ -307,6 +307,7 @@ class GuiMain(QMainWindow): if saveOK: self.closeDocument() + self.projView.closeOutline() self.theProject.closeProject() self.theIndex.clearIndex() self.clearGUI() @@ -329,6 +330,9 @@ class GuiMain(QMainWindow): if not self.closeProject(): return False + # Switch main tab to editor view + self.tabWidget.setCurrentWidget(self.splitView) + # Try to open the project if not self.theProject.openProject(projFile): if self.theProject.lockedBy is not None: @@ -773,7 +777,6 @@ class GuiMain(QMainWindow): logger.info("Exiting %s" % nw.__package__) if self.hasProject: - self.projView.saveHeaderState() self.closeProject(True) self.mainConf.setTreeColWidths(self.treeView.getColumnSizes()) @@ -824,6 +827,7 @@ class GuiMain(QMainWindow): self.isZenMode = not self.isZenMode if self.isZenMode: logger.debug("Activating Zen mode") + self.tabWidget.setCurrentWidget(self.splitView) else: logger.debug("Deactivating Zen mode") @@ -831,6 +835,7 @@ class GuiMain(QMainWindow): self.treePane.setVisible(isVisible) self.statusBar.setVisible(isVisible) self.mainMenu.setVisible(isVisible) + self.tabWidget.tabBar().setVisible(isVisible) if self.viewPane.isVisible(): self.viewPane.setVisible(False) @@ -995,7 +1000,7 @@ class GuiMain(QMainWindow): elif tabIndex == self.idxTabProj: logger.verbose("Project outline tab activated") if self.hasProject: - self.projView.populateTree() + self.projView.refreshTree() return # END Class GuiMain