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