Custom perso model, mostly working

This commit is contained in:
Olivier Keshavjee 2015-06-29 10:22:18 +02:00
parent 83552ef210
commit 0e28825649
11 changed files with 163 additions and 142 deletions

View file

@ -108,8 +108,8 @@ def outlineItemColors(item):
colors["POV"] = QColor(Qt.transparent)
POV = item.data(Outline.POV.value)
for i in range(mw.mdlPersos.rowCount()):
if mw.mdlPersos.item(i, Perso.ID.value).text() == POV:
colors["POV"] = iconColor(mw.mdlPersos.item(i, 0).icon())
if mw.mdlPersos.ID(i) == POV:
colors["POV"] = iconColor(mw.mdlPersos.icon(i))
# Label
lbl = item.data(Outline.label.value)

View file

@ -178,11 +178,20 @@ class MainWindow(QMainWindow, Ui_MainWindow):
return
self.tabPersos.setEnabled(True)
# FIXME
#self.txtPlotName.setCurrentModelIndex(index)
#self.txtPlotDescription.setCurrentModelIndex(index)
#self.txtPlotResult.setCurrentModelIndex(index)
#self.sldPlotImportance.setCurrentModelIndex(index)
for w in [
self.txtPersoName,
self.sldPersoImportance,
self.txtPersoMotivation,
self.txtPersoGoal,
self.txtPersoConflict,
self.txtPersoEpiphany,
self.txtPersoSummarySentance,
self.txtPersoSummaryPara,
self.txtPersoSummaryFull,
self.txtPersoNotes,
]:
w.setCurrentModelIndex(index)
## Button color
self.mdlPersos.updatePersoColor(index)
@ -440,7 +449,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.saveDatas()
# closeEvent
QMainWindow.closeEvent(self, event)
#QMainWindow.closeEvent(self, event) # Causin segfaults?
def startTimerNoChanges(self):
if settings.autoSaveNoChanges:
@ -640,11 +649,32 @@ class MainWindow(QMainWindow, Ui_MainWindow):
#FIXME
#self.btnPersoAddInfo.clicked.connect(lambda:
#self.mdlPersosInfos.insertRow(self.mdlPersosInfos.rowCount()), AUC)
self.mprPersos = QDataWidgetMapper()
self.mprPersos.setModel(self.mdlPersos)
#self.mprPersos = QDataWidgetMapper()
#self.mprPersos.setModel(self.mdlPersos)
mapping = [
#mapping = [
#(self.txtPersoName, Perso.name.value),
#(self.txtPersoMotivation, Perso.motivation.value),
#(self.txtPersoGoal, Perso.goal.value),
#(self.txtPersoConflict, Perso.conflict.value),
#(self.txtPersoEpiphany, Perso.epiphany.value),
#(self.txtPersoSummarySentance, Perso.summarySentance.value),
#(self.txtPersoSummaryPara, Perso.summaryPara.value),
#(self.txtPersoSummaryFull, Perso.summaryFull.value),
#(self.txtPersoNotes, Perso.notes.value)
#]
#for w, i in mapping:
#self.mprPersos.addMapping(w, i)
#self.mprPersos.addMapping(self.sldPersoImportance,
#Perso.importance.value, "importance")
#self.sldPersoImportance.importanceChanged.connect(self.mprPersos.submit, AUC)
#self.tabMain.currentChanged.connect(self.mprPersos.submit, AUC)
#self.mprPersos.setCurrentIndex(0)
for w, c in [
(self.txtPersoName, Perso.name.value),
(self.sldPersoImportance, Perso.importance.value),
(self.txtPersoMotivation, Perso.motivation.value),
(self.txtPersoGoal, Perso.goal.value),
(self.txtPersoConflict, Perso.conflict.value),
@ -653,17 +683,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
(self.txtPersoSummaryPara, Perso.summaryPara.value),
(self.txtPersoSummaryFull, Perso.summaryFull.value),
(self.txtPersoNotes, Perso.notes.value)
]
for w, i in mapping:
self.mprPersos.addMapping(w, i)
self.mprPersos.addMapping(self.sldPersoImportance,
Perso.importance.value, "importance")
self.sldPersoImportance.importanceChanged.connect(self.mprPersos.submit, AUC)
self.tabMain.currentChanged.connect(self.mprPersos.submit, AUC)
self.mprPersos.setCurrentIndex(0)
self.lstPersos.selectionModel().currentChanged.connect(
self.mdlPersos.updatePersoColor, AUC)
]:
w.setModel(self.mdlPersos)
w.setColumn(c)
self.tabPersos.setEnabled(False)
#self.lstPersos.selectionModel().currentChanged.connect(
#self.mdlPersos.updatePersoColor, AUC)
#self.tabPersos.currentChanged.connect(self.resizePersosInfos)
# Plots
@ -688,7 +714,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
w.setColumn(c)
self.tabPlot.setEnabled(False)
self.mdlPlots.updatePlotPersoButton()
self.mdlPersos.dataChanged.connect(self.mdlPlots.updatePlotPersoButton)
self.lstOutlinePlots.setPlotModel(self.mdlPlots)
self.lstOutlinePlots.setShowSubPlot(True)

