Added outline tab and started populating outline tree
This commit is contained in:
@@ -5,6 +5,7 @@ from nw.gui.elements.doceditor import GuiDocEditor
|
||||
from nw.gui.elements.doctree import GuiDocTree
|
||||
from nw.gui.elements.docviewer import GuiDocViewer
|
||||
from nw.gui.elements.noticebar import GuiNoticeBar
|
||||
from nw.gui.elements.outline import GuiProjectOutline
|
||||
from nw.gui.elements.searchbar import GuiSearchBar
|
||||
from nw.gui.elements.viewdetails import GuiDocViewDetails
|
||||
|
||||
@@ -14,6 +15,7 @@ __all__ = [
|
||||
"GuiDocTree",
|
||||
"GuiDocViewer",
|
||||
"GuiNoticeBar",
|
||||
"GuiProjectOutline",
|
||||
"GuiSearchBar",
|
||||
"GuiDocViewDetails",
|
||||
]
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""novelWriter GUI Project Outline
|
||||
|
||||
novelWriter – GUI Project Outline
|
||||
===================================
|
||||
Class holding the project outline view
|
||||
|
||||
File History:
|
||||
Created: 2019-11-16 [0.4.1]
|
||||
|
||||
"""
|
||||
|
||||
import logging
|
||||
import nw
|
||||
|
||||
from os import path
|
||||
|
||||
from PyQt5.QtWidgets import (
|
||||
QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem
|
||||
)
|
||||
|
||||
from nw.constants import nwItemLayout
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class GuiProjectOutline(QWidget):
|
||||
|
||||
def __init__(self, theParent, theProject):
|
||||
QWidget.__init__(self, theParent)
|
||||
|
||||
logger.debug("Initialising ProjectOutline ...")
|
||||
|
||||
self.mainConf = nw.CONFIG
|
||||
self.theParent = theParent
|
||||
self.theProject = theProject
|
||||
self.theIndex = self.theParent.theIndex
|
||||
|
||||
self.showWords = True
|
||||
self.showSynopsis = True
|
||||
self.showFilePath = False
|
||||
|
||||
self.outerBox = QVBoxLayout()
|
||||
self.mainTree = QTreeWidget()
|
||||
|
||||
self.outerBox.addWidget(self.mainTree)
|
||||
self.outerBox.setContentsMargins(0,0,0,0)
|
||||
self.setLayout(self.outerBox)
|
||||
|
||||
logger.debug("ProjectOutline initialisation complete")
|
||||
|
||||
return
|
||||
|
||||
def populateTree(self):
|
||||
|
||||
self.mainTree.clear()
|
||||
self.mainTree.setHeaderLabels(["Title","Level","Document","Line"])
|
||||
|
||||
currTitle = None
|
||||
currChapter = None
|
||||
currScene = None
|
||||
|
||||
for tHandle in self.theProject.treeOrder:
|
||||
|
||||
if tHandle not in self.theIndex.novelIndex:
|
||||
continue
|
||||
|
||||
nwItem = self.theProject.getItem(tHandle)
|
||||
if nwItem.itemLayout == nwItemLayout.NOTE:
|
||||
continue
|
||||
|
||||
for tEntry in self.theIndex.novelIndex[tHandle]:
|
||||
newItem = QTreeWidgetItem([""]*4)
|
||||
newItem.setText(0, tEntry[2])
|
||||
newItem.setText(1, str(tEntry[1]))
|
||||
newItem.setText(2, nwItem.itemName)
|
||||
newItem.setText(3, str(tEntry[0]))
|
||||
|
||||
if tEntry[1] == 1:
|
||||
currTitle = newItem
|
||||
self.mainTree.addTopLevelItem(newItem)
|
||||
elif tEntry[1] == 2:
|
||||
if currTitle is None:
|
||||
self.mainTree.addTopLevelItem(newItem)
|
||||
else:
|
||||
currTitle.addChild(newItem)
|
||||
currChapter = newItem
|
||||
elif tEntry[1] == 3:
|
||||
if currChapter is None:
|
||||
if currTitle is None:
|
||||
self.mainTree.addTopLevelItem(newItem)
|
||||
else:
|
||||
currTitle.addChild(newItem)
|
||||
else:
|
||||
currChapter.addChild(newItem)
|
||||
currScene = newItem
|
||||
elif tEntry[1] == 4:
|
||||
if currScene is None:
|
||||
if currChapter is None:
|
||||
if currTitle is None:
|
||||
self.mainTree.addTopLevelItem(newItem)
|
||||
else:
|
||||
currTitle.addChild(newItem)
|
||||
else:
|
||||
currChapter.addChild(newItem)
|
||||
else:
|
||||
currScene.addChild(newItem)
|
||||
|
||||
newItem.setExpanded(True)
|
||||
|
||||
return
|
||||
|
||||
# END Class GuiProjectOutline
|
||||
Reference in New Issue
Block a user