Rewrite index class to use sequential title keys rather than line numbers

This commit is contained in:
Veronica Berglyd Olsen
2022-11-14 16:59:51 +01:00
parent e52d8d9ff7
commit b0a0ca089f
7 changed files with 133 additions and 96 deletions
+20 -8
View File
@@ -230,6 +230,7 @@ class GuiMain(QMainWindow):
self.docViewer.loadDocumentTagRequest.connect(self._followTag)
self.outlineView.loadDocumentTagRequest.connect(self._followTag)
self.outlineView.openDocumentRequest.connect(self._openDocument)
# Finalise Initialisation
# =======================
@@ -650,7 +651,7 @@ class GuiMain(QMainWindow):
return True
def viewDocument(self, tHandle=None, tAnchor=None):
def viewDocument(self, tHandle=None, sTitle=None):
"""Load a document for viewing in the view panel.
"""
if not self.hasProject:
@@ -689,7 +690,8 @@ class GuiMain(QMainWindow):
self.splitDocs.setSizes(vPos)
self.viewMeta.setVisible(self.mainConf.showRefPanel)
self.docViewer.navigateTo(tAnchor)
if sTitle:
self.docViewer.navigateTo(f"#{sTitle}")
return True
@@ -777,17 +779,23 @@ class GuiMain(QMainWindow):
return False
tHandle = None
sTitle = None
tLine = None
if self.projView.treeHasFocus():
tHandle = self.projView.getSelectedHandle()
elif self.novelView.treeHasFocus():
tHandle, tLine = self.novelView.getSelectedHandle()
tHandle, sTitle = self.novelView.getSelectedHandle()
elif self.outlineView.treeHasFocus():
tHandle, tLine = self.outlineView.getSelectedHandle()
tHandle, sTitle = self.outlineView.getSelectedHandle()
else:
logger.warning("No item selected")
return False
if tHandle is not None and sTitle is not None:
hItem = self.theProject.index.getItemHeader(tHandle, sTitle)
if hItem is not None:
tLine = hItem.line
if tHandle is not None:
self.openDocument(tHandle, tLine=tLine, changeFocus=False, doScroll=False)
@@ -1473,18 +1481,22 @@ class GuiMain(QMainWindow):
if tMode == nwDocMode.EDIT:
self.openDocument(tHandle)
elif tMode == nwDocMode.VIEW:
self.viewDocument(tHandle=tHandle, tAnchor=f"#{sTitle}")
self.viewDocument(tHandle=tHandle, sTitle=sTitle)
return
@pyqtSlot(str, Enum, int, str)
def _openDocument(self, tHandle, tMode, tLine, tAnchor):
@pyqtSlot(str, Enum, str)
def _openDocument(self, tHandle, tMode, sTitle):
"""Handle an open document request from one of the tree views.
"""
if tHandle is not None:
if tMode == nwDocMode.EDIT:
tLine = None
hItem = self.theProject.index.getItemHeader(tHandle, sTitle)
if hItem is not None:
tLine = hItem.line
self.openDocument(tHandle, tLine=tLine, changeFocus=False)
elif tMode == nwDocMode.VIEW:
self.viewDocument(tHandle=tHandle, tAnchor=(tAnchor or None))
self.viewDocument(tHandle=tHandle, sTitle=sTitle)
return
@pyqtSlot(nwView)