View file

@ -15,7 +15,23 @@ class persosModel(QStandardItemModel):
#self._proxy.setSourceModel(self)
###############################################################################
# QUERRIES
# PERSOS QUERRIES
###############################################################################
def name(self, row):
return self.item(row, Perso.name.value).text()
def icon(self, row):
return self.item(row, Perso.name.value).icon()
def ID(self, row):
return self.item(row, Perso.ID.value).text()
def importance(self, row):
return self.item(row, Perso.importance.value).text()
###############################################################################
# GENERAL QUERRIES
###############################################################################
def getPersosByImportance(self):
@ -27,11 +43,9 @@ class persosModel(QStandardItemModel):
return persos
def getPersoNameByID(self, ID):
for i in range(self.rowCount()):
_ID = self.item(i, Perso.ID.value).text()
if _ID == ID or toInt(_ID) == ID:
name = self.item(i, Perso.name.value).text()
return name
index = self.getIndexFromID(ID)
if index.isValid():
return self.name(index.row())
return None
def getIndexFromID(self, ID):
@ -100,7 +114,7 @@ class persosModel(QStandardItemModel):
color = iconColor(item.icon())
else:
color = Qt.white
self.colorDialog = QColorDialog(color, self)
self.colorDialog = QColorDialog(color, self.mw)
color = self.colorDialog.getColor(color)
if color.isValid():
self.setPersoColor(item, color)

View file

@ -13,7 +13,6 @@ class plotModel(QStandardItemModel):
self.mw = mainWindow()
self.updatePlotPersoButton()
self.mw.mdlPersos.dataChanged.connect(self.updatePlotPersoButton)
####################################################################################################
# QUERIES #
@ -168,18 +167,14 @@ class plotModel(QStandardItemModel):
mpr = QSignalMapper(menu)
for i in range(self.mw.mdlPersos.rowCount()):
if self.mw.mdlPersos.item(i, Perso.ID.value):
a = QAction(self.mw.mdlPersos.item(i, Perso.name.value).text(), menu)
a.triggered.connect(mpr.map)
mpr.setMapping(a, int(self.mw.mdlPersos.item(i, Perso.ID.value).text()))
a = QAction(self.mw.mdlPersos.name(i), menu)
a.setIcon(self.mw.mdlPersos.icon(i))
a.triggered.connect(mpr.map)
mpr.setMapping(a, int(self.mw.mdlPersos.ID(i)))
imp = toInt(self.mw.mdlPersos.importance(i))
imp = self.mw.mdlPersos.item(i, Perso.importance.value)
if imp:
imp = toInt(imp.text())
else:
imp = 0
menus[2-imp].addAction(a)
menus[2-imp].addAction(a)
mpr.mapped.connect(self.addPlotPerso)
self.mw.btnAddPlotPerso.setMenu(menu)

View file

