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