Added some the tree building code, with the help of 3 G&Ts.

This commit is contained in:
Veronica K. B. Olsen
2018-10-27 23:54:34 +02:00
parent c8dab032b9
commit 0f8090601b
6 changed files with 314 additions and 29 deletions
+61 -11
View File
@@ -15,28 +15,78 @@ import nw
from os import path
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QTreeView
from PyQt5.QtGui import QStandardItemModel
from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QTreeWidgetItemIterator, QAbstractItemView
logger = logging.getLogger(__name__)
class GuiDocTree(QTreeView):
class GuiDocTree(QTreeWidget):
def __init__(self):
QTreeView.__init__(self)
def __init__(self, theProject):
QTreeWidget.__init__(self)
logger.debug("Initialising DocTree ...")
self.mainConf = nw.CONFIG
self.mainConf = nw.CONFIG
self.debugGUI = self.mainConf.debugGUI
self.theProject = theProject
self.theMap = {}
self.treeModel = QStandardItemModel(0, 3, self)
self.treeModel.setHeaderData(0, Qt.Horizontal, "Name")
self.treeModel.setHeaderData(1, Qt.Horizontal, "Words")
self.treeModel.setHeaderData(2, Qt.Horizontal, "Status")
self.setColumnCount(4)
self.setHeaderLabels(["Name","","","Handle"])
if not self.debugGUI:
self.hideColumn(3)
self.setModel(self.treeModel)
# Allow Move by Drag & Drop
self.setDragEnabled(True)
self.setDragDropMode(QAbstractItemView.InternalMove)
for colN in range(len(self.mainConf.treeColWidth)):
self.setColumnWidth(colN,self.mainConf.treeColWidth[colN])
logger.debug("DocTree initialisation complete")
return
def saveTreeOrder(self):
theList = []
for i in range(self.topLevelItemCount()):
theList = self._scanChildren(theList, self.topLevelItem(i))
print(theList)
return True
def _scanChildren(self, theList, theItem):
theList.append(theItem.text(3))
for i in range(theItem.childCount()):
self._scanChildren(theList, theItem.child(i))
return theList
def buildTree(self):
for tHandle in self.theProject.projTree:
nwItem = self.theProject.projTree[tHandle]
tName = nwItem.itemName
tStatus = 0
wCount = 0
pHandle = nwItem.parHandle
newItem = QTreeWidgetItem([
tName, str(tStatus), str(wCount), tHandle
])
self.theMap[tHandle] = newItem
if pHandle is None:
self.addTopLevelItem(newItem)
else:
self.theMap[pHandle].addChild(newItem)
return True
def getColumnSizes(self):
retVals = [
self.columnWidth(0),
self.columnWidth(1),
self.columnWidth(2),
]
return retVals
# END Class GuiDocTree
+7 -5
View File
@@ -46,8 +46,8 @@ class GuiMain(QMainWindow):
self.splitMain.addWidget(self.treePane)
self.splitMain.addWidget(self.docEditor)
self.treeBox = QVBoxLayout()
self.treeView = GuiDocTree()
self.treeBox = QVBoxLayout()
self.treeView = GuiDocTree(self.theProject)
self.treeBox.addWidget(self.treeView)
self.treePane.setLayout(self.treeBox)
@@ -58,8 +58,7 @@ class GuiMain(QMainWindow):
self.setCentralWidget(self.splitMain)
self._buildMenu()
# self.docTabs.createTab()
self.treeView.buildTree()
self.show()
@@ -76,7 +75,8 @@ class GuiMain(QMainWindow):
def newProject(self):
logger.info("Creating new project")
self.docTabs.createTab(tabType=nw.DOCTYPE_PROJECT)
self.theProject.newProject()
self.treeView.buildTree()
return
def openProject(self):
@@ -101,6 +101,7 @@ class GuiMain(QMainWindow):
self.theProject.setProjectPath(projPath)
else:
return False
self.treeView.saveTreeOrder()
self.theProject.saveProject()
return True
@@ -130,6 +131,7 @@ class GuiMain(QMainWindow):
def _closeMain(self):
logger.info("Exiting %s" % nw.__package__)
self.mainConf.setWinSize(self.width(), self.height())
self.mainConf.setTreeColWidths(self.treeView.getColumnSizes())
self.mainConf.saveConfig()
return