@ -53,10 +53,10 @@ def openReference(ref):
mw = mainWindow()
for i in range(mw.mdlPersos.rowCount()):
if mw.mdlPersos.item(i, Perso.ID.value).text() == _ref:
if mw.mdlPersos.ID(i) == _ref:
mw.tabMain.setCurrentIndex(2)
# FIXME: update after creating a custom persomodel
#mw.lstPersos.setCurrentRow(i)
item = mw.lstPersos.getItemByID(_ref)
mw.lstPersos.setCurrentItem(item)
return True
print("Ref not found")

View file

@ -372,39 +372,21 @@ class Ui_MainWindow(object):
self.label_4 = QtWidgets.QLabel(self.infos)
self.label_4.setObjectName("label_4")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_4)
self.txtPersoMotivation = QtWidgets.QPlainTextEdit(self.infos)
self.txtPersoMotivation.setObjectName("txtPersoMotivation")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.txtPersoMotivation)
self.label_5 = QtWidgets.QLabel(self.infos)
self.label_5.setObjectName("label_5")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_5)
self.txtPersoGoal = QtWidgets.QPlainTextEdit(self.infos)
self.txtPersoGoal.setObjectName("txtPersoGoal")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.txtPersoGoal)
self.label_6 = QtWidgets.QLabel(self.infos)
self.label_6.setObjectName("label_6")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.label_6)
self.txtPersoConflict = QtWidgets.QPlainTextEdit(self.infos)
self.txtPersoConflict.setObjectName("txtPersoConflict")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.txtPersoConflict)
self.label_7 = QtWidgets.QLabel(self.infos)
self.label_7.setObjectName("label_7")
self.formLayout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.label_7)
self.txtPersoEpiphany = QtWidgets.QPlainTextEdit(self.infos)
self.txtPersoEpiphany.setObjectName("txtPersoEpiphany")
self.formLayout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.txtPersoEpiphany)
self.label_24 = QtWidgets.QLabel(self.infos)
self.label_24.setObjectName("label_24")
self.formLayout.setWidget(6, QtWidgets.QFormLayout.LabelRole, self.label_24)
self.txtPersoSummarySentance = QtWidgets.QPlainTextEdit(self.infos)
self.txtPersoSummarySentance.setObjectName("txtPersoSummarySentance")
self.formLayout.setWidget(6, QtWidgets.QFormLayout.FieldRole, self.txtPersoSummarySentance)
self.label_8 = QtWidgets.QLabel(self.infos)
self.label_8.setObjectName("label_8")
self.formLayout.setWidget(7, QtWidgets.QFormLayout.LabelRole, self.label_8)
self.txtPersoSummaryPara = QtWidgets.QPlainTextEdit(self.infos)
self.txtPersoSummaryPara.setObjectName("txtPersoSummaryPara")
self.formLayout.setWidget(7, QtWidgets.QFormLayout.FieldRole, self.txtPersoSummaryPara)
self.horizontalLayout_21 = QtWidgets.QHBoxLayout()
self.horizontalLayout_21.setObjectName("horizontalLayout_21")
spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
@ -425,7 +407,7 @@ class Ui_MainWindow(object):
self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.sldPersoImportance)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.txtPersoName = QtWidgets.QLineEdit(self.infos)
self.txtPersoName = lineEditView(self.infos)
self.txtPersoName.setObjectName("txtPersoName")
self.horizontalLayout_3.addWidget(self.txtPersoName)
self.btnPersoColor = QtWidgets.QPushButton(self.infos)
@ -433,12 +415,30 @@ class Ui_MainWindow(object):
self.btnPersoColor.setObjectName("btnPersoColor")
self.horizontalLayout_3.addWidget(self.btnPersoColor)
self.formLayout.setLayout(0, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout_3)
self.txtPersoMotivation = textEditView(self.infos)
self.txtPersoMotivation.setObjectName("txtPersoMotivation")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.txtPersoMotivation)
self.txtPersoGoal = textEditView(self.infos)
self.txtPersoGoal.setObjectName("txtPersoGoal")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.txtPersoGoal)
self.txtPersoConflict = textEditView(self.infos)
self.txtPersoConflict.setObjectName("txtPersoConflict")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.txtPersoConflict)
self.txtPersoEpiphany = textEditView(self.infos)
self.txtPersoEpiphany.setObjectName("txtPersoEpiphany")
self.formLayout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.txtPersoEpiphany)
self.txtPersoSummarySentance = textEditView(self.infos)
self.txtPersoSummarySentance.setObjectName("txtPersoSummarySentance")
self.formLayout.setWidget(6, QtWidgets.QFormLayout.FieldRole, self.txtPersoSummarySentance)
self.txtPersoSummaryPara = textEditView(self.infos)
self.txtPersoSummaryPara.setObjectName("txtPersoSummaryPara")
self.formLayout.setWidget(7, QtWidgets.QFormLayout.FieldRole, self.txtPersoSummaryPara)
self.tabPersos.addTab(self.infos, "")
self.tab_11 = QtWidgets.QWidget()
self.tab_11.setObjectName("tab_11")
self.verticalLayout_17 = QtWidgets.QVBoxLayout(self.tab_11)
self.verticalLayout_17.setObjectName("verticalLayout_17")
self.txtPersoSummaryFull = QtWidgets.QPlainTextEdit(self.tab_11)
self.txtPersoSummaryFull = textEditView(self.tab_11)
self.txtPersoSummaryFull.setObjectName("txtPersoSummaryFull")
self.verticalLayout_17.addWidget(self.txtPersoSummaryFull)
self.horizontalLayout_22 = QtWidgets.QHBoxLayout()
@ -456,7 +456,7 @@ class Ui_MainWindow(object):
self.tab_19.setObjectName("tab_19")
self.horizontalLayout_30 = QtWidgets.QHBoxLayout(self.tab_19)
self.horizontalLayout_30.setObjectName("horizontalLayout_30")
self.txtPersoNotes = QtWidgets.QPlainTextEdit(self.tab_19)
self.txtPersoNotes = textEditView(self.tab_19)
self.txtPersoNotes.setObjectName("txtPersoNotes")
self.horizontalLayout_30.addWidget(self.txtPersoNotes)
self.tabPersos.addTab(self.tab_19, "")
@ -1176,13 +1176,13 @@ class Ui_MainWindow(object):
self.actCloseProject.setText(_translate("MainWindow", "Close project"))
from ui.views.plotTreeView import plotTreeView
from ui.views.outlineView import outlineView
from ui.views.persoTreeView import persoTreeView
from ui.views.lineEditView import lineEditView
from ui.views.textEditView import textEditView
from ui.sldImportance import sldImportance
from ui.editors.mainEditor import mainEditor
from ui.views.metadataView import metadataView
from ui.views.basicItemView import basicItemView
from ui.views.treeView import treeView
from ui.views.outlineView import outlineView
from ui.welcome import welcome
from ui.views.treeView import treeView
from ui.views.basicItemView import basicItemView
from ui.views.textEditView import textEditView
from ui.views.metadataView import metadataView
from ui.views.persoTreeView import persoTreeView
from ui.editors.mainEditor import mainEditor
from ui.sldImportance import sldImportance

