Corrects a few bug, tweaks a thing or two

This commit is contained in:
Olivier Keshavjee 2015-06-29 15:34:03 +02:00
parent 3dc5217554
commit 21de78c27b
6 changed files with 60 additions and 17 deletions

View file

@ -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

View file

@ -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: <b>{}</b>").format(item.title())
tooltip += "<br><i>{}</i>".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: <b>{}</b>").format(name)
else:
return qApp.translate("references", "Unknown reference: {}.").format(ref)
def openReference(ref):
match = re.fullmatch("::(\w):(\d+?)::", ref)

View file

@ -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()

View file

@ -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()

View file

@ -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

View file

@ -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)
QTreeView.mousePressEvent(self, event)