Plan view almost working

This commit is contained in:
Olivier Keshavjee 2015-06-04 02:04:47 +02:00
parent 5ecdabd43e
commit 8d7877e415
12 changed files with 409 additions and 83 deletions

View file

@ -24,3 +24,15 @@ class Perso(Enum):
summaryFull = 9 summaryFull = 9
notes = 10 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

View file

@ -17,13 +17,13 @@ def saveStandardItemModelXML(mdl, xml):
for x in range(mdl.rowCount()): for x in range(mdl.rowCount()):
vH = ET.SubElement(vHeader, "label") vH = ET.SubElement(vHeader, "label")
vH.attrib["row"] = unicode(x) 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") hHeader = ET.SubElement(header, "horizontal")
for y in range(mdl.columnCount()): for y in range(mdl.columnCount()):
hH = ET.SubElement(hHeader, "label") hH = ET.SubElement(hHeader, "label")
hH.attrib["row"] = unicode(y) hH.attrib["row"] = unicode(y)
hH.attrib["text"] = mdl.headerData(y, Qt.Horizontal) hH.attrib["text"] = unicode(mdl.headerData(y, Qt.Horizontal))
# Data # Data
data = ET.SubElement(root, "data") data = ET.SubElement(root, "data")

View file

@ -8,6 +8,7 @@ from qt import *
from ui.mainWindow import * from ui.mainWindow import *
from ui.helpLabel import helpLabel from ui.helpLabel import helpLabel
from ui.treeOutlineDelegates import *
from loadSave import * from loadSave import *
from enums import * from enums import *
from models.outlineModel import * from models.outlineModel import *
@ -119,17 +120,61 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Outline # Outline
self.mdlOutline = outlineModel() self.mdlOutline = outlineModel()
#self.mdlOutline.setHorizontalHeaderLabels(
#[i.name for i in Outline])
self.treeRedacOutline.setModel(self.mdlOutline) self.treeRedacOutline.setModel(self.mdlOutline)
self.treePlanOutline.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()) self.treeRedacOutline.setSelectionModel(self.treePlanOutline.selectionModel())
for c in range(1, self.mdlOutline.columnCount()): for c in range(1, self.mdlOutline.columnCount()):
self.treeRedacOutline.hideColumn(c) self.treeRedacOutline.hideColumn(c)
self.treePlanOutline.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.btnRedacAddFolder.clicked.connect(lambda: self.outlineAddItem("folder"))
self.btnPlanAddFolder.clicked.connect(lambda: self.outlineAddItem("folder"))
self.btnRedacAddScene.clicked.connect(lambda: self.outlineAddItem("scene")) self.btnRedacAddScene.clicked.connect(lambda: self.outlineAddItem("scene"))
self.btnPlanAddScene.clicked.connect(lambda: self.outlineAddItem("scene"))
self.btnRedacRemoveItem.clicked.connect(self.outlineRemoveItems) 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 #Debug
self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"]) self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"])
@ -157,6 +202,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
for idx in self.treeRedacOutline.selectedIndexes(): for idx in self.treeRedacOutline.selectedIndexes():
if idx.isValid(): if idx.isValid():
self.mdlOutline.removeIndex(idx) 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: for widget, text in references:
print(text)
label = helpLabel(text) label = helpLabel(text)
self.actShowHelp.toggled.connect(label.setVisible) self.actShowHelp.toggled.connect(label.setVisible)
widget.layout().insertWidget(0, label) widget.layout().insertWidget(0, label)

View file