View file

@ -748,9 +748,6 @@
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPlainTextEdit" name="txtPersoMotivation"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
@ -758,9 +755,6 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPlainTextEdit" name="txtPersoGoal"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
@ -768,9 +762,6 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPlainTextEdit" name="txtPersoConflict"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
@ -778,9 +769,6 @@
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPlainTextEdit" name="txtPersoEpiphany"/>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_24">
<property name="text">
@ -788,9 +776,6 @@
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QPlainTextEdit" name="txtPersoSummarySentance"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
@ -798,9 +783,6 @@
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QPlainTextEdit" name="txtPersoSummaryPara"/>
</item>
<item row="8" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_21">
<item>
@ -842,7 +824,7 @@
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="txtPersoName"/>
<widget class="lineEditView" name="txtPersoName"/>
</item>
<item>
<widget class="QPushButton" name="btnPersoColor">
@ -853,6 +835,24 @@
</item>
</layout>
</item>
<item row="2" column="1">
<widget class="textEditView" name="txtPersoMotivation"/>
</item>
<item row="3" column="1">
<widget class="textEditView" name="txtPersoGoal"/>
</item>
<item row="4" column="1">
<widget class="textEditView" name="txtPersoConflict"/>
</item>
<item row="5" column="1">
<widget class="textEditView" name="txtPersoEpiphany"/>
</item>
<item row="6" column="1">
<widget class="textEditView" name="txtPersoSummarySentance"/>
</item>
<item row="7" column="1">
<widget class="textEditView" name="txtPersoSummaryPara"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_11">
@ -861,7 +861,7 @@
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_17">
<item>
<widget class="QPlainTextEdit" name="txtPersoSummaryFull"/>
<widget class="textEditView" name="txtPersoSummaryFull"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_22">
@ -899,7 +899,7 @@
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_30">
<item>
<widget class="QPlainTextEdit" name="txtPersoNotes"/>
<widget class="textEditView" name="txtPersoNotes"/>
</item>
</layout>
</widget>

