mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-15 02:12:29 +12:00
Corrects a bug that prevented all references to be found
This commit is contained in:
parent
c8391f771a
commit
e9c74129df
|
@ -840,8 +840,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
self.splitterOutlineV.setStretchFactor(0, 75)
|
||||
self.splitterOutlineV.setStretchFactor(1, 25)
|
||||
|
||||
self.splitterRedacV.setStretchFactor(0, 10)
|
||||
self.splitterRedacV.setStretchFactor(1, 100)
|
||||
self.splitterRedacV.setStretchFactor(0, 75)
|
||||
self.splitterRedacV.setStretchFactor(1, 25)
|
||||
|
||||
self.splitterRedacH.setStretchFactor(0, 30)
|
||||
self.splitterRedacH.setStretchFactor(1, 40)
|
||||
|
|
|
@ -836,15 +836,16 @@ class outlineItem():
|
|||
|
||||
return lst
|
||||
|
||||
def findItemsContaining(self, text, columns, mainWindow=mainWindow(), caseSensitive=False):
|
||||
def findItemsContaining(self, text, columns, mainWindow=mainWindow(), caseSensitive=False, recursive=True):
|
||||
"""Returns a list if IDs of all subitems
|
||||
containing ``text`` in columns ``columns``
|
||||
(being a list of int).
|
||||
"""
|
||||
lst = self.itemContains(text, columns, mainWindow, caseSensitive)
|
||||
|
||||
for c in self.children():
|
||||
lst.extend(c.findItemsContaining(text, columns, mainWindow, caseSensitive))
|
||||
if recursive:
|
||||
for c in self.children():
|
||||
lst.extend(c.findItemsContaining(text, columns, mainWindow, caseSensitive))
|
||||
|
||||
return lst
|
||||
|
||||
|
|
|
@ -471,12 +471,32 @@ def linkifyAllRefs(text):
|
|||
return re.sub(RegEx, lambda m: refToLink(m.group(0)), text)
|
||||
|
||||
|
||||
def findReferencesTo(ref, parent=None, recursive=True):
|
||||
"""List of text items containing references ref, and returns IDs.
|
||||
Starts from item parent. If None, starts from root."""
|
||||
oM = mainWindow().mdlOutline
|
||||
|
||||
if parent == None:
|
||||
parent = oM.rootItem
|
||||
|
||||
# Removes everything after the second ':': '{L:ID:random text}' → '{L:ID:'
|
||||
ref = ref[:ref.index(":", ref.index(":") + 1)+1]
|
||||
|
||||
# Bare form '{L:ID}'
|
||||
ref2 = ref[:-1] + "}"
|
||||
|
||||
# Since it's a simple search (no regex), we search for both.
|
||||
lst = parent.findItemsContaining(ref, [Outline.notes.value], recursive=recursive)
|
||||
lst += parent.findItemsContaining(ref2, [Outline.notes.value], recursive=recursive)
|
||||
|
||||
return lst
|
||||
|
||||
def listReferences(ref, title=qApp.translate("references", "Referenced in:")):
|
||||
oM = mainWindow().mdlOutline
|
||||
listRefs = ""
|
||||
# Removes everything after the second ':': '{L:ID:random text}' → '{L:ID:'
|
||||
ref = ref[:ref.index(":", ref.index(":") + 1)]
|
||||
lst = oM.findItemsContaining(ref, [Outline.notes.value])
|
||||
|
||||
lst = findReferencesTo(ref)
|
||||
|
||||
for t in lst:
|
||||
idx = oM.getIndexByID(t)
|
||||
listRefs += "<li><a href='{link}'>{text}</a></li>".format(
|
||||
|
|
|
@ -155,7 +155,7 @@ class storylineView(QWidget, Ui_storylineView):
|
|||
result = []
|
||||
c = child
|
||||
while c:
|
||||
result += c.itemContains(ref, [Outline.notes.value])
|
||||
result += references.findReferencesTo(ref, c, recursive=False)
|
||||
c = c.parent()
|
||||
|
||||
if result:
|
||||
|
@ -240,7 +240,6 @@ class RefCircle(QGraphicsEllipseItem):
|
|||
self.setPos(self.pos() + r1.center() - r2.center())
|
||||
|
||||
def mouseDoubleClickEvent(self, event):
|
||||
print("Good News!", self._ref)
|
||||
references.open(self._ref)
|
||||
|
||||
def hoverEnterEvent(self, event):
|
||||
|
|
Loading…
Reference in a new issue