From 2780e722d0ac5b3c04df7737afa914b18b710c4a Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sun, 6 Aug 2023 17:28:05 +0200
Subject: [PATCH] Change icon for filtered items in build settings dialog
---
.../assets/icons/typicons_dark/icons.conf | 2 +-
.../icons/typicons_dark/typ_arrow-forward.svg | 4 ++
.../assets/icons/typicons_dark/typ_filter.svg | 4 --
.../assets/icons/typicons_light/icons.conf | 2 +-
.../typicons_light/typ_arrow-forward.svg | 4 ++
.../icons/typicons_light/typ_filter.svg | 4 --
novelwriter/tools/manussettings.py | 46 +++++++++++--------
tests/test_tools/test_tools_manussettings.py | 2 +-
8 files changed, 37 insertions(+), 31 deletions(-)
create mode 100644 novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg
delete mode 100644 novelwriter/assets/icons/typicons_dark/typ_filter.svg
create mode 100644 novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg
delete mode 100644 novelwriter/assets/icons/typicons_light/typ_filter.svg
diff --git a/novelwriter/assets/icons/typicons_dark/icons.conf b/novelwriter/assets/icons/typicons_dark/icons.conf
index 2e62c460..8e354654 100644
--- a/novelwriter/assets/icons/typicons_dark/icons.conf
+++ b/novelwriter/assets/icons/typicons_dark/icons.conf
@@ -21,7 +21,7 @@ backward = typ_chevron-left.svg
bookmark = typ_bookmark.svg
browse = typ_folder-open.svg
build_excluded = typ_cancel.svg
-build_filtered = typ_filter.svg
+build_filtered = typ_arrow-forward.svg
build_included = typ_pin.svg
bullet-off = typ_media-record-outline.svg
bullet-on = typ_media-record.svg
diff --git a/novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg b/novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg
new file mode 100644
index 00000000..e235e9c2
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_dark/typ_arrow-forward.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_dark/typ_filter.svg b/novelwriter/assets/icons/typicons_dark/typ_filter.svg
deleted file mode 100644
index fd3f3afc..00000000
--- a/novelwriter/assets/icons/typicons_dark/typ_filter.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
diff --git a/novelwriter/assets/icons/typicons_light/icons.conf b/novelwriter/assets/icons/typicons_light/icons.conf
index df1d40ee..a52469ea 100644
--- a/novelwriter/assets/icons/typicons_light/icons.conf
+++ b/novelwriter/assets/icons/typicons_light/icons.conf
@@ -21,7 +21,7 @@ backward = typ_chevron-left.svg
bookmark = typ_bookmark.svg
browse = typ_folder-open.svg
build_excluded = typ_cancel.svg
-build_filtered = typ_filter.svg
+build_filtered = typ_arrow-forward.svg
build_included = typ_pin.svg
bullet-off = typ_media-record-outline.svg
bullet-on = typ_media-record.svg
diff --git a/novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg b/novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg
new file mode 100644
index 00000000..9d488e06
--- /dev/null
+++ b/novelwriter/assets/icons/typicons_light/typ_arrow-forward.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/novelwriter/assets/icons/typicons_light/typ_filter.svg b/novelwriter/assets/icons/typicons_light/typ_filter.svg
deleted file mode 100644
index 40000608..00000000
--- a/novelwriter/assets/icons/typicons_light/typ_filter.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
diff --git a/novelwriter/tools/manussettings.py b/novelwriter/tools/manussettings.py
index 33ce7691..5cb62d9e 100644
--- a/novelwriter/tools/manussettings.py
+++ b/novelwriter/tools/manussettings.py
@@ -106,7 +106,7 @@ class GuiBuildSettings(QDialog):
self.optSideBar.setLabelColor(self.mainTheme.helpText)
self.optSideBar.addLabel(self.tr("Options"))
- self.optSideBar.addButton(self.tr("Filters"), self.OPT_FILTERS)
+ self.optSideBar.addButton(self.tr("Selection"), self.OPT_FILTERS)
self.optSideBar.addButton(self.tr("Headings"), self.OPT_HEADINGS)
self.optSideBar.addButton(self.tr("Content"), self.OPT_CONTENT)
self.optSideBar.addButton(self.tr("Format"), self.OPT_FORMAT)
@@ -301,16 +301,19 @@ class _FilterTab(QWidget):
self.mainTheme = buildMain.mainGui.mainTheme
self.theProject = buildMain.mainGui.theProject
- self._treeMap = {}
+ self._treeMap: dict[str, QTreeWidgetItem] = {}
self._build = build
- self._statusFlags = {
- self.F_NONE: ("", QIcon()),
- self.F_FILTERED: (self.tr("Filtered"), self.mainTheme.getIcon("build_filtered")),
- self.F_INCLUDED: (self.tr("Included"), self.mainTheme.getIcon("build_included")),
- self.F_EXCLUDED: (self.tr("Excluded"), self.mainTheme.getIcon("build_excluded")),
+ self._statusFlags: dict[int, QIcon] = {
+ self.F_NONE: QIcon(),
+ self.F_FILTERED: self.mainTheme.getIcon("build_filtered"),
+ self.F_INCLUDED: self.mainTheme.getIcon("build_included"),
+ self.F_EXCLUDED: self.mainTheme.getIcon("build_excluded"),
}
+ self._trIncluded = self.tr("Included in manuscript")
+ self._trExcluded = self.tr("Excluded from manuscript")
+
# Project Tree
# ============
@@ -341,25 +344,25 @@ class _FilterTab(QWidget):
# Filters
# =======
- self.filteredButton = QToolButton(self)
- self.filteredButton.setToolTip(self._statusFlags[self.F_FILTERED][0])
- self.filteredButton.setIcon(self._statusFlags[self.F_FILTERED][1])
- self.filteredButton.clicked.connect(lambda: self._setSelectedMode(self.F_FILTERED))
+ self.resetButton = QToolButton(self)
+ self.resetButton.setToolTip(self.tr("Reset to default"))
+ self.resetButton.setIcon(self.mainTheme.getIcon("revert"))
+ self.resetButton.clicked.connect(lambda: self._setSelectedMode(self.F_FILTERED))
self.includedButton = QToolButton(self)
- self.includedButton.setToolTip(self._statusFlags[self.F_INCLUDED][0])
- self.includedButton.setIcon(self._statusFlags[self.F_INCLUDED][1])
+ self.includedButton.setToolTip(self.tr("Always included"))
+ self.includedButton.setIcon(self._statusFlags[self.F_INCLUDED])
self.includedButton.clicked.connect(lambda: self._setSelectedMode(self.F_INCLUDED))
self.excludedButton = QToolButton(self)
- self.excludedButton.setToolTip(self._statusFlags[self.F_EXCLUDED][0])
- self.excludedButton.setIcon(self._statusFlags[self.F_EXCLUDED][1])
+ self.excludedButton.setToolTip(self.tr("Always excluded"))
+ self.excludedButton.setIcon(self._statusFlags[self.F_EXCLUDED])
self.excludedButton.clicked.connect(lambda: self._setSelectedMode(self.F_EXCLUDED))
self.modeBox = QHBoxLayout()
self.modeBox.addWidget(QLabel(self.tr("Mark selection as")))
self.modeBox.addStretch(1)
- self.modeBox.addWidget(self.filteredButton)
+ self.modeBox.addWidget(self.resetButton)
self.modeBox.addWidget(self.includedButton)
self.modeBox.addWidget(self.excludedButton)
@@ -549,13 +552,16 @@ class _FilterTab(QWidget):
for tHandle, item in self._treeMap.items():
allow, mode = filtered.get(tHandle, (False, FilterMode.UNKNOWN))
if mode == FilterMode.INCLUDED:
- item.setIcon(self.C_STATUS, self._statusFlags[self.F_INCLUDED][1])
+ item.setIcon(self.C_STATUS, self._statusFlags[self.F_INCLUDED])
+ item.setToolTip(self.C_STATUS, self._trIncluded)
elif mode == FilterMode.EXCLUDED:
- item.setIcon(self.C_STATUS, self._statusFlags[self.F_EXCLUDED][1])
+ item.setIcon(self.C_STATUS, self._statusFlags[self.F_EXCLUDED])
+ item.setToolTip(self.C_STATUS, self._trExcluded)
elif mode == FilterMode.FILTERED and allow:
- item.setIcon(self.C_STATUS, self._statusFlags[self.F_FILTERED][1])
+ item.setIcon(self.C_STATUS, self._statusFlags[self.F_FILTERED])
+ item.setToolTip(self.C_STATUS, self._trIncluded)
else:
- item.setIcon(self.C_STATUS, self._statusFlags[self.F_NONE][1])
+ item.setIcon(self.C_STATUS, self._statusFlags[self.F_NONE])
return
# END Class _FilterTab
diff --git a/tests/test_tools/test_tools_manussettings.py b/tests/test_tools/test_tools_manussettings.py
index c455b623..e4443e4b 100644
--- a/tests/test_tools/test_tools_manussettings.py
+++ b/tests/test_tools/test_tools_manussettings.py
@@ -266,7 +266,7 @@ def testBuildSettings_Filter(qtbot: QtBot, nwGUI: GuiMain, projPath: Path, mockR
filterTab._treeMap[C.hSceneDoc].setSelected(True)
filterTab._treeMap[hPlotDoc].setSelected(True)
filterTab._treeMap[hCharDoc].setSelected(True)
- filterTab.filteredButton.click()
+ filterTab.resetButton.click()
assert build.buildItemFilter(nwGUI.theProject) == {
C.hNovelRoot: (False, FilterMode.SKIPPED),
C.hTitlePage: (True, FilterMode.FILTERED),