View file

@ -31,25 +31,17 @@ class cmbOutlinePersoChoser(QComboBox):
for importance in range(3):
self.addItem(l[importance])
# FIXME: segfault sometimes on QBrush next line
self.setItemData(self.count()-1, QBrush(QColor(Qt.darkBlue)), Qt.ForegroundRole)
self.setItemData(self.count()-1, QBrush(QColor(Qt.blue).lighter(190)), Qt.BackgroundRole)
item = self.model().item(self.count()-1)
item.setFlags(Qt.ItemIsEnabled)
for i in range(self.mdlPersos.rowCount()):
imp = self.mdlPersos.item(i, Perso.importance.value)
if imp:
imp = toInt(imp.text())
else:
imp = 0
imp = toInt(self.mdlPersos.importance(i))
if not 2-imp == importance: continue
item = self.mdlPersos.item(i, Perso.name.value)
item2 = self.mdlPersos.item(i, Perso.ID.value)
if item and item2: # Otherwise error while loading
self.addItem(item.icon(), item.text(), item2.text())
self.setItemData(i+1, item.text(), Qt.ToolTipRole)
self.addItem(self.mdlPersos.icon(i), self.mdlPersos.name(i), self.mdlPersos.ID(i))
self.setItemData(self.count() - 1, self.mdlPersos.name(i), Qt.ToolTipRole)
self._various = False

View file

@ -79,15 +79,11 @@ class outlineBasics(QAbstractItemView):
mpr = QSignalMapper(self.menuPOV)
for i in range(mw.mdlPersos.rowCount()):
a = QAction(mw.mdlPersos.item(i, Perso.name.value).text(), self.menuPOV)
a = QAction(mw.mdlPersos.icon(i), mw.mdlPersos.name(i), self.menuPOV)
a.triggered.connect(mpr.map)
mpr.setMapping(a, int(mw.mdlPersos.item(i, Perso.ID.value).text()))
mpr.setMapping(a, int(mw.mdlPersos.ID(i)))
imp = mw.mdlPersos.item(i, Perso.importance.value)
if imp:
imp = toInt(imp.text())
else:
imp = 0
imp = toInt(mw.mdlPersos.importance(i))
menus[2-imp].addAction(a)

View file

