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.QtCore import Qt, QByteArray
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem
|
QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem,
|
||||||
|
QAbstractItemView
|
||||||
)
|
)
|
||||||
|
|
||||||
from nw.constants import nwKeyWords, nwLabels
|
from nw.constants import nwKeyWords, nwLabels
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class GuiProjectOutline(QWidget):
|
class GuiProjectOutline(QTreeWidget):
|
||||||
|
|
||||||
I_TITLE = 0
|
I_TITLE = 0
|
||||||
I_LEVEL = 1
|
I_LEVEL = 1
|
||||||
@@ -66,7 +67,7 @@ class GuiProjectOutline(QWidget):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, theParent, theProject):
|
def __init__(self, theParent, theProject):
|
||||||
QWidget.__init__(self, theParent)
|
QTreeWidget.__init__(self, theParent)
|
||||||
|
|
||||||
logger.debug("Initialising ProjectOutline ...")
|
logger.debug("Initialising ProjectOutline ...")
|
||||||
|
|
||||||
@@ -77,10 +78,18 @@ class GuiProjectOutline(QWidget):
|
|||||||
self.optState = self.theProject.optState
|
self.optState = self.theProject.optState
|
||||||
|
|
||||||
self.firstView = True
|
self.firstView = True
|
||||||
|
|
||||||
self.outerBox = QVBoxLayout()
|
|
||||||
self.mainTree = QTreeWidget()
|
|
||||||
self.lastBuild = 0
|
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.treeMap = {}
|
||||||
self.treeCols = {
|
self.treeCols = {
|
||||||
"order" : [
|
"order" : [
|
||||||
@@ -93,10 +102,6 @@ class GuiProjectOutline(QWidget):
|
|||||||
}
|
}
|
||||||
self.colIndex = {}
|
self.colIndex = {}
|
||||||
|
|
||||||
self.outerBox.addWidget(self.mainTree)
|
|
||||||
self.outerBox.setContentsMargins(0,0,0,0)
|
|
||||||
self.setLayout(self.outerBox)
|
|
||||||
|
|
||||||
logger.debug("ProjectOutline initialisation complete")
|
logger.debug("ProjectOutline initialisation complete")
|
||||||
|
|
||||||
return
|
return
|
||||||
@@ -120,11 +125,19 @@ class GuiProjectOutline(QWidget):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
self._saveHeaderState()
|
self._saveHeaderState()
|
||||||
self.mainTree.clear()
|
self.clear()
|
||||||
self.firstView = True
|
self.firstView = True
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
##
|
||||||
|
# Slots
|
||||||
|
##
|
||||||
|
|
||||||
|
def _treeDoubleClick(self, tItem, tCol):
|
||||||
|
print(tItem, tCol)
|
||||||
|
return
|
||||||
|
|
||||||
##
|
##
|
||||||
# Internal Functions
|
# Internal Functions
|
||||||
##
|
##
|
||||||
@@ -157,8 +170,8 @@ class GuiProjectOutline(QWidget):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
colW = []
|
colW = []
|
||||||
for iCol in range(self.mainTree.columnCount()):
|
for iCol in range(self.columnCount()):
|
||||||
colW.append(self.mainTree.columnWidth(iCol))
|
colW.append(self.columnWidth(iCol))
|
||||||
|
|
||||||
self.treeCols["width"] = colW
|
self.treeCols["width"] = colW
|
||||||
self.optState.setValue("GuiProjectOutline", "headerState", self.treeCols)
|
self.optState.setValue("GuiProjectOutline", "headerState", self.treeCols)
|
||||||
@@ -175,12 +188,12 @@ class GuiProjectOutline(QWidget):
|
|||||||
theLabels.append(self.COL_LABELS[n])
|
theLabels.append(self.COL_LABELS[n])
|
||||||
self.colIndex[n] = i
|
self.colIndex[n] = i
|
||||||
|
|
||||||
self.mainTree.clear()
|
self.clear()
|
||||||
self.mainTree.setHeaderLabels(theLabels)
|
self.setHeaderLabels(theLabels)
|
||||||
for n, colW in enumerate(self.treeCols["width"]):
|
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:
|
if self.I_CCOUNT in self.colIndex:
|
||||||
treeHead.setTextAlignment(self.colIndex[self.I_CCOUNT],Qt.AlignRight)
|
treeHead.setTextAlignment(self.colIndex[self.I_CCOUNT],Qt.AlignRight)
|
||||||
if self.I_WCOUNT in self.colIndex:
|
if self.I_WCOUNT in self.colIndex:
|
||||||
@@ -212,17 +225,17 @@ class GuiProjectOutline(QWidget):
|
|||||||
|
|
||||||
if tLevel == "H1":
|
if tLevel == "H1":
|
||||||
currTitle = tItem
|
currTitle = tItem
|
||||||
self.mainTree.addTopLevelItem(tItem)
|
self.addTopLevelItem(tItem)
|
||||||
elif tLevel == "H2":
|
elif tLevel == "H2":
|
||||||
if currTitle is None:
|
if currTitle is None:
|
||||||
self.mainTree.addTopLevelItem(tItem)
|
self.addTopLevelItem(tItem)
|
||||||
else:
|
else:
|
||||||
currTitle.addChild(tItem)
|
currTitle.addChild(tItem)
|
||||||
currChapter = tItem
|
currChapter = tItem
|
||||||
elif tLevel == "H3":
|
elif tLevel == "H3":
|
||||||
if currChapter is None:
|
if currChapter is None:
|
||||||
if currTitle is None:
|
if currTitle is None:
|
||||||
self.mainTree.addTopLevelItem(tItem)
|
self.addTopLevelItem(tItem)
|
||||||
else:
|
else:
|
||||||
currTitle.addChild(tItem)
|
currTitle.addChild(tItem)
|
||||||
else:
|
else:
|
||||||
@@ -232,7 +245,7 @@ class GuiProjectOutline(QWidget):
|
|||||||
if currScene is None:
|
if currScene is None:
|
||||||
if currChapter is None:
|
if currChapter is None:
|
||||||
if currTitle is None:
|
if currTitle is None:
|
||||||
self.mainTree.addTopLevelItem(tItem)
|
self.addTopLevelItem(tItem)
|
||||||
else:
|
else:
|
||||||
currTitle.addChild(tItem)
|
currTitle.addChild(tItem)
|
||||||
else:
|
else:
|
||||||
|
|||||||
+6
-3
@@ -112,11 +112,14 @@ class GuiMain(QMainWindow):
|
|||||||
self.splitView.addWidget(self.editPane)
|
self.splitView.addWidget(self.editPane)
|
||||||
self.splitView.addWidget(self.viewPane)
|
self.splitView.addWidget(self.viewPane)
|
||||||
|
|
||||||
|
self.splitOutline = QSplitter(Qt.Vertical)
|
||||||
|
self.splitOutline.addWidget(self.projView)
|
||||||
|
|
||||||
self.tabWidget = QTabWidget()
|
self.tabWidget = QTabWidget()
|
||||||
self.tabWidget.setTabPosition(QTabWidget.East)
|
self.tabWidget.setTabPosition(QTabWidget.East)
|
||||||
self.tabWidget.setStyleSheet("QTabWidget::pane {border: 0;}")
|
self.tabWidget.setStyleSheet("QTabWidget::pane {border: 0;}")
|
||||||
self.tabWidget.addTab(self.splitView, "Editor")
|
self.tabWidget.addTab(self.splitView, "Editor")
|
||||||
self.tabWidget.addTab(self.projView, "Outline")
|
self.tabWidget.addTab(self.splitOutline, "Outline")
|
||||||
self.tabWidget.currentChanged.connect(self._mainTabChanged)
|
self.tabWidget.currentChanged.connect(self._mainTabChanged)
|
||||||
|
|
||||||
self.splitMain = QSplitter(Qt.Horizontal)
|
self.splitMain = QSplitter(Qt.Horizontal)
|
||||||
@@ -134,7 +137,7 @@ class GuiMain(QMainWindow):
|
|||||||
self.idxViewer = self.splitView.indexOf(self.viewPane)
|
self.idxViewer = self.splitView.indexOf(self.viewPane)
|
||||||
|
|
||||||
self.idxTabEdit = self.tabWidget.indexOf(self.splitView)
|
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.idxTree, False)
|
||||||
self.splitMain.setCollapsible(self.idxMain, False)
|
self.splitMain.setCollapsible(self.idxMain, False)
|
||||||
|
|||||||
Reference in New Issue
Block a user