diff --git a/novelwriter/dialogs/docmerge.py b/novelwriter/dialogs/docmerge.py index 9bc822d4..b6fd8381 100644 --- a/novelwriter/dialogs/docmerge.py +++ b/novelwriter/dialogs/docmerge.py @@ -117,7 +117,7 @@ class GuiDocMerge(QDialog): finalItems = [] for i in range(self.listBox.count()): item = self.listBox.item(i) - if item.checkState() == Qt.Checked: + if item is not None and item.checkState() == Qt.Checked: finalItems.append(item.data(Qt.UserRole)) self._data["moveToTrash"] = self.trashSwitch.isChecked() diff --git a/novelwriter/dialogs/docsplit.py b/novelwriter/dialogs/docsplit.py index 74bdda40..1b6a5f70 100644 --- a/novelwriter/dialogs/docsplit.py +++ b/novelwriter/dialogs/docsplit.py @@ -145,9 +145,12 @@ class GuiDocSplit(QDialog): headerList = [] for i in range(self.listBox.count()): item = self.listBox.item(i) - headerList.append( - (item.data(self.LINE_ROLE), item.data(self.LEVEL_ROLE), item.data(self.LABEL_ROLE)) - ) + if item is not None: + headerList.append(( + item.data(self.LINE_ROLE), + item.data(self.LEVEL_ROLE), + item.data(self.LABEL_ROLE), + )) spLevel = self.splitLevel.currentData() intoFolder = self.folderSwitch.isChecked() diff --git a/novelwriter/dialogs/projsettings.py b/novelwriter/dialogs/projsettings.py index 2d6a35a6..86c268d6 100644 --- a/novelwriter/dialogs/projsettings.py +++ b/novelwriter/dialogs/projsettings.py @@ -365,11 +365,12 @@ class GuiProjectEditStatus(QWidget): newList = [] for n in range(self.listBox.topLevelItemCount()): item = self.listBox.topLevelItem(n) - newList.append({ - "key": item.data(self.COL_LABEL, self.KEY_ROLE), - "name": item.text(self.COL_LABEL), - "cols": item.data(self.COL_LABEL, self.COL_ROLE), - }) + if item is not None: + newList.append({ + "key": item.data(self.COL_LABEL, self.KEY_ROLE), + "name": item.text(self.COL_LABEL), + "cols": item.data(self.COL_LABEL, self.COL_ROLE), + }) return newList, self.colDeleted return [], [] @@ -468,7 +469,8 @@ class GuiProjectEditStatus(QWidget): self.listBox.insertTopLevelItem(nIndex, cItem) self.listBox.clearSelection() - cItem.setSelected(True) + if cItem is not None: + cItem.setSelected(True) self.colChanged = True return @@ -617,10 +619,11 @@ class GuiProjectEditReplace(QWidget): newList = {} for n in range(self.listBox.topLevelItemCount()): tItem = self.listBox.topLevelItem(n) - aKey = self._stripNotAllowed(tItem.text(0)) - aVal = tItem.text(1) - if len(aKey) > 0: - newList[aKey] = aVal + if tItem is not None: + aKey = self._stripNotAllowed(tItem.text(0)) + aVal = tItem.text(1) + if len(aKey) > 0: + newList[aKey] = aVal return newList diff --git a/novelwriter/dialogs/updates.py b/novelwriter/dialogs/updates.py index 8b8f1d27..1e79dc26 100644 --- a/novelwriter/dialogs/updates.py +++ b/novelwriter/dialogs/updates.py @@ -135,7 +135,7 @@ class GuiUpdates(QDialog): logException() relVersion = rawData.get("tag_name", "Unknown") - relDate = rawData.get("created_at", None) + relDate = rawData.get("created_at", "") try: relDate = datetime.strptime(relDate[:10], "%Y-%m-%d").strftime("%x") diff --git a/novelwriter/dialogs/wordlist.py b/novelwriter/dialogs/wordlist.py index f155c25e..01a8afff 100644 --- a/novelwriter/dialogs/wordlist.py +++ b/novelwriter/dialogs/wordlist.py @@ -156,7 +156,9 @@ class GuiWordList(QDialog): try: with open(tmpFile, mode="w", encoding="utf-8") as outFile: for i in range(self.listBox.count()): - outFile.write(self.listBox.item(i).text() + "\n") + item = self.listBox.item(i) + if item is not None: + outFile.write(item.text() + "\n") except Exception: logger.error("Could not save new word list") diff --git a/novelwriter/gui/noveltree.py b/novelwriter/gui/noveltree.py index 47cc1049..acadd29f 100644 --- a/novelwriter/gui/noveltree.py +++ b/novelwriter/gui/noveltree.py @@ -508,16 +508,17 @@ class GuiNovelTree(QTreeWidget): self._actHandle = tHandle for i in range(self.topLevelItemCount()): tItem = self.topLevelItem(i) - if tItem.data(self.C_TITLE, self.D_HANDLE) == tHandle: - tItem.setBackground(self.C_TITLE, self.palette().alternateBase()) - tItem.setBackground(self.C_WORDS, self.palette().alternateBase()) - tItem.setBackground(self.C_EXTRA, self.palette().alternateBase()) - tItem.setBackground(self.C_MORE, self.palette().alternateBase()) - else: - tItem.setBackground(self.C_TITLE, self.palette().base()) - tItem.setBackground(self.C_WORDS, self.palette().base()) - tItem.setBackground(self.C_EXTRA, self.palette().base()) - tItem.setBackground(self.C_MORE, self.palette().base()) + if tItem is not None: + if tItem.data(self.C_TITLE, self.D_HANDLE) == tHandle: + tItem.setBackground(self.C_TITLE, self.palette().alternateBase()) + tItem.setBackground(self.C_WORDS, self.palette().alternateBase()) + tItem.setBackground(self.C_EXTRA, self.palette().alternateBase()) + tItem.setBackground(self.C_MORE, self.palette().alternateBase()) + else: + tItem.setBackground(self.C_TITLE, self.palette().base()) + tItem.setBackground(self.C_WORDS, self.palette().base()) + tItem.setBackground(self.C_EXTRA, self.palette().base()) + tItem.setBackground(self.C_MORE, self.palette().base()) logger.debug("Highlighted Novel Tree in %.3f ms", (time() - tStart)*1000) diff --git a/novelwriter/gui/outline.py b/novelwriter/gui/outline.py index a4e133f9..bb900d9f 100644 --- a/novelwriter/gui/outline.py +++ b/novelwriter/gui/outline.py @@ -675,9 +675,10 @@ class GuiOutlineTree(QTreeWidget): self.setColumnHidden(self._colIdx[nwOutline.TITLE], False) headItem = self.headerItem() - headItem.setTextAlignment(self._colIdx[nwOutline.CCOUNT], Qt.AlignRight) - headItem.setTextAlignment(self._colIdx[nwOutline.WCOUNT], Qt.AlignRight) - headItem.setTextAlignment(self._colIdx[nwOutline.PCOUNT], Qt.AlignRight) + if headItem is not None: + headItem.setTextAlignment(self._colIdx[nwOutline.CCOUNT], Qt.AlignRight) + headItem.setTextAlignment(self._colIdx[nwOutline.WCOUNT], Qt.AlignRight) + headItem.setTextAlignment(self._colIdx[nwOutline.PCOUNT], Qt.AlignRight) novStruct = self.theProject.index.novelStructure(rootHandle=rootHandle, skipExcl=True) for _, tHandle, sTitle, novIdx in novStruct: diff --git a/novelwriter/gui/projtree.py b/novelwriter/gui/projtree.py index 5cadd78e..0b2d956c 100644 --- a/novelwriter/gui/projtree.py +++ b/novelwriter/gui/projtree.py @@ -1309,7 +1309,8 @@ class GuiProjectTree(QTreeWidget): self._postItemMove(sHandle, wCount) self._recordLastMove(sItem, pItem, pIndex) self._alertTreeChange(sHandle, flush=True) - sItem.setExpanded(isExpanded) + if sItem is not None: + sItem.setExpanded(isExpanded) return diff --git a/novelwriter/tools/writingstats.py b/novelwriter/tools/writingstats.py index eb2f8199..2a579837 100644 --- a/novelwriter/tools/writingstats.py +++ b/novelwriter/tools/writingstats.py @@ -112,9 +112,10 @@ class GuiWritingStats(QDialog): self.listBox.setColumnWidth(self.C_COUNT, wCol3) hHeader = self.listBox.headerItem() - hHeader.setTextAlignment(self.C_LENGTH, Qt.AlignRight) - hHeader.setTextAlignment(self.C_IDLE, Qt.AlignRight) - hHeader.setTextAlignment(self.C_COUNT, Qt.AlignRight) + if hHeader is not None: + hHeader.setTextAlignment(self.C_LENGTH, Qt.AlignRight) + hHeader.setTextAlignment(self.C_IDLE, Qt.AlignRight) + hHeader.setTextAlignment(self.C_COUNT, Qt.AlignRight) sortCol = minmax(pOptions.getInt("GuiWritingStats", "sortCol", 0), 0, 2) sortOrder = checkIntTuple(