Add test coverage of GuiBuildSettings tool

This commit is contained in:
Veronica Berglyd Olsen
2023-07-17 20:06:46 +02:00
parent f502411079
commit 839bc778aa
5 changed files with 656 additions and 41 deletions
+7 -13
View File
@@ -59,8 +59,7 @@ class NPagedSideBar(QToolBar):
return
def setLabelColor(self, color):
"""Set the text color for the labels.
"""
"""Set the text color for the labels."""
if isinstance(color, list):
self._labelCol = QColor(*color)
elif isinstance(color, QColor):
@@ -68,8 +67,7 @@ class NPagedSideBar(QToolBar):
return
def addSeparator(self):
"""Add a spacer widget.
"""
"""Add a spacer widget."""
spacer = QWidget(self)
spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
spacer.setFixedHeight(self._spacerHeight)
@@ -77,16 +75,14 @@ class NPagedSideBar(QToolBar):
return
def addLabel(self, text):
"""Add a new label to the toolbar.
"""
"""Add a new label to the toolbar."""
label = NPagedToolLabel(self, self._labelCol)
label.setText(text)
self.insertWidget(self._stretchAction, label)
return
def addButton(self, text, buttonId=-1):
"""Add a new button to the toolbar.
"""
"""Add a new button to the toolbar."""
button = NPagedToolButton(self)
button.setText(text)
@@ -99,8 +95,7 @@ class NPagedSideBar(QToolBar):
return action
def setSelected(self, buttonId):
"""Set the selected button.
"""
"""Set the selected button."""
self._group.button(buttonId).setChecked(True)
return
@@ -110,8 +105,7 @@ class NPagedSideBar(QToolBar):
@pyqtSlot("QAbstractButton*")
def _buttonClicked(self, button):
"""A button was clicked in the group, emit its id.
"""
"""A button was clicked in the group, emit its id."""
buttonId = self._group.id(button)
if buttonId != -1:
self.buttonClicked.emit(buttonId)
@@ -155,7 +149,7 @@ class NPagedToolButton(QToolButton):
height = self.height()
palette = self.palette()
if opt.state & QStyle.State_MouseOver:
if opt.state & QStyle.State_MouseOver == QStyle.State_MouseOver:
backCol = palette.alternateBase()
paint.setBrush(backCol)
paint.setOpacity(0.5)
+8 -2
View File
@@ -45,11 +45,15 @@ class NSwitchBox(QScrollArea):
self._hSwitch = baseSize
self._wSwitch = 2*self._hSwitch
self._sIcon = baseSize
self._widgets = []
self.clear()
return
def clear(self):
"""Rebuild the content of the core widget."""
self._index = 0
self._widgets = []
self._content = QGridLayout()
self._content.setColumnStretch(1, 1)
@@ -69,6 +73,7 @@ class NSwitchBox(QScrollArea):
font.setBold(True)
label.setFont(font)
self._content.addWidget(label, self._index, 0, 1, 3, Qt.AlignLeft)
self._widgets.append(label)
self._bumpIndex()
return
@@ -87,16 +92,17 @@ class NSwitchBox(QScrollArea):
switch.toggled.connect(lambda state: self._emitSwitchSignal(identifier, state))
self._content.addWidget(switch, self._index, 2, Qt.AlignRight)
self._widgets.append(switch)
self._bumpIndex()
return
def addSeparator(self):
"""Add a blank entry in the content box.
"""
"""Add a blank entry in the content box."""
spacer = QWidget()
spacer.setFixedHeight(int(0.5*self._sIcon))
self._content.addWidget(spacer, self._index, 0, 1, 3, Qt.AlignLeft)
self._widgets.append(spacer)
self._bumpIndex()
return
+23 -26
View File
@@ -118,8 +118,8 @@ class GuiBuildSettings(QDialog):
# Create Tabs
self.optTabSelect = _FilterTab(self, self._build)
self.optTabHeadings = _HeadingsTab(self, self._build)
self.optTabFormat = _FormatTab(self, self._build)
self.optTabContent = _ContentTab(self, self._build)
self.optTabFormat = _FormatTab(self, self._build)
self.optTabOutput = _OutputTab(self, self._build)
# Add Tabs
@@ -408,9 +408,8 @@ class _FilterTab(QWidget):
def mainSplitSizes(self) -> tuple[int, int]:
"""Extract the sizes of the main splitter."""
sizes = self.mainSplit.sizes()
if len(sizes) < 2:
return 0, 0
return CONFIG.rpxInt(sizes[0]), CONFIG.rpxInt(sizes[1])
m, n = (sizes[0], sizes[1]) if len(sizes) >= 2 else (0, 0)
return CONFIG.rpxInt(m), CONFIG.rpxInt(n)
##
# Slots
@@ -436,7 +435,7 @@ class _FilterTab(QWidget):
logger.debug("Building project tree")
self._treeMap = {}
self.optTree.clear()
for nwItem in self.theProject.tree:
for nwItem in self.theProject.getProjectItems():
tHandle = nwItem.itemHandle
pHandle = nwItem.itemParent
@@ -512,14 +511,14 @@ class _FilterTab(QWidget):
# Root Classes
self.filterOpt.addLabel(self.tr("Root Folders"))
for nwItem in self.theProject.getProjectItems():
for tHandle, nwItem in self.theProject.tree.iterRoots(None):
if not nwItem.isInactiveClass():
itemIcon = self.mainTheme.getItemIcon(
nwItem.itemType, nwItem.itemClass, nwItem.itemLayout
)
self.filterOpt.addItem(
itemIcon, nwItem.itemName, f"root:{nwItem.itemHandle}",
default=self._build.isRootAllowed(nwItem.itemHandle)
itemIcon, nwItem.itemName, f"root:{tHandle}",
default=self._build.isRootAllowed(tHandle)
)
return
@@ -527,18 +526,16 @@ class _FilterTab(QWidget):
def _setSelectedMode(self, mode: int):
"""Set the mode for the selected items."""
for item in self.optTree.selectedItems():
if not isinstance(item, QTreeWidgetItem):
continue
tHandle = item.data(self.C_DATA, self.D_HANDLE)
isFile = item.data(self.C_DATA, self.D_FILE)
if isFile:
if mode == self.F_FILTERED:
self._build.setFiltered(tHandle)
elif mode == self.F_INCLUDED:
self._build.setIncluded(tHandle)
elif mode == self.F_EXCLUDED:
self._build.setExcluded(tHandle)
if isinstance(item, QTreeWidgetItem):
tHandle = item.data(self.C_DATA, self.D_HANDLE)
isFile = item.data(self.C_DATA, self.D_FILE)
if isFile:
if mode == self.F_FILTERED:
self._build.setFiltered(tHandle)
elif mode == self.F_INCLUDED:
self._build.setIncluded(tHandle)
elif mode == self.F_EXCLUDED:
self._build.setExcluded(tHandle)
self._setTreeItemMode()
@@ -592,7 +589,7 @@ class _HeadingsTab(QWidget):
# Title Heading
self.lblTitle = QLabel(self._build.getLabel("headings.fmtTitle"))
self.fmtTitle = QLineEdit("")
self.fmtTitle.setEnabled(False)
self.fmtTitle.setReadOnly(True)
self.btnTitle = QToolButton()
self.btnTitle.setIcon(self.mainTheme.getIcon("edit"))
self.btnTitle.clicked.connect(lambda: self._editHeading(self.EDIT_TITLE))
@@ -608,7 +605,7 @@ class _HeadingsTab(QWidget):
# Chapter Heading
self.lblChapter = QLabel(self._build.getLabel("headings.fmtChapter"))
self.fmtChapter = QLineEdit("")
self.fmtChapter.setEnabled(False)
self.fmtChapter.setReadOnly(True)
self.btnChapter = QToolButton()
self.btnChapter.setIcon(self.mainTheme.getIcon("edit"))
self.btnChapter.clicked.connect(lambda: self._editHeading(self.EDIT_CHAPTER))
@@ -624,7 +621,7 @@ class _HeadingsTab(QWidget):
# Unnumbered Chapter Heading
self.lblUnnumbered = QLabel(self._build.getLabel("headings.fmtUnnumbered"))
self.fmtUnnumbered = QLineEdit("")
self.fmtUnnumbered.setEnabled(False)
self.fmtUnnumbered.setReadOnly(True)
self.btnUnnumbered = QToolButton()
self.btnUnnumbered.setIcon(self.mainTheme.getIcon("edit"))
self.btnUnnumbered.clicked.connect(lambda: self._editHeading(self.EDIT_UNNUM))
@@ -641,7 +638,7 @@ class _HeadingsTab(QWidget):
sceneHideTip = self._build.getLabel("headings.hideScene")
self.lblScene = QLabel(self._build.getLabel("headings.fmtScene"))
self.fmtScene = QLineEdit("")
self.fmtScene.setEnabled(False)
self.fmtScene.setReadOnly(True)
self.btnScene = QToolButton()
self.btnScene.setIcon(self.mainTheme.getIcon("edit"))
self.btnScene.clicked.connect(lambda: self._editHeading(self.EDIT_SCENE))
@@ -668,7 +665,7 @@ class _HeadingsTab(QWidget):
sectionHideTip = self._build.getLabel("headings.hideSection")
self.lblSection = QLabel(self._build.getLabel("headings.fmtSection"))
self.fmtSection = QLineEdit("")
self.fmtSection.setEnabled(False)
self.fmtSection.setReadOnly(True)
self.btnSection = QToolButton()
self.btnSection.setIcon(self.mainTheme.getIcon("edit"))
self.btnSection.clicked.connect(lambda: self._editHeading(self.EDIT_SECTION))
@@ -814,7 +811,7 @@ class _HeadingsTab(QWidget):
def _saveFormat(self):
"""Save the format from the edit text box."""
heading = self._editing
text = self.editTextBox.toPlainText().replace("\n", "//")
text = self.editTextBox.toPlainText().strip().replace("\n", "//")
if heading == self.EDIT_TITLE:
self.fmtTitle.setText(text)
self._build.setValue("headings.fmtTitle", text)