@ -5,23 +5,11 @@ from __future__ import print_function
from __future__ import unicode_literals from __future__ import unicode_literals
from qt import * from qt import *
from enums import *
from enum import Enum from enum import Enum
from lxml import etree as ET 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): class outlineModel(QAbstractItemModel):
def __init__(self): def __init__(self):
QAbstractItemModel.__init__(self) QAbstractItemModel.__init__(self)
@ -43,7 +31,6 @@ class outlineModel(QAbstractItemModel):
return self.createIndex(row, column, childItem) return self.createIndex(row, column, childItem)
else: else:
return QModelIndex() return QModelIndex()
def parent(self, index=QModelIndex()): def parent(self, index=QModelIndex()):
if not index.isValid(): 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 # http://doc.qt.io/qt-5/model-view-programming.html#using-drag-and-drop-with-item-views
def flags(self, index): def flags(self, index):
#FIXME when dragging folders, sometimes flags is not called
flags = QAbstractItemModel.flags(self, index) | Qt.ItemIsEditable flags = QAbstractItemModel.flags(self, index) | Qt.ItemIsEditable
if index.isValid() and index.internalPointer().isFolder(): if index.isValid() and index.internalPointer().isFolder():
flags |= Qt.ItemIsDropEnabled | Qt.ItemIsDragEnabled flags |= Qt.ItemIsDragEnabled | Qt.ItemIsDropEnabled
elif index.isValid(): elif index.isValid():
flags |= Qt.ItemIsDragEnabled flags |= Qt.ItemIsDragEnabled
else: else:
flags |= Qt.ItemIsDropEnabled flags |= Qt.ItemIsDropEnabled
if index.isValid() and index.column() == Outline.compile.value:
flags |= Qt.ItemIsUserCheckable
return flags return flags
def mimeTypes(self): def mimeTypes(self):
@ -117,13 +109,12 @@ class outlineModel(QAbstractItemModel):
def mimeData(self, indexes): def mimeData(self, indexes):
mimeData = QMimeData() mimeData = QMimeData()
#encodedData = QByteArray()
#stream = QDataStream(encodedData, QIODevice.WriteOnly)
encodedData = "" encodedData = ""
root = ET.Element("outlineItems") root = ET.Element("outlineItems")
for index in indexes: for index in indexes:
if index.isValid(): if index.isValid() and index.column() == 0:
item = ET.XML(index.internalPointer().toXML()) item = ET.XML(index.internalPointer().toXML())
root.append(item) root.append(item)
@ -165,6 +156,7 @@ class outlineModel(QAbstractItemModel):
beginRow = self.rowCount() + 1 beginRow = self.rowCount() + 1
encodedData = str(data.data("application/xml")) encodedData = str(data.data("application/xml"))
root = ET.XML(encodedData) root = ET.XML(encodedData)
if root.tag <> "outlineItems": if root.tag <> "outlineItems":
@ -290,7 +282,9 @@ class outlineItem():
def data(self, column, role=Qt.DisplayRole): def data(self, column, role=Qt.DisplayRole):
if role == Qt.DisplayRole or role == Qt.EditRole: 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)] return self._data[Outline(column)]
else: else:
return None return None
@ -299,9 +293,15 @@ class outlineItem():
return QIcon.fromTheme("folder") return QIcon.fromTheme("folder")
elif self.isScene(): elif self.isScene():
return QIcon.fromTheme("document-new") 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): def setData(self, column, data):
self._data[Outline(column)] = unicode(data.toString()) self._data[Outline(column)] = data
def row(self): def row(self):
if self.parent: if self.parent:
@ -332,7 +332,7 @@ class outlineItem():
for attrib in Outline: for attrib in Outline:
val = self.data(attrib) val = self.data(attrib)
if val: if val:
item.set(attrib.name, val) item.set(attrib.name, unicode(val))
for i in self.childItems: for i in self.childItems:
item.append(ET.XML(i.toXML())) item.append(ET.XML(i.toXML()))
@ -344,7 +344,7 @@ class outlineItem():
for k in root.attrib: for k in root.attrib:
if k in Outline.__members__: 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: for child in root:
item = outlineItem(xml=ET.tostring(child)) item = outlineItem(xml=ET.tostring(child))

65
src/ui/cmbPersoChoser.py Normal file
View file

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

View file

