diff --git a/src/models/outlineModel.py b/src/models/outlineModel.py
index f52fe1d1..c4583001 100644
--- a/src/models/outlineModel.py
+++ b/src/models/outlineModel.py
@@ -49,6 +49,11 @@ class outlineModel(QAbstractItemModel):
col = column
return self.createIndex(row, col, item)
+ def ID(self, index):
+ if index.isValid():
+ item = index.internalPointer()
+ return item.ID()
+
def getIndexByID(self, ID):
"Returns the index of item whose ID is ``ID``. If none, returns QModelIndex()."
def search(item):
@@ -240,12 +245,19 @@ class outlineModel(QAbstractItemModel):
items = []
for child in root:
if child.tag == "outlineItem":
- items.append(outlineItem(xml=ET.tostring(child)))
+ item = outlineItem(xml=ET.tostring(child))
+ items.append(item)
if not items:
return False
- return self.insertItems(items, beginRow, parent)
+ r = self.insertItems(items, beginRow, parent)
+
+ if action == Qt.CopyAction:
+ for item in items:
+ item.getUniqueID()
+
+ return r
################# ADDING AND REMOVING #################
@@ -362,7 +374,7 @@ class outlineModel(QAbstractItemModel):
path = path.split(",")
item = self.rootItem
for p in path:
- if p != "":
+ if p != "" and int(p) < item.childCount():
item = item.child(int(p))
return self.indexFromItem(item)
@@ -577,6 +589,7 @@ class outlineItem():
def removeChild(self, row):
self.childItems.pop(row)
+ self.updateWordCount()
def parent(self):
return self._parent
diff --git a/src/models/references.py b/src/models/references.py
index 91cfce11..c11d375e 100644
--- a/src/models/references.py
+++ b/src/models/references.py
@@ -42,6 +42,33 @@ def infoForRef(ref):
else:
return qApp.translate("references", "Unknown reference: {}.").format(ref)
+def tooltipForRef(ref):
+ match = re.fullmatch("::(\w):(\d+?)::", ref)
+ if match:
+ _type = match.group(1)
+ _ref = match.group(2)
+
+ if _type == "T":
+ m = mainWindow().mdlOutline
+ idx = m.getIndexByID(_ref)
+
+ if not idx.isValid():
+ return qApp.translate("references", "Unknown reference: {}.").format(ref)
+
+ item = idx.internalPointer()
+
+ tooltip = qApp.translate("references", "Text: {}").format(item.title())
+ tooltip += "
{}".format(item.path())
+
+ return tooltip
+
+ elif _type == "C":
+ m = mainWindow().mdlPersos
+ name = m.item(int(_ref), Perso.name.value).text()
+ return qApp.translate("references", "Character: {}").format(name)
+
+ else:
+ return qApp.translate("references", "Unknown reference: {}.").format(ref)
def openReference(ref):
match = re.fullmatch("::(\w):(\d+?)::", ref)
diff --git a/src/ui/editors/completer.py b/src/ui/editors/completer.py
index 2f0ced90..14ced3c9 100644
--- a/src/ui/editors/completer.py
+++ b/src/ui/editors/completer.py
@@ -24,6 +24,14 @@ class completer(QWidget, Ui_completer):
self.outlineModel = mainWindow().mdlOutline
self.persoModel = mainWindow().mdlPersos
+ self.populateTimer = QTimer(self)
+ self.populateTimer.setSingleShot(True)
+ self.populateTimer.setInterval(500)
+ self.populateTimer.timeout.connect(self.populate)
+ self.populateTimer.stop()
+ self.outlineModel.dataChanged.connect(self.populateTimer.start)
+ self.persoModel.dataChanged.connect(self.populateTimer.start)
+
self.data = {}
self.populate()
diff --git a/src/ui/views/outlineBasics.py b/src/ui/views/outlineBasics.py
index 9166960f..5234a56f 100644
--- a/src/ui/views/outlineBasics.py
+++ b/src/ui/views/outlineBasics.py
@@ -20,11 +20,11 @@ class outlineBasics(QAbstractItemView):
return sel
def mouseReleaseEvent(self, event):
-
if event.button() == Qt.RightButton:
-
self.menu = self.makePopupMenu()
self.menu.popup(event.globalPos())
+ else:
+ QAbstractItemView.mouseReleaseEvent(self, event)
def makePopupMenu(self):
index = self.currentIndex()
diff --git a/src/ui/views/textEditCompleter.py b/src/ui/views/textEditCompleter.py
index 5de4b4ab..73c7c50a 100644
--- a/src/ui/views/textEditCompleter.py
+++ b/src/ui/views/textEditCompleter.py
@@ -123,7 +123,7 @@ class textEditCompleter(textEditView):
if ref:
if not qApp.overrideCursor():
qApp.setOverrideCursor(Qt.PointingHandCursor)
- QToolTip.showText(self.mapToGlobal(event.pos()), infoForRef(ref))
+ QToolTip.showText(self.mapToGlobal(event.pos()), tooltipForRef(ref))
def mouseReleaseEvent(self, event):
textEditView.mouseReleaseEvent(self, event)
@@ -147,7 +147,6 @@ class textEditCompleter(textEditView):
cursor.setPosition(txt.start())
r = self.cursorRect(cursor)
r.setWidth(fm.width(txt.group(0)))
- r = r.adjusted(-2, -2, 2, 2)
refs.append(r)
self.refRects = refs
diff --git a/src/ui/views/treeView.py b/src/ui/views/treeView.py
index 48c749af..72cb1eb6 100644
--- a/src/ui/views/treeView.py
+++ b/src/ui/views/treeView.py
@@ -57,9 +57,9 @@ class treeView(QTreeView, dndView, outlineBasics):
menu.insertSeparator(first)
# Expand /collapse item
- if len(self.selectedIndexes()) != 0:
- index = self.currentIndex()
- item = index.internalPointer()
+ if mouseIndex.isValid():
+ #index = self.currentIndex()
+ item = mouseIndex.internalPointer()
self.actExpand = QAction(self.tr("Expand {}").format(item.title()), menu)
self.actExpand.triggered.connect(self.expandCurrentIndex)
menu.insertAction(first, self.actExpand)
@@ -88,7 +88,7 @@ class treeView(QTreeView, dndView, outlineBasics):
def expandCurrentIndex(self, index=None):
if index is None or type(index) == bool:
- index = self.currentIndex()
+ index = self._indexesToOpen[0] #self.currentIndex()
self.expand(index)
for i in range(self.model().rowCount(index)):
@@ -97,7 +97,7 @@ class treeView(QTreeView, dndView, outlineBasics):
def collapseCurrentIndex(self, index=None):
if index is None or type(index) == bool:
- index = self.currentIndex()
+ index = self._indexesToOpen[0] #self.currentIndex()
self.collapse(index)
for i in range(self.model().rowCount(index)):
@@ -114,8 +114,4 @@ class treeView(QTreeView, dndView, outlineBasics):
# on right click
pass
else:
- QTreeView.mousePressEvent(self, event)
-
- def mouseReleaseEvent(self, event):
- QTreeView.mouseReleaseEvent(self, event)
- outlineBasics.mouseReleaseEvent(self, event)
\ No newline at end of file
+ QTreeView.mousePressEvent(self, event)
\ No newline at end of file