Add root class filtering

This commit is contained in:
Veronica K. B. Olsen
2023-05-09 22:00:30 +02:00
parent 4c4139078a
commit a9d5974346
2 changed files with 39 additions and 26 deletions
+20 -24
View File
@@ -170,10 +170,7 @@ class GuiBuildFilterTab(QWidget):
C_STATUS = 2
D_HANDLE = Qt.UserRole
D_FILTER = Qt.UserRole + 1
D_FILE = Qt.UserRole + 2
D_NOVEL = Qt.UserRole + 3
D_ACTIVE = Qt.UserRole + 4
D_FILE = Qt.UserRole + 1
F_NONE = 0
F_FILTERED = 1
@@ -213,7 +210,6 @@ class GuiBuildFilterTab(QWidget):
self.optTree.setHeaderHidden(True)
self.optTree.setIndentation(iPx)
self.optTree.setColumnCount(3)
self.optTree.setRootIsDecorated(False)
treeHeader = self.optTree.header()
treeHeader.setStretchLastSection(False)
@@ -269,18 +265,19 @@ class GuiBuildFilterTab(QWidget):
def populateTree(self):
"""Build the tree of project items.
"""
logger.debug("Building project tree")
self._treeMap = {}
self.optTree.clear()
bSettings = self.buildOpts["settings"]
for nwItem in self.theProject.getProjectItems():
tHandle = nwItem.itemHandle
pHandle = nwItem.itemParent
rHandle = nwItem.itemRoot
isFile = nwItem.isFileType()
isNovel = nwItem.isNovelLike()
isActive = nwItem.isActive
if nwItem.isInactiveClass():
logger.debug("Skipping inactive class item '%s'", tHandle)
if nwItem.isInactiveClass() or not bSettings.isRootAllowed(rHandle):
continue
hLevel = nwItem.mainHeading
@@ -297,10 +294,7 @@ class GuiBuildFilterTab(QWidget):
trItem.setIcon(self.C_NAME, itemIcon)
trItem.setText(self.C_NAME, nwItem.itemName)
trItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
trItem.setData(self.C_DATA, self.D_FILTER, False)
trItem.setData(self.C_DATA, self.D_FILE, isFile)
trItem.setData(self.C_DATA, self.D_NOVEL, isNovel)
trItem.setData(self.C_DATA, self.D_ACTIVE, isActive)
trItem.setIcon(self.C_ACTIVE, self.mainTheme.getIcon(iconName))
trItem.setTextAlignment(self.C_NAME, Qt.AlignLeft)
@@ -330,26 +324,26 @@ class GuiBuildFilterTab(QWidget):
"""Populate the filter options switches.
"""
self.filterOpt.clear()
buildSettings = self.buildOpts["settings"]
bSettings = self.buildOpts["settings"]
self.filterOpt.addLabel(buildSettings.getLabel("filter"))
self.filterOpt.addLabel(bSettings.getLabel("filter"))
self.filterOpt.addItem(
self.mainTheme.getIcon("proj_scene"),
buildSettings.getLabel("filter.includeNovel"),
bSettings.getLabel("filter.includeNovel"),
"doc:filter.includeNovel",
default=buildSettings.getValue("filter.includeNovel") or False
default=bSettings.getValue("filter.includeNovel") or False
)
self.filterOpt.addItem(
self.mainTheme.getIcon("proj_note"),
buildSettings.getLabel("filter.includeNotes"),
bSettings.getLabel("filter.includeNotes"),
"doc:filter.includeNotes",
default=buildSettings.getValue("filter.includeNotes") or False
default=bSettings.getValue("filter.includeNotes") or False
)
self.filterOpt.addItem(
self.mainTheme.getIcon("unchecked"),
buildSettings.getLabel("filter.includeInactive"),
bSettings.getLabel("filter.includeInactive"),
"doc:filter.includeInactive",
default=buildSettings.getValue("filter.includeInactive") or False
default=bSettings.getValue("filter.includeInactive") or False
)
self.filterOpt.addSeparator()
@@ -376,6 +370,9 @@ class GuiBuildFilterTab(QWidget):
if key.startswith("doc:"):
self.buildOpts["settings"].setValue(key[4:], state)
self._setTreeItemMode()
elif key.startswith("root:"):
self.buildOpts["settings"].setSkipRoot(key[5:], state)
self.populateTree()
return
##
@@ -385,7 +382,7 @@ class GuiBuildFilterTab(QWidget):
def _setSelectedMode(self, mode):
"""Set the mode for the selected items.
"""
buildSettings = self.buildOpts["settings"]
bSettings = self.buildOpts["settings"]
for item in self.optTree.selectedItems():
if not isinstance(item, QTreeWidgetItem):
@@ -395,11 +392,11 @@ class GuiBuildFilterTab(QWidget):
isFile = item.data(self.C_DATA, self.D_FILE)
if isFile:
if mode == self.F_FILTERED:
buildSettings.setFiltered(tHandle)
bSettings.setFiltered(tHandle)
elif mode == self.F_INCLUDED:
buildSettings.setIncluded(tHandle)
bSettings.setIncluded(tHandle)
elif mode == self.F_EXCLUDED:
buildSettings.setExcluded(tHandle)
bSettings.setExcluded(tHandle)
self._setTreeItemMode()
@@ -419,7 +416,6 @@ class GuiBuildFilterTab(QWidget):
item.setIcon(self.C_STATUS, self._statusFlags[self.F_FILTERED][1])
else:
item.setIcon(self.C_STATUS, self._statusFlags[self.F_NONE][1])
return
# END Class GuiBuildFilterTab