mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-17 11:22:28 +12:00
Plan view almost working
This commit is contained in:
parent
5ecdabd43e
commit
8d7877e415
12
src/enums.py
12
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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
65
src/ui/cmbPersoChoser.py
Normal file
65
src/ui/cmbPersoChoser.py
Normal 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()
|
|
@ -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
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<item>
|
||||
<widget class="QTabWidget" name="tabMain">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="documentMode">
|
||||
<bool>true</bool>
|
||||
|
@ -542,6 +542,9 @@
|
|||
<property name="placeholderText">
|
||||
<string>Filter</string>
|
||||
</property>
|
||||
<property name="clearButtonEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
@ -901,6 +904,9 @@
|
|||
<property name="placeholderText">
|
||||
<string>Filter</string>
|
||||
</property>
|
||||
<property name="clearButtonEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -1335,6 +1341,12 @@
|
|||
<property name="dragDropMode">
|
||||
<enum>QAbstractItemView::DragDrop</enum>
|
||||
</property>
|
||||
<property name="defaultDropAction">
|
||||
<enum>Qt::MoveAction</enum>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -1353,7 +1365,7 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="cmbPlanPOV">
|
||||
<widget class="cmbPersoChoser" name="cmbPlanPOV">
|
||||
<property name="frame">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
|
@ -1377,19 +1389,31 @@
|
|||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_18">
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_17">
|
||||
<widget class="QPushButton" name="btnPlanAddFolder">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="list-add">
|
||||
<iconset theme="folder-new">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</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">
|
||||
<string/>
|
||||
</property>
|
||||
|
@ -1522,7 +1546,26 @@
|
|||
<widget class="QWidget" name="layoutWidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||
<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>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_19">
|
||||
|
@ -1606,21 +1649,21 @@
|
|||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Propriétés de la scène</string>
|
||||
<string>Propriétés</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_5">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_29">
|
||||
<widget class="QLabel" name="lblRedacPOV">
|
||||
<property name="text">
|
||||
<string>Personnage</string>
|
||||
<string>POV</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="comboBox_3">
|
||||
<widget class="cmbPersoChoser" name="cmbRedacPOV">
|
||||
<property name="frame">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
|
@ -1634,10 +1677,30 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="comboBox_4">
|
||||
<widget class="QComboBox" name="cmbRedacStatus">
|
||||
<property name="frame">
|
||||
<bool>false</bool>
|
||||
</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>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
|
@ -1648,7 +1711,7 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="checkBox">
|
||||
<widget class="QCheckBox" name="chkRedacCompile">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
|
@ -1689,7 +1752,7 @@
|
|||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_29">
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="plainTextEdit_2"/>
|
||||
<widget class="QPlainTextEdit" name="txtRedacNotes"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
@ -1976,6 +2039,11 @@
|
|||
<header>ui.collapsibleGroupBox.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>cmbPersoChoser</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>ui.cmbPersoChoser.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
|
|
|
@ -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())
|
||||
|
||||
|
|
47
src/ui/treeOutlineDelegates.py
Normal file
47
src/ui/treeOutlineDelegates.py
Normal 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 ""
|
|
@ -1,13 +1,27 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<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 "comptoir" / "abreuvoir"" 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="scene"/>
|
||||
<outlineItem title="Nouveau" type="folder"/>
|
||||
<outlineItem title="Nouveau" type="scene"/>
|
||||
<outlineItem title="Nouveau" type="scene"/>
|
||||
<outlineItem title="Nouveau" type="scene"/>
|
||||
</outlineItem>
|
||||
<outlineItem title="Nouveau" type="scene"/>
|
||||
<outlineItem title="Nouveau" type="scene"/>
|
||||
<outlineItem title="Nouveau" type="folder"/>
|
||||
</outlineItem>
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
<header>
|
||||
<vertical>
|
||||
<label row="0" text="1"/>
|
||||
<label row="1" text="2"/>
|
||||
<label row="2" text="3"/>
|
||||
</vertical>
|
||||
<horizontal>
|
||||
<label row="0" text="name"/>
|
||||
|
@ -35,5 +37,31 @@
|
|||
|
||||
Pour voir.</col>
|
||||
</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>
|
||||
</model>
|
||||
|
|
|
@ -9,20 +9,28 @@
|
|||
<horizontal>
|
||||
<label row="0" text="Description"/>
|
||||
<label row="1" text="Valeur"/>
|
||||
<label row="2" text="Valeur"/>
|
||||
<label row="3" text="Valeur"/>
|
||||
</horizontal>
|
||||
</header>
|
||||
<data>
|
||||
<row row="0">
|
||||
<col col="0">ID</col>
|
||||
<col col="1">0</col>
|
||||
<col col="2">1</col>
|
||||
<col col="3">2</col>
|
||||
</row>
|
||||
<row row="1">
|
||||
<col col="0">Age</col>
|
||||
<col col="1">42</col>
|
||||
<col col="2">12</col>
|
||||
<col col="3"/>
|
||||
</row>
|
||||
<row row="2">
|
||||
<col col="0">Animal préféré</col>
|
||||
<col col="1">Pingouin</col>
|
||||
<col col="2">Crevette aquatique</col>
|
||||
<col col="3"/>
|
||||
</row>
|
||||
</data>
|
||||
</model>
|
||||
|
|
Loading…
Reference in a new issue