Change how item data is stored in the project tree
This commit is contained in:
+18
-14
@@ -417,11 +417,15 @@ class GuiProjectToolBar(QWidget):
|
||||
|
||||
class GuiProjectTree(QTreeWidget):
|
||||
|
||||
C_DATA = 0
|
||||
C_NAME = 0
|
||||
C_COUNT = 1
|
||||
C_ACTIVE = 2
|
||||
C_STATUS = 3
|
||||
|
||||
D_HANDLE = Qt.UserRole
|
||||
D_WORDS = Qt.UserRole + 1
|
||||
|
||||
def __init__(self, projView):
|
||||
super().__init__(parent=projView)
|
||||
|
||||
@@ -974,10 +978,10 @@ class GuiProjectTree(QTreeWidget):
|
||||
|
||||
if countChildren:
|
||||
for i in range(tItem.childCount()):
|
||||
newCount += int(tItem.child(i).data(self.C_COUNT, Qt.UserRole))
|
||||
newCount += int(tItem.child(i).data(self.C_DATA, self.D_WORDS))
|
||||
|
||||
tItem.setText(self.C_COUNT, f"{newCount:n}")
|
||||
tItem.setData(self.C_COUNT, Qt.UserRole, int(newCount))
|
||||
tItem.setData(self.C_DATA, self.D_WORDS, int(newCount))
|
||||
|
||||
pItem = tItem.parent()
|
||||
if pItem is None:
|
||||
@@ -986,8 +990,8 @@ class GuiProjectTree(QTreeWidget):
|
||||
pCount = 0
|
||||
pHandle = None
|
||||
for i in range(pItem.childCount()):
|
||||
pCount += int(pItem.child(i).data(self.C_COUNT, Qt.UserRole))
|
||||
pHandle = pItem.data(self.C_NAME, Qt.UserRole)
|
||||
pCount += int(pItem.child(i).data(self.C_DATA, self.D_WORDS))
|
||||
pHandle = pItem.data(self.C_DATA, self.D_HANDLE)
|
||||
|
||||
if pHandle:
|
||||
if self.theProject.tree.checkType(pHandle, nwItemType.FILE):
|
||||
@@ -1038,8 +1042,8 @@ class GuiProjectTree(QTreeWidget):
|
||||
return False
|
||||
|
||||
dstIndex = min(max(0, dstIndex), dstItem.childCount())
|
||||
sHandle = srcItem.data(self.C_NAME, Qt.UserRole)
|
||||
dHandle = dstItem.data(self.C_NAME, Qt.UserRole)
|
||||
sHandle = srcItem.data(self.C_DATA, self.D_HANDLE)
|
||||
dHandle = dstItem.data(self.C_DATA, self.D_HANDLE)
|
||||
logger.debug("Moving item '%s' back to '%s', index %d", sHandle, dHandle, dstIndex)
|
||||
|
||||
wCount = self._getItemWordCount(sHandle)
|
||||
@@ -1063,7 +1067,7 @@ class GuiProjectTree(QTreeWidget):
|
||||
"""
|
||||
selItem = self.selectedItems()
|
||||
if selItem:
|
||||
return selItem[0].data(self.C_NAME, Qt.UserRole)
|
||||
return selItem[0].data(self.C_DATA, self.D_HANDLE)
|
||||
|
||||
return None
|
||||
|
||||
@@ -1149,7 +1153,7 @@ class GuiProjectTree(QTreeWidget):
|
||||
hasChild = False
|
||||
selItem = self.itemAt(clickPos)
|
||||
if isinstance(selItem, QTreeWidgetItem):
|
||||
tHandle = selItem.data(self.C_NAME, Qt.UserRole)
|
||||
tHandle = selItem.data(self.C_DATA, self.D_HANDLE)
|
||||
tItem = self.theProject.tree[tHandle]
|
||||
hasChild = selItem.childCount() > 0
|
||||
|
||||
@@ -1308,7 +1312,7 @@ class GuiProjectTree(QTreeWidget):
|
||||
if not isinstance(selItem, QTreeWidgetItem):
|
||||
return
|
||||
|
||||
tHandle = selItem.data(self.C_NAME, Qt.UserRole)
|
||||
tHandle = selItem.data(self.C_DATA, self.D_HANDLE)
|
||||
tItem = self.theProject.tree[tHandle]
|
||||
if tItem is None:
|
||||
return
|
||||
@@ -1367,7 +1371,7 @@ class GuiProjectTree(QTreeWidget):
|
||||
|
||||
# Update item parent handle in the project, make sure meta data
|
||||
# is updated accordingly, and update word count
|
||||
pHandle = trItemP.data(self.C_NAME, Qt.UserRole)
|
||||
pHandle = trItemP.data(self.C_DATA, self.D_HANDLE)
|
||||
nwItemS.setParent(pHandle)
|
||||
trItemP.setExpanded(True)
|
||||
logger.debug("The parent of item '%s' has been changed to '%s'", tHandle, pHandle)
|
||||
@@ -1397,7 +1401,7 @@ class GuiProjectTree(QTreeWidget):
|
||||
tItem = self._getTreeItem(tHandle)
|
||||
if tItem is None:
|
||||
return 0
|
||||
return int(tItem.data(self.C_COUNT, Qt.UserRole))
|
||||
return int(tItem.data(self.C_DATA, self.D_WORDS))
|
||||
|
||||
def _getTreeItem(self, tHandle):
|
||||
"""Return the QTreeWidgetItem of a given item handle.
|
||||
@@ -1617,7 +1621,7 @@ class GuiProjectTree(QTreeWidget):
|
||||
"""This is a recursive function returning all items in a tree
|
||||
starting at a given QTreeWidgetItem.
|
||||
"""
|
||||
tHandle = tItem.data(self.C_NAME, Qt.UserRole)
|
||||
tHandle = tItem.data(self.C_DATA, self.D_HANDLE)
|
||||
cCount = tItem.childCount()
|
||||
|
||||
# Update tree-related meta data
|
||||
@@ -1650,8 +1654,8 @@ class GuiProjectTree(QTreeWidget):
|
||||
newItem.setTextAlignment(self.C_ACTIVE, Qt.AlignLeft)
|
||||
newItem.setTextAlignment(self.C_STATUS, Qt.AlignLeft)
|
||||
|
||||
newItem.setData(self.C_NAME, Qt.UserRole, tHandle)
|
||||
newItem.setData(self.C_COUNT, Qt.UserRole, 0)
|
||||
newItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
|
||||
newItem.setData(self.C_DATA, self.D_WORDS, 0)
|
||||
|
||||
self._treeMap[tHandle] = newItem
|
||||
if pHandle is None:
|
||||
|
||||
Reference in New Issue
Block a user