@ -286,6 +286,7 @@ class Ui_MainWindow(object):
self.btnRmPerso.setObjectName("btnRmPerso") self.btnRmPerso.setObjectName("btnRmPerso")
self.horizontalLayout_14.addWidget(self.btnRmPerso) self.horizontalLayout_14.addWidget(self.btnRmPerso)
self.lineEdit_8 = QtWidgets.QLineEdit(self.groupBox) self.lineEdit_8 = QtWidgets.QLineEdit(self.groupBox)
self.lineEdit_8.setClearButtonEnabled(True)
self.lineEdit_8.setObjectName("lineEdit_8") self.lineEdit_8.setObjectName("lineEdit_8")
self.horizontalLayout_14.addWidget(self.lineEdit_8) self.horizontalLayout_14.addWidget(self.lineEdit_8)
self.verticalLayout_8.addLayout(self.horizontalLayout_14) self.verticalLayout_8.addLayout(self.horizontalLayout_14)
@ -472,6 +473,7 @@ class Ui_MainWindow(object):
self.pushButton_11.setObjectName("pushButton_11") self.pushButton_11.setObjectName("pushButton_11")
self.horizontalLayout_15.addWidget(self.pushButton_11) self.horizontalLayout_15.addWidget(self.pushButton_11)
self.lineEdit_7 = QtWidgets.QLineEdit(self.groupBox_2) self.lineEdit_7 = QtWidgets.QLineEdit(self.groupBox_2)
self.lineEdit_7.setClearButtonEnabled(True)
self.lineEdit_7.setObjectName("lineEdit_7") self.lineEdit_7.setObjectName("lineEdit_7")
self.horizontalLayout_15.addWidget(self.lineEdit_7) self.horizontalLayout_15.addWidget(self.lineEdit_7)
self.btnPlotShowSummary = QtWidgets.QPushButton(self.groupBox_2) self.btnPlotShowSummary = QtWidgets.QPushButton(self.groupBox_2)
@ -698,6 +700,8 @@ class Ui_MainWindow(object):
self.treePlanOutline = QtWidgets.QTreeView(self.layoutWidget) self.treePlanOutline = QtWidgets.QTreeView(self.layoutWidget)
self.treePlanOutline.setDragEnabled(True) self.treePlanOutline.setDragEnabled(True)
self.treePlanOutline.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop) self.treePlanOutline.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
self.treePlanOutline.setDefaultDropAction(QtCore.Qt.MoveAction)
self.treePlanOutline.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
self.treePlanOutline.setObjectName("treePlanOutline") self.treePlanOutline.setObjectName("treePlanOutline")
self.verticalLayout_14.addWidget(self.treePlanOutline) self.verticalLayout_14.addWidget(self.treePlanOutline)
self.groupbox = QtWidgets.QGroupBox(self.layoutWidget) self.groupbox = QtWidgets.QGroupBox(self.layoutWidget)
@ -709,7 +713,7 @@ class Ui_MainWindow(object):
self.label_9 = QtWidgets.QLabel(self.groupbox) self.label_9 = QtWidgets.QLabel(self.groupbox)
self.label_9.setObjectName("label_9") self.label_9.setObjectName("label_9")
self.horizontalLayout_11.addWidget(self.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.setFrame(False)
self.cmbPlanPOV.setObjectName("cmbPlanPOV") self.cmbPlanPOV.setObjectName("cmbPlanPOV")
self.horizontalLayout_11.addWidget(self.cmbPlanPOV) self.horizontalLayout_11.addWidget(self.cmbPlanPOV)
@ -723,18 +727,24 @@ class Ui_MainWindow(object):
self.verticalLayout_14.addWidget(self.groupbox) self.verticalLayout_14.addWidget(self.groupbox)
self.horizontalLayout_18 = QtWidgets.QHBoxLayout() self.horizontalLayout_18 = QtWidgets.QHBoxLayout()
self.horizontalLayout_18.setObjectName("horizontalLayout_18") self.horizontalLayout_18.setObjectName("horizontalLayout_18")
self.pushButton_17 = QtWidgets.QPushButton(self.layoutWidget) self.btnPlanAddFolder = QtWidgets.QPushButton(self.layoutWidget)
self.pushButton_17.setText("") self.btnPlanAddFolder.setText("")
icon = QtGui.QIcon.fromTheme("list-add") icon = QtGui.QIcon.fromTheme("folder-new")
self.pushButton_17.setIcon(icon) self.btnPlanAddFolder.setIcon(icon)
self.pushButton_17.setObjectName("pushButton_17") self.btnPlanAddFolder.setObjectName("btnPlanAddFolder")
self.horizontalLayout_18.addWidget(self.pushButton_17) self.horizontalLayout_18.addWidget(self.btnPlanAddFolder)
self.pushButton_18 = QtWidgets.QPushButton(self.layoutWidget) self.btnPlanAddScene = QtWidgets.QPushButton(self.layoutWidget)
self.pushButton_18.setText("") 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") icon = QtGui.QIcon.fromTheme("list-remove")
self.pushButton_18.setIcon(icon) self.btnPlanRemoveItem.setIcon(icon)
self.pushButton_18.setObjectName("pushButton_18") self.btnPlanRemoveItem.setObjectName("btnPlanRemoveItem")
self.horizontalLayout_18.addWidget(self.pushButton_18) self.horizontalLayout_18.addWidget(self.btnPlanRemoveItem)
spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_18.addItem(spacerItem8) self.horizontalLayout_18.addItem(spacerItem8)
self.pushButton_23 = QtWidgets.QPushButton(self.layoutWidget) 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 = QtWidgets.QVBoxLayout(self.layoutWidget2)
self.verticalLayout_16.setContentsMargins(0, 0, 0, 0) self.verticalLayout_16.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_16.setObjectName("verticalLayout_16") self.verticalLayout_16.setObjectName("verticalLayout_16")
self.plainTextEdit_9 = QtWidgets.QPlainTextEdit(self.layoutWidget2) self.txtRedacTitle = QtWidgets.QLineEdit(self.layoutWidget2)
self.plainTextEdit_9.setObjectName("plainTextEdit_9") font = QtGui.QFont()
self.verticalLayout_16.addWidget(self.plainTextEdit_9) 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 = QtWidgets.QHBoxLayout()
self.horizontalLayout_19.setObjectName("horizontalLayout_19") self.horizontalLayout_19.setObjectName("horizontalLayout_19")
self.pushButton_20 = QtWidgets.QPushButton(self.layoutWidget2) self.pushButton_20 = QtWidgets.QPushButton(self.layoutWidget2)
@ -837,27 +857,31 @@ class Ui_MainWindow(object):
self.groupBox_4.setObjectName("groupBox_4") self.groupBox_4.setObjectName("groupBox_4")
self.formLayout_5 = QtWidgets.QFormLayout(self.groupBox_4) self.formLayout_5 = QtWidgets.QFormLayout(self.groupBox_4)
self.formLayout_5.setObjectName("formLayout_5") self.formLayout_5.setObjectName("formLayout_5")
self.label_29 = QtWidgets.QLabel(self.groupBox_4) self.lblRedacPOV = QtWidgets.QLabel(self.groupBox_4)
self.label_29.setObjectName("label_29") self.lblRedacPOV.setObjectName("lblRedacPOV")
self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_29) self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.lblRedacPOV)
self.comboBox_3 = QtWidgets.QComboBox(self.groupBox_4) self.cmbRedacPOV = cmbPersoChoser(self.groupBox_4)
self.comboBox_3.setFrame(False) self.cmbRedacPOV.setFrame(False)
self.comboBox_3.setObjectName("comboBox_3") self.cmbRedacPOV.setObjectName("cmbRedacPOV")
self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.comboBox_3) self.formLayout_5.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.cmbRedacPOV)
self.label_30 = QtWidgets.QLabel(self.groupBox_4) self.label_30 = QtWidgets.QLabel(self.groupBox_4)
self.label_30.setObjectName("label_30") self.label_30.setObjectName("label_30")
self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_30) self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_30)
self.comboBox_4 = QtWidgets.QComboBox(self.groupBox_4) self.cmbRedacStatus = QtWidgets.QComboBox(self.groupBox_4)
self.comboBox_4.setFrame(False) self.cmbRedacStatus.setFrame(False)
self.comboBox_4.setObjectName("comboBox_4") self.cmbRedacStatus.setObjectName("cmbRedacStatus")
self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.comboBox_4) 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 = QtWidgets.QLabel(self.groupBox_4)
self.label_32.setObjectName("label_32") self.label_32.setObjectName("label_32")
self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_32) self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_32)
self.checkBox = QtWidgets.QCheckBox(self.groupBox_4) self.chkRedacCompile = QtWidgets.QCheckBox(self.groupBox_4)
self.checkBox.setText("") self.chkRedacCompile.setText("")
self.checkBox.setObjectName("checkBox") self.chkRedacCompile.setObjectName("chkRedacCompile")
self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.checkBox) self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.chkRedacCompile)
self.verticalLayout_20.addWidget(self.groupBox_4) self.verticalLayout_20.addWidget(self.groupBox_4)
self.groupBox_5 = collapsibleGroupBox(self.tab_17) self.groupBox_5 = collapsibleGroupBox(self.tab_17)
self.groupBox_5.setCheckable(True) self.groupBox_5.setCheckable(True)
@ -876,9 +900,9 @@ class Ui_MainWindow(object):
self.groupBox_6.setObjectName("groupBox_6") self.groupBox_6.setObjectName("groupBox_6")
self.horizontalLayout_29 = QtWidgets.QHBoxLayout(self.groupBox_6) self.horizontalLayout_29 = QtWidgets.QHBoxLayout(self.groupBox_6)
self.horizontalLayout_29.setObjectName("horizontalLayout_29") self.horizontalLayout_29.setObjectName("horizontalLayout_29")
self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(self.groupBox_6) self.txtRedacNotes = QtWidgets.QPlainTextEdit(self.groupBox_6)
self.plainTextEdit_2.setObjectName("plainTextEdit_2") self.txtRedacNotes.setObjectName("txtRedacNotes")
self.horizontalLayout_29.addWidget(self.plainTextEdit_2) self.horizontalLayout_29.addWidget(self.txtRedacNotes)
self.verticalLayout_20.addWidget(self.groupBox_6) self.verticalLayout_20.addWidget(self.groupBox_6)
self.tabWidget_2.addTab(self.tab_17, "") self.tabWidget_2.addTab(self.tab_17, "")
self.tab_18 = QtWidgets.QWidget() self.tab_18 = QtWidgets.QWidget()
@ -1015,7 +1039,7 @@ class Ui_MainWindow(object):
self.menubar.addAction(self.menu_Aide.menuAction()) self.menubar.addAction(self.menu_Aide.menuAction())
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
self.tabMain.setCurrentIndex(1) self.tabMain.setCurrentIndex(5)
self.tabSummary.setCurrentIndex(0) self.tabSummary.setCurrentIndex(0)
self.tabPersos.setCurrentIndex(0) self.tabPersos.setCurrentIndex(0)
self.tabPlot.setCurrentIndex(0) self.tabPlot.setCurrentIndex(0)
@ -1134,9 +1158,13 @@ class Ui_MainWindow(object):
self.label_9.setText(_translate("MainWindow", "POV")) self.label_9.setText(_translate("MainWindow", "POV"))
self.txtPlanSummarySentance.setPlaceholderText(_translate("MainWindow", "Résumé de la scène en une ligne")) 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.tabMain.setTabText(self.tabMain.indexOf(self.lytTabOutline), _translate("MainWindow", "Plan"))
self.groupBox_4.setTitle(_translate("MainWindow", "Propriétés de la scène")) self.groupBox_4.setTitle(_translate("MainWindow", "Propriétés"))
self.label_29.setText(_translate("MainWindow", "Personnage")) self.lblRedacPOV.setText(_translate("MainWindow", "POV"))
self.label_30.setText(_translate("MainWindow", "Status")) 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.label_32.setText(_translate("MainWindow", "Compile"))
self.groupBox_5.setTitle(_translate("MainWindow", "Résumé de la scène")) 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")) 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.setText(_translate("MainWindow", "Afficher les &bulles d\'aide"))
self.actShowHelp.setShortcut(_translate("MainWindow", "Ctrl+Shift+B")) self.actShowHelp.setShortcut(_translate("MainWindow", "Ctrl+Shift+B"))
from ui.sldImportance import sldImportance
from ui.collapsibleGroupBox import collapsibleGroupBox from ui.collapsibleGroupBox import collapsibleGroupBox
from ui.cmbPersoChoser import cmbPersoChoser
from ui.sldImportance import sldImportance

