From a0fea3c025ecd07b9c194eba7827992d4d67186e Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 8 Jan 2025 22:22:09 +0100 Subject: [PATCH] Separate project tree icons from the rest --- .../assets/icons/material_filled_bold.icons | 21 +++++--- .../assets/icons/material_filled_normal.icons | 21 +++++--- .../assets/icons/material_filled_thin.icons | 21 +++++--- .../assets/icons/material_rounded_bold.icons | 21 +++++--- .../icons/material_rounded_normal.icons | 21 +++++--- .../assets/icons/material_rounded_thin.icons | 21 +++++--- .../assets/themes/cyberpunk_night.conf | 9 ++++ novelwriter/assets/themes/default_dark.conf | 9 ++++ novelwriter/assets/themes/default_light.conf | 9 ++++ novelwriter/assets/themes/dracula.conf | 10 +++- novelwriter/assets/themes/solarized_dark.conf | 9 ++++ .../assets/themes/solarized_light.conf | 8 +++ novelwriter/constants.py | 14 ----- novelwriter/extensions/novelselector.py | 4 +- novelwriter/gui/docviewerpanel.py | 8 +-- novelwriter/gui/itemdetails.py | 4 +- novelwriter/gui/projtree.py | 18 +++---- novelwriter/gui/theme.py | 54 ++++++++++++------- novelwriter/tools/lipsum.py | 2 +- novelwriter/tools/manussettings.py | 4 +- pkgutils.py | 2 +- setup/debian/copyright | 39 +++++--------- utils/material_icons.py | 24 +++++---- 23 files changed, 215 insertions(+), 138 deletions(-) diff --git a/novelwriter/assets/icons/material_filled_bold.icons b/novelwriter/assets/icons/material_filled_bold.icons index 92889201..4abcebf4 100644 --- a/novelwriter/assets/icons/material_filled_bold.icons +++ b/novelwriter/assets/icons/material_filled_bold.icons @@ -2,8 +2,8 @@ # Meta meta:name = Material Symbols - Filled Bold -meta:author = Google -meta:license = Apache License Version 2.0 +meta:author = Google Inc +meta:license = Apache 2.0 # Icons icon:alert_error = @@ -22,10 +22,16 @@ icon:cls_template = icon:cls_trash = icon:cls_world = +icon:prj_folder = +icon:prj_document = +icon:prj_title = +icon:prj_chapter = +icon:prj_scene = +icon:prj_note = icon:fmt_bold = icon:fmt_italic = icon:fmt_mark = -icon:fmt_strike = +icon:fmt_strike = icon:fmt_subscript = icon:fmt_superscript = icon:fmt_underline = @@ -47,7 +53,7 @@ icon:add = icon:browse = icon:cancel = -icon:checked = +icon:checked = icon:chevron_down = icon:chevron_left = icon:chevron_right = @@ -55,10 +61,10 @@ icon:chevron_up = icon:copy = icon:document_add = -icon:document = +icon:document = icon:edit = icon:exclude = -icon:export = +icon:export = icon:filter = icon:fit_height = icon:fit_width = @@ -80,7 +86,7 @@ icon:more_vertical = icon:novel_view = icon:open = -icon:outline = +icon:outline = icon:panel = icon:pin = icon:project_copy = @@ -92,6 +98,7 @@ icon:revert = icon:star = icon:stats = +icon:text = icon:timer_off = icon:timer = icon:unchecked = diff --git a/novelwriter/assets/icons/material_filled_normal.icons b/novelwriter/assets/icons/material_filled_normal.icons index 2f3d1b84..53e88c4c 100644 --- a/novelwriter/assets/icons/material_filled_normal.icons +++ b/novelwriter/assets/icons/material_filled_normal.icons @@ -2,8 +2,8 @@ # Meta meta:name = Material Symbols - Filled Medium -meta:author = Google -meta:license = Apache License Version 2.0 +meta:author = Google Inc +meta:license = Apache 2.0 # Icons icon:alert_error = @@ -22,10 +22,16 @@ icon:cls_template = icon:cls_trash = icon:cls_world = +icon:prj_folder = +icon:prj_document = +icon:prj_title = +icon:prj_chapter = +icon:prj_scene = +icon:prj_note = icon:fmt_bold = icon:fmt_italic = icon:fmt_mark = -icon:fmt_strike = +icon:fmt_strike = icon:fmt_subscript = icon:fmt_superscript = icon:fmt_underline = @@ -47,7 +53,7 @@ icon:add = icon:browse = icon:cancel = -icon:checked = +icon:checked = icon:chevron_down = icon:chevron_left = icon:chevron_right = @@ -55,10 +61,10 @@ icon:chevron_up = icon:copy = icon:document_add = -icon:document = +icon:document = icon:edit = icon:exclude = -icon:export = +icon:export = icon:filter = icon:fit_height = icon:fit_width = @@ -80,7 +86,7 @@ icon:more_vertical = icon:novel_view = icon:open = -icon:outline = +icon:outline = icon:panel = icon:pin = icon:project_copy = @@ -92,6 +98,7 @@ icon:revert = icon:star = icon:stats = +icon:text = icon:timer_off = icon:timer = icon:unchecked = diff --git a/novelwriter/assets/icons/material_filled_thin.icons b/novelwriter/assets/icons/material_filled_thin.icons index 70206ae1..43a60e8d 100644 --- a/novelwriter/assets/icons/material_filled_thin.icons +++ b/novelwriter/assets/icons/material_filled_thin.icons @@ -2,8 +2,8 @@ # Meta meta:name = Material Symbols - Filled Thin -meta:author = Google -meta:license = Apache License Version 2.0 +meta:author = Google Inc +meta:license = Apache 2.0 # Icons icon:alert_error = @@ -22,10 +22,16 @@ icon:cls_template = icon:cls_trash = icon:cls_world = +icon:prj_folder = +icon:prj_document = +icon:prj_title = +icon:prj_chapter = +icon:prj_scene = +icon:prj_note = icon:fmt_bold = icon:fmt_italic = icon:fmt_mark = -icon:fmt_strike = +icon:fmt_strike = icon:fmt_subscript = icon:fmt_superscript = icon:fmt_underline = @@ -47,7 +53,7 @@ icon:add = icon:browse = icon:cancel = -icon:checked = +icon:checked = icon:chevron_down = icon:chevron_left = icon:chevron_right = @@ -55,10 +61,10 @@ icon:chevron_up = icon:copy = icon:document_add = -icon:document = +icon:document = icon:edit = icon:exclude = -icon:export = +icon:export = icon:filter = icon:fit_height = icon:fit_width = @@ -80,7 +86,7 @@ icon:more_vertical = icon:novel_view = icon:open = -icon:outline = +icon:outline = icon:panel = icon:pin = icon:project_copy = @@ -92,6 +98,7 @@ icon:revert = icon:star = icon:stats = +icon:text = icon:timer_off = icon:timer = icon:unchecked = diff --git a/novelwriter/assets/icons/material_rounded_bold.icons b/novelwriter/assets/icons/material_rounded_bold.icons index dde3f32e..30297456 100644 --- a/novelwriter/assets/icons/material_rounded_bold.icons +++ b/novelwriter/assets/icons/material_rounded_bold.icons @@ -2,8 +2,8 @@ # Meta meta:name = Material Symbols - Rounded Bold -meta:author = Google -meta:license = Apache License Version 2.0 +meta:author = Google Inc +meta:license = Apache 2.0 # Icons icon:alert_error = @@ -22,10 +22,16 @@ icon:cls_template = icon:cls_trash = icon:cls_world = +icon:prj_folder = +icon:prj_document = +icon:prj_title = +icon:prj_chapter = +icon:prj_scene = +icon:prj_note = icon:fmt_bold = icon:fmt_italic = icon:fmt_mark = -icon:fmt_strike = +icon:fmt_strike = icon:fmt_subscript = icon:fmt_superscript = icon:fmt_underline = @@ -47,7 +53,7 @@ icon:add = icon:browse = icon:cancel = -icon:checked = +icon:checked = icon:chevron_down = icon:chevron_left = icon:chevron_right = @@ -55,10 +61,10 @@ icon:chevron_up = icon:copy = icon:document_add = -icon:document = +icon:document = icon:edit = icon:exclude = -icon:export = +icon:export = icon:filter = icon:fit_height = icon:fit_width = @@ -80,7 +86,7 @@ icon:more_vertical = icon:novel_view = icon:open = -icon:outline = +icon:outline = icon:panel = icon:pin = icon:project_copy = @@ -92,6 +98,7 @@ icon:revert = icon:star = icon:stats = +icon:text = icon:timer_off = icon:timer = icon:unchecked = diff --git a/novelwriter/assets/icons/material_rounded_normal.icons b/novelwriter/assets/icons/material_rounded_normal.icons index fe240ee7..f6995c5b 100644 --- a/novelwriter/assets/icons/material_rounded_normal.icons +++ b/novelwriter/assets/icons/material_rounded_normal.icons @@ -2,8 +2,8 @@ # Meta meta:name = Material Symbols - Rounded Medium -meta:author = Google -meta:license = Apache License Version 2.0 +meta:author = Google Inc +meta:license = Apache 2.0 # Icons icon:alert_error = @@ -22,10 +22,16 @@ icon:cls_template = icon:cls_trash = icon:cls_world = +icon:prj_folder = +icon:prj_document = +icon:prj_title = +icon:prj_chapter = +icon:prj_scene = +icon:prj_note = icon:fmt_bold = icon:fmt_italic = icon:fmt_mark = -icon:fmt_strike = +icon:fmt_strike = icon:fmt_subscript = icon:fmt_superscript = icon:fmt_underline = @@ -47,7 +53,7 @@ icon:add = icon:browse = icon:cancel = -icon:checked = +icon:checked = icon:chevron_down = icon:chevron_left = icon:chevron_right = @@ -55,10 +61,10 @@ icon:chevron_up = icon:copy = icon:document_add = -icon:document = +icon:document = icon:edit = icon:exclude = -icon:export = +icon:export = icon:filter = icon:fit_height = icon:fit_width = @@ -80,7 +86,7 @@ icon:more_vertical = icon:novel_view = icon:open = -icon:outline = +icon:outline = icon:panel = icon:pin = icon:project_copy = @@ -92,6 +98,7 @@ icon:revert = icon:star = icon:stats = +icon:text = icon:timer_off = icon:timer = icon:unchecked = diff --git a/novelwriter/assets/icons/material_rounded_thin.icons b/novelwriter/assets/icons/material_rounded_thin.icons index 19a60761..e809255b 100644 --- a/novelwriter/assets/icons/material_rounded_thin.icons +++ b/novelwriter/assets/icons/material_rounded_thin.icons @@ -2,8 +2,8 @@ # Meta meta:name = Material Symbols - Rounded Thin -meta:author = Google -meta:license = Apache License Version 2.0 +meta:author = Google Inc +meta:license = Apache 2.0 # Icons icon:alert_error = @@ -22,10 +22,16 @@ icon:cls_template = icon:cls_trash = icon:cls_world = +icon:prj_folder = +icon:prj_document = +icon:prj_title = +icon:prj_chapter = +icon:prj_scene = +icon:prj_note = icon:fmt_bold = icon:fmt_italic = icon:fmt_mark = -icon:fmt_strike = +icon:fmt_strike = icon:fmt_subscript = icon:fmt_superscript = icon:fmt_underline = @@ -47,7 +53,7 @@ icon:add = icon:browse = icon:cancel = -icon:checked = +icon:checked = icon:chevron_down = icon:chevron_left = icon:chevron_right = @@ -55,10 +61,10 @@ icon:chevron_up = icon:copy = icon:document_add = -icon:document = +icon:document = icon:edit = icon:exclude = -icon:export = +icon:export = icon:filter = icon:fit_height = icon:fit_width = @@ -80,7 +86,7 @@ icon:more_vertical = icon:novel_view = icon:open = -icon:outline = +icon:outline = icon:panel = icon:pin = icon:project_copy = @@ -92,6 +98,7 @@ icon:revert = icon:star = icon:stats = +icon:text = icon:timer_off = icon:timer = icon:unchecked = diff --git a/novelwriter/assets/themes/cyberpunk_night.conf b/novelwriter/assets/themes/cyberpunk_night.conf index 54c68b6c..143e1f20 100644 --- a/novelwriter/assets/themes/cyberpunk_night.conf +++ b/novelwriter/assets/themes/cyberpunk_night.conf @@ -16,6 +16,15 @@ aqua = 0, 255, 255 blue = 77, 77, 255 purple = 50, 0, 180 +[Project] +root = 77, 77, 255 +folder = 255, 255, 0 +file = 150, 150, 150 +title = 0, 255, 0 +chapter = 242, 72, 23 +scene = 77, 77, 255 +note = 255, 255, 0 + [Palette] window = 0, 0, 0 windowtext = 150, 150, 150 diff --git a/novelwriter/assets/themes/default_dark.conf b/novelwriter/assets/themes/default_dark.conf index 17fbe2cd..39b5369c 100644 --- a/novelwriter/assets/themes/default_dark.conf +++ b/novelwriter/assets/themes/default_dark.conf @@ -17,6 +17,15 @@ aqua = 102, 204, 204 blue = 102, 153, 204 purple = 204, 153, 204 +[Project] +root = 102, 153, 204 +folder = 255, 204, 102 +file = 204, 204, 204 +title = 153, 204, 153 +chapter = 242, 119, 122 +scene = 102, 153, 204 +note = 255, 204, 102 + [Palette] window = 54, 54, 54 windowtext = 204, 204, 204 diff --git a/novelwriter/assets/themes/default_light.conf b/novelwriter/assets/themes/default_light.conf index f3374a24..c52d1d3c 100644 --- a/novelwriter/assets/themes/default_light.conf +++ b/novelwriter/assets/themes/default_light.conf @@ -17,6 +17,15 @@ aqua = 62, 153, 159 blue = 66, 113, 174 purple = 137, 89, 168 +[Project] +root = 66, 113, 174 +folder = 234, 183, 0 +file = 77, 77, 76 +title = 113, 140, 0 +chapter = 240, 40, 41 +scene = 66, 113, 174 +note = 234, 183, 0 + [Palette] window = 239, 239, 239 windowtext = 0, 0, 0 diff --git a/novelwriter/assets/themes/dracula.conf b/novelwriter/assets/themes/dracula.conf index f9e5a41e..5bcd14f3 100644 --- a/novelwriter/assets/themes/dracula.conf +++ b/novelwriter/assets/themes/dracula.conf @@ -29,9 +29,17 @@ orange = 255, 184, 108 yellow = 241, 250, 140 green = 80, 250, 123 aqua = 139, 233, 253 -blue = 255, 121, 198 +blue = 139, 233, 253 purple = 189, 147, 249 +[Project] +root = 189, 147, 249 +folder = 241, 250, 140 +file = 248, 248, 242 +title = 80, 250, 123 +chapter = 255, 85, 85 +scene = 139, 233, 253 +note = 241, 250, 140 [Palette] window = 68, 71, 90 diff --git a/novelwriter/assets/themes/solarized_dark.conf b/novelwriter/assets/themes/solarized_dark.conf index 904dc734..7bcc1073 100644 --- a/novelwriter/assets/themes/solarized_dark.conf +++ b/novelwriter/assets/themes/solarized_dark.conf @@ -16,6 +16,15 @@ aqua = 42, 161, 152 blue = 38, 139, 210 purple = 108, 113, 196 +[Project] +root = 42, 161, 152 +folder = 42, 161, 152 +file = 253, 246, 227 +title = 133, 153, 0 +chapter = 220, 50, 47 +scene = 38, 139, 210 +note = 181, 137, 0 + [Palette] window = 0, 43, 54 windowtext = 253, 246, 227 diff --git a/novelwriter/assets/themes/solarized_light.conf b/novelwriter/assets/themes/solarized_light.conf index 2cea39a9..6cf7c7d6 100644 --- a/novelwriter/assets/themes/solarized_light.conf +++ b/novelwriter/assets/themes/solarized_light.conf @@ -16,6 +16,14 @@ aqua = 42, 161, 152 blue = 38, 139, 210 purple = 108, 113, 196 +[Project] +root = 42, 161, 152 +folder = 42, 161, 152 +file = 0, 43, 54 +title = 133, 153, 0 +chapter = 220, 50, 47 +scene = 38, 139, 210 +note = 181, 137, 0 [Palette] window = 238, 232, 213 diff --git a/novelwriter/constants.py b/novelwriter/constants.py index 8213cc21..bdedab10 100644 --- a/novelwriter/constants.py +++ b/novelwriter/constants.py @@ -258,20 +258,6 @@ class nwLabels: nwItemClass.TEMPLATE: "cls_template", nwItemClass.TRASH: "cls_trash", } - CLASS_COLOR = { - nwItemClass.NO_CLASS: "default", - nwItemClass.NOVEL: "red", - nwItemClass.PLOT: "blue", - nwItemClass.CHARACTER: "blue", - nwItemClass.WORLD: "blue", - nwItemClass.TIMELINE: "blue", - nwItemClass.OBJECT: "blue", - nwItemClass.ENTITY: "blue", - nwItemClass.CUSTOM: "blue", - nwItemClass.ARCHIVE: "red", - nwItemClass.TEMPLATE: "yellow", - nwItemClass.TRASH: "red", - } LAYOUT_NAME = { nwItemLayout.NO_LAYOUT: QT_TRANSLATE_NOOP("Constant", "None"), nwItemLayout.DOCUMENT: QT_TRANSLATE_NOOP("Constant", "Novel Document"), diff --git a/novelwriter/extensions/novelselector.py b/novelwriter/extensions/novelselector.py index e57a3bce..0f083151 100644 --- a/novelwriter/extensions/novelselector.py +++ b/novelwriter/extensions/novelselector.py @@ -94,9 +94,7 @@ class NovelSelector(QComboBox): self._firstHandle = None self.clear() - icon = SHARED.theme.getIcon( - nwLabels.CLASS_ICON[nwItemClass.NOVEL], nwLabels.CLASS_COLOR[nwItemClass.NOVEL] - ) + icon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[nwItemClass.NOVEL], "blue") handle = self.currentData() for tHandle, nwItem in SHARED.project.tree.iterRoots(nwItemClass.NOVEL): if self._listFormat: diff --git a/novelwriter/gui/docviewerpanel.py b/novelwriter/gui/docviewerpanel.py index 262817a9..f3c4359a 100644 --- a/novelwriter/gui/docviewerpanel.py +++ b/novelwriter/gui/docviewerpanel.py @@ -410,9 +410,7 @@ class _ViewPanelKeyWords(QTreeWidget): treeHeader.setSectionsMovable(False) # Cache Icons Locally - self._classIcon = SHARED.theme.getIcon( - nwLabels.CLASS_ICON[itemClass], nwLabels.CLASS_COLOR[itemClass] - ) + self._classIcon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[itemClass], "root") self._editIcon = SHARED.theme.getIcon("edit", "green") self._viewIcon = SHARED.theme.getIcon("view", "blue") @@ -424,9 +422,7 @@ class _ViewPanelKeyWords(QTreeWidget): def updateTheme(self) -> None: """Update theme elements.""" - self._classIcon = SHARED.theme.getIcon( - nwLabels.CLASS_ICON[self._class], nwLabels.CLASS_COLOR[self._class] - ) + self._classIcon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[self._class], "root") self._editIcon = SHARED.theme.getIcon("edit", "green") self._viewIcon = SHARED.theme.getIcon("view", "blue") for i in range(self.topLevelItemCount()): diff --git a/novelwriter/gui/itemdetails.py b/novelwriter/gui/itemdetails.py index 32fd926f..47340c7c 100644 --- a/novelwriter/gui/itemdetails.py +++ b/novelwriter/gui/itemdetails.py @@ -255,9 +255,7 @@ class GuiItemDetails(QWidget): # Class # ===== - classIcon = SHARED.theme.getIcon( - nwLabels.CLASS_ICON[nwItem.itemClass], nwLabels.CLASS_COLOR[nwItem.itemClass] - ) + classIcon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[nwItem.itemClass], "root") self.classIcon.setPixmap(classIcon.pixmap(iPx, iPx)) self.classData.setText(trConst(nwLabels.CLASS_NAME[nwItem.itemClass])) diff --git a/novelwriter/gui/projtree.py b/novelwriter/gui/projtree.py index 61da1285..4b5490f8 100644 --- a/novelwriter/gui/projtree.py +++ b/novelwriter/gui/projtree.py @@ -369,11 +369,11 @@ class GuiProjectToolBar(QWidget): self.tbAdd.setThemeIcon("add", "green") self.tbMore.setThemeIcon("more_vertical") - self.aAddEmpty.setIcon(SHARED.theme.getIcon("document")) - self.aAddChap.setIcon(SHARED.theme.getIcon("document", "red")) - self.aAddScene.setIcon(SHARED.theme.getIcon("document", "blue")) - self.aAddNote.setIcon(SHARED.theme.getIcon("document", "yellow")) - self.aAddFolder.setIcon(SHARED.theme.getIcon("folder")) + self.aAddEmpty.setIcon(SHARED.theme.getIcon("prj_document", "file")) + self.aAddChap.setIcon(SHARED.theme.getIcon("prj_chapter", "chapter")) + self.aAddScene.setIcon(SHARED.theme.getIcon("prj_scene", "scene")) + self.aAddNote.setIcon(SHARED.theme.getIcon("prj_note", "note")) + self.aAddFolder.setIcon(SHARED.theme.getIcon("prj_folder", "folder")) self.buildTemplatesMenu() self.buildQuickLinksMenu() @@ -394,9 +394,7 @@ class GuiProjectToolBar(QWidget): for tHandle, nwItem in SHARED.project.tree.iterRoots(None): action = self.mQuick.addAction(nwItem.itemName) action.setData(tHandle) - action.setIcon(SHARED.theme.getIcon( - nwLabels.CLASS_ICON[nwItem.itemClass], nwLabels.CLASS_COLOR[nwItem.itemClass] - )) + action.setIcon(SHARED.theme.getIcon(nwLabels.CLASS_ICON[nwItem.itemClass], "root")) action.triggered.connect( qtLambda(self.projView.setSelectedHandle, tHandle, doScroll=True) ) @@ -443,9 +441,7 @@ class GuiProjectToolBar(QWidget): """Build the rood folder menu.""" def addClass(itemClass: nwItemClass) -> None: aNew = self.mAddRoot.addAction(trConst(nwLabels.CLASS_NAME[itemClass])) - aNew.setIcon(SHARED.theme.getIcon( - nwLabels.CLASS_ICON[itemClass], nwLabels.CLASS_COLOR[itemClass] - )) + aNew.setIcon(SHARED.theme.getIcon(nwLabels.CLASS_ICON[itemClass], "root")) aNew.triggered.connect( qtLambda(self.projTree.newTreeItem, nwItemType.ROOT, itemClass) ) diff --git a/novelwriter/gui/theme.py b/novelwriter/gui/theme.py index 6bba79a6..924ec88c 100644 --- a/novelwriter/gui/theme.py +++ b/novelwriter/gui/theme.py @@ -260,6 +260,17 @@ class GuiTheme: self.iconCache.setIconColor("blue", self._parseColour(parser, sec, "blue")) self.iconCache.setIconColor("purple", self._parseColour(parser, sec, "purple")) + # Project + sec = "Project" + if parser.has_section(sec): + self.iconCache.setIconColor("root", self._parseColour(parser, sec, "root")) + self.iconCache.setIconColor("folder", self._parseColour(parser, sec, "folder")) + self.iconCache.setIconColor("file", self._parseColour(parser, sec, "file")) + self.iconCache.setIconColor("title", self._parseColour(parser, sec, "title")) + self.iconCache.setIconColor("chapter", self._parseColour(parser, sec, "chapter")) + self.iconCache.setIconColor("scene", self._parseColour(parser, sec, "scene")) + self.iconCache.setIconColor("note", self._parseColour(parser, sec, "note")) + # Palette sec = "Palette" if parser.has_section(sec): @@ -648,20 +659,27 @@ class GuiIcons: color = "default" if tType == nwItemType.ROOT: name = nwLabels.CLASS_ICON[tClass] - color = nwLabels.CLASS_COLOR[tClass] + color = "root" elif tType == nwItemType.FOLDER: - name = "folder" + name = "prj_folder" + color = "folder" elif tType == nwItemType.FILE: - name = "document" if tLayout == nwItemLayout.DOCUMENT: if hLevel == "H1": - color = "green" + name = "prj_title" + color = "title" elif hLevel == "H2": - color = "red" + name = "prj_chapter" + color = "chapter" elif hLevel == "H3": - color = "blue" + name = "prj_scene" + color = "scene" + else: + name = "prj_document" + color = "file" elif tLayout == nwItemLayout.NOTE: - color = "yellow" + name = "prj_note" + color = "note" if name is None: return self._noIcon @@ -672,11 +690,11 @@ class GuiIcons: if not self._headerDec: iPx = self.mainTheme.baseIconHeight self._headerDec = [ - self._generateDecoration("default", iPx, 0), - self._generateDecoration("green", iPx, 0), - self._generateDecoration("red", iPx, 1), - self._generateDecoration("blue", iPx, 2), - self._generateDecoration("default", iPx, 3), + self._generateDecoration("file", iPx, 0), + self._generateDecoration("title", iPx, 0), + self._generateDecoration("chapter", iPx, 1), + self._generateDecoration("scene", iPx, 2), + self._generateDecoration("file", iPx, 3), ] return self._headerDec[minmax(hLevel, 0, 4)] @@ -685,12 +703,12 @@ class GuiIcons: if not self._headerDecNarrow: iPx = self.mainTheme.baseIconHeight self._headerDecNarrow = [ - self._generateDecoration("default", iPx, 0), - self._generateDecoration("green", iPx, 0), - self._generateDecoration("red", iPx, 0), - self._generateDecoration("blue", iPx, 0), - self._generateDecoration("default", iPx, 0), - self._generateDecoration("yellow", iPx, 0), + self._generateDecoration("file", iPx, 0), + self._generateDecoration("title", iPx, 0), + self._generateDecoration("chapter", iPx, 0), + self._generateDecoration("scene", iPx, 0), + self._generateDecoration("file", iPx, 0), + self._generateDecoration("note", iPx, 0), ] return self._headerDecNarrow[minmax(hLevel, 0, 5)] diff --git a/novelwriter/tools/lipsum.py b/novelwriter/tools/lipsum.py index 1ca20005..df02d82d 100644 --- a/novelwriter/tools/lipsum.py +++ b/novelwriter/tools/lipsum.py @@ -60,7 +60,7 @@ class GuiLipsum(NDialog): # Icon self.docIcon = QLabel(self) - self.docIcon.setPixmap(SHARED.theme.getPixmap("document", (nPx, nPx), "blue")) + self.docIcon.setPixmap(SHARED.theme.getPixmap("text", (nPx, nPx), "blue")) self.leftBox = QVBoxLayout() self.leftBox.setSpacing(vSp) diff --git a/novelwriter/tools/manussettings.py b/novelwriter/tools/manussettings.py index ab9cb041..c0202e2f 100644 --- a/novelwriter/tools/manussettings.py +++ b/novelwriter/tools/manussettings.py @@ -459,13 +459,13 @@ class _FilterTab(NFixedPage): self.filterOpt.clear() self.filterOpt.addLabel(self._build.getLabel("filter")) self.filterOpt.addItem( - SHARED.theme.getIcon("document", "blue"), + SHARED.theme.getIcon("prj_scene", "scene"), self._build.getLabel("filter.includeNovel"), "doc:filter.includeNovel", default=self._build.getBool("filter.includeNovel") ) self.filterOpt.addItem( - SHARED.theme.getIcon("document", "yellow"), + SHARED.theme.getIcon("prj_note", "note"), self._build.getLabel("filter.includeNotes"), "doc:filter.includeNotes", default=self._build.getBool("filter.includeNotes") diff --git a/pkgutils.py b/pkgutils.py index 1e714351..060a1220 100755 --- a/pkgutils.py +++ b/pkgutils.py @@ -344,7 +344,7 @@ def buildIconTheme(args: argparse.Namespace) -> None: iconsDir = CURR_DIR / "novelwriter" / "assets" / "icons" style = args.style - if style == "material": + if style in ("all", "material"): processMaterialIcons(workDir, iconsDir, { "material_rounded_thin": { "name": "Material Symbols - Rounded Thin", diff --git a/setup/debian/copyright b/setup/debian/copyright index dfa36a1f..2b2a3300 100644 --- a/setup/debian/copyright +++ b/setup/debian/copyright @@ -19,32 +19,17 @@ License: GPL-3.0-or-later You should have received a copy of the GNU General Public License along with this program. If not, see . -Files: novelwriter/assets/icons/typicons_*.svg -Copyright: 2019, Stephen Hutchings -License: CC-BY-SA-4.0 - This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 - International License. To view a copy of this license, visit - http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative - Commons, PO Box 1866, Mountain View, CA 94042, USA. +Files: novelwriter/assets/icons/material_* +Copyright: Google Inc +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at . - Share — copy and redistribute the material in any medium or format + http://www.apache.org/licenses/LICENSE-2.0 . - Adapt — remix, transform, and build upon the material for any purpose, even - commercially. This license is acceptable for Free Cultural Works. The licensor - cannot revoke these freedoms as long as you follow the license terms. - . - Attribution — You must give appropriate credit, provide a link to the license, - and indicate if changes were made. You may do so in any reasonable manner, but - not in any way that suggests the licensor endorses you or your use. - . - ShareAlike — If you remix, transform, or build upon the material, you must - distribute your contributions under the same license as the original. - No additional restrictions — You may not apply legal terms or technological - measures that legally restrict others from doing anything the license permits. - . - Notices: You do not have to comply with the license for elements of the - material in the public domain or where your use is permitted by an applicable - exception or limitation. No warranties are given. The license may not give you - all of the permissions necessary for your intended use. For example, other - rights such as publicity, privacy, or moral rights may limit how you use the - material. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/utils/material_icons.py b/utils/material_icons.py index 4e15371f..0b4963ac 100644 --- a/utils/material_icons.py +++ b/utils/material_icons.py @@ -27,8 +27,6 @@ from pathlib import Path from lxml import etree MATERIAL_REPO = "https://github.com/google/material-design-icons.git" -GRADE = "" - ICON_MAP = { "alert_error": "error", "alert_info": "info", @@ -48,10 +46,17 @@ ICON_MAP = { "cls_trash": "delete", "cls_world": "globe", + "prj_folder": "folder", + "prj_document": "news", + "prj_title": "news", + "prj_chapter": "news", + "prj_scene": "news", + "prj_note": "sticky_note_2", + "fmt_bold": "format_bold", "fmt_italic": "format_italic", "fmt_mark": "format_ink_highlighter", - "fmt_strike": "format_strikethrough", + "fmt_strike": "strikethrough_s", "fmt_subscript": "subscript", "fmt_superscript": "superscript", "fmt_underline": "format_underlined", @@ -76,7 +81,7 @@ ICON_MAP = { "bookmarks": "bookmarks", "browse": "folder_open", "cancel": "cancel", - "checked": "select_check_box", + "checked": "check_box", "chevron_down": "keyboard_arrow_down", "chevron_left": "arrow_back_ios", "chevron_right": "arrow_forward_ios", @@ -84,10 +89,10 @@ ICON_MAP = { "close": "close", "copy": "content_copy", "document_add": "note_add", - "document": "description", + "document": "docs", "edit": "edit", "exclude": "do_not_disturb_on", - "export": "share_windows", + "export": "file_export", "filter": "filter_alt", "fit_height": "fit_page_height", "fit_width": "fit_page_width", @@ -109,7 +114,7 @@ ICON_MAP = { "noncheckable": "indeterminate_check_box", "novel_view": "book_4_spark", "open": "open_in_new", - "outline": "table", + "outline": "summarize", "panel": "dock_to_bottom", "pin": "keep", "project_copy": "folder_copy", @@ -121,6 +126,7 @@ ICON_MAP = { "settings": "settings", "star": "star", "stats": "bar_chart", + "text": "subject", "timer_off": "timer_off", "timer": "timer", "unchecked": "disabled_by_default", @@ -161,8 +167,8 @@ def processMaterialIcons(workDir: Path, iconsDir: Path, jobs: dict) -> None: icons.write("# This file is automatically generated. Do not edit.\n\n") icons.write("# Meta\n") icons.write(f"meta:name = {name}\n") - icons.write("meta:author = Google\n") - icons.write("meta:license = Apache License Version 2.0\n") + icons.write("meta:author = Google Inc\n") + icons.write("meta:license = Apache 2.0\n") icons.write("\n") icons.write("# Icons\n") iconSrc = srcRepo / "symbols" / "web"