diff --git a/src/functions.py b/src/functions.py
index 17a2b176..2bea2b7d 100644
--- a/src/functions.py
+++ b/src/functions.py
@@ -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)
diff --git a/src/mainWindow.py b/src/mainWindow.py
index 32ad1273..78529ff1 100644
--- a/src/mainWindow.py
+++ b/src/mainWindow.py
@@ -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 #
diff --git a/src/ui/mainWindow.py b/src/ui/mainWindow.py
index 1c33d2e4..7ec4f4d0 100644
--- a/src/ui/mainWindow.py
+++ b/src/ui/mainWindow.py
@@ -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
diff --git a/src/ui/mainWindow.ui b/src/ui/mainWindow.ui
index 1284ac68..8766ae3a 100644
--- a/src/ui/mainWindow.ui
+++ b/src/ui/mainWindow.ui
@@ -18,7 +18,7 @@
-
- 6
+ 2
true
@@ -570,9 +570,6 @@
- -
-
-
-
@@ -679,6 +676,20 @@
+ -
+
+
-
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/test_project/outline.xml b/test_project/outline.xml
index 23b138b0..c6e5bb6a 100644
--- a/test_project/outline.xml
+++ b/test_project/outline.xml
@@ -37,7 +37,7 @@
-
+
diff --git a/test_project/perso.xml b/test_project/perso.xml
index 9ad09d86..66244ee4 100644
--- a/test_project/perso.xml
+++ b/test_project/perso.xml
@@ -18,11 +18,12 @@
+
- Albert le vert
+ Albert le vert
0
2
@@ -36,9 +37,10 @@
Pour voir.
+
- Ginette La Barbette
+ Ginette La Barbette
1
1
@@ -49,11 +51,12 @@ Pour voir.
+
- Nouveau perso avec un nom très très long pour voir comment ça fait
+ Nouveau perso avec un nom très très long pour voir comment ça fait
2
-
+ 1
@@ -62,6 +65,7 @@ Pour voir.
+