diff --git a/novelwriter/assets/icons/remix_filled.icons b/novelwriter/assets/icons/remix_filled.icons index f811c500..8e0b23a9 100644 --- a/novelwriter/assets/icons/remix_filled.icons +++ b/novelwriter/assets/icons/remix_filled.icons @@ -11,17 +11,17 @@ icon:alert_info = icon:alert_warn = icon:cls_archive = -icon:cls_character = +icon:cls_character = icon:cls_custom = icon:cls_entity = icon:cls_none = icon:cls_novel = -icon:cls_object = +icon:cls_object = icon:cls_plot = icon:cls_template = icon:cls_timeline = icon:cls_trash = -icon:cls_world = +icon:cls_world = icon:prj_folder = icon:prj_document = icon:prj_title = @@ -35,23 +35,23 @@ icon:fmt_strike = icon:fmt_superscript = icon:fmt_underline = -icon:fmt_toolbar = +icon:fmt_toolbar = icon:search = -icon:search_cancel = +icon:search_cancel = icon:search_case = -icon:search_loop = +icon:search_loop = icon:search_preserve = icon:search_project = icon:search_regex = icon:search_replace = icon:search_word = icon:bullet-off = -icon:bullet-on = +icon:bullet-on = icon:unfold-hide = icon:unfold-show = icon:sb_build = icon:sb_novel = -icon:sb_outline = +icon:sb_outline = icon:sb_project = icon:sb_search = icon:add = @@ -68,7 +68,7 @@ icon:close = icon:document_add = icon:document = -icon:edit = +icon:edit = icon:exclude = icon:export = icon:filter = @@ -92,7 +92,7 @@ icon:noncheckable = icon:panel = icon:pin = -icon:quote = +icon:quote = icon:refresh = icon:remove = icon:revert = @@ -100,7 +100,7 @@ icon:settings = icon:stats = icon:text = -icon:timer_off = +icon:timer_off = icon:timer = icon:unchecked = icon:view = diff --git a/novelwriter/assets/icons/remix_outline.icons b/novelwriter/assets/icons/remix_outline.icons index ecf7e9ab..bbb82732 100644 --- a/novelwriter/assets/icons/remix_outline.icons +++ b/novelwriter/assets/icons/remix_outline.icons @@ -11,17 +11,17 @@ icon:alert_info = icon:alert_warn = icon:cls_archive = -icon:cls_character = +icon:cls_character = icon:cls_custom = icon:cls_entity = icon:cls_none = icon:cls_novel = -icon:cls_object = +icon:cls_object = icon:cls_plot = icon:cls_template = icon:cls_timeline = icon:cls_trash = -icon:cls_world = +icon:cls_world = icon:prj_folder = icon:prj_document = icon:prj_title = @@ -35,23 +35,23 @@ icon:fmt_strike = icon:fmt_superscript = icon:fmt_underline = -icon:fmt_toolbar = +icon:fmt_toolbar = icon:search = -icon:search_cancel = +icon:search_cancel = icon:search_case = -icon:search_loop = +icon:search_loop = icon:search_preserve = icon:search_project = icon:search_regex = icon:search_replace = icon:search_word = icon:bullet-off = -icon:bullet-on = +icon:bullet-on = icon:unfold-hide = icon:unfold-show = icon:sb_build = icon:sb_novel = -icon:sb_outline = +icon:sb_outline = icon:sb_project = icon:sb_search = icon:add = @@ -68,7 +68,7 @@ icon:close = icon:document_add = icon:document = -icon:edit = +icon:edit = icon:exclude = icon:export = icon:filter = @@ -87,12 +87,12 @@ icon:margin_top = icon:minimise = icon:more_arrow = -icon:more_vertical = +icon:more_vertical = icon:noncheckable = icon:open = icon:panel = icon:pin = -icon:quote = +icon:quote = icon:refresh = icon:remove = icon:revert = @@ -100,7 +100,7 @@ icon:settings = icon:stats = icon:text = -icon:timer_off = +icon:timer_off = icon:timer = icon:unchecked = icon:view = diff --git a/novelwriter/assets/themes/cyberpunk_night.conf b/novelwriter/assets/themes/cyberpunk_night.conf index 143e1f20..bdb2ee43 100644 --- a/novelwriter/assets/themes/cyberpunk_night.conf +++ b/novelwriter/assets/themes/cyberpunk_night.conf @@ -7,7 +7,8 @@ license = CC BY-SA 4.0 licenseurl = https://creativecommons.org/licenses/by-sa/4.0/ [Icons] -default = 150, 150, 150 +default = 136, 136, 136 +faded = 97, 97, 97 red = 242, 72, 23 orange = 255, 150, 10 yellow = 255, 255, 0 @@ -19,7 +20,7 @@ purple = 50, 0, 180 [Project] root = 77, 77, 255 folder = 255, 255, 0 -file = 150, 150, 150 +file = 136, 136, 136 title = 0, 255, 0 chapter = 242, 72, 23 scene = 77, 77, 255 diff --git a/novelwriter/assets/themes/default_dark.conf b/novelwriter/assets/themes/default_dark.conf index 39b5369c..a7cbb57f 100644 --- a/novelwriter/assets/themes/default_dark.conf +++ b/novelwriter/assets/themes/default_dark.conf @@ -8,7 +8,8 @@ license = CC BY-SA 4.0 licenseurl = https://creativecommons.org/licenses/by-sa/4.0/ [Icons] -default = 204, 204, 204 +default = 184, 184, 184 +faded = 148, 148, 148 red = 242, 119, 122 orange = 249, 145, 57 yellow = 255, 204, 102 @@ -20,7 +21,7 @@ purple = 204, 153, 204 [Project] root = 102, 153, 204 folder = 255, 204, 102 -file = 204, 204, 204 +file = 184, 184, 184 title = 153, 204, 153 chapter = 242, 119, 122 scene = 102, 153, 204 diff --git a/novelwriter/assets/themes/default_light.conf b/novelwriter/assets/themes/default_light.conf index c52d1d3c..b6f7e8d5 100644 --- a/novelwriter/assets/themes/default_light.conf +++ b/novelwriter/assets/themes/default_light.conf @@ -8,7 +8,8 @@ license = CC BY-SA 4.0 licenseurl = https://creativecommons.org/licenses/by-sa/4.0/ [Icons] -default = 77, 77, 76 +default = 72, 72, 72 +faded = 108, 108, 108 red = 240, 40, 41 orange = 245, 135, 31 yellow = 234, 183, 0 @@ -20,7 +21,7 @@ purple = 137, 89, 168 [Project] root = 66, 113, 174 folder = 234, 183, 0 -file = 77, 77, 76 +file = 72, 72, 72 title = 113, 140, 0 chapter = 240, 40, 41 scene = 66, 113, 174 diff --git a/novelwriter/assets/themes/dracula.conf b/novelwriter/assets/themes/dracula.conf index d874e832..827d4eab 100644 --- a/novelwriter/assets/themes/dracula.conf +++ b/novelwriter/assets/themes/dracula.conf @@ -23,7 +23,8 @@ licenseurl = https://github.com/dracula/dracula-theme/blob/main/LICENSE ## [Icons] -default = 248, 248, 242 +default = 230, 230, 224 +faded = 98, 114, 164 red = 255, 85, 85 orange = 255, 184, 108 yellow = 241, 250, 140 @@ -35,7 +36,7 @@ purple = 189, 147, 249 [Project] root = 189, 147, 249 folder = 241, 250, 140 -file = 248, 248, 242 +file = 230, 230, 224 title = 80, 250, 123 chapter = 255, 85, 85 scene = 139, 233, 253 diff --git a/novelwriter/assets/themes/solarized_dark.conf b/novelwriter/assets/themes/solarized_dark.conf index 7bcc1073..6d835dfb 100644 --- a/novelwriter/assets/themes/solarized_dark.conf +++ b/novelwriter/assets/themes/solarized_dark.conf @@ -7,7 +7,8 @@ license = MIT licenseurl = https://github.com/altercation/solarized/blob/master/LICENSE [Icons] -default = 253, 246, 227 +default = 230, 223, 206 +faded = 166, 161, 149 red = 220, 50, 47 orange = 203, 75, 22 yellow = 181, 137, 0 @@ -19,7 +20,7 @@ purple = 108, 113, 196 [Project] root = 42, 161, 152 folder = 42, 161, 152 -file = 253, 246, 227 +file = 230, 223, 206 title = 133, 153, 0 chapter = 220, 50, 47 scene = 38, 139, 210 diff --git a/novelwriter/assets/themes/solarized_light.conf b/novelwriter/assets/themes/solarized_light.conf index 6cf7c7d6..b9e3162c 100644 --- a/novelwriter/assets/themes/solarized_light.conf +++ b/novelwriter/assets/themes/solarized_light.conf @@ -7,7 +7,8 @@ license = MIT licenseurl = https://github.com/altercation/solarized/blob/master/LICENSE [Icons] -default = 0, 43, 54 +default = 59, 68, 71 +faded = 78, 91, 95 red = 220, 50, 47 orange = 203, 75, 22 yellow = 181, 137, 0 @@ -19,7 +20,7 @@ purple = 108, 113, 196 [Project] root = 42, 161, 152 folder = 42, 161, 152 -file = 0, 43, 54 +file = 59, 68, 71 title = 133, 153, 0 chapter = 220, 50, 47 scene = 38, 139, 210 diff --git a/novelwriter/config.py b/novelwriter/config.py index 1e173da3..cd377199 100644 --- a/novelwriter/config.py +++ b/novelwriter/config.py @@ -124,6 +124,7 @@ class Config: # Icons self.iconTheme = "material_rounded_normal" # Icons theme self.iconColTree = "theme" # Project tree icon colours + self.iconColDocs = False # Keep theme colours on documents # Size Settings self._mainWinSize = [1200, 650] # Last size of the main GUI window @@ -611,6 +612,7 @@ class Config: self.guiSyntax = conf.rdStr(sec, "syntax", self.guiSyntax) self.iconTheme = conf.rdStr(sec, "icons", self.iconTheme) self.iconColTree = conf.rdStr(sec, "iconcoltree", self.iconColTree) + self.iconColDocs = conf.rdBool(sec, "iconcoldocs", self.iconColDocs) self.guiLocale = conf.rdStr(sec, "localisation", self.guiLocale) self.hideVScroll = conf.rdBool(sec, "hidevscroll", self.hideVScroll) self.hideHScroll = conf.rdBool(sec, "hidehscroll", self.hideHScroll) @@ -724,6 +726,7 @@ class Config: "syntax": str(self.guiSyntax), "icons": str(self.iconTheme), "iconcoltree": str(self.iconColTree), + "iconcoldocs": str(self.iconColDocs), "localisation": str(self.guiLocale), "hidevscroll": str(self.hideVScroll), "hidehscroll": str(self.hideHScroll), diff --git a/novelwriter/constants.py b/novelwriter/constants.py index cad63159..36099c38 100644 --- a/novelwriter/constants.py +++ b/novelwriter/constants.py @@ -427,15 +427,16 @@ class nwLabels: "Custom": (-1.0, -1.0), } THEME_COLORS = { - "theme": QT_TRANSLATE_NOOP("Constant", "Theme Colours"), - "default": QT_TRANSLATE_NOOP("Constant", "No Colours"), - "red": QT_TRANSLATE_NOOP("Constant", "Red"), - "orange": QT_TRANSLATE_NOOP("Constant", "Orange"), - "yellow": QT_TRANSLATE_NOOP("Constant", "Yellow"), - "green": QT_TRANSLATE_NOOP("Constant", "Green"), - "aqua": QT_TRANSLATE_NOOP("Constant", "Aqua"), - "blue": QT_TRANSLATE_NOOP("Constant", "Blue"), - "purple": QT_TRANSLATE_NOOP("Constant", "Purple"), + "theme": QT_TRANSLATE_NOOP("Color", "Theme Colours"), + "default": QT_TRANSLATE_NOOP("Color", "No Colours"), + "faded": QT_TRANSLATE_NOOP("Color", "Faded Colour"), + "red": QT_TRANSLATE_NOOP("Color", "Red"), + "orange": QT_TRANSLATE_NOOP("Color", "Orange"), + "yellow": QT_TRANSLATE_NOOP("Color", "Yellow"), + "green": QT_TRANSLATE_NOOP("Color", "Green"), + "aqua": QT_TRANSLATE_NOOP("Color", "Aqua"), + "blue": QT_TRANSLATE_NOOP("Color", "Blue"), + "purple": QT_TRANSLATE_NOOP("Color", "Purple"), } diff --git a/novelwriter/core/item.py b/novelwriter/core/item.py index cc253fe2..6cf0ec90 100644 --- a/novelwriter/core/item.py +++ b/novelwriter/core/item.py @@ -355,7 +355,7 @@ class NWItem: icon = SHARED.theme.getIcon(key, color) else: text = "" - icon = SHARED.theme.getIcon("noncheckable", "orange") + icon = SHARED.theme.getIcon("noncheckable", "faded") return text, icon ## diff --git a/novelwriter/dialogs/preferences.py b/novelwriter/dialogs/preferences.py index fea849df..a272dab5 100644 --- a/novelwriter/dialogs/preferences.py +++ b/novelwriter/dialogs/preferences.py @@ -200,6 +200,14 @@ class GuiPreferences(NDialog): self.tr("Override colours for project icons."), stretch=(3, 2) ) + # Keep Theme Colours on Documents + self.iconColDocs = NSwitch(self) + self.iconColDocs.setChecked(CONFIG.iconColDocs) + self.mainForm.addRow( + self.tr("Keep theme colours on documents"), self.iconColDocs, + self.tr("Only override icon colours for folders.") + ) + # Application Font Family self.guiFont = QLineEdit(self) self.guiFont.setReadOnly(True) @@ -928,10 +936,12 @@ class GuiPreferences(NDialog): guiTheme = self.guiTheme.currentData() iconTheme = self.iconTheme.currentData() iconColTree = self.iconColTree.currentData() + iconColDocs = self.iconColDocs.isChecked() updateTheme |= CONFIG.guiTheme != guiTheme updateTheme |= CONFIG.iconTheme != iconTheme updateTheme |= CONFIG.iconColTree != iconColTree + updateTheme |= CONFIG.iconColDocs != iconColDocs needsRestart |= CONFIG.guiLocale != guiLocale needsRestart |= CONFIG.guiFont != self._guiFont @@ -939,6 +949,7 @@ class GuiPreferences(NDialog): CONFIG.guiTheme = guiTheme CONFIG.iconTheme = iconTheme CONFIG.iconColTree = iconColTree + CONFIG.iconColDocs = iconColDocs CONFIG.hideVScroll = self.hideVScroll.isChecked() CONFIG.hideHScroll = self.hideHScroll.isChecked() CONFIG.nativeFont = self.nativeFont.isChecked() diff --git a/novelwriter/gui/itemdetails.py b/novelwriter/gui/itemdetails.py index 72ecb701..d6435bdf 100644 --- a/novelwriter/gui/itemdetails.py +++ b/novelwriter/gui/itemdetails.py @@ -241,7 +241,7 @@ class GuiItemDetails(QWidget): else: self.labelIcon.setPixmap(SHARED.theme.getPixmap("unchecked", (iPx, iPx), "red")) else: - self.labelIcon.setPixmap(SHARED.theme.getPixmap("noncheckable", (iPx, iPx), "orange")) + self.labelIcon.setPixmap(SHARED.theme.getPixmap("noncheckable", (iPx, iPx), "faded")) self.labelData.setText(elide(nwItem.itemName, 100)) diff --git a/novelwriter/gui/theme.py b/novelwriter/gui/theme.py index 6f33108b..6fd4f198 100644 --- a/novelwriter/gui/theme.py +++ b/novelwriter/gui/theme.py @@ -252,6 +252,7 @@ class GuiTheme: sec = "Icons" if parser.has_section(sec): self.iconCache.setIconColor("default", self._parseColour(parser, sec, "default")) + self.iconCache.setIconColor("faded", self._parseColour(parser, sec, "faded")) self.iconCache.setIconColor("red", self._parseColour(parser, sec, "red")) self.iconCache.setIconColor("orange", self._parseColour(parser, sec, "orange")) self.iconCache.setIconColor("yellow", self._parseColour(parser, sec, "yellow")) @@ -544,10 +545,12 @@ class GuiIcons: """Clear the icon cache.""" text = QApplication.palette().windowText().color() default = text.name(QColor.NameFormat.HexRgb).encode("utf-8") + faded = self.mainTheme.fadedText.name(QColor.NameFormat.HexRgb).encode("utf-8") self._svgData = {} self._svgColours = { "default": default, + "faded": faded, "red": b"#ff0000", "orange": b"#ff7f00", "yellow": b"#ffff00", @@ -607,11 +610,12 @@ class GuiIcons: color = self._svgColours.get(override, b"#000000") self._svgColours["root"] = color self._svgColours["folder"] = color - self._svgColours["file"] = color - self._svgColours["title"] = color - self._svgColours["chapter"] = color - self._svgColours["scene"] = color - self._svgColours["note"] = color + if not CONFIG.iconColDocs: + self._svgColours["file"] = color + self._svgColours["title"] = color + self._svgColours["chapter"] = color + self._svgColours["scene"] = color + self._svgColours["note"] = color return True diff --git a/tests/reference/baseConfig_novelwriter.conf b/tests/reference/baseConfig_novelwriter.conf index c4cdca5c..530be083 100644 --- a/tests/reference/baseConfig_novelwriter.conf +++ b/tests/reference/baseConfig_novelwriter.conf @@ -1,5 +1,5 @@ [Meta] -timestamp = 2025-01-10 02:00:06 +timestamp = 2025-01-11 00:46:32 [Main] font = @@ -7,6 +7,7 @@ theme = default syntax = default_light icons = material_rounded_normal iconcoltree = theme +iconcoldocs = False localisation = en_GB hidevscroll = False hidehscroll = False diff --git a/utils/remix.json b/utils/remix.json index f62a9ee6..8c7d8ff9 100644 --- a/utils/remix.json +++ b/utils/remix.json @@ -5,17 +5,17 @@ "alert_warn": "alarm-warning", "cls_archive": "archive", - "cls_character": "group", + "cls_character": "team", "cls_custom": "price-tag-3", "cls_entity": "building", "cls_none": "checkbox-blank", "cls_novel": "git-repository", - "cls_object": "key-2", + "cls_object": "knife-blood-line", "cls_plot": "puzzle-2", "cls_template": "folder-add", "cls_timeline": "hourglass", "cls_trash": "delete-bin", - "cls_world": "earth", + "cls_world": "road-map", "prj_folder": "folder-6", "prj_document": "file-text", @@ -31,12 +31,12 @@ "fmt_subscript": "subscript", "fmt_superscript": "superscript", "fmt_underline": "underline", - "fmt_toolbar": "font-color", + "fmt_toolbar": "scroll-to-bottom", "search": "search-line", - "search_cancel": "close", + "search_cancel": "close-large-fill", "search_case": "font-size", - "search_loop": "loop-right", + "search_loop": "repeat-2", "search_preserve": "font-size-2", "search_project": "file-search", "search_regex": "asterisk", @@ -44,13 +44,13 @@ "search_word": "space", "bullet-off": "checkbox-blank-circle-line", - "bullet-on": "checkbox-blank-circle-fill", + "bullet-on": "progress-8-line", "unfold-hide": "arrow-right-s-fill", "unfold-show": "arrow-down-s-fill", "sb_build": "stack", "sb_novel": "booklet", - "sb_outline": "table-view", + "sb_outline": "timeline-view", "sb_project": "file-edit", "sb_search": "file-search", @@ -64,11 +64,11 @@ "chevron_left": "arrow-left-s-line", "chevron_right": "arrow-right-s-line", "chevron_up": "arrow-up-s-line", - "close": "close-large", + "close": "close-large-fill", "copy": "file-copy", "document_add": "file-add", "document": "file-text", - "edit": "edit", + "edit": "edit-2", "exclude": "close-circle", "export": "export", "filter": "filter-2", @@ -87,13 +87,13 @@ "maximise": "fullscreen", "minimise": "fullscreen-exit", "more_arrow": "arrow-right-s-fill", - "more_vertical": "more-2", + "more_vertical": "more-2-fill", "noncheckable": "checkbox-indeterminate", "open": "file-upload", "panel": "layout-bottom", "pin": "pushpin", "project_copy": "", - "quote": "double-quotes-l", + "quote": "double-quotes-r", "refresh": "refresh-line", "remove": "subtract", "revert": "reset-left", @@ -101,7 +101,7 @@ "star": "star-fill", "stats": "numbers", "text": "file-text", - "timer_off": "pause", + "timer_off": "zzz", "timer": "timer", "unchecked": "checkbox-blank", "view": "eye-fill"