Outline class should just be a sunclass of the central QTreeWidget, like other main GUI classes

This commit is contained in:
Veronica K. B. Olsen
2020-03-07 17:10:35 +01:00
parent d8a44e63e7
commit c9657a3515
2 changed files with 40 additions and 24 deletions
+34 -21
View File
@@ -18,14 +18,15 @@ from time import time
from PyQt5.QtCore import Qt, QByteArray
from PyQt5.QtWidgets import (
QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem
QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem,
QAbstractItemView
)
from nw.constants import nwKeyWords, nwLabels
logger = logging.getLogger(__name__)
class GuiProjectOutline(QWidget):
class GuiProjectOutline(QTreeWidget):
I_TITLE = 0
I_LEVEL = 1
@@ -66,7 +67,7 @@ class GuiProjectOutline(QWidget):
}
def __init__(self, theParent, theProject):
QWidget.__init__(self, theParent)
QTreeWidget.__init__(self, theParent)
logger.debug("Initialising ProjectOutline ...")
@@ -77,10 +78,18 @@ class GuiProjectOutline(QWidget):
self.optState = self.theProject.optState
self.firstView = True
self.outerBox = QVBoxLayout()
self.mainTree = QTreeWidget()
self.lastBuild = 0
self.setSelectionBehavior(QAbstractItemView.SelectRows)
self.setSelectionMode(QAbstractItemView.SingleSelection)
self.setExpandsOnDoubleClick(False)
self.setDragEnabled(False)
self.itemDoubleClicked.connect(self._treeDoubleClick)
# self.mainHead = self.header()
# self.mainHead.setContextMenuPolicy(Qt.CustomContextMenu)
# self.mainHead.
self.treeMap = {}
self.treeCols = {
"order" : [
@@ -93,10 +102,6 @@ class GuiProjectOutline(QWidget):
}
self.colIndex = {}
self.outerBox.addWidget(self.mainTree)
self.outerBox.setContentsMargins(0,0,0,0)
self.setLayout(self.outerBox)
logger.debug("ProjectOutline initialisation complete")
return
@@ -120,11 +125,19 @@ class GuiProjectOutline(QWidget):
"""
self._saveHeaderState()
self.mainTree.clear()
self.clear()
self.firstView = True
return
##
# Slots
##
def _treeDoubleClick(self, tItem, tCol):
print(tItem, tCol)
return
##
# Internal Functions
##
@@ -157,8 +170,8 @@ class GuiProjectOutline(QWidget):
"""
colW = []
for iCol in range(self.mainTree.columnCount()):
colW.append(self.mainTree.columnWidth(iCol))
for iCol in range(self.columnCount()):
colW.append(self.columnWidth(iCol))
self.treeCols["width"] = colW
self.optState.setValue("GuiProjectOutline", "headerState", self.treeCols)
@@ -175,12 +188,12 @@ class GuiProjectOutline(QWidget):
theLabels.append(self.COL_LABELS[n])
self.colIndex[n] = i
self.mainTree.clear()
self.mainTree.setHeaderLabels(theLabels)
self.clear()
self.setHeaderLabels(theLabels)
for n, colW in enumerate(self.treeCols["width"]):
self.mainTree.setColumnWidth(n,colW)
self.setColumnWidth(n,colW)
treeHead = self.mainTree.headerItem()
treeHead = self.headerItem()
if self.I_CCOUNT in self.colIndex:
treeHead.setTextAlignment(self.colIndex[self.I_CCOUNT],Qt.AlignRight)
if self.I_WCOUNT in self.colIndex:
@@ -212,17 +225,17 @@ class GuiProjectOutline(QWidget):
if tLevel == "H1":
currTitle = tItem
self.mainTree.addTopLevelItem(tItem)
self.addTopLevelItem(tItem)
elif tLevel == "H2":
if currTitle is None:
self.mainTree.addTopLevelItem(tItem)
self.addTopLevelItem(tItem)
else:
currTitle.addChild(tItem)
currChapter = tItem
elif tLevel == "H3":
if currChapter is None:
if currTitle is None:
self.mainTree.addTopLevelItem(tItem)
self.addTopLevelItem(tItem)
else:
currTitle.addChild(tItem)
else:
@@ -232,7 +245,7 @@ class GuiProjectOutline(QWidget):
if currScene is None:
if currChapter is None:
if currTitle is None:
self.mainTree.addTopLevelItem(tItem)
self.addTopLevelItem(tItem)
else:
currTitle.addChild(tItem)
else:
+6 -3
View File
@@ -112,11 +112,14 @@ class GuiMain(QMainWindow):
self.splitView.addWidget(self.editPane)
self.splitView.addWidget(self.viewPane)
self.splitOutline = QSplitter(Qt.Vertical)
self.splitOutline.addWidget(self.projView)
self.tabWidget = QTabWidget()
self.tabWidget.setTabPosition(QTabWidget.East)
self.tabWidget.setStyleSheet("QTabWidget::pane {border: 0;}")
self.tabWidget.addTab(self.splitView, "Editor")
self.tabWidget.addTab(self.projView, "Outline")
self.tabWidget.addTab(self.splitView, "Editor")
self.tabWidget.addTab(self.splitOutline, "Outline")
self.tabWidget.currentChanged.connect(self._mainTabChanged)
self.splitMain = QSplitter(Qt.Horizontal)
@@ -134,7 +137,7 @@ class GuiMain(QMainWindow):
self.idxViewer = self.splitView.indexOf(self.viewPane)
self.idxTabEdit = self.tabWidget.indexOf(self.splitView)
self.idxTabProj = self.tabWidget.indexOf(self.projView)
self.idxTabProj = self.tabWidget.indexOf(self.splitOutline)
self.splitMain.setCollapsible(self.idxTree, False)
self.splitMain.setCollapsible(self.idxMain, False)