Outline class should just be a sunclass of the central QTreeWidget, like other main GUI classes
This commit is contained in:
+34
-21
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user