mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-06-09 06:24:32 +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(0, 75)
|
||||||
self.splitterOutlineV.setStretchFactor(1, 25)
|
self.splitterOutlineV.setStretchFactor(1, 25)
|
||||||
|
|
||||||
self.splitterRedacV.setStretchFactor(0, 10)
|
self.splitterRedacV.setStretchFactor(0, 75)
|
||||||
self.splitterRedacV.setStretchFactor(1, 100)
|
self.splitterRedacV.setStretchFactor(1, 25)
|
||||||
|
|
||||||
self.splitterRedacH.setStretchFactor(0, 30)
|
self.splitterRedacH.setStretchFactor(0, 30)
|
||||||
self.splitterRedacH.setStretchFactor(1, 40)
|
self.splitterRedacH.setStretchFactor(1, 40)
|
||||||
|
|
|
@ -836,15 +836,16 @@ class outlineItem():
|
||||||
|
|
||||||
return lst
|
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
|
"""Returns a list if IDs of all subitems
|
||||||
containing ``text`` in columns ``columns``
|
containing ``text`` in columns ``columns``
|
||||||
(being a list of int).
|
(being a list of int).
|
||||||
"""
|
"""
|
||||||
lst = self.itemContains(text, columns, mainWindow, caseSensitive)
|
lst = self.itemContains(text, columns, mainWindow, caseSensitive)
|
||||||
|
|
||||||
for c in self.children():
|
if recursive:
|
||||||
lst.extend(c.findItemsContaining(text, columns, mainWindow, caseSensitive))
|
for c in self.children():
|
||||||
|
lst.extend(c.findItemsContaining(text, columns, mainWindow, caseSensitive))
|
||||||
|
|
||||||
return lst
|
return lst
|
||||||
|
|
||||||
|
|
|
@ -471,12 +471,32 @@ def linkifyAllRefs(text):
|
||||||
return re.sub(RegEx, lambda m: refToLink(m.group(0)), 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:")):
|
def listReferences(ref, title=qApp.translate("references", "Referenced in:")):
|
||||||
oM = mainWindow().mdlOutline
|
oM = mainWindow().mdlOutline
|
||||||
listRefs = ""
|
listRefs = ""
|
||||||
# Removes everything after the second ':': '{L:ID:random text}' → '{L:ID:'
|
|
||||||
ref = ref[:ref.index(":", ref.index(":") + 1)]
|
lst = findReferencesTo(ref)
|
||||||
lst = oM.findItemsContaining(ref, [Outline.notes.value])
|
|
||||||
for t in lst:
|
for t in lst:
|
||||||
idx = oM.getIndexByID(t)
|
idx = oM.getIndexByID(t)
|
||||||
listRefs += "<li><a href='{link}'>{text}</a></li>".format(
|
listRefs += "<li><a href='{link}'>{text}</a></li>".format(
|
||||||
|
|
|
@ -155,7 +155,7 @@ class storylineView(QWidget, Ui_storylineView):
|
||||||
result = []
|
result = []
|
||||||
c = child
|
c = child
|
||||||
while c:
|
while c:
|
||||||
result += c.itemContains(ref, [Outline.notes.value])
|
result += references.findReferencesTo(ref, c, recursive=False)
|
||||||
c = c.parent()
|
c = c.parent()
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
|
@ -240,7 +240,6 @@ class RefCircle(QGraphicsEllipseItem):
|
||||||
self.setPos(self.pos() + r1.center() - r2.center())
|
self.setPos(self.pos() + r1.center() - r2.center())
|
||||||
|
|
||||||
def mouseDoubleClickEvent(self, event):
|
def mouseDoubleClickEvent(self, event):
|
||||||
print("Good News!", self._ref)
|
|
||||||
references.open(self._ref)
|
references.open(self._ref)
|
||||||
|
|
||||||
def hoverEnterEvent(self, event):
|
def hoverEnterEvent(self, event):
|
||||||
|
|
Loading…
Reference in a new issue