From 28f6acb30b0c4ec7471e3cfc339cfdcd92b8da2c Mon Sep 17 00:00:00 2001 From: Olivier Keshavjee Date: Sun, 21 Jun 2015 11:54:52 +0200 Subject: [PATCH] Show perso color in comboboxes --- src/mainWindow.py | 2 +- src/ui/views/cmbOutlinePersoChoser.py | 5 +--- src/ui/views/outlineDelegates.py | 40 ++++++++++++++++++++------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/mainWindow.py b/src/mainWindow.py index b95d4e9e..0c14bb8e 100644 --- a/src/mainWindow.py +++ b/src/mainWindow.py @@ -95,7 +95,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.mprInfos.setCurrentIndex(0) # Persos - self.mdlPersos = QStandardItemModel(0, 10) + self.mdlPersos = QStandardItemModel(0, 0) self.mdlPersosProxy = persosProxyModel() # None #self.mdlPersoProxyFilter = QSortFilterProxyModel() if self.mdlPersosProxy: diff --git a/src/ui/views/cmbOutlinePersoChoser.py b/src/ui/views/cmbOutlinePersoChoser.py index db3da45e..d715f6b8 100644 --- a/src/ui/views/cmbOutlinePersoChoser.py +++ b/src/ui/views/cmbOutlinePersoChoser.py @@ -1,9 +1,6 @@ #!/usr/bin/env python #--!-- coding: utf8 --!-- - - - from qt import * from enums import * from functions import * @@ -46,7 +43,7 @@ class cmbOutlinePersoChoser(QComboBox): if not 2-imp == importance: continue try: - self.addItem(self.mdlPersos.item(i, Perso.name.value).text(), self.mdlPersos.item(i, Perso.ID.value).text()) + self.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()) self.setItemData(i+1, self.mdlPersos.item(i, Perso.name.value).text(), Qt.ToolTipRole) except: pass diff --git a/src/ui/views/outlineDelegates.py b/src/ui/views/outlineDelegates.py index 8d275a13..beb86b3c 100644 --- a/src/ui/views/outlineDelegates.py +++ b/src/ui/views/outlineDelegates.py @@ -94,7 +94,17 @@ class outlinePersoDelegate(QStyledItemDelegate): self.mdlPersos = mdlPersos def sizeHint(self, option, index): - s = QStyledItemDelegate.sizeHint(self, option, index) + #s = QStyledItemDelegate.sizeHint(self, option, index) + + item = QModelIndex() + for i in range(self.mdlPersos.rowCount()): + if self.mdlPersos.item(i, Perso.ID.value).text() == index.data(Perso.name.value): + item = self.mdlPersos.index(i, Perso.name.value) + + opt = QStyleOptionViewItem(option) + self.initStyleOption(opt, item) + s = QStyledItemDelegate.sizeHint(self, opt, item) + if s.width() > 200: s.setWidth(200) elif s.width() < 100: @@ -134,7 +144,7 @@ class outlinePersoDelegate(QStyledItemDelegate): if not 2-imp == importance: continue try: - editor.addItem(self.mdlPersos.item(i, Perso.name.value).text(), self.mdlPersos.item(i, Perso.ID.value).text()) + 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 @@ -146,16 +156,26 @@ 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 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) - #option.rect.setWidth(option.rect.width() + 18) + ##option.rect.setWidth(option.rect.width() - 18) + #QStyledItemDelegate.paint(self, painter, option, index) + ##option.rect.setWidth(option.rect.width() + 18) + + item = QModelIndex() + for i in range(self.mdlPersos.rowCount()): + if self.mdlPersos.item(i, Perso.ID.value).text() == index.data(Perso.name.value): + item = self.mdlPersos.index(i, Perso.name.value) + + opt = QStyleOptionViewItem(option) + self.initStyleOption(opt, item) + + qApp.style().drawControl(QStyle.CE_ItemViewItem, opt, painter) if index.isValid() and index.internalPointer().data(Outline.POV.value) not in ["", None]: opt = QStyleOptionComboBox()