From 18878dd19b9a019e79a3ed37c8643dc2fba47753 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 29 Oct 2022 17:55:45 +0200 Subject: [PATCH 1/5] Change how item data is stored in the project tree --- novelwriter/gui/projtree.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/novelwriter/gui/projtree.py b/novelwriter/gui/projtree.py index 19d8af38..b80a6352 100644 --- a/novelwriter/gui/projtree.py +++ b/novelwriter/gui/projtree.py @@ -417,11 +417,15 @@ class GuiProjectToolBar(QWidget): class GuiProjectTree(QTreeWidget): + C_DATA = 0 C_NAME = 0 C_COUNT = 1 C_ACTIVE = 2 C_STATUS = 3 + D_HANDLE = Qt.UserRole + D_WORDS = Qt.UserRole + 1 + def __init__(self, projView): super().__init__(parent=projView) @@ -974,10 +978,10 @@ class GuiProjectTree(QTreeWidget): if countChildren: for i in range(tItem.childCount()): - newCount += int(tItem.child(i).data(self.C_COUNT, Qt.UserRole)) + newCount += int(tItem.child(i).data(self.C_DATA, self.D_WORDS)) tItem.setText(self.C_COUNT, f"{newCount:n}") - tItem.setData(self.C_COUNT, Qt.UserRole, int(newCount)) + tItem.setData(self.C_DATA, self.D_WORDS, int(newCount)) pItem = tItem.parent() if pItem is None: @@ -986,8 +990,8 @@ class GuiProjectTree(QTreeWidget): pCount = 0 pHandle = None for i in range(pItem.childCount()): - pCount += int(pItem.child(i).data(self.C_COUNT, Qt.UserRole)) - pHandle = pItem.data(self.C_NAME, Qt.UserRole) + pCount += int(pItem.child(i).data(self.C_DATA, self.D_WORDS)) + pHandle = pItem.data(self.C_DATA, self.D_HANDLE) if pHandle: if self.theProject.tree.checkType(pHandle, nwItemType.FILE): @@ -1038,8 +1042,8 @@ class GuiProjectTree(QTreeWidget): return False dstIndex = min(max(0, dstIndex), dstItem.childCount()) - sHandle = srcItem.data(self.C_NAME, Qt.UserRole) - dHandle = dstItem.data(self.C_NAME, Qt.UserRole) + sHandle = srcItem.data(self.C_DATA, self.D_HANDLE) + dHandle = dstItem.data(self.C_DATA, self.D_HANDLE) logger.debug("Moving item '%s' back to '%s', index %d", sHandle, dHandle, dstIndex) wCount = self._getItemWordCount(sHandle) @@ -1063,7 +1067,7 @@ class GuiProjectTree(QTreeWidget): """ selItem = self.selectedItems() if selItem: - return selItem[0].data(self.C_NAME, Qt.UserRole) + return selItem[0].data(self.C_DATA, self.D_HANDLE) return None @@ -1149,7 +1153,7 @@ class GuiProjectTree(QTreeWidget): hasChild = False selItem = self.itemAt(clickPos) if isinstance(selItem, QTreeWidgetItem): - tHandle = selItem.data(self.C_NAME, Qt.UserRole) + tHandle = selItem.data(self.C_DATA, self.D_HANDLE) tItem = self.theProject.tree[tHandle] hasChild = selItem.childCount() > 0 @@ -1308,7 +1312,7 @@ class GuiProjectTree(QTreeWidget): if not isinstance(selItem, QTreeWidgetItem): return - tHandle = selItem.data(self.C_NAME, Qt.UserRole) + tHandle = selItem.data(self.C_DATA, self.D_HANDLE) tItem = self.theProject.tree[tHandle] if tItem is None: return @@ -1367,7 +1371,7 @@ class GuiProjectTree(QTreeWidget): # Update item parent handle in the project, make sure meta data # is updated accordingly, and update word count - pHandle = trItemP.data(self.C_NAME, Qt.UserRole) + pHandle = trItemP.data(self.C_DATA, self.D_HANDLE) nwItemS.setParent(pHandle) trItemP.setExpanded(True) logger.debug("The parent of item '%s' has been changed to '%s'", tHandle, pHandle) @@ -1397,7 +1401,7 @@ class GuiProjectTree(QTreeWidget): tItem = self._getTreeItem(tHandle) if tItem is None: return 0 - return int(tItem.data(self.C_COUNT, Qt.UserRole)) + return int(tItem.data(self.C_DATA, self.D_WORDS)) def _getTreeItem(self, tHandle): """Return the QTreeWidgetItem of a given item handle. @@ -1617,7 +1621,7 @@ class GuiProjectTree(QTreeWidget): """This is a recursive function returning all items in a tree starting at a given QTreeWidgetItem. """ - tHandle = tItem.data(self.C_NAME, Qt.UserRole) + tHandle = tItem.data(self.C_DATA, self.D_HANDLE) cCount = tItem.childCount() # Update tree-related meta data @@ -1650,8 +1654,8 @@ class GuiProjectTree(QTreeWidget): newItem.setTextAlignment(self.C_ACTIVE, Qt.AlignLeft) newItem.setTextAlignment(self.C_STATUS, Qt.AlignLeft) - newItem.setData(self.C_NAME, Qt.UserRole, tHandle) - newItem.setData(self.C_COUNT, Qt.UserRole, 0) + newItem.setData(self.C_DATA, self.D_HANDLE, tHandle) + newItem.setData(self.C_DATA, self.D_WORDS, 0) self._treeMap[tHandle] = newItem if pHandle is None: From ea59379479f4f21d7727edd007f5862e6df5708c Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 30 Oct 2022 01:20:31 +0200 Subject: [PATCH 2/5] Add new checkbox icons --- .../assets/icons/typicons_dark/icons.conf | 6 ++-- .../typicons_dark/mixed_input-checked.svg | 35 +++++++++++++++++++ .../icons/typicons_dark/mixed_input-none.svg | 31 ++++++++++++++++ .../typicons_dark/mixed_input-unchecked.svg | 35 +++++++++++++++++++ .../assets/icons/typicons_light/icons.conf | 6 ++-- .../typicons_light/mixed_input-checked.svg | 35 +++++++++++++++++++ .../icons/typicons_light/mixed_input-none.svg | 31 ++++++++++++++++ .../typicons_light/mixed_input-unchecked.svg | 35 +++++++++++++++++++ 8 files changed, 210 insertions(+), 4 deletions(-) create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_input-none.svg create mode 100644 novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg create mode 100644 novelwriter/assets/icons/typicons_light/mixed_input-checked.svg create mode 100644 novelwriter/assets/icons/typicons_light/mixed_input-none.svg create mode 100644 novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg diff --git a/novelwriter/assets/icons/typicons_dark/icons.conf b/novelwriter/assets/icons/typicons_dark/icons.conf index 521e9ee8..fa8b8619 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 bullet-off = typ_media-record-outline.svg bullet-on = typ_media-record.svg -check = typ_tick.svg +checked = mixed_input-checked.svg close = typ_times.svg cls_archive = typ_delete.svg cls_character = typ_user.svg @@ -41,13 +41,14 @@ forward = typ_chevron-right.svg maximise = typ_arrow-maximise.svg menu = typ_th-menu.svg minimise = typ_arrow-minimise.svg +noncheckable = mixed_input-none.svg proj_chapter = mixed_document-chapter.svg proj_details = typ_th-list-grey.svg proj_document = typ_document-text.svg proj_folder = typ_folder.svg proj_note = mixed_document-note.svg -proj_section = mixed_document-section.svg proj_scene = mixed_document-scene.svg +proj_section = mixed_document-section.svg proj_stats = typ_chart-bar-grey.svg proj_title = mixed_document-title.svg reference = typ_at.svg @@ -70,6 +71,7 @@ status_stats = typ_chart-bar-grey.svg status_time = typ_stopwatch-grey.svg sticky-off = typ_pin-outline.svg sticky-on = typ_pin.svg +unchecked = mixed_input-unchecked.svg up = typ_chevron-up.svg view_build = typ_export.svg view_editor = mixed_edit.svg diff --git a/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg b/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg new file mode 100644 index 00000000..e6236d3c --- /dev/null +++ b/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg @@ -0,0 +1,35 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg b/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg new file mode 100644 index 00000000..a34897ee --- /dev/null +++ b/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg b/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg new file mode 100644 index 00000000..65ec7feb --- /dev/null +++ b/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg @@ -0,0 +1,35 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/novelwriter/assets/icons/typicons_light/icons.conf b/novelwriter/assets/icons/typicons_light/icons.conf index 1b6b1348..5212b685 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 bullet-off = typ_media-record-outline.svg bullet-on = typ_media-record.svg -check = typ_tick.svg +checked = mixed_input-checked.svg close = typ_times.svg cls_archive = typ_delete.svg cls_character = typ_user.svg @@ -41,13 +41,14 @@ forward = typ_chevron-right.svg maximise = typ_arrow-maximise.svg menu = typ_th-menu.svg minimise = typ_arrow-minimise.svg +noncheckable = mixed_input-none.svg proj_chapter = mixed_document-chapter.svg proj_details = typ_th-list-grey.svg proj_document = typ_document-text.svg proj_folder = typ_folder.svg proj_note = mixed_document-note.svg -proj_section = mixed_document-section.svg proj_scene = mixed_document-scene.svg +proj_section = mixed_document-section.svg proj_stats = typ_chart-bar-grey.svg proj_title = mixed_document-title.svg reference = typ_at.svg @@ -70,6 +71,7 @@ status_stats = typ_chart-bar-grey.svg status_time = typ_stopwatch-grey.svg sticky-off = typ_pin-outline.svg sticky-on = typ_pin.svg +unchecked = mixed_input-unchecked.svg up = typ_chevron-up.svg view_build = typ_export.svg view_editor = mixed_edit.svg diff --git a/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg b/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg new file mode 100644 index 00000000..d41ac684 --- /dev/null +++ b/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg @@ -0,0 +1,35 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/novelwriter/assets/icons/typicons_light/mixed_input-none.svg b/novelwriter/assets/icons/typicons_light/mixed_input-none.svg new file mode 100644 index 00000000..dde0c2cd --- /dev/null +++ b/novelwriter/assets/icons/typicons_light/mixed_input-none.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg b/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg new file mode 100644 index 00000000..e3bb7a58 --- /dev/null +++ b/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg @@ -0,0 +1,35 @@ + + + + + + image/svg+xml + + + + + + + + + From e80536405e59a00b17921250e06cf96a9bd6815e Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 30 Oct 2022 01:21:07 +0200 Subject: [PATCH 3/5] Replace active status icons in project tree --- .../assets/icons/typicons_dark/typ_tick.svg | 31 ------------------- .../assets/icons/typicons_light/typ_tick.svg | 31 ------------------- novelwriter/gui/projtree.py | 7 +++-- novelwriter/gui/theme.py | 6 ++-- 4 files changed, 8 insertions(+), 67 deletions(-) delete mode 100644 novelwriter/assets/icons/typicons_dark/typ_tick.svg delete mode 100644 novelwriter/assets/icons/typicons_light/typ_tick.svg diff --git a/novelwriter/assets/icons/typicons_dark/typ_tick.svg b/novelwriter/assets/icons/typicons_dark/typ_tick.svg deleted file mode 100644 index 84383114..00000000 --- a/novelwriter/assets/icons/typicons_dark/typ_tick.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/novelwriter/assets/icons/typicons_light/typ_tick.svg b/novelwriter/assets/icons/typicons_light/typ_tick.svg deleted file mode 100644 index 1c24677a..00000000 --- a/novelwriter/assets/icons/typicons_light/typ_tick.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/novelwriter/gui/projtree.py b/novelwriter/gui/projtree.py index b80a6352..0055340a 100644 --- a/novelwriter/gui/projtree.py +++ b/novelwriter/gui/projtree.py @@ -951,10 +951,13 @@ class GuiProjectTree(QTreeWidget): trItem.setToolTip(self.C_STATUS, itemStatus) if nwItem.isFileType(): - iconName = "check" if nwItem.isActive else "cross" + iconName = "checked" if nwItem.isActive else "unchecked" toolTip = self._lblActive if nwItem.isActive else self._lblInactive - trItem.setIcon(self.C_ACTIVE, self.mainTheme.getIcon(iconName)) trItem.setToolTip(self.C_ACTIVE, toolTip) + else: + iconName = "noncheckable" + + trItem.setIcon(self.C_ACTIVE, self.mainTheme.getIcon(iconName)) if self.mainConf.emphLabels and nwItem.isDocumentLayout(): trFont = trItem.font(self.C_NAME) diff --git a/novelwriter/gui/theme.py b/novelwriter/gui/theme.py index 93c26440..570b06b2 100644 --- a/novelwriter/gui/theme.py +++ b/novelwriter/gui/theme.py @@ -448,9 +448,9 @@ class GuiIcons: "view_editor", "view_novel", "view_outline", # General Button Icons - "add", "backward", "bookmark", "check", "close", "cross", "down", "edit", "forward", - "maximise", "menu", "minimise", "reference", "refresh", "remove", "search_replace", - "search", "settings", "up", + "add", "backward", "bookmark", "checked", "close", "cross", "down", "edit", "forward", + "maximise", "menu", "minimise", "noncheckable", "reference", "refresh", "remove", + "search_replace", "search", "settings", "unchecked", "up", # Switches "sticky-on", "sticky-off", From dbade05e46c54c6cb3e241fdefa5fab7be74607a Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 30 Oct 2022 02:33:00 +0200 Subject: [PATCH 4/5] Generate nicer status icons --- novelwriter/core/status.py | 47 ++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/novelwriter/core/status.py b/novelwriter/core/status.py index a379f911..b84a3690 100644 --- a/novelwriter/core/status.py +++ b/novelwriter/core/status.py @@ -26,11 +26,13 @@ along with this program. If not, see . import random import logging + import novelwriter from lxml import etree -from PyQt5.QtGui import QIcon, QPixmap, QColor +from PyQt5.QtGui import QIcon, QPainter, QPainterPath, QPixmap, QColor +from PyQt5.QtCore import QRectF, Qt from novelwriter.common import checkInt, minmax, simplified @@ -49,10 +51,15 @@ class NWStatus: self._reverse = {} self._default = None - self._iconSize = novelwriter.CONFIG.pxInt(32) - pixmap = QPixmap(self._iconSize, self._iconSize) - pixmap.fill(QColor(100, 100, 100)) - self._defaultIcon = QIcon(pixmap) + self._iPX = novelwriter.CONFIG.pxInt(24) + + pA = novelwriter.CONFIG.pxInt(2) + pB = novelwriter.CONFIG.pxInt(20) + pR = float(novelwriter.CONFIG.pxInt(4)) + self._iconPath = QPainterPath() + self._iconPath.addRoundedRect(QRectF(pA, pA, pB, pB), pR, pR) + + self._defaultIcon = self._createIcon([100, 100, 100]) if self._type == self.STATUS: self._prefix = "s" @@ -63,19 +70,16 @@ class NWStatus: return - def write(self, key, name, cols, count=None): + def write(self, key, name, col, count=None): """Add or update a status entry. If the key is invalid, a new key is generated. """ if not self._isKey(key): key = self._newKey() - if not isinstance(cols, tuple): - cols = (100, 100, 100) - if len(cols) != 3: - cols = (100, 100, 100) - - pixmap = QPixmap(self._iconSize, self._iconSize) - pixmap.fill(QColor(*cols)) + if not isinstance(col, tuple): + col = (100, 100, 100) + if len(col) != 3: + col = (100, 100, 100) name = simplified(name) if count is None: @@ -83,8 +87,8 @@ class NWStatus: self._store[key] = { "name": name, - "icon": QIcon(pixmap), - "cols": cols, + "icon": self._createIcon(col), + "cols": col, "count": count, } self._reverse[name] = key @@ -267,6 +271,19 @@ class NWStatus: return False return True + def _createIcon(self, col): + """Generate an icon for a status label. + """ + pixmap = QPixmap(self._iPX, self._iPX) + pixmap.fill(Qt.transparent) + + painter = QPainter(pixmap) + painter.setRenderHint(QPainter.Antialiasing) + painter.fillPath(self._iconPath, QColor(*col)) + painter.end() + + return QIcon(pixmap) + ## # Iterator Bits ## From 80496ab1ed6113576ee6fa0a38a23d60bc8bab8b Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 30 Oct 2022 15:16:39 +0100 Subject: [PATCH 5/5] Improve active/inactive icons again --- .../typicons_dark/mixed_input-checked.svg | 26 ++++++++++------- .../icons/typicons_dark/mixed_input-none.svg | 29 ++++++++++++++----- .../typicons_dark/mixed_input-unchecked.svg | 26 ++++++++++------- .../typicons_light/mixed_input-checked.svg | 26 ++++++++++------- .../icons/typicons_light/mixed_input-none.svg | 29 ++++++++++++++----- .../typicons_light/mixed_input-unchecked.svg | 26 ++++++++++------- novelwriter/core/status.py | 1 - setup.py | 1 + 8 files changed, 103 insertions(+), 61 deletions(-) diff --git a/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg b/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg index e6236d3c..a044fbaa 100644 --- a/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg +++ b/novelwriter/assets/icons/typicons_dark/mixed_input-checked.svg @@ -5,13 +5,15 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.2" width="24" height="24" + version="1.2" viewBox="0 0 24 24" - id="svg2803"> + id="svg2287"> + + id="metadata2281"> @@ -22,14 +24,16 @@ - + d="m17.714 22h-11.429c-2.3629 0-4.2857-1.9229-4.2857-4.2857v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h7.1429c0.79 0 1.4286 0.64 1.4286 1.4286 0 0.78857-0.63857 1.4286-1.4286 1.4286h-7.1429c-0.78857 0-1.4286 0.64143-1.4286 1.4286v11.429c0 0.78714 0.64 1.4286 1.4286 1.4286h11.429c0.78857 0 1.4286-0.64143 1.4286-1.4286v-4.2857c0-0.78857 0.63857-1.4286 1.4286-1.4286s1.4286 0.64 1.4286 1.4286v4.2857c0 2.3629-1.9229 4.2857-4.2857 4.2857z" + fill="#848484" + stroke-width="1.4286" + id="path2283" /> + d="m19.02 3.3503c-0.60933 0.010623-1.2003 0.31545-1.5586 0.86719l-5.0977 7.8477-2.3672-3.6445c-0.57329-0.88278-1.7442-1.1319-2.627-0.55859-0.88278 0.57329-1.1319 1.7461-0.55859 2.6289l3.9199 6.0391c0.38514 0.59307 1.0409 0.88965 1.6973 0.85352 0.03023-2.78e-4 0.05972-0.0041 0.08984-0.0059 0.0556-0.0057 0.11074-0.0088 0.16602-0.01953 0.52104-0.07621 1.0077-0.36147 1.3184-0.83984l6.6445-10.23c0.57329-0.88278 0.32419-2.0556-0.55859-2.6289-0.33104-0.21498-0.70276-0.31497-1.0684-0.30859z" + fill="#9c9" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.111" + id="path2285" /> diff --git a/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg b/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg index a34897ee..105e1d8f 100644 --- a/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg +++ b/novelwriter/assets/icons/typicons_dark/mixed_input-none.svg @@ -5,13 +5,15 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.2" width="24" height="24" + version="1.2" viewBox="0 0 24 24" - id="svg2803"> + id="svg2931"> + + id="metadata2925"> @@ -22,10 +24,21 @@ - + d="m2 17.714v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h11.429c2.3629 0 4.2857 1.9229 4.2857 4.2857v7.1429c0 0.79-0.64 1.4286-1.4286 1.4286-0.78857 0-1.4286-0.63857-1.4286-1.4286v-7.1429c0-0.78857-0.64143-1.4286-1.4286-1.4286h-11.429c-0.78714 0-1.4286 0.64-1.4286 1.4286v11.429c0 0.78857 0.64143 1.4286 1.4286 1.4286h4.2857c0.78857 0 1.4286 0.63857 1.4286 1.4286s-0.64 1.4286-1.4286 1.4286h-4.2857c-2.3629 0-4.2857-1.9229-4.2857-4.2857zm15.714 4.2857h-11.429c-2.3629 0-4.2857-1.9229-4.2857-4.2857v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h7.1429c0.79 0 1.4286 0.64 1.4286 1.4286 0 0.78857-0.63857 1.4286-1.4286 1.4286h-7.1429c-0.78857 0-1.4286 0.64143-1.4286 1.4286v11.429c0 0.78714 0.64 1.4286 1.4286 1.4286h11.429c0.78857 0 1.4286-0.64143 1.4286-1.4286v-4.2857c0-0.78857 0.63857-1.4286 1.4286-1.4286s1.4286 0.64 1.4286 1.4286v4.2857c0 2.3629-1.9229 4.2857-4.2857 4.2857z" + fill="#848484" + stroke-width="1.4286" + id="path2927" /> + diff --git a/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg b/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg index 65ec7feb..b5ee8b37 100644 --- a/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg +++ b/novelwriter/assets/icons/typicons_dark/mixed_input-unchecked.svg @@ -5,13 +5,15 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.2" width="24" height="24" + version="1.2" viewBox="0 0 24 24" - id="svg2803"> + id="svg3574"> + + id="metadata3568"> @@ -22,14 +24,16 @@ - + d="m17.714 22h-11.429c-2.3629 0-4.2857-1.9229-4.2857-4.2857v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h7.1429c0.79 0 1.4286 0.64 1.4286 1.4286 0 0.78857-0.63857 1.4286-1.4286 1.4286h-7.1429c-0.78857 0-1.4286 0.64143-1.4286 1.4286v11.429c0 0.78714 0.64 1.4286 1.4286 1.4286h11.429c0.78857 0 1.4286-0.64143 1.4286-1.4286v-4.2857c0-0.78857 0.63857-1.4286 1.4286-1.4286s1.4286 0.64 1.4286 1.4286v4.2857c0 2.3629-1.9229 4.2857-4.2857 4.2857z" + fill="#848484" + stroke-width="1.4286" + id="path3570" /> + d="m17.99 3.3379c-0.48501 0.025418-0.96034 0.23584-1.3125 0.62695l-4.6777 5.1953-1.332-1.4785c-0.70433-0.78223-1.9014-0.84495-2.6836-0.14062-0.78223 0.70433-0.84495 1.9014-0.14062 2.6836l1.5996 1.7754-1.5977 1.7754c-0.70433 0.78223-0.64161 1.9793 0.14062 2.6836 0.78223 0.70433 1.9773 0.64161 2.6816-0.14062l1.332-1.4785 1.332 1.4785c0.70433 0.78224 1.9014 0.84495 2.6836 0.14062 0.78223-0.70433 0.84495-1.9014 0.14062-2.6836l-1.5996-1.7754 4.9453-5.4922c0.70433-0.78223 0.64161-1.9793-0.14062-2.6836-0.39112-0.35216-0.88608-0.51175-1.3711-0.48633z" + fill="#d64848" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.111" + id="path3572" /> diff --git a/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg b/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg index d41ac684..8e42a8b6 100644 --- a/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg +++ b/novelwriter/assets/icons/typicons_light/mixed_input-checked.svg @@ -5,13 +5,15 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.2" width="24" height="24" + version="1.2" viewBox="0 0 24 24" - id="svg2803"> + id="svg879"> + + id="metadata873"> @@ -22,14 +24,16 @@ - + d="m17.714 22h-11.429c-2.3629 0-4.2857-1.9229-4.2857-4.2857v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h7.1429c0.79 0 1.4286 0.64 1.4286 1.4286 0 0.78857-0.63857 1.4286-1.4286 1.4286h-7.1429c-0.78857 0-1.4286 0.64143-1.4286 1.4286v11.429c0 0.78714 0.64 1.4286 1.4286 1.4286h11.429c0.78857 0 1.4286-0.64143 1.4286-1.4286v-4.2857c0-0.78857 0.63857-1.4286 1.4286-1.4286s1.4286 0.64 1.4286 1.4286v4.2857c0 2.3629-1.9229 4.2857-4.2857 4.2857z" + fill="#333" + stroke-width="1.4286" + id="path875" /> + d="m19.02 3.3503c-0.60933 0.010623-1.2003 0.31545-1.5586 0.86719l-5.0977 7.8477-2.3672-3.6445c-0.57329-0.88278-1.7442-1.1319-2.627-0.55859-0.88278 0.57329-1.1319 1.7461-0.55859 2.6289l3.9199 6.0391c0.38514 0.59307 1.0409 0.88965 1.6973 0.85352 0.03023-2.78e-4 0.05972-0.0041 0.08984-0.0059 0.0556-0.0057 0.11074-0.0088 0.16602-0.01953 0.52104-0.07621 1.0077-0.36147 1.3184-0.83984l6.6445-10.23c0.57329-0.88278 0.32419-2.0556-0.55859-2.6289-0.33104-0.21498-0.70276-0.31497-1.0684-0.30859z" + fill="#718c00" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.111" + id="path877" /> diff --git a/novelwriter/assets/icons/typicons_light/mixed_input-none.svg b/novelwriter/assets/icons/typicons_light/mixed_input-none.svg index dde0c2cd..f80dd7ff 100644 --- a/novelwriter/assets/icons/typicons_light/mixed_input-none.svg +++ b/novelwriter/assets/icons/typicons_light/mixed_input-none.svg @@ -5,13 +5,15 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.2" width="24" height="24" + version="1.2" viewBox="0 0 24 24" - id="svg2803"> + id="svg973"> + + id="metadata967"> @@ -22,10 +24,21 @@ - + d="m2 17.714v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h11.429c2.3629 0 4.2857 1.9229 4.2857 4.2857v7.1429c0 0.79-0.64 1.4286-1.4286 1.4286-0.78857 0-1.4286-0.63857-1.4286-1.4286v-7.1429c0-0.78857-0.64143-1.4286-1.4286-1.4286h-11.429c-0.78714 0-1.4286 0.64-1.4286 1.4286v11.429c0 0.78857 0.64143 1.4286 1.4286 1.4286h4.2857c0.78857 0 1.4286 0.63857 1.4286 1.4286s-0.64 1.4286-1.4286 1.4286h-4.2857c-2.3629 0-4.2857-1.9229-4.2857-4.2857zm15.714 4.2857h-11.429c-2.3629 0-4.2857-1.9229-4.2857-4.2857v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h7.1429c0.79 0 1.4286 0.64 1.4286 1.4286 0 0.78857-0.63857 1.4286-1.4286 1.4286h-7.1429c-0.78857 0-1.4286 0.64143-1.4286 1.4286v11.429c0 0.78714 0.64 1.4286 1.4286 1.4286h11.429c0.78857 0 1.4286-0.64143 1.4286-1.4286v-4.2857c0-0.78857 0.63857-1.4286 1.4286-1.4286s1.4286 0.64 1.4286 1.4286v4.2857c0 2.3629-1.9229 4.2857-4.2857 4.2857z" + fill="#333" + stroke-width="1.4286" + id="path969" /> + diff --git a/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg b/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg index e3bb7a58..0bd5f6dc 100644 --- a/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg +++ b/novelwriter/assets/icons/typicons_light/mixed_input-unchecked.svg @@ -5,13 +5,15 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.2" width="24" height="24" + version="1.2" viewBox="0 0 24 24" - id="svg2803"> + id="svg1616"> + + id="metadata1610"> @@ -22,14 +24,16 @@ - + d="m17.714 22h-11.429c-2.3629 0-4.2857-1.9229-4.2857-4.2857v-11.429c0-2.3629 1.9229-4.2857 4.2857-4.2857h7.1429c0.79 0 1.4286 0.64 1.4286 1.4286 0 0.78857-0.63857 1.4286-1.4286 1.4286h-7.1429c-0.78857 0-1.4286 0.64143-1.4286 1.4286v11.429c0 0.78714 0.64 1.4286 1.4286 1.4286h11.429c0.78857 0 1.4286-0.64143 1.4286-1.4286v-4.2857c0-0.78857 0.63857-1.4286 1.4286-1.4286s1.4286 0.64 1.4286 1.4286v4.2857c0 2.3629-1.9229 4.2857-4.2857 4.2857z" + fill="#333" + stroke-width="1.4286" + id="path1612" /> + d="m17.99 3.3379c-0.48501 0.025418-0.96034 0.23584-1.3125 0.62695l-4.6777 5.1953-1.332-1.4785c-0.70433-0.78223-1.9014-0.84495-2.6836-0.14062-0.78223 0.70433-0.84495 1.9014-0.14062 2.6836l1.5996 1.7754-1.5977 1.7754c-0.70433 0.78223-0.64161 1.9793 0.14062 2.6836 0.78223 0.70433 1.9773 0.64161 2.6816-0.14062l1.332-1.4785 1.332 1.4785c0.70433 0.78224 1.9014 0.84495 2.6836 0.14062 0.78223-0.70433 0.84495-1.9014 0.14062-2.6836l-1.5996-1.7754 4.9453-5.4922c0.70433-0.78223 0.64161-1.9793-0.14062-2.6836-0.39112-0.35216-0.88608-0.51175-1.3711-0.48633z" + fill="#c82829" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="1.111" + id="path1614" /> diff --git a/novelwriter/core/status.py b/novelwriter/core/status.py index b84a3690..c466461e 100644 --- a/novelwriter/core/status.py +++ b/novelwriter/core/status.py @@ -26,7 +26,6 @@ along with this program. If not, see . import random import logging - import novelwriter from lxml import etree diff --git a/setup.py b/setup.py index a0bb9b03..675a29c8 100755 --- a/setup.py +++ b/setup.py @@ -131,6 +131,7 @@ def makeCheckSum(sumFile, cwd=None): except Exception as exc: print("Could not generate sha256 file") print(str(exc)) + return "" return shaFile