Adds: perso color

This commit is contained in:
Olivier Keshavjee 2015-06-15 16:35:23 +02:00
parent 59073fa9dd
commit ed95481ead
6 changed files with 105 additions and 31 deletions

View file

@ -1,8 +1,5 @@
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
@ -58,7 +55,11 @@ def mainWindow():
def iconColor(icon):
"Returns a QRgb from a QIcon, assuming its all the same color"
return QColor(QImage(icon.pixmap(5, 5)).pixel(2, 2))
px = icon.pixmap(5, 5)
if px.width() != 0:
return QColor(QImage(px).pixel(2, 2))
else:
return Qt.transparent
def iconFromColor(color):
px = QPixmap(32, 32)

View file

@ -95,21 +95,25 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Persos
self.mdlPersos = QStandardItemModel(0, 10)
self.mdlPersosProxy = persosProxyModel()
self.mdlPersosProxy = None #persosProxyModel()
#self.mdlPersoProxyFilter = QSortFilterProxyModel()
self.mdlPersosProxy.setSourceModel(self.mdlPersos)
if self.mdlPersosProxy:
self.mdlPersosProxy.setSourceModel(self.mdlPersos)
self.lstPersos.setModel(self.mdlPersosProxy)
else:
self.lstPersos.setModel(self.mdlPersos)
self.mdlPersosInfos = QStandardItemModel(1, 0)
self.mdlPersosInfos.insertColumn(0, [QStandardItem("ID")])
self.mdlPersosInfos.setHorizontalHeaderLabels(["Description"])
#self.lstPersos.setModel(self.mdlPersos)
self.lstPersos.setModel(self.mdlPersosProxy)
self.tblPersoInfos.setModel(self.mdlPersosInfos)
self.tblPersoInfos.setRowHidden(0, True)
self.btnAddPerso.clicked.connect(self.createPerso)
self.btnRmPerso.clicked.connect(self.removePerso)
self.btnPersoColor.clicked.connect(self.setPersoColor)
self.btnPersoAddInfo.clicked.connect(lambda: self.mdlPersosInfos.insertRow(self.mdlPersosInfos.rowCount()))
self.mprPersos = QDataWidgetMapper()
self.mprPersos.setModel(self.mdlPersos)
@ -142,7 +146,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
(Qt.yellow, self.tr("Idea")),
(Qt.green, self.tr("Note")),
(Qt.blue, self.tr("Chapter")),
(Qt.red, self.tr("Scene"))
(Qt.red, self.tr("Scene")),
(Qt.cyan, self.tr("Research"))
]:
self.mdlLabels.appendRow(QStandardItem(iconFromColor(color), text))
@ -288,14 +293,25 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.mdlPersos.setItem(i, Perso.ID.value, item)
def removePerso(self):
i = self.mdlPersosProxy.mapToSource(self.lstPersos.currentIndex())
if self.mdlPersosProxy:
i = self.mdlPersosProxy.mapToSource(self.lstPersos.currentIndex())
else:
i = self.lstPersos.currentIndex()
self.mdlPersos.takeRow(i.row())
self.mdlPersosInfos.takeColumn(i.row()+1)
def changeCurrentPerso(self, trash=None):
idx = self.mdlPersosProxy.mapToSource(self.lstPersos.currentIndex())
if self.mdlPersosProxy:
idx = self.mdlPersosProxy.mapToSource(self.lstPersos.currentIndex())
else:
idx = self.lstPersos.currentIndex()
self.mprPersos.setCurrentModelIndex(idx)
# Button color
self.updatePersoColor()
# detailed infos
pid = self.mdlPersos.item(idx.row(), Perso.ID.value).text()
for c in range(self.mdlPersosInfos.columnCount()):
pid2 = self.mdlPersosInfos.item(0, c).text()
@ -303,13 +319,48 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.resizePersosInfos()
def updatePersoColor(self):
if self.mdlPersosProxy:
idx = self.mdlPersosProxy.mapToSource(self.lstPersos.currentIndex())
else:
idx = self.lstPersos.currentIndex()
px = QPixmap(32, 32)
icon = self.mdlPersos.item(idx.row()).icon()
if icon:
px.fill(iconColor(icon))
self.btnPersoColor.setIcon(QIcon(px))
def resizePersosInfos(self):
self.tblPersoInfos.resizeColumnToContents(0)
w = self.tblPersoInfos.viewport().width()
w2 = self.tblPersoInfos.columnWidth(0)
current = self.mdlPersosProxy.mapToSource(self.lstPersos.currentIndex()).row() + 1
if self.mdlPersosProxy:
current = self.mdlPersosProxy.mapToSource(self.lstPersos.currentIndex()).row() + 1
else:
current = self.lstPersos.currentIndex().row() + 1
self.tblPersoInfos.setColumnWidth(current, w - w2)
def setPersoColor(self):
if self.mdlPersosProxy:
idx = self.mdlPersosProxy.mapToSource(self.lstPersos.currentIndex())
else:
idx = self.lstPersos.currentIndex()
item = self.mdlPersos.item(idx.row(), Perso.name.value)
if item:
color = iconColor(item.icon())
else:
color = Qt.white
self.colorDialog = QColorDialog(color, self)
color = self.colorDialog.getColor(color)
px = QPixmap(32, 32)
px.fill(color)
self.mdlPersos.item(idx.row(), Perso.name.value).setIcon(QIcon(px))
self.updatePersoColor()
####################################################################################################
# GENERAL #

