diff --git a/novelwriter/dialogs/docmerge.py b/novelwriter/dialogs/docmerge.py index ea04d184..71111f0a 100644 --- a/novelwriter/dialogs/docmerge.py +++ b/novelwriter/dialogs/docmerge.py @@ -41,6 +41,8 @@ logger = logging.getLogger(__name__) class GuiDocMerge(QDialog): + D_HANDLE = Qt.ItemDataRole.UserRole + def __init__(self, mainGui, sHandle, itemList): super().__init__(parent=mainGui) @@ -122,7 +124,7 @@ class GuiDocMerge(QDialog): for i in range(self.listBox.count()): item = self.listBox.item(i) if item is not None and item.checkState() == Qt.Checked: - finalItems.append(item.data(Qt.UserRole)) + finalItems.append(item.data(self.D_HANDLE)) self._data["moveToTrash"] = self.trashSwitch.isChecked() self._data["finalItems"] = finalItems @@ -166,7 +168,7 @@ class GuiDocMerge(QDialog): newItem = QListWidgetItem() newItem.setIcon(itemIcon) newItem.setText(nwItem.itemName) - newItem.setData(Qt.UserRole, tHandle) + newItem.setData(self.D_HANDLE, tHandle) newItem.setCheckState(Qt.Checked) self.listBox.addItem(newItem) diff --git a/novelwriter/dialogs/docsplit.py b/novelwriter/dialogs/docsplit.py index d66e0278..c08c017b 100644 --- a/novelwriter/dialogs/docsplit.py +++ b/novelwriter/dialogs/docsplit.py @@ -41,9 +41,9 @@ logger = logging.getLogger(__name__) class GuiDocSplit(QDialog): - LINE_ROLE = Qt.UserRole - LEVEL_ROLE = Qt.UserRole + 1 - LABEL_ROLE = Qt.UserRole + 2 + LINE_ROLE = Qt.ItemDataRole.UserRole + LEVEL_ROLE = Qt.ItemDataRole.UserRole + 1 + LABEL_ROLE = Qt.ItemDataRole.UserRole + 2 def __init__(self, mainGui, sHandle): super().__init__(parent=mainGui) diff --git a/novelwriter/dialogs/projload.py b/novelwriter/dialogs/projload.py index f00f1c47..8fa3ec7a 100644 --- a/novelwriter/dialogs/projload.py +++ b/novelwriter/dialogs/projload.py @@ -53,6 +53,8 @@ class GuiProjectLoad(QDialog): C_COUNT = 1 C_TIME = 2 + D_PATH = Qt.ItemDataRole.UserRole + def __init__(self, mainGui): super().__init__(parent=mainGui) @@ -167,7 +169,7 @@ class GuiProjectLoad(QDialog): selItems = self.listBox.selectedItems() if selItems: - self.openPath = selItems[0].data(self.C_NAME, Qt.UserRole) + self.openPath = selItems[0].data(self.C_NAME, self.D_PATH) self.openState = self.OPEN_STATE self.accept() @@ -178,7 +180,7 @@ class GuiProjectLoad(QDialog): """ selList = self.listBox.selectedItems() if selList: - self.selPath.setText(selList[0].data(self.C_NAME, Qt.UserRole)) + self.selPath.setText(selList[0].data(self.C_NAME, self.D_PATH)) return def _doBrowse(self): @@ -232,7 +234,7 @@ class GuiProjectLoad(QDialog): ) if msgYes: CONFIG.recentProjects.remove( - selList[0].data(self.C_NAME, Qt.UserRole) + selList[0].data(self.C_NAME, self.D_PATH) ) self._populateList() @@ -274,12 +276,12 @@ class GuiProjectLoad(QDialog): newItem = QTreeWidgetItem([""]*4) newItem.setIcon(self.C_NAME, nwxIcon) newItem.setText(self.C_NAME, title) - newItem.setData(self.C_NAME, Qt.UserRole, path) + newItem.setData(self.C_NAME, self.D_PATH, path) newItem.setText(self.C_COUNT, formatInt(words)) newItem.setText(self.C_TIME, datetime.fromtimestamp(time).strftime("%x %X")) - newItem.setTextAlignment(self.C_NAME, Qt.AlignLeft | Qt.AlignVCenter) + newItem.setTextAlignment(self.C_NAME, Qt.AlignLeft | Qt.AlignVCenter) newItem.setTextAlignment(self.C_COUNT, Qt.AlignRight | Qt.AlignVCenter) - newItem.setTextAlignment(self.C_TIME, Qt.AlignRight | Qt.AlignVCenter) + newItem.setTextAlignment(self.C_TIME, Qt.AlignRight | Qt.AlignVCenter) newItem.setFont(self.C_TIME, self.mainTheme.guiFontFixed) self.listBox.addTopLevelItem(newItem) diff --git a/novelwriter/dialogs/projsettings.py b/novelwriter/dialogs/projsettings.py index f78efd8c..aac956cc 100644 --- a/novelwriter/dialogs/projsettings.py +++ b/novelwriter/dialogs/projsettings.py @@ -277,9 +277,9 @@ class GuiProjectEditStatus(QWidget): COL_LABEL = 0 COL_USAGE = 1 - KEY_ROLE = Qt.UserRole - COL_ROLE = Qt.UserRole + 1 - NUM_ROLE = Qt.UserRole + 2 + KEY_ROLE = Qt.ItemDataRole.UserRole + COL_ROLE = Qt.ItemDataRole.UserRole + 1 + NUM_ROLE = Qt.ItemDataRole.UserRole + 2 def __init__(self, projGui, isStatus): super().__init__(parent=projGui) diff --git a/novelwriter/dialogs/quotes.py b/novelwriter/dialogs/quotes.py index 256888ce..4f5ba9eb 100644 --- a/novelwriter/dialogs/quotes.py +++ b/novelwriter/dialogs/quotes.py @@ -42,6 +42,8 @@ class GuiQuoteSelect(QDialog): selectedQuote = "" + D_KEY = Qt.ItemDataRole.UserRole + def __init__(self, parent=None, currentQuote='"'): super().__init__(parent=parent) @@ -75,7 +77,7 @@ class GuiQuoteSelect(QDialog): theText = "[ %s ] %s" % (sKey, trConst(sLabel)) minSize = max(minSize, qMetrics.boundingRect(theText).width()) qtItem = QListWidgetItem(theText) - qtItem.setData(Qt.UserRole, sKey) + qtItem.setData(self.D_KEY, sKey) self.listBox.addItem(qtItem) if sKey == currentQuote: self.listBox.setCurrentItem(qtItem) @@ -111,7 +113,7 @@ class GuiQuoteSelect(QDialog): """ selItems = self.listBox.selectedItems() if selItems: - theSymbol = selItems[0].data(Qt.UserRole) + theSymbol = selItems[0].data(self.D_KEY) self.previewLabel.setText(theSymbol) self.selectedQuote = theSymbol return diff --git a/novelwriter/gui/noveltree.py b/novelwriter/gui/noveltree.py index aaf9485d..41cee1a9 100644 --- a/novelwriter/gui/noveltree.py +++ b/novelwriter/gui/noveltree.py @@ -383,14 +383,16 @@ class GuiNovelToolBar(QWidget): class GuiNovelTree(QTreeWidget): + C_DATA = 0 C_TITLE = 0 C_WORDS = 1 C_EXTRA = 2 C_MORE = 3 - D_HANDLE = Qt.UserRole - D_TITLE = Qt.UserRole + 1 - D_KEY = Qt.UserRole + 2 + D_HANDLE = Qt.ItemDataRole.UserRole + D_TITLE = Qt.ItemDataRole.UserRole + 1 + D_KEY = Qt.ItemDataRole.UserRole + 2 + D_EXTRA = Qt.ItemDataRole.UserRole + 3 def __init__(self, novelView): super().__init__(parent=novelView) @@ -527,7 +529,7 @@ class GuiNovelTree(QTreeWidget): selItem = self.selectedItems() titleKey = None if selItem: - titleKey = selItem[0].data(self.C_TITLE, self.D_KEY) + titleKey = selItem[0].data(self.C_DATA, self.D_KEY) self._populateTree(rootHandle) self.theProject.data.setLastHandle(rootHandle, "novelTree") @@ -564,8 +566,8 @@ class GuiNovelTree(QTreeWidget): selList = self.selectedItems() trItem = selList[0] if selList else self.currentItem() if isinstance(trItem, QTreeWidgetItem): - tHandle = trItem.data(self.C_TITLE, self.D_HANDLE) - sTitle = trItem.data(self.C_TITLE, self.D_TITLE) + tHandle = trItem.data(self.C_DATA, self.D_HANDLE) + sTitle = trItem.data(self.C_DATA, self.D_TITLE) return tHandle, sTitle return None, None @@ -596,7 +598,7 @@ class GuiNovelTree(QTreeWidget): for i in range(self.topLevelItemCount()): tItem = self.topLevelItem(i) if tItem is not None: - if tItem.data(self.C_TITLE, self.D_HANDLE) == tHandle: + if tItem.data(self.C_DATA, 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()) @@ -659,7 +661,7 @@ class GuiNovelTree(QTreeWidget): for i in range(self.topLevelItemCount()): trItem = self.topLevelItem(i) if isinstance(trItem, QTreeWidgetItem): - lastText = trItem.data(self.C_EXTRA, Qt.UserRole) + lastText = trItem.data(self.C_DATA, self.D_EXTRA) trItem.setText(self.C_EXTRA, fMetric.elidedText(lastText, Qt.ElideRight, eliW)) return @@ -672,8 +674,8 @@ class GuiNovelTree(QTreeWidget): """The user clicked on an item in the tree. """ if mIndex.column() == self.C_MORE: - tHandle = mIndex.siblingAtColumn(self.C_TITLE).data(self.D_HANDLE) - sTitle = mIndex.siblingAtColumn(self.C_TITLE).data(self.D_TITLE) + tHandle = mIndex.siblingAtColumn(self.C_DATA).data(self.D_HANDLE) + sTitle = mIndex.siblingAtColumn(self.C_DATA).data(self.D_TITLE) tipPos = self.mapToGlobal(self.visualRect(mIndex).topRight()) self._popMetaBox(tipPos, tHandle, sTitle) return @@ -715,9 +717,9 @@ class GuiNovelTree(QTreeWidget): continue newItem = QTreeWidgetItem() - newItem.setData(self.C_TITLE, self.D_HANDLE, tHandle) - newItem.setData(self.C_TITLE, self.D_TITLE, sTitle) - newItem.setData(self.C_TITLE, self.D_KEY, tKey) + newItem.setData(self.C_DATA, self.D_HANDLE, tHandle) + newItem.setData(self.C_DATA, self.D_TITLE, sTitle) + newItem.setData(self.C_DATA, self.D_KEY, tKey) newItem.setTextAlignment(self.C_WORDS, Qt.AlignRight) self._updateTreeItemValues(newItem, novIdx, tHandle, sTitle) @@ -748,7 +750,7 @@ class GuiNovelTree(QTreeWidget): lastText, toolTip = self._getLastColumnText(tHandle, sTitle) elideText = self.fontMetrics().elidedText(lastText, Qt.ElideRight, mW) trItem.setText(self.C_EXTRA, elideText) - trItem.setData(self.C_EXTRA, Qt.UserRole, lastText) + trItem.setData(self.C_DATA, self.D_EXTRA, lastText) trItem.setToolTip(self.C_EXTRA, toolTip) return diff --git a/novelwriter/gui/outline.py b/novelwriter/gui/outline.py index 7e282ab7..03c6c5bf 100644 --- a/novelwriter/gui/outline.py +++ b/novelwriter/gui/outline.py @@ -360,8 +360,8 @@ class GuiOutlineTree(QTreeWidget): nwOutline.SYNOP: False, } - D_HANDLE = Qt.UserRole - D_TITLE = Qt.UserRole + 1 + D_HANDLE = Qt.ItemDataRole.UserRole + D_TITLE = Qt.ItemDataRole.UserRole + 1 hiddenStateChanged = pyqtSignal() activeItemChanged = pyqtSignal(str, str) diff --git a/novelwriter/gui/projtree.py b/novelwriter/gui/projtree.py index acc75191..fa31b1b1 100644 --- a/novelwriter/gui/projtree.py +++ b/novelwriter/gui/projtree.py @@ -449,8 +449,8 @@ class GuiProjectTree(QTreeWidget): C_ACTIVE = 2 C_STATUS = 3 - D_HANDLE = Qt.UserRole - D_WORDS = Qt.UserRole + 1 + D_HANDLE = Qt.ItemDataRole.UserRole + D_WORDS = Qt.ItemDataRole.UserRole + 1 def __init__(self, projView): super().__init__(parent=projView) diff --git a/novelwriter/tools/manuscript.py b/novelwriter/tools/manuscript.py index 05e705ae..2e770e2f 100644 --- a/novelwriter/tools/manuscript.py +++ b/novelwriter/tools/manuscript.py @@ -61,6 +61,8 @@ class GuiManuscript(QDialog): a document directly to disk. """ + D_KEY = Qt.ItemDataRole.UserRole + def __init__(self, mainGui: GuiMain): super().__init__(parent=mainGui) @@ -318,7 +320,7 @@ class GuiManuscript(QDialog): """Get the currently selected build.""" bItems = self.buildList.selectedItems() if bItems: - build = self._builds.getBuild(bItems[0].data(Qt.UserRole)) + build = self._builds.getBuild(bItems[0].data(self.D_KEY)) if isinstance(build, BuildSettings): return build return None @@ -364,7 +366,7 @@ class GuiManuscript(QDialog): for key, name in self._builds.builds(): bItem = QListWidgetItem() bItem.setText(name) - bItem.setData(Qt.UserRole, key) + bItem.setData(self.D_KEY, key) self.buildList.addItem(bItem) self._buildMap[key] = bItem return diff --git a/novelwriter/tools/manussettings.py b/novelwriter/tools/manussettings.py index 43766068..a831f650 100644 --- a/novelwriter/tools/manussettings.py +++ b/novelwriter/tools/manussettings.py @@ -285,8 +285,8 @@ class _FilterTab(QWidget): C_ACTIVE = 1 C_STATUS = 2 - D_HANDLE = Qt.UserRole - D_FILE = Qt.UserRole + 1 + D_HANDLE = Qt.ItemDataRole.UserRole + D_FILE = Qt.ItemDataRole.UserRole + 1 F_NONE = 0 F_FILTERED = 1 diff --git a/tests/test_dialogs/test_dlg_docmerge.py b/tests/test_dialogs/test_dlg_docmerge.py index c2f876d2..8071b555 100644 --- a/tests/test_dialogs/test_dlg_docmerge.py +++ b/tests/test_dialogs/test_dlg_docmerge.py @@ -52,8 +52,8 @@ def testDlgMerge_Main(qtbot, nwGUI, projPath, mockRnd): itemOne = nwMerge.listBox.item(0) itemTwo = nwMerge.listBox.item(1) - assert itemOne.data(Qt.UserRole) == C.hChapterDoc - assert itemTwo.data(Qt.UserRole) == C.hSceneDoc + assert itemOne.data(Qt.ItemDataRole.UserRole) == C.hChapterDoc + assert itemTwo.data(Qt.ItemDataRole.UserRole) == C.hSceneDoc assert itemOne.checkState() == Qt.Checked assert itemTwo.checkState() == Qt.Checked diff --git a/tests/test_dialogs/test_dlg_projload.py b/tests/test_dialogs/test_dlg_projload.py index 6f226fda..e5afe6aa 100644 --- a/tests/test_dialogs/test_dlg_projload.py +++ b/tests/test_dialogs/test_dlg_projload.py @@ -51,7 +51,7 @@ def testDlgLoadProject_Main(qtbot, monkeypatch, nwGUI, projPath): assert recentCount > 0 selItem = nwLoad.listBox.topLevelItem(0) - selPath = selItem.data(nwLoad.C_NAME, Qt.UserRole) + selPath = selItem.data(nwLoad.C_NAME, Qt.ItemDataRole.UserRole) assert isinstance(selItem, QTreeWidgetItem) nwLoad.selPath.setText("")