Connect the change of view methods to all relevant actions
This commit is contained in:
+8
-7
@@ -132,13 +132,14 @@ class nwState(Enum):
|
|||||||
|
|
||||||
class nwView(Enum):
|
class nwView(Enum):
|
||||||
|
|
||||||
PROJECT = 0
|
EDITOR = 0
|
||||||
NOVEL = 1
|
PROJECT = 1
|
||||||
OUTLINE = 2
|
NOVEL = 2
|
||||||
DETAILS = 3
|
OUTLINE = 3
|
||||||
STATS = 4
|
DETAILS = 4
|
||||||
SET_PROJ = 5
|
STATS = 5
|
||||||
SET_MAIN = 6
|
SET_PROJ = 6
|
||||||
|
SET_MAIN = 7
|
||||||
|
|
||||||
# END Enum nwView
|
# END Enum nwView
|
||||||
|
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ class GuiItemDetails(QWidget):
|
|||||||
self.usageData = QLabel("")
|
self.usageData = QLabel("")
|
||||||
self.usageData.setFont(fntValue)
|
self.usageData.setFont(fntValue)
|
||||||
self.usageData.setAlignment(Qt.AlignLeft)
|
self.usageData.setAlignment(Qt.AlignLeft)
|
||||||
|
self.usageData.setWordWrap(True)
|
||||||
|
|
||||||
# Character Count
|
# Character Count
|
||||||
self.cCountName = QLabel(" "+self.tr("Characters"))
|
self.cCountName = QLabel(" "+self.tr("Characters"))
|
||||||
|
|||||||
@@ -26,11 +26,12 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
import logging
|
import logging
|
||||||
import novelwriter
|
import novelwriter
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt, QT_TRANSLATE_NOOP
|
from PyQt5.QtCore import Qt, QT_TRANSLATE_NOOP, pyqtSignal
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QScrollArea, QWidget, QGridLayout, QHBoxLayout, QGroupBox, QLabel
|
QScrollArea, QWidget, QGridLayout, QHBoxLayout, QGroupBox, QLabel
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from novelwriter.enum import nwView
|
||||||
from novelwriter.common import checkInt
|
from novelwriter.common import checkInt
|
||||||
from novelwriter.constants import trConst, nwKeyWords, nwLabels
|
from novelwriter.constants import trConst, nwKeyWords, nwLabels
|
||||||
|
|
||||||
@@ -46,6 +47,8 @@ class GuiOutlineDetails(QScrollArea):
|
|||||||
"H4": QT_TRANSLATE_NOOP("GuiOutlineDetails", "Section"),
|
"H4": QT_TRANSLATE_NOOP("GuiOutlineDetails", "Section"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
viewChangeRequested = pyqtSignal(nwView)
|
||||||
|
|
||||||
def __init__(self, theParent):
|
def __init__(self, theParent):
|
||||||
QScrollArea.__init__(self, theParent)
|
QScrollArea.__init__(self, theParent)
|
||||||
|
|
||||||
@@ -329,6 +332,7 @@ class GuiOutlineDetails(QScrollArea):
|
|||||||
if len(theLink) > 0:
|
if len(theLink) > 0:
|
||||||
theBits = theLink.split("=")
|
theBits = theLink.split("=")
|
||||||
if len(theBits) == 2:
|
if len(theBits) == 2:
|
||||||
|
self.viewChangeRequested.emit(nwView.PROJECT)
|
||||||
self.theParent.docViewer.loadFromTag(theBits[1])
|
self.theParent.docViewer.loadFromTag(theBits[1])
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
+34
-30
@@ -128,6 +128,7 @@ class GuiMain(QMainWindow):
|
|||||||
self.treeView.wordCountsChanged.connect(self._updateStatusWordCount)
|
self.treeView.wordCountsChanged.connect(self._updateStatusWordCount)
|
||||||
|
|
||||||
self.viewsBar.viewChangeRequested.connect(self._changeView)
|
self.viewsBar.viewChangeRequested.connect(self._changeView)
|
||||||
|
self.projMeta.viewChangeRequested.connect(self._changeView)
|
||||||
|
|
||||||
# Project Tree Stack
|
# Project Tree Stack
|
||||||
self.projStack = QStackedWidget()
|
self.projStack = QStackedWidget()
|
||||||
@@ -161,32 +162,32 @@ class GuiMain(QMainWindow):
|
|||||||
self.splitOutline.addWidget(self.projMeta)
|
self.splitOutline.addWidget(self.projMeta)
|
||||||
self.splitOutline.setSizes(self.mainConf.getOutlinePanePos())
|
self.splitOutline.setSizes(self.mainConf.getOutlinePanePos())
|
||||||
|
|
||||||
# Main Tabs : Editor / Outline
|
# Splitter : Project Tree / Main Tabs
|
||||||
|
self.splitMain = QSplitter(Qt.Horizontal)
|
||||||
|
self.splitMain.setContentsMargins(0, 0, mPx, 0)
|
||||||
|
self.splitMain.addWidget(self.treePane)
|
||||||
|
self.splitMain.addWidget(self.splitDocs)
|
||||||
|
self.splitMain.setSizes(self.mainConf.getMainPanePos())
|
||||||
|
|
||||||
|
# Main Stack : Editor / Outline
|
||||||
self.mainStack = QStackedWidget()
|
self.mainStack = QStackedWidget()
|
||||||
self.mainStack.addWidget(self.splitDocs)
|
self.mainStack.addWidget(self.splitMain)
|
||||||
self.mainStack.addWidget(self.splitOutline)
|
self.mainStack.addWidget(self.splitOutline)
|
||||||
self.mainStack.currentChanged.connect(self._mainStackChanged)
|
self.mainStack.currentChanged.connect(self._mainStackChanged)
|
||||||
|
|
||||||
# Splitter : Project Tree / Main Tabs
|
|
||||||
self.splitMain = QSplitter(Qt.Horizontal)
|
|
||||||
self.splitMain.setContentsMargins(mPx, mPx, mPx, mPx)
|
|
||||||
self.splitMain.addWidget(self.treePane)
|
|
||||||
self.splitMain.addWidget(self.mainStack)
|
|
||||||
self.splitMain.setSizes(self.mainConf.getMainPanePos())
|
|
||||||
|
|
||||||
# Indices of Splitter Widgets
|
# Indices of Splitter Widgets
|
||||||
self.idxTree = self.splitMain.indexOf(self.treePane)
|
self.idxTree = self.splitMain.indexOf(self.treePane)
|
||||||
self.idxMain = self.splitMain.indexOf(self.mainStack)
|
self.idxMain = self.splitMain.indexOf(self.splitDocs)
|
||||||
self.idxEditor = self.splitDocs.indexOf(self.docEditor)
|
self.idxEditor = self.splitDocs.indexOf(self.docEditor)
|
||||||
self.idxViewer = self.splitDocs.indexOf(self.splitView)
|
self.idxViewer = self.splitDocs.indexOf(self.splitView)
|
||||||
self.idxViewDoc = self.splitView.indexOf(self.docViewer)
|
self.idxViewDoc = self.splitView.indexOf(self.docViewer)
|
||||||
self.idxViewMeta = self.splitView.indexOf(self.viewMeta)
|
self.idxViewMeta = self.splitView.indexOf(self.viewMeta)
|
||||||
|
|
||||||
# Indices of Tab Widgets
|
# Indices of Tab Widgets
|
||||||
self.idxTabEdit = self.mainStack.indexOf(self.splitDocs)
|
self.idxEditorView = self.mainStack.indexOf(self.splitMain)
|
||||||
self.idxTabProj = self.mainStack.indexOf(self.splitOutline)
|
self.idxOutlineView = self.mainStack.indexOf(self.splitOutline)
|
||||||
self.idxTreeView = self.projStack.indexOf(self.treeView)
|
self.idxTreeView = self.projStack.indexOf(self.treeView)
|
||||||
self.idxNovelView = self.projStack.indexOf(self.novelView)
|
self.idxNovelView = self.projStack.indexOf(self.novelView)
|
||||||
|
|
||||||
# Splitter Behaviour
|
# Splitter Behaviour
|
||||||
self.splitMain.setCollapsible(self.idxTree, False)
|
self.splitMain.setCollapsible(self.idxTree, False)
|
||||||
@@ -205,7 +206,7 @@ class GuiMain(QMainWindow):
|
|||||||
|
|
||||||
# Set Main Window Elements
|
# Set Main Window Elements
|
||||||
self.setMenuBar(self.mainMenu)
|
self.setMenuBar(self.mainMenu)
|
||||||
self.setCentralWidget(self.splitMain)
|
self.setCentralWidget(self.mainStack)
|
||||||
self.setStatusBar(self.statusBar)
|
self.setStatusBar(self.statusBar)
|
||||||
self.addToolBar(Qt.LeftToolBarArea, self.viewsBar)
|
self.addToolBar(Qt.LeftToolBarArea, self.viewsBar)
|
||||||
|
|
||||||
@@ -418,7 +419,7 @@ class GuiMain(QMainWindow):
|
|||||||
self.theIndex.clearIndex()
|
self.theIndex.clearIndex()
|
||||||
self.clearGUI()
|
self.clearGUI()
|
||||||
self.hasProject = False
|
self.hasProject = False
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
self._changeView(nwView.PROJECT)
|
||||||
|
|
||||||
return saveOK
|
return saveOK
|
||||||
|
|
||||||
@@ -434,7 +435,7 @@ class GuiMain(QMainWindow):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# Switch main tab to editor view
|
# Switch main tab to editor view
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
self._changeView(nwView.PROJECT)
|
||||||
|
|
||||||
# Try to open the project
|
# Try to open the project
|
||||||
if not self.theProject.openProject(projFile):
|
if not self.theProject.openProject(projFile):
|
||||||
@@ -573,7 +574,7 @@ class GuiMain(QMainWindow):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
self.closeDocument()
|
self.closeDocument()
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
self._changeView(nwView.EDITOR)
|
||||||
if self.docEditor.loadText(tHandle, tLine):
|
if self.docEditor.loadText(tHandle, tLine):
|
||||||
if changeFocus:
|
if changeFocus:
|
||||||
self.docEditor.setFocus()
|
self.docEditor.setFocus()
|
||||||
@@ -656,7 +657,7 @@ class GuiMain(QMainWindow):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# Make sure main tab is in Editor view
|
# Make sure main tab is in Editor view
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
self._changeView(nwView.EDITOR)
|
||||||
|
|
||||||
logger.debug("Viewing document with handle '%s'", tHandle)
|
logger.debug("Viewing document with handle '%s'", tHandle)
|
||||||
if self.docViewer.loadText(tHandle):
|
if self.docViewer.loadText(tHandle):
|
||||||
@@ -902,7 +903,7 @@ class GuiMain(QMainWindow):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
logger.verbose("Forcing a rebuild of the Project Outline")
|
logger.verbose("Forcing a rebuild of the Project Outline")
|
||||||
self.mainStack.setCurrentWidget(self.splitOutline)
|
self._changeView(nwView.OUTLINE)
|
||||||
self.projView.refreshTree(overRide=True)
|
self.projView.refreshTree(overRide=True)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
@@ -1221,13 +1222,13 @@ class GuiMain(QMainWindow):
|
|||||||
elif tabIdx == self.idxNovelView:
|
elif tabIdx == self.idxNovelView:
|
||||||
self.novelView.setFocus()
|
self.novelView.setFocus()
|
||||||
elif paneNo == nwWidget.EDITOR:
|
elif paneNo == nwWidget.EDITOR:
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
self._changeView(nwView.EDITOR)
|
||||||
self.docEditor.setFocus()
|
self.docEditor.setFocus()
|
||||||
elif paneNo == nwWidget.VIEWER:
|
elif paneNo == nwWidget.VIEWER:
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
self._changeView(nwView.EDITOR)
|
||||||
self.docViewer.setFocus()
|
self.docViewer.setFocus()
|
||||||
elif paneNo == nwWidget.OUTLINE:
|
elif paneNo == nwWidget.OUTLINE:
|
||||||
self.mainStack.setCurrentWidget(self.splitOutline)
|
self._changeView(nwView.OUTLINE)
|
||||||
self.projView.setFocus()
|
self.projView.setFocus()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -1260,7 +1261,6 @@ class GuiMain(QMainWindow):
|
|||||||
self.mainMenu.setFocusMode(self.isFocusMode)
|
self.mainMenu.setFocusMode(self.isFocusMode)
|
||||||
if self.isFocusMode:
|
if self.isFocusMode:
|
||||||
logger.debug("Activating Focus Mode")
|
logger.debug("Activating Focus Mode")
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
|
||||||
self.switchFocus(nwWidget.EDITOR)
|
self.switchFocus(nwWidget.EDITOR)
|
||||||
else:
|
else:
|
||||||
logger.debug("Deactivating Focus Mode")
|
logger.debug("Deactivating Focus Mode")
|
||||||
@@ -1487,12 +1487,16 @@ class GuiMain(QMainWindow):
|
|||||||
def _changeView(self, view):
|
def _changeView(self, view):
|
||||||
"""Handle the requested change of view from the GuiViewBar.
|
"""Handle the requested change of view from the GuiViewBar.
|
||||||
"""
|
"""
|
||||||
if view == nwView.PROJECT:
|
if view == nwView.EDITOR:
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
# Only change the main stack, but not the project stack
|
||||||
|
self.mainStack.setCurrentWidget(self.splitMain)
|
||||||
|
|
||||||
|
elif view == nwView.PROJECT:
|
||||||
|
self.mainStack.setCurrentWidget(self.splitMain)
|
||||||
self.projStack.setCurrentWidget(self.treeView)
|
self.projStack.setCurrentWidget(self.treeView)
|
||||||
|
|
||||||
elif view == nwView.NOVEL:
|
elif view == nwView.NOVEL:
|
||||||
self.mainStack.setCurrentWidget(self.splitDocs)
|
self.mainStack.setCurrentWidget(self.splitMain)
|
||||||
self.projStack.setCurrentWidget(self.novelView)
|
self.projStack.setCurrentWidget(self.novelView)
|
||||||
|
|
||||||
elif view == nwView.OUTLINE:
|
elif view == nwView.OUTLINE:
|
||||||
@@ -1582,7 +1586,7 @@ class GuiMain(QMainWindow):
|
|||||||
"""Triggered when there is a change to a novel item in the
|
"""Triggered when there is a change to a novel item in the
|
||||||
project tree.
|
project tree.
|
||||||
"""
|
"""
|
||||||
if self.mainStack.currentIndex() == self.idxTabProj:
|
if self.mainStack.currentIndex() == self.idxOutlineView:
|
||||||
logger.verbose("Novel tree changed while Outline tab active")
|
logger.verbose("Novel tree changed while Outline tab active")
|
||||||
if self.hasProject:
|
if self.hasProject:
|
||||||
self.treeView.flushTreeOrder()
|
self.treeView.flushTreeOrder()
|
||||||
@@ -1614,9 +1618,9 @@ class GuiMain(QMainWindow):
|
|||||||
def _mainStackChanged(self, tabIndex):
|
def _mainStackChanged(self, tabIndex):
|
||||||
"""Activated when the main window tab is changed.
|
"""Activated when the main window tab is changed.
|
||||||
"""
|
"""
|
||||||
if tabIndex == self.idxTabEdit:
|
if tabIndex == self.idxEditorView:
|
||||||
logger.verbose("Editor tab activated")
|
logger.verbose("Editor tab activated")
|
||||||
elif tabIndex == self.idxTabProj:
|
elif tabIndex == self.idxOutlineView:
|
||||||
logger.verbose("Project outline tab activated")
|
logger.verbose("Project outline tab activated")
|
||||||
if self.hasProject:
|
if self.hasProject:
|
||||||
self.projView.refreshTree()
|
self.projView.refreshTree()
|
||||||
|
|||||||
Reference in New Issue
Block a user