Clean up the viewer panel code a bit

This commit is contained in:
Veronica Berglyd Olsen
2023-11-15 22:09:18 +01:00
parent f51223e7c3
commit 3d17d8e08c
+25 -40
View File
@@ -43,8 +43,8 @@ logger = logging.getLogger(__name__)
class GuiDocViewerPanel(QWidget):
loadDocumentTagRequest = pyqtSignal(str, Enum)
openDocumentRequest = pyqtSignal(str, Enum, str, bool)
loadDocumentTagRequest = pyqtSignal(str, Enum)
def __init__(self, parent: QWidget) -> None:
super().__init__(parent=parent)
@@ -183,13 +183,11 @@ class _ViewPanelBackRefs(QTreeWidget):
C_TITLE = 3
D_HANDLE = Qt.ItemDataRole.UserRole
D_TITLE = Qt.ItemDataRole.UserRole + 1
def __init__(self, docViewerPanel: GuiDocViewerPanel) -> None:
super().__init__(parent=docViewerPanel)
self.docViewerPanel = docViewerPanel
def __init__(self, parent: GuiDocViewerPanel) -> None:
super().__init__(parent=parent)
self._parent = parent
self._treeMap: dict[str, QTreeWidgetItem] = {}
iPx = SHARED.theme.baseIconSize
@@ -232,8 +230,7 @@ class _ViewPanelBackRefs(QTreeWidget):
def refreshDocument(self, tHandle: str) -> None:
"""Refresh document meta data."""
iItem = SHARED.project.index.getItemData(tHandle)
if iItem:
if iItem := SHARED.project.index.getItemData(tHandle):
for sTitle, hItem in iItem.items():
if f"{tHandle}:{sTitle}" in self._treeMap:
self._setTreeItemValues(tHandle, sTitle, hItem)
@@ -245,12 +242,12 @@ class _ViewPanelBackRefs(QTreeWidget):
@pyqtSlot("QModelIndex")
def _treeItemClicked(self, index: QModelIndex) -> None:
"""The user clicked on an item in the tree."""
"""Emit document open signal on user click."""
tHandle = index.siblingAtColumn(self.C_DATA).data(self.D_HANDLE)
if index.column() == self.C_EDIT:
self.docViewerPanel.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, "", True)
self._parent.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, "", True)
elif index.column() == self.C_VIEW:
self.docViewerPanel.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "", True)
self._parent.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "", True)
return
##
@@ -259,8 +256,7 @@ class _ViewPanelBackRefs(QTreeWidget):
def _setTreeItemValues(self, tHandle: str, sTitle: str, hItem: IndexHeading) -> None:
"""Add or update a tree item."""
nwItem = SHARED.project.tree[tHandle]
if nwItem is None:
if (nwItem := SHARED.project.tree[tHandle]) is None:
return
docIcon = SHARED.theme.getItemIcon(
@@ -271,10 +267,7 @@ class _ViewPanelBackRefs(QTreeWidget):
hDec = SHARED.theme.getHeaderDecorationNarrow(iLevel)
tKey = f"{tHandle}:{sTitle}"
if tKey in self._treeMap:
trItem = self._treeMap[tKey]
else:
trItem = QTreeWidgetItem()
trItem = self._treeMap[tKey] if tKey in self._treeMap else QTreeWidgetItem()
trItem.setIcon(self.C_DOC, docIcon)
trItem.setText(self.C_DOC, nwItem.itemName)
@@ -282,9 +275,7 @@ class _ViewPanelBackRefs(QTreeWidget):
trItem.setIcon(self.C_VIEW, self._viewIcon)
trItem.setText(self.C_TITLE, hItem.title)
trItem.setData(self.C_TITLE, Qt.ItemDataRole.DecorationRole, hDec)
trItem.setData(self.C_DATA, self.D_HANDLE, tHandle)
trItem.setData(self.C_DATA, self.D_TITLE, sTitle)
if tKey not in self._treeMap:
self.addTopLevelItem(trItem)
@@ -304,15 +295,13 @@ class _ViewPanelKeyWords(QTreeWidget):
C_DOC = 3
C_TITLE = 4
D_TAG = Qt.ItemDataRole.UserRole
D_HANDLE = Qt.ItemDataRole.UserRole + 1
D_TAG = Qt.ItemDataRole.UserRole
def __init__(self, docViewerPanel: GuiDocViewerPanel, itemClass: nwItemClass) -> None:
super().__init__(parent=docViewerPanel)
def __init__(self, parent: GuiDocViewerPanel, itemClass: nwItemClass) -> None:
super().__init__(parent=parent)
self.docViewerPanel = docViewerPanel
self._tagMap: dict[str, QTreeWidgetItem] = {}
self._parent = parent
self._treeMap: dict[str, QTreeWidgetItem] = {}
iPx = SHARED.theme.baseIconSize
cMg = CONFIG.pxInt(6)
@@ -351,7 +340,7 @@ class _ViewPanelKeyWords(QTreeWidget):
def clearContent(self) -> None:
"""Clear the list."""
self._tagMap = {}
self._treeMap = {}
self.clear()
return
@@ -367,10 +356,7 @@ class _ViewPanelKeyWords(QTreeWidget):
# This can not use a get call to the dictionary as that creates
# some weird issue with Qt, so we need to do this with an if
if tag in self._tagMap:
trItem = self._tagMap[tag]
else:
trItem = QTreeWidgetItem()
trItem = self._treeMap[tag] if tag in self._treeMap else QTreeWidgetItem()
trItem.setText(self.C_NAME, name)
trItem.setIcon(self.C_NAME, self._classIcon)
@@ -381,19 +367,18 @@ class _ViewPanelKeyWords(QTreeWidget):
trItem.setText(self.C_TITLE, hItem.title)
trItem.setData(self.C_TITLE, Qt.ItemDataRole.DecorationRole, hDec)
trItem.setData(self.C_DATA, self.D_TAG, tag)
trItem.setData(self.C_DATA, self.D_HANDLE, iItem.handle)
if tag not in self._tagMap:
if tag not in self._treeMap:
self.addTopLevelItem(trItem)
self._tagMap[tag] = trItem
self._treeMap[tag] = trItem
return
def removeEntry(self, tag: str) -> bool:
"""Remove a tag from the list."""
if tag in self._tagMap:
self.takeTopLevelItem(self.indexOfTopLevelItem(self._tagMap[tag]))
self._tagMap.pop(tag, None)
if tag in self._treeMap:
self.takeTopLevelItem(self.indexOfTopLevelItem(self._treeMap[tag]))
self._treeMap.pop(tag, None)
return True
return False
@@ -403,12 +388,12 @@ class _ViewPanelKeyWords(QTreeWidget):
@pyqtSlot("QModelIndex")
def _treeItemClicked(self, index: QModelIndex) -> None:
"""The user clicked on an item in the tree."""
"""Emit follow tag signal on user click."""
tag = index.siblingAtColumn(self.C_DATA).data(self.D_TAG)
if index.column() == self.C_EDIT:
self.docViewerPanel.loadDocumentTagRequest.emit(tag, nwDocMode.EDIT)
self._parent.loadDocumentTagRequest.emit(tag, nwDocMode.EDIT)
elif index.column() == self.C_VIEW:
self.docViewerPanel.loadDocumentTagRequest.emit(tag, nwDocMode.VIEW)
self._parent.loadDocumentTagRequest.emit(tag, nwDocMode.VIEW)
return
# END Class _ViewPanelRefs