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),