From 8d7877e41503960e5120142a5a3b154fd5cb4469 Mon Sep 17 00:00:00 2001 From: Olivier Keshavjee Date: Thu, 4 Jun 2015 02:04:47 +0200 Subject: [PATCH] Plan view almost working --- src/enums.py | 12 ++++ src/loadSave.py | 4 +- src/mainWindow.py | 62 +++++++++++++++++++- src/models/outlineModel.py | 46 +++++++-------- src/ui/cmbPersoChoser.py | 65 +++++++++++++++++++++ src/ui/mainWindow.py | 103 +++++++++++++++++++++------------ src/ui/mainWindow.ui | 94 +++++++++++++++++++++++++----- src/ui/sldImportance.py | 1 - src/ui/treeOutlineDelegates.py | 47 +++++++++++++++ test_project/outline.xml | 22 +++++-- test_project/perso.xml | 28 +++++++++ test_project/persoInfos.xml | 8 +++ 12 files changed, 409 insertions(+), 83 deletions(-) create mode 100644 src/ui/cmbPersoChoser.py create mode 100644 src/ui/treeOutlineDelegates.py diff --git a/src/enums.py b/src/enums.py index f7119810..46fcc5bf 100644 --- a/src/enums.py +++ b/src/enums.py @@ -24,3 +24,15 @@ class Perso(Enum): summaryFull = 9 notes = 10 + +class Outline(Enum): + title = 0 + ID = 1 + type = 2 + summarySentance = 3 + summaryFull = 4 + POV = 5 + notes = 6 + status = 7 + compile = 8 + text = 9 diff --git a/src/loadSave.py b/src/loadSave.py index 5082d951..de3d0454 100644 --- a/src/loadSave.py +++ b/src/loadSave.py @@ -17,13 +17,13 @@ def saveStandardItemModelXML(mdl, xml): for x in range(mdl.rowCount()): vH = ET.SubElement(vHeader, "label") vH.attrib["row"] = unicode(x) - vH.attrib["text"] = mdl.headerData(x, Qt.Vertical) + vH.attrib["text"] = unicode(mdl.headerData(x, Qt.Vertical)) hHeader = ET.SubElement(header, "horizontal") for y in range(mdl.columnCount()): hH = ET.SubElement(hHeader, "label") hH.attrib["row"] = unicode(y) - hH.attrib["text"] = mdl.headerData(y, Qt.Horizontal) + hH.attrib["text"] = unicode(mdl.headerData(y, Qt.Horizontal)) # Data data = ET.SubElement(root, "data") diff --git a/src/mainWindow.py b/src/mainWindow.py index 7efd6a9b..0f9607dc 100644 --- a/src/mainWindow.py +++ b/src/mainWindow.py @@ -8,6 +8,7 @@ from qt import * from ui.mainWindow import * from ui.helpLabel import helpLabel +from ui.treeOutlineDelegates import * from loadSave import * from enums import * from models.outlineModel import * @@ -119,17 +120,61 @@ class MainWindow(QMainWindow, Ui_MainWindow): # Outline self.mdlOutline = outlineModel() - #self.mdlOutline.setHorizontalHeaderLabels( - #[i.name for i in Outline]) self.treeRedacOutline.setModel(self.mdlOutline) self.treePlanOutline.setModel(self.mdlOutline) + self.treePlanOutlinePersoDelegate = treeOutlinePersoDelegate(self.mdlPersos) + self.treePlanOutline.setItemDelegateForColumn(Outline.POV.value, self.treePlanOutlinePersoDelegate) + self.treePlanOutlineCompileDelegate = treeOutlineCompileDelegate() + self.treePlanOutline.setItemDelegateForColumn(Outline.compile.value, self.treePlanOutlineCompileDelegate) + self.cmbPlanPOV.setModels(self.mdlPersos, self.mdlOutline) + self.treePlanOutline.header().setSectionResizeMode(QHeaderView.ResizeToContents) + #self.treePlanOutline.header().setSectionResizeMode(QHeaderView.Interactive) + #self.treePlanOutline.header().sectionResized.connect(self.outlinePlanResizeTree) + + self.mprPlan = QDataWidgetMapper() + self.mprPlan.setModel(self.mdlOutline) + mapping = [ + (self.txtPlanSummarySentance, Outline.summarySentance.value), + (self.txtPlanSummaryFull, Outline.summaryFull.value) + ] + for w, i in mapping: + self.mprPlan.addMapping(w, i) + self.treePlanOutline.selectionModel().currentChanged.connect(self.mprPlan.setCurrentModelIndex) + self.treePlanOutline.selectionModel().currentChanged.connect(self.cmbPlanPOV.setCurrentModelIndex) + self.treeRedacOutline.setSelectionModel(self.treePlanOutline.selectionModel()) for c in range(1, self.mdlOutline.columnCount()): self.treeRedacOutline.hideColumn(c) self.treePlanOutline.hideColumn(c) + for c in [Outline.POV.value, Outline.status.value, Outline.compile.value]: + self.treePlanOutline.showColumn(c) self.btnRedacAddFolder.clicked.connect(lambda: self.outlineAddItem("folder")) + self.btnPlanAddFolder.clicked.connect(lambda: self.outlineAddItem("folder")) self.btnRedacAddScene.clicked.connect(lambda: self.outlineAddItem("scene")) + self.btnPlanAddScene.clicked.connect(lambda: self.outlineAddItem("scene")) self.btnRedacRemoveItem.clicked.connect(self.outlineRemoveItems) + self.btnPlanRemoveItem.clicked.connect(self.outlineRemoveItems) + + self.cmbRedacPOV.setModels(self.mdlPersos, self.mdlOutline) + self.mprOutline = QDataWidgetMapper() + self.mprOutline.setModel(self.mdlOutline) + mapping = [ + (self.txtRedacText, Outline.text.value), + (self.txtRedacSummarySentance, Outline.summarySentance.value), + (self.txtRedacSummaryFull, Outline.summaryFull.value), + (self.txtRedacNotes, Outline.notes.value), + (self.cmbRedacStatus, Outline.status.value), + (self.chkRedacCompile, Outline.compile.value), + (self.txtRedacTitle, Outline.title.value) + ] + for w, i in mapping: + self.mprOutline.addMapping(w, i) + + self.treeRedacOutline.selectionModel().currentChanged.connect(self.mprOutline.setCurrentModelIndex) + self.treeRedacOutline.selectionModel().currentChanged.connect(self.cmbRedacPOV.setCurrentModelIndex) + self.treeRedacOutline.selectionModel().currentChanged.connect(lambda idx: self.lblRedacPOV.setHidden(idx.internalPointer().isFolder())) + self.treeRedacOutline.selectionModel().currentChanged.connect(lambda idx: self.cmbRedacPOV.setHidden(idx.internalPointer().isFolder())) + #Debug self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"]) @@ -157,6 +202,18 @@ class MainWindow(QMainWindow, Ui_MainWindow): for idx in self.treeRedacOutline.selectedIndexes(): if idx.isValid(): self.mdlOutline.removeIndex(idx) + + def outlinePlanResizeTree(self, **kargs): + print("Coucou") + stretch = Outline.title.value + w2 = 0 + for c in range(self.mdlOutline.columnCount()): + if not self.treePlanOutline.isColumnHidden(c) and c <> stretch: + self.treePlanOutline.resizeColumnToContents(c) + w2 += self.treePlanOutline.columnWidth(c) + + w = self.treePlanOutline.viewport().width() + self.treePlanOutline.setColumnWidth(stretch, w - w2) #################################################################################################### @@ -339,7 +396,6 @@ class MainWindow(QMainWindow, Ui_MainWindow): ] for widget, text in references: - print(text) label = helpLabel(text) self.actShowHelp.toggled.connect(label.setVisible) widget.layout().insertWidget(0, label) diff --git a/src/models/outlineModel.py b/src/models/outlineModel.py index d00a3293..f9b94974 100644 --- a/src/models/outlineModel.py +++ b/src/models/outlineModel.py @@ -5,23 +5,11 @@ from __future__ import print_function from __future__ import unicode_literals from qt import * +from enums import * from enum import Enum from lxml import etree as ET -class Outline(Enum): - title = 0 - ID = 1 - type = 2 - summarySentance = 3 - summaryFull = 4 - POV = 5 - notes = 6 - status = 7 - compile = 8 - text = 9 - - class outlineModel(QAbstractItemModel): def __init__(self): QAbstractItemModel.__init__(self) @@ -43,7 +31,6 @@ class outlineModel(QAbstractItemModel): return self.createIndex(row, column, childItem) else: return QModelIndex() - def parent(self, index=QModelIndex()): if not index.isValid(): @@ -99,17 +86,22 @@ class outlineModel(QAbstractItemModel): # http://doc.qt.io/qt-5/model-view-programming.html#using-drag-and-drop-with-item-views def flags(self, index): + #FIXME when dragging folders, sometimes flags is not called + flags = QAbstractItemModel.flags(self, index) | Qt.ItemIsEditable if index.isValid() and index.internalPointer().isFolder(): - flags |= Qt.ItemIsDropEnabled | Qt.ItemIsDragEnabled + flags |= Qt.ItemIsDragEnabled | Qt.ItemIsDropEnabled elif index.isValid(): flags |= Qt.ItemIsDragEnabled else: flags |= Qt.ItemIsDropEnabled - + + if index.isValid() and index.column() == Outline.compile.value: + flags |= Qt.ItemIsUserCheckable + return flags def mimeTypes(self): @@ -117,13 +109,12 @@ class outlineModel(QAbstractItemModel): def mimeData(self, indexes): mimeData = QMimeData() - #encodedData = QByteArray() - #stream = QDataStream(encodedData, QIODevice.WriteOnly) encodedData = "" root = ET.Element("outlineItems") + for index in indexes: - if index.isValid(): + if index.isValid() and index.column() == 0: item = ET.XML(index.internalPointer().toXML()) root.append(item) @@ -165,6 +156,7 @@ class outlineModel(QAbstractItemModel): beginRow = self.rowCount() + 1 encodedData = str(data.data("application/xml")) + root = ET.XML(encodedData) if root.tag <> "outlineItems": @@ -290,7 +282,9 @@ class outlineItem(): def data(self, column, role=Qt.DisplayRole): if role == Qt.DisplayRole or role == Qt.EditRole: - if Outline(column) in self._data: + if column == Outline.compile.value: + return self.data(column, Qt.CheckStateRole) + elif Outline(column) in self._data: return self._data[Outline(column)] else: return None @@ -299,9 +293,15 @@ class outlineItem(): return QIcon.fromTheme("folder") elif self.isScene(): return QIcon.fromTheme("document-new") + + elif role == Qt.CheckStateRole and column == Outline.compile.value: + if Outline(column) in self._data and self._data[Outline(column)]: + return Qt.Checked + else: + return Qt.Unchecked def setData(self, column, data): - self._data[Outline(column)] = unicode(data.toString()) + self._data[Outline(column)] = data def row(self): if self.parent: @@ -332,7 +332,7 @@ class outlineItem(): for attrib in Outline: val = self.data(attrib) if val: - item.set(attrib.name, val) + item.set(attrib.name, unicode(val)) for i in self.childItems: item.append(ET.XML(i.toXML())) @@ -344,7 +344,7 @@ class outlineItem(): for k in root.attrib: if k in Outline.__members__: - self._data[Outline.__members__[k]] = root.attrib[k] + self._data[Outline.__members__[k]] = unicode(root.attrib[k]) for child in root: item = outlineItem(xml=ET.tostring(child)) diff --git a/src/ui/cmbPersoChoser.py b/src/ui/cmbPersoChoser.py new file mode 100644 index 00000000..f4df80d8 --- /dev/null +++ b/src/ui/cmbPersoChoser.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python +#--!-- coding: utf8 --!-- + +from __future__ import print_function +from __future__ import unicode_literals + +from qt import * +from enums import * + +class cmbPersoChoser(QComboBox): + + def __init__(self, parent=None): + QComboBox.__init__(self, parent) + self.activated[int].connect(self.changed) + self.currentModelIndex = None + + def setModels(self, mdlPersos, mdlOutline): + self.mdlPersos = mdlPersos + self.mdlPersos.dataChanged.connect(self.updateItems) + self.mdlOutline = mdlOutline + self.mdlOutline.dataChanged.connect(self.updateSelectedItem) + + def updateSelectedItem(self, idx1=None, idx2=None): + if not self.currentModelIndex: + self.setCurrentIndex(0) + else: + item = self.currentModelIndex.internalPointer() + POV = item.data(Outline.POV) + idx = self.findData(POV) + if idx <> -1: + self.setCurrentIndex(idx) + else: + self.setCurrentIndex(0) + + def changed(self, idx): + if self.currentModelIndex: + modelIndex = self.mdlOutline.index(self.currentModelIndex.row(), Outline.POV.value, self.currentModelIndex.parent()) + self.mdlOutline.setData(modelIndex, self.currentData()) + + def setCurrentModelIndex(self, idx): + self.currentModelIndex = idx + self.updateSelectedItem() + + def updateItems(self): + self.clear() + self.addItem("") + for i in range(self.mdlPersos.rowCount()): + try: + self.addItem(self.mdlPersos.item(i, Perso.name.value).text(), self.mdlPersos.item(i, Perso.ID.value).text()) + except: + pass + if self.currentModelIndex: + self.updateSelectedItem() + + #def setPOV(self, POV): + #idx = self.findData(POV) + #if idx <> -1: + #self.setCurrentIndex(idx) + #else: + #self.setCurrentIndex(0) + #print("cmbPersoChoser: POV {} not found.".format(POV)) + + #def getPOV(self): + #print("Getting data") + #return self.currentData() \ No newline at end of file diff --git a/src/ui/mainWindow.py b/src/ui/mainWindow.py index 13faabc5..340cd393 100644 --- a/src/ui/mainWindow.py +++ b/src/ui/mainWindow.py @@ -286,6 +286,7 @@ class Ui_MainWindow(object): self.btnRmPerso.setObjectName("btnRmPerso") self.horizontalLayout_14.addWidget(self.btnRmPerso) self.lineEdit_8 = QtWidgets.QLineEdit(self.groupBox) + self.lineEdit_8.setClearButtonEnabled(True) self.lineEdit_8.setObjectName("lineEdit_8") self.horizontalLayout_14.addWidget(self.lineEdit_8) self.verticalLayout_8.addLayout(self.horizontalLayout_14) @@ -472,6 +473,7 @@ class Ui_MainWindow(object): self.pushButton_11.setObjectName("pushButton_11") self.horizontalLayout_15.addWidget(self.pushButton_11) self.lineEdit_7 = QtWidgets.QLineEdit(self.groupBox_2) + self.lineEdit_7.setClearButtonEnabled(True) self.lineEdit_7.setObjectName("lineEdit_7") self.horizontalLayout_15.addWidget(self.lineEdit_7) self.btnPlotShowSummary = QtWidgets.QPushButton(self.groupBox_2) @@ -698,6 +700,8 @@ class Ui_MainWindow(object): self.treePlanOutline = QtWidgets.QTreeView(self.layoutWidget) self.treePlanOutline.setDragEnabled(True) self.treePlanOutline.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop) + self.treePlanOutline.setDefaultDropAction(QtCore.Qt.MoveAction) + self.treePlanOutline.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) self.treePlanOutline.setObjectName("treePlanOutline") self.verticalLayout_14.addWidget(self.treePlanOutline) self.groupbox = QtWidgets.QGroupBox(self.layoutWidget) @@ -709,7 +713,7 @@ class Ui_MainWindow(object): self.label_9 = QtWidgets.QLabel(self.groupbox) self.label_9.setObjectName("label_9") self.horizontalLayout_11.addWidget(self.label_9) - self.cmbPlanPOV = QtWidgets.QComboBox(self.groupbox) + self.cmbPlanPOV = cmbPersoChoser(self.groupbox) self.cmbPlanPOV.setFrame(False) self.cmbPlanPOV.setObjectName("cmbPlanPOV") self.horizontalLayout_11.addWidget(self.cmbPlanPOV) @@ -723,18 +727,24 @@ class Ui_MainWindow(object): self.verticalLayout_14.addWidget(self.groupbox) self.horizontalLayout_18 = QtWidgets.QHBoxLayout() self.horizontalLayout_18.setObjectName("horizontalLayout_18") - self.pushButton_17 = QtWidgets.QPushButton(self.layoutWidget) - self.pushButton_17.setText("") - icon = QtGui.QIcon.fromTheme("list-add") - self.pushButton_17.setIcon(icon) - self.pushButton_17.setObjectName("pushButton_17") - self.horizontalLayout_18.addWidget(self.pushButton_17) - self.pushButton_18 = QtWidgets.QPushButton(self.layoutWidget) - self.pushButton_18.setText("") + self.btnPlanAddFolder = QtWidgets.QPushButton(self.layoutWidget) + self.btnPlanAddFolder.setText("") + icon = QtGui.QIcon.fromTheme("folder-new") + self.btnPlanAddFolder.setIcon(icon) + self.btnPlanAddFolder.setObjectName("btnPlanAddFolder") + self.horizontalLayout_18.addWidget(self.btnPlanAddFolder) + self.btnPlanAddScene = QtWidgets.QPushButton(self.layoutWidget) + self.btnPlanAddScene.setText("") + icon = QtGui.QIcon.fromTheme("document-new") + self.btnPlanAddScene.setIcon(icon) + self.btnPlanAddScene.setObjectName("btnPlanAddScene") + self.horizontalLayout_18.addWidget(self.btnPlanAddScene) + self.btnPlanRemoveItem = QtWidgets.QPushButton(self.layoutWidget) + self.btnPlanRemoveItem.setText("") icon = QtGui.QIcon.fromTheme("list-remove") - self.pushButton_18.setIcon(icon) - self.pushButton_18.setObjectName("pushButton_18") - self.horizontalLayout_18.addWidget(self.pushButton_18) + self.btnPlanRemoveItem.setIcon(icon) + self.btnPlanRemoveItem.setObjectName("btnPlanRemoveItem") + self.horizontalLayout_18.addWidget(self.btnPlanRemoveItem) spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_18.addItem(spacerItem8) self.pushButton_23 = QtWidgets.QPushButton(self.layoutWidget) @@ -794,9 +804,19 @@ class Ui_MainWindow(object): self.verticalLayout_16 = QtWidgets.QVBoxLayout(self.layoutWidget2) self.verticalLayout_16.setContentsMargins(0, 0, 0, 0) self.verticalLayout_16.setObjectName("verticalLayout_16") - self.plainTextEdit_9 = QtWidgets.QPlainTextEdit(self.layoutWidget2) - self.plainTextEdit_9.setObjectName("plainTextEdit_9") - self.verticalLayout_16.addWidget(self.plainTextEdit_9) + self.txtRedacTitle = QtWidgets.QLineEdit(self.layoutWidget2) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.txtRedacTitle.setFont(font) + self.txtRedacTitle.setStyleSheet("background:transparent;") + self.txtRedacTitle.setText("") + self.txtRedacTitle.setFrame(False) + self.txtRedacTitle.setObjectName("txtRedacTitle") + self.verticalLayout_16.addWidget(self.txtRedacTitle) + self.txtRedacText = QtWidgets.QPlainTextEdit(self.layoutWidget2) + self.txtRedacText.setObjectName("txtRedacText") + self.verticalLayout_16.addWidget(self.txtRedacText) self.horizontalLayout_19 = QtWidgets.QHBoxLayout() self.horizontalLayout_19.setObjectName("horizontalLayout_19") self.pushButton_20 = QtWidgets.QPushButton(self.layoutWidget2) @@ -837,27 +857,31 @@ class Ui_MainWindow(object): self.groupBox_4.setObjectName("groupBox_4") self.formLayout_5 = QtWidgets.QFormLayout(self.groupBox_4) self.formLayout_5.setObjectName("formLayout_5") - self.label_29 = QtWidgets.QLabel(self.groupBox_4) - self.label_29.setObjectName("label_29") - self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_29) - self.comboBox_3 = QtWidgets.QComboBox(self.groupBox_4) - self.comboBox_3.setFrame(False) - self.comboBox_3.setObjectName("comboBox_3") - self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.comboBox_3) + self.lblRedacPOV = QtWidgets.QLabel(self.groupBox_4) + self.lblRedacPOV.setObjectName("lblRedacPOV") + self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.lblRedacPOV) + self.cmbRedacPOV = cmbPersoChoser(self.groupBox_4) + self.cmbRedacPOV.setFrame(False) + self.cmbRedacPOV.setObjectName("cmbRedacPOV") + self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.cmbRedacPOV) self.label_30 = QtWidgets.QLabel(self.groupBox_4) self.label_30.setObjectName("label_30") self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_30) - self.comboBox_4 = QtWidgets.QComboBox(self.groupBox_4) - self.comboBox_4.setFrame(False) - self.comboBox_4.setObjectName("comboBox_4") - self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.comboBox_4) + self.cmbRedacStatus = QtWidgets.QComboBox(self.groupBox_4) + self.cmbRedacStatus.setFrame(False) + self.cmbRedacStatus.setObjectName("cmbRedacStatus") + self.cmbRedacStatus.addItem("") + self.cmbRedacStatus.addItem("") + self.cmbRedacStatus.addItem("") + self.cmbRedacStatus.addItem("") + self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.cmbRedacStatus) self.label_32 = QtWidgets.QLabel(self.groupBox_4) self.label_32.setObjectName("label_32") self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_32) - self.checkBox = QtWidgets.QCheckBox(self.groupBox_4) - self.checkBox.setText("") - self.checkBox.setObjectName("checkBox") - self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.checkBox) + self.chkRedacCompile = QtWidgets.QCheckBox(self.groupBox_4) + self.chkRedacCompile.setText("") + self.chkRedacCompile.setObjectName("chkRedacCompile") + self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.chkRedacCompile) self.verticalLayout_20.addWidget(self.groupBox_4) self.groupBox_5 = collapsibleGroupBox(self.tab_17) self.groupBox_5.setCheckable(True) @@ -876,9 +900,9 @@ class Ui_MainWindow(object): self.groupBox_6.setObjectName("groupBox_6") self.horizontalLayout_29 = QtWidgets.QHBoxLayout(self.groupBox_6) self.horizontalLayout_29.setObjectName("horizontalLayout_29") - self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(self.groupBox_6) - self.plainTextEdit_2.setObjectName("plainTextEdit_2") - self.horizontalLayout_29.addWidget(self.plainTextEdit_2) + self.txtRedacNotes = QtWidgets.QPlainTextEdit(self.groupBox_6) + self.txtRedacNotes.setObjectName("txtRedacNotes") + self.horizontalLayout_29.addWidget(self.txtRedacNotes) self.verticalLayout_20.addWidget(self.groupBox_6) self.tabWidget_2.addTab(self.tab_17, "") self.tab_18 = QtWidgets.QWidget() @@ -1015,7 +1039,7 @@ class Ui_MainWindow(object): self.menubar.addAction(self.menu_Aide.menuAction()) self.retranslateUi(MainWindow) - self.tabMain.setCurrentIndex(1) + self.tabMain.setCurrentIndex(5) self.tabSummary.setCurrentIndex(0) self.tabPersos.setCurrentIndex(0) self.tabPlot.setCurrentIndex(0) @@ -1134,9 +1158,13 @@ class Ui_MainWindow(object): self.label_9.setText(_translate("MainWindow", "POV")) self.txtPlanSummarySentance.setPlaceholderText(_translate("MainWindow", "Résumé de la scène en une ligne")) self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabOutline), _translate("MainWindow", "Plan")) - self.groupBox_4.setTitle(_translate("MainWindow", "Propriétés de la scène")) - self.label_29.setText(_translate("MainWindow", "Personnage")) + self.groupBox_4.setTitle(_translate("MainWindow", "Propriétés")) + self.lblRedacPOV.setText(_translate("MainWindow", "POV")) self.label_30.setText(_translate("MainWindow", "Status")) + self.cmbRedacStatus.setItemText(0, _translate("MainWindow", "TODO")) + self.cmbRedacStatus.setItemText(1, _translate("MainWindow", "First draft")) + self.cmbRedacStatus.setItemText(2, _translate("MainWindow", "Second draft")) + self.cmbRedacStatus.setItemText(3, _translate("MainWindow", "Final")) self.label_32.setText(_translate("MainWindow", "Compile")) self.groupBox_5.setTitle(_translate("MainWindow", "Résumé de la scène")) self.txtRedacSummarySentance.setPlaceholderText(_translate("MainWindow", "Résumé de la scène en une ligne")) @@ -1181,5 +1209,6 @@ class Ui_MainWindow(object): self.actShowHelp.setText(_translate("MainWindow", "Afficher les &bulles d\'aide")) self.actShowHelp.setShortcut(_translate("MainWindow", "Ctrl+Shift+B")) -from ui.sldImportance import sldImportance from ui.collapsibleGroupBox import collapsibleGroupBox +from ui.cmbPersoChoser import cmbPersoChoser +from ui.sldImportance import sldImportance diff --git a/src/ui/mainWindow.ui b/src/ui/mainWindow.ui index f01f959f..5494b03c 100644 --- a/src/ui/mainWindow.ui +++ b/src/ui/mainWindow.ui @@ -18,7 +18,7 @@ - 1 + 5 true @@ -542,6 +542,9 @@ Filter + + true + @@ -901,6 +904,9 @@ Filter + + true + @@ -1335,6 +1341,12 @@ QAbstractItemView::DragDrop + + Qt::MoveAction + + + QAbstractItemView::ExtendedSelection + @@ -1353,7 +1365,7 @@ - + false @@ -1377,19 +1389,31 @@ - + - + - + + + + + + + + + + + + + @@ -1522,7 +1546,26 @@ - + + + + 75 + true + + + + background:transparent; + + + + + + false + + + + + @@ -1606,21 +1649,21 @@ - Propriétés de la scène + Propriétés true - + - Personnage + POV - + false @@ -1634,10 +1677,30 @@ - + false + + + TODO + + + + + First draft + + + + + Second draft + + + + + Final + + @@ -1648,7 +1711,7 @@ - + @@ -1689,7 +1752,7 @@ - + @@ -1976,6 +2039,11 @@
ui.collapsibleGroupBox.h
1 + + cmbPersoChoser + QComboBox +
ui.cmbPersoChoser.h
+
diff --git a/src/ui/sldImportance.py b/src/ui/sldImportance.py index 32e3c3e7..48145b06 100644 --- a/src/ui/sldImportance.py +++ b/src/ui/sldImportance.py @@ -20,7 +20,6 @@ class sldImportance(QWidget, Ui_sldImportance): self.sld.valueChanged.connect(self.changed) self.setValue(0) - def getImportance(self): return str(self.sld.value()) diff --git a/src/ui/treeOutlineDelegates.py b/src/ui/treeOutlineDelegates.py new file mode 100644 index 00000000..bd282100 --- /dev/null +++ b/src/ui/treeOutlineDelegates.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +#--!-- coding: utf8 --!-- + +from __future__ import print_function +from __future__ import unicode_literals + +from qt import * +from enums import * + +class treeOutlinePersoDelegate(QStyledItemDelegate): + + def __init__(self, mdlPersos, parent=None): + QStyledItemDelegate.__init__(self, parent) + self.mdlPersos = mdlPersos + + def createEditor(self, parent, option, index): + item = index.internalPointer() + if item.isFolder(): + return + + editor = QComboBox(parent) + editor.setAutoFillBackground(True) + return editor + + def setEditorData(self, editor, index): + 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.setCurrentIndex(editor.findData(index.data())) + + def setModelData(self, editor, model, index): + 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 "" + +class treeOutlineCompileDelegate(QStyledItemDelegate): + + def __init__(self, parent=None): + QStyledItemDelegate.__init__(self, parent) + + def displayText(self, value, locale): + return "" \ No newline at end of file diff --git a/test_project/outline.xml b/test_project/outline.xml index 35b00720..d0972a29 100644 --- a/test_project/outline.xml +++ b/test_project/outline.xml @@ -1,13 +1,27 @@ - + + + + + + + + + + + + + + + - + + - - + diff --git a/test_project/perso.xml b/test_project/perso.xml index 2fcfdcf0..7d328aaf 100644 --- a/test_project/perso.xml +++ b/test_project/perso.xml @@ -3,6 +3,8 @@
ID 0 + 1 + 2 Age 42 + 12 + Animal préféré Pingouin + Crevette aquatique +