@ -98,7 +98,7 @@ class outlinePersoDelegate(QStyledItemDelegate):
item = QModelIndex()
for i in range(self.mdlPersos.rowCount()):
if self.mdlPersos.item(i, Perso.ID.value).text() == index.data(Perso.name.value):
if self.mdlPersos.ID(i) == index.data():
item = self.mdlPersos.index(i, Perso.name.value)
opt = QStyleOptionViewItem(option)
@ -124,30 +124,23 @@ class outlinePersoDelegate(QStyledItemDelegate):
def setEditorData(self, editor, index):
#editor.addItem("")
editor.addItem(QIcon.fromTheme("edit-delete"), self.tr("None"))
#for i in range(self.mdlPersos.rowCount()):
#editor.addItem(self.mdlPersos.item(i, Perso.name.value).text(), self.mdlPersos.item(i, Perso.ID.value).text())
#editor.setItemData(i+1, self.mdlPersos.item(i, Perso.name.value).text(), Qt.ToolTipRole)
l = [self.tr("Main"), self.tr("Secondary"), self.tr("Minor")]
for importance in range(3):
editor.addItem(l[importance])
editor.setItemData(editor.count()-1, QBrush(Qt.darkBlue), Qt.ForegroundRole)
editor.setItemData(editor.count()-1, QBrush(QColor(Qt.blue).lighter(190)), Qt.BackgroundRole)
item = editor.model().item(editor.count()-1)
editor.setItemData(editor.count() - 1, QBrush(Qt.darkBlue), Qt.ForegroundRole)
editor.setItemData(editor.count() - 1, QBrush(QColor(Qt.blue).lighter(190)), Qt.BackgroundRole)
item = editor.model().item(editor.count() - 1)
item.setFlags(Qt.ItemIsEnabled)
for i in range(self.mdlPersos.rowCount()):
imp = self.mdlPersos.item(i, Perso.importance.value)
if imp:
imp = toInt(imp.text())
else:
imp = 0
imp = toInt(self.mdlPersos.importance(i))
if not 2-imp == importance: continue
try:
editor.addItem(self.mdlPersos.item(i, Perso.name.value).icon(), self.mdlPersos.item(i, Perso.name.value).text(), self.mdlPersos.item(i, Perso.ID.value).text())
editor.setItemData(i+1, self.mdlPersos.item(i, Perso.name.value).text(), Qt.ToolTipRole)
except:
pass
#try:
editor.addItem(self.mdlPersos.icon(i), self.mdlPersos.name(i), self.mdlPersos.ID(i))
editor.setItemData(editor.count() - 1, self.mdlPersos.name(i), Qt.ToolTipRole)
#except:
#pass
editor.setCurrentIndex(editor.findData(index.data()))
editor.showPopup()
@ -156,12 +149,6 @@ class outlinePersoDelegate(QStyledItemDelegate):
val = editor.currentData()
model.setData(index, val)
#def displayText(self, value, locale):
#for i in range(self.mdlPersos.rowCount()):
#if self.mdlPersos.item(i, Perso.ID.value).text() == value:
#return self.mdlPersos.item(i, Perso.name.value).text()
#return ""
def paint(self, painter, option, index):
##option.rect.setWidth(option.rect.width() - 18)
#QStyledItemDelegate.paint(self, painter, option, index)
@ -169,7 +156,7 @@ class outlinePersoDelegate(QStyledItemDelegate):
item = QModelIndex()
for i in range(self.mdlPersos.rowCount()):
if self.mdlPersos.item(i, Perso.ID.value).text() == index.data(Perso.name.value):
if self.mdlPersos.ID(i) == index.data():
item = self.mdlPersos.index(i, Perso.name.value)
opt = QStyleOptionViewItem(option)

View file

@ -17,6 +17,8 @@ class persoTreeView(QTreeWidget):
self._updating = False
self.setRootIsDecorated(False)
self.setIndentation(10)
self.setHeaderHidden(True)
self.setIconSize(QSize(24, 24))
self.setColumnCount(1)
self._rootItem = QTreeWidgetItem()
@ -46,7 +48,7 @@ class persoTreeView(QTreeWidget):
self.updateItems()
def updateMaybe2(self, parent, first, last):
"Rows inserted or removed"
#Rows inserted or removed, we update only if they are topLevel rows.
if parent == QModelIndex():
self.updateItems()
@ -58,8 +60,14 @@ class persoTreeView(QTreeWidget):
sub = item.child(c)
ID = sub.data(0, Qt.UserRole)
if ID:
# Update name
name = self._model.getPersoNameByID(ID)
sub.setText(0, name)
# Update icon
px = QPixmap(32, 32)
color = QColor(self._model.getPersoColorByID(ID))
px.fill(color)
sub.setIcon(0, QIcon(px))
def updateItems(self):
if not self._model:
@ -102,9 +110,11 @@ class persoTreeView(QTreeWidget):
self._updating = False
def getItemByID(self, ID):
for i in range(self.topLevelItemCount()):
if self.topLevelItem(i).data(0, Qt.UserRole) == ID:
return self.topLevelItem(i)
for t in range(self.topLevelItemCount()):
for i in range(self.topLevelItem(t).childCount()):
item = self.topLevelItem(t).child(i)
if item.data(0, Qt.UserRole) == ID:
return item
def currentPersoIndex(self):
ID = None