View file

@ -18,7 +18,7 @@
<item> <item>
<widget class="QTabWidget" name="tabMain"> <widget class="QTabWidget" name="tabMain">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>5</number>
</property> </property>
<property name="documentMode"> <property name="documentMode">
<bool>true</bool> <bool>true</bool>
@ -542,6 +542,9 @@
<property name="placeholderText"> <property name="placeholderText">
<string>Filter</string> <string>Filter</string>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
@ -901,6 +904,9 @@
<property name="placeholderText"> <property name="placeholderText">
<string>Filter</string> <string>Filter</string>
</property> </property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@ -1335,6 +1341,12 @@
<property name="dragDropMode"> <property name="dragDropMode">
<enum>QAbstractItemView::DragDrop</enum> <enum>QAbstractItemView::DragDrop</enum>
</property> </property>
<property name="defaultDropAction">
<enum>Qt::MoveAction</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@ -1353,7 +1365,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QComboBox" name="cmbPlanPOV"> <widget class="cmbPersoChoser" name="cmbPlanPOV">
<property name="frame"> <property name="frame">
<bool>false</bool> <bool>false</bool>
</property> </property>
@ -1377,19 +1389,31 @@
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_18"> <layout class="QHBoxLayout" name="horizontalLayout_18">
<item> <item>
<widget class="QPushButton" name="pushButton_17"> <widget class="QPushButton" name="btnPlanAddFolder">
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
<property name="icon"> <property name="icon">
<iconset theme="list-add"> <iconset theme="folder-new">
<normaloff/> <normaloff/>
</iconset> </iconset>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_18"> <widget class="QPushButton" name="btnPlanAddScene">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="document-new">
<normaloff/>
</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnPlanRemoveItem">
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@ -1522,7 +1546,26 @@
<widget class="QWidget" name="layoutWidget"> <widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_16"> <layout class="QVBoxLayout" name="verticalLayout_16">
<item> <item>
<widget class="QPlainTextEdit" name="plainTextEdit_9"/> <widget class="QLineEdit" name="txtRedacTitle">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background:transparent;</string>
</property>
<property name="text">
<string/>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="txtRedacText"/>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_19"> <layout class="QHBoxLayout" name="horizontalLayout_19">
@ -1606,21 +1649,21 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="title"> <property name="title">
<string>Propriétés de la scène</string> <string>Propriétés</string>
</property> </property>
<property name="checkable"> <property name="checkable">
<bool>true</bool> <bool>true</bool>
</property> </property>
<layout class="QFormLayout" name="formLayout_5"> <layout class="QFormLayout" name="formLayout_5">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label_29"> <widget class="QLabel" name="lblRedacPOV">
<property name="text"> <property name="text">
<string>Personnage</string> <string>POV</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="comboBox_3"> <widget class="cmbPersoChoser" name="cmbRedacPOV">
<property name="frame"> <property name="frame">
<bool>false</bool> <bool>false</bool>
</property> </property>
@ -1634,10 +1677,30 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QComboBox" name="comboBox_4"> <widget class="QComboBox" name="cmbRedacStatus">
<property name="frame"> <property name="frame">
<bool>false</bool> <bool>false</bool>
</property> </property>
<item>
<property name="text">
<string>TODO</string>
</property>
</item>
<item>
<property name="text">
<string>First draft</string>
</property>
</item>
<item>
<property name="text">
<string>Second draft</string>
</property>
</item>
<item>
<property name="text">
<string>Final</string>
</property>
</item>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="2" column="0">
@ -1648,7 +1711,7 @@
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="QCheckBox" name="checkBox"> <widget class="QCheckBox" name="chkRedacCompile">
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@ -1689,7 +1752,7 @@
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_29"> <layout class="QHBoxLayout" name="horizontalLayout_29">
<item> <item>
<widget class="QPlainTextEdit" name="plainTextEdit_2"/> <widget class="QPlainTextEdit" name="txtRedacNotes"/>
</item> </item>
</layout> </layout>
</widget> </widget>
@ -1976,6 +2039,11 @@
<header>ui.collapsibleGroupBox.h</header> <header>ui.collapsibleGroupBox.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>cmbPersoChoser</class>
<extends>QComboBox</extends>
<header>ui.cmbPersoChoser.h</header>
</customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections> <connections>

