Added some the tree building code, with the help of 3 G&Ts.
This commit is contained in:
+61
-11
@@ -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
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user