View file

@ -302,9 +302,6 @@ class Ui_MainWindow(object):
self.label_3 = QtWidgets.QLabel(self.infos)
self.label_3.setObjectName("label_3")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_3)
self.txtPersoName = QtWidgets.QLineEdit(self.infos)
self.txtPersoName.setObjectName("txtPersoName")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.txtPersoName)
self.label_18 = QtWidgets.QLabel(self.infos)
self.label_18.setObjectName("label_18")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_18)
@ -362,6 +359,16 @@ class Ui_MainWindow(object):
self.sldPersoImportance.setSizePolicy(sizePolicy)
self.sldPersoImportance.setObjectName("sldPersoImportance")
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.setObjectName("txtPersoName")
self.horizontalLayout_3.addWidget(self.txtPersoName)
self.btnPersoColor = QtWidgets.QPushButton(self.infos)
self.btnPersoColor.setText("")
self.btnPersoColor.setObjectName("btnPersoColor")
self.horizontalLayout_3.addWidget(self.btnPersoColor)
self.formLayout.setLayout(0, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout_3)
self.tabPersos.addTab(self.infos, "")
self.tab_11 = QtWidgets.QWidget()
self.tab_11.setObjectName("tab_11")
@ -1042,7 +1049,7 @@ class Ui_MainWindow(object):
self.menubar.addAction(self.menuHelp.menuAction())
self.retranslateUi(MainWindow)
self.tabMain.setCurrentIndex(6)
self.tabMain.setCurrentIndex(2)
self.tabSummary.setCurrentIndex(0)
self.tabPersos.setCurrentIndex(0)
self.tabPlot.setCurrentIndex(0)
@ -1211,11 +1218,11 @@ class Ui_MainWindow(object):
self.actLabels.setText(_translate("MainWindow", "Labels..."))
self.actStatus.setText(_translate("MainWindow", "Status..."))
from ui.views.outlineView import outlineView
from ui.views.textEditView import textEditView
from ui.views.metadataView import metadataView
from ui.views.lineEditView import lineEditView
from ui.sldImportance import sldImportance
from ui.views.basicItemView import basicItemView
from ui.editors.editorWidget import editorWidget
from ui.views.treeView import treeView
from ui.sldImportance import sldImportance
from ui.views.lineEditView import lineEditView
from ui.editors.editorWidget import editorWidget
from ui.views.textEditView import textEditView
from ui.views.outlineView import outlineView
from ui.views.metadataView import metadataView
from ui.views.basicItemView import basicItemView

View file

@ -18,7 +18,7 @@
<item>
<widget class="QTabWidget" name="tabMain">
<property name="currentIndex">
<number>6</number>
<number>2</number>
</property>
<property name="documentMode">
<bool>true</bool>
@ -570,9 +570,6 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="txtPersoName"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
@ -679,6 +676,20 @@
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="txtPersoName"/>
</item>
<item>
<widget class="QPushButton" name="btnPersoColor">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_11">

View file

@ -37,7 +37,7 @@
</outlineItem>
<outlineItem title="MOIMOIMOI" type="text" summarySentance="Résumé" notes="None" compile="2" text="Là ça joue, et on est content. Pas de raison de se plaindre. **OK**?&#10;&#10;Ben voilà, suffisait de demander ! " wordCount="21" setGoal="250"/>
</outlineItem>
<outlineItem title="Nouveau A" type="folder" POV="1" label="5" status="1" compile="2" wordCount="604">
<outlineItem title="Nouveau A" type="folder" POV="0" label="5" status="1" compile="2" wordCount="604">
<outlineItem title="Nouveau" type="text" label="0" compile="2" text="ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" wordCount="211"/>
<outlineItem title="Nouveau Avec un nom franchement très long et on est mal barré pour l'imprimer correctement" type="text" POV="2" label="0" compile="2" text="ASDASd ASD ASDASd ASD " wordCount="4"/>
<outlineItem title="B" type="text" label="0" status="0" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>

View file

@ -18,11 +18,12 @@
<label row="8" text="summaryPara"/>
<label row="9" text="summaryFull"/>
<label row="10" text="notes"/>
<label row="11" text="color"/>
</horizontal>
</header>
<data>
<row row="0">
<col col="0">Albert le vert</col>
<col col="0" color="#ffff0000">Albert le vert</col>
<col col="1">0</col>
<col col="2">2</col>
<col col="3"/>
@ -36,9 +37,10 @@
Pour voir.</col>
<col col="11"/>
</row>
<row row="1">
<col col="0">Ginette La Barbette</col>
<col col="0" color="#ff18f0f3">Ginette La Barbette</col>
<col col="1">1</col>
<col col="2">1</col>
<col col="3"/>
@ -49,11 +51,12 @@ Pour voir.</col>
<col col="8"/>
<col col="9"/>
<col col="10"/>
<col col="11"/>
</row>
<row row="2">
<col col="0">Nouveau perso avec un nom très très long pour voir comment ça fait</col>
<col col="0" color="#ff0d05f0">Nouveau perso avec un nom très très long pour voir comment ça fait</col>
<col col="1">2</col>
<col col="2"/>
<col col="2">1</col>
<col col="3"/>
<col col="4"/>
<col col="5"/>
@ -62,6 +65,7 @@ Pour voir.</col>
<col col="8"/>
<col col="9"/>
<col col="10"/>
<col col="11"/>
</row>
</data>
</model>