View file

@ -20,7 +20,6 @@ class sldImportance(QWidget, Ui_sldImportance):
self.sld.valueChanged.connect(self.changed) self.sld.valueChanged.connect(self.changed)
self.setValue(0) self.setValue(0)
def getImportance(self): def getImportance(self):
return str(self.sld.value()) return str(self.sld.value())

View file

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

View file

@ -1,13 +1,27 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<outlineItem title="root" type="folder"> <outlineItem title="root" type="folder">
<outlineItem title="Nouveau" type="scene"/> <outlineItem title="NouveauNouveauNouveauNouveauNouveauNouveau asd asd s Franchement?" type="scene" summarySentance="Texte" POV="2" status="0" compile="2"/>
<outlineItem title="Nouveau" type="folder" status="First draft" compile="2">
<outlineItem title="Nouveau" type="scene" POV="2" compile="2"/>
</outlineItem>
<outlineItem title="éüæ" type="folder" summarySentance="Il arrive au comptoir" summaryFull="Il arrive au comptoir après avoir garé son cheval, et mange une grosse glace à la vanille." notes="Utiliser un jeu de mot sur &quot;comptoir&quot; / &quot;abreuvoir&quot;" status="TODO" compile="2">
<outlineItem title="Nouveau" type="scene" POV="1" status="TODO" compile="True" text="Le texte du truc."/>
</outlineItem>
<outlineItem title="Nouveau" type="folder">
<outlineItem title="Nouveau" type="folder">
<outlineItem title="Nouveau" type="folder"/>
<outlineItem title="Nouveau" type="folder"/>
<outlineItem title="Nouveau" type="folder"/>
<outlineItem title="Nouveau" type="folder"/>
</outlineItem>
</outlineItem>
<outlineItem title="Nouveau" type="folder"/> <outlineItem title="Nouveau" type="folder"/>
<outlineItem title="Nouveau" type="folder"/> <outlineItem title="Nouveau" type="folder"/>
<outlineItem title="Nouveau" type="folder"> <outlineItem title="Nouveau" type="folder">
<outlineItem title="Nouveau" type="scene"/> <outlineItem title="Nouveau" type="scene"/>
<outlineItem title="Nouveau" type="folder"/> <outlineItem title="Nouveau" type="scene"/>
<outlineItem title="Nouveau" type="scene"/>
<outlineItem title="Nouveau" type="scene"/> <outlineItem title="Nouveau" type="scene"/>
</outlineItem> </outlineItem>
<outlineItem title="Nouveau" type="scene"/> <outlineItem title="Nouveau" type="folder"/>
<outlineItem title="Nouveau" type="scene"/>
</outlineItem> </outlineItem>

View file

@ -3,6 +3,8 @@
<header> <header>
<vertical> <vertical>
<label row="0" text="1"/> <label row="0" text="1"/>
<label row="1" text="2"/>
<label row="2" text="3"/>
</vertical> </vertical>
<horizontal> <horizontal>
<label row="0" text="name"/> <label row="0" text="name"/>
@ -35,5 +37,31 @@
Pour voir.</col> Pour voir.</col>
</row> </row>
<row row="1">
<col col="0">Ginette</col>
<col col="1">1</col>
<col col="2"/>
<col col="3"/>
<col col="4"/>
<col col="5"/>
<col col="6"/>
<col col="7"/>
<col col="8"/>
<col col="9"/>
<col col="10"/>
</row>
<row row="2">
<col col="0">Nouveau perso avec un nom pas très long</col>
<col col="1">2</col>
<col col="2"/>
<col col="3"/>
<col col="4"/>
<col col="5"/>
<col col="6"/>
<col col="7"/>
<col col="8"/>
<col col="9"/>
<col col="10"/>
</row>
</data> </data>
</model> </model>

View file

@ -9,20 +9,28 @@
<horizontal> <horizontal>
<label row="0" text="Description"/> <label row="0" text="Description"/>
<label row="1" text="Valeur"/> <label row="1" text="Valeur"/>
<label row="2" text="Valeur"/>
<label row="3" text="Valeur"/>
</horizontal> </horizontal>
</header> </header>
<data> <data>
<row row="0"> <row row="0">
<col col="0">ID</col> <col col="0">ID</col>
<col col="1">0</col> <col col="1">0</col>
<col col="2">1</col>
<col col="3">2</col>
</row> </row>
<row row="1"> <row row="1">
<col col="0">Age</col> <col col="0">Age</col>
<col col="1">42</col> <col col="1">42</col>
<col col="2">12</col>
<col col="3"/>
</row> </row>
<row row="2"> <row row="2">
<col col="0">Animal préféré</col> <col col="0">Animal préféré</col>
<col col="1">Pingouin</col> <col col="1">Pingouin</col>
<col col="2">Crevette aquatique</col>
<col col="3"/>
</row> </row>
</data> </data>
</model> </model>