Statuses are in a model, too.

This commit is contained in:
Olivier Keshavjee 2015-06-10 15:57:44 +02:00
parent dfa1702efb
commit c22aa37510
19 changed files with 325 additions and 203 deletions

Binary file not shown.

View file

@ -129,7 +129,7 @@
<translation>Noms</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2033"/>
<location filename="../src/ui/mainWindow.ui" line="2030"/>
<source>Filter</source>
<translation>Filtre</translation>
</message>
@ -149,7 +149,7 @@
<translation>Motivation</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1907"/>
<location filename="../src/ui/mainWindow.ui" line="1904"/>
<source>Goal</source>
<translation>Goal</translation>
</message>
@ -174,7 +174,7 @@
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;Résumé&lt;br/&gt;en un paragraphe&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1990"/>
<location filename="../src/ui/mainWindow.ui" line="1987"/>
<source>Notes</source>
<translation>Notes</translation>
</message>
@ -244,7 +244,7 @@
<translation>Contexte</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2123"/>
<location filename="../src/ui/mainWindow.ui" line="2120"/>
<source>Outline</source>
<translation>Plan</translation>
</message>
@ -269,7 +269,7 @@
<translation>Goal:</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1977"/>
<location filename="../src/ui/mainWindow.ui" line="1974"/>
<source>One line scene summary</source>
<translation>Résumé en une ligne</translation>
</message>
@ -289,7 +289,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1817"/>
<location filename="../src/mainWindow.py" line="145"/>
<source>Scene</source>
<translation>Scène</translation>
</message>
@ -309,12 +309,12 @@
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1893"/>
<location filename="../src/ui/mainWindow.ui" line="1890"/>
<source>Compile</source>
<translation>Compile</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1959"/>
<location filename="../src/ui/mainWindow.ui" line="1956"/>
<source>Scene summary</source>
<translation>Résumé de la scène</translation>
</message>
@ -324,47 +324,47 @@
<translation>Outils</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2021"/>
<location filename="../src/ui/mainWindow.ui" line="2018"/>
<source>Cheat sheet</source>
<translation>Aide-mémoire</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2041"/>
<location filename="../src/ui/mainWindow.ui" line="2038"/>
<source>Albert - perso</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2046"/>
<location filename="../src/ui/mainWindow.ui" line="2043"/>
<source>Jean - perso</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2051"/>
<location filename="../src/ui/mainWindow.ui" line="2048"/>
<source>Crapoquak - animal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2056"/>
<location filename="../src/ui/mainWindow.ui" line="2053"/>
<source>La revenche du capitaine - intrigue</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2076"/>
<location filename="../src/ui/mainWindow.ui" line="2073"/>
<source>Debug</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2089"/>
<location filename="../src/ui/mainWindow.ui" line="2086"/>
<source>FlatData</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2099"/>
<location filename="../src/ui/mainWindow.ui" line="2096"/>
<source>Persos</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2109"/>
<location filename="../src/ui/mainWindow.ui" line="2106"/>
<source>Perso Infos</source>
<translation type="unfinished"></translation>
</message>
@ -379,92 +379,92 @@
<translation>Aide</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2205"/>
<location filename="../src/ui/mainWindow.ui" line="2213"/>
<source>Open</source>
<translation>Ouvrir</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2208"/>
<location filename="../src/ui/mainWindow.ui" line="2216"/>
<source>Ctrl+O</source>
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2218"/>
<location filename="../src/ui/mainWindow.ui" line="2226"/>
<source>Recents</source>
<translation>Récents</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2221"/>
<location filename="../src/ui/mainWindow.ui" line="2229"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2231"/>
<location filename="../src/ui/mainWindow.ui" line="2239"/>
<source>Save</source>
<translation>Enregistrer</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2234"/>
<location filename="../src/ui/mainWindow.ui" line="2242"/>
<source>Ctrl+S</source>
<translation type="unfinished"></translation>
<translation>Ctrl+S</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2244"/>
<location filename="../src/ui/mainWindow.ui" line="2252"/>
<source>Save as...</source>
<translation>Enregistrer sous...</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2247"/>
<location filename="../src/ui/mainWindow.ui" line="2255"/>
<source>Ctrl+Shift+S</source>
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2257"/>
<location filename="../src/ui/mainWindow.ui" line="2265"/>
<source>Quit</source>
<translation>Quitter</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2260"/>
<location filename="../src/ui/mainWindow.ui" line="2268"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2271"/>
<location filename="../src/ui/mainWindow.ui" line="2279"/>
<source>&amp;Snowflake</source>
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2281"/>
<location filename="../src/ui/mainWindow.ui" line="2289"/>
<source>New</source>
<translation>Nouveau</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2284"/>
<location filename="../src/ui/mainWindow.ui" line="2292"/>
<source>Ctrl+N</source>
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2300"/>
<location filename="../src/ui/mainWindow.ui" line="2308"/>
<source>Show help texts</source>
<translation>Montrer les bulles d&apos;aides</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2303"/>
<location filename="../src/ui/mainWindow.ui" line="2311"/>
<source>Ctrl+Shift+B</source>
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2319"/>
<location filename="../src/ui/mainWindow.ui" line="2327"/>
<source>Spellcheck</source>
<translation>Correcteur orthographique</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2322"/>
<location filename="../src/ui/mainWindow.ui" line="2330"/>
<source>F8</source>
<translation></translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1929"/>
<location filename="../src/ui/mainWindow.ui" line="1926"/>
<source>Word count</source>
<translation>Nombre de mots</translation>
</message>
@ -474,84 +474,99 @@
<translation>Mode</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="285"/>
<location filename="../src/mainWindow.py" line="278"/>
<source>New character</source>
<translation>Nouveau perso</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="419"/>
<location filename="../src/mainWindow.py" line="414"/>
<source> (~{} pages)</source>
<translation> (~{} pages)</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="446"/>
<location filename="../src/mainWindow.py" line="441"/>
<source>Enter infos about your book, and yourself.</source>
<translation>Entrez toutes les informations relatives au livre, ainsi qu&apos;à vous.</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="448"/>
<location filename="../src/mainWindow.py" line="443"/>
<source>Take time to think about a one sentance (~50 words) summary of your book. Then expand it to a paragraph, then to a page, then to a full summary.</source>
<translation>Prenez le temps de réfléchir à un résumé de votre livre, en une phrase (~50 mots). Puis augmentez cette phrase en un paragraphe, puis en une page, puis en un résumé complet.</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="450"/>
<location filename="../src/mainWindow.py" line="445"/>
<source>Create your characters.</source>
<translation>Créez ici vos personnage.</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="452"/>
<location filename="../src/mainWindow.py" line="447"/>
<source>Develop plots.</source>
<translation>Développez vos intrigues.</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="454"/>
<location filename="../src/mainWindow.py" line="449"/>
<source>Create the outline of your masterpiece.</source>
<translation>Créez le plan de votre chef-d&apos;œuvre.</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="456"/>
<location filename="../src/mainWindow.py" line="451"/>
<source>Write.</source>
<translation>Écrivez.</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="458"/>
<location filename="../src/mainWindow.py" line="453"/>
<source>Debug infos. Sometimes useful.</source>
<translation>Des infos pour débugger des fois pendant qu&apos;on code c&apos;est utile.</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="471"/>
<location filename="../src/mainWindow.py" line="466"/>
<source>Dictionary</source>
<translation>Dictionnaire</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="492"/>
<location filename="../src/mainWindow.py" line="487"/>
<source>Install PyEnchant to use spellcheck</source>
<translation>Installez PyEnchant pour profiter du correcteur orthographique</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="422"/>
<location filename="../src/mainWindow.py" line="417"/>
<source>Words: {}{}</source>
<translation>Mots: {}{}</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1656"/>
<source>Text</source>
<translation type="unfinished"></translation>
<translation>Texte</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1669"/>
<source>Cork</source>
<translation type="unfinished"></translation>
<translation>Cork</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1936"/>
<location filename="../src/ui/mainWindow.ui" line="1933"/>
<source>Label</source>
<translation type="unfinished"></translation>
<translation>Label</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2137"/>
<location filename="../src/ui/mainWindow.ui" line="2134"/>
<source>Labels</source>
<translation type="unfinished"></translation>
<translation>Labels</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2194"/>
<source>Edit</source>
<translation>Édition</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2335"/>
<source>Labels...</source>
<translation>Labels...</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="2340"/>
<source>Status...</source>
<translation>Status...</translation>
</message>
<message>
<location filename="../src/ui/mainWindow.ui" line="1074"/>
@ -583,6 +598,41 @@
<source>Scène 2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="142"/>
<source>Idea</source>
<translation>Idée</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="143"/>
<source>Note</source>
<translation>Note</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="144"/>
<source>Chapter</source>
<translation>Chapitre</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="153"/>
<source>TODO</source>
<translation>TODO</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="154"/>
<source>First draft</source>
<translation>Premier brouillon</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="155"/>
<source>Second draft</source>
<translation>Second brouillon</translation>
</message>
<message>
<location filename="../src/mainWindow.py" line="156"/>
<source>Final</source>
<translation>Final</translation>
</message>
</context>
<context>
<name>SpellAction</name>
@ -621,12 +671,12 @@
<context>
<name>editorWidget</name>
<message>
<location filename="../src/ui/editors/editorWidget.py" line="183"/>
<location filename="../src/ui/editors/editorWidget.py" line="184"/>
<source>{} words / {}</source>
<translation>{} mots / {}</translation>
</message>
<message>
<location filename="../src/ui/editors/editorWidget.py" line="186"/>
<location filename="../src/ui/editors/editorWidget.py" line="187"/>
<source>{} words</source>
<translation>{} mots</translation>
</message>
@ -636,7 +686,7 @@
<message>
<location filename="../src/ui/editors/editorWidget_ui.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"></translation>
<translation>Form</translation>
</message>
</context>
<context>
@ -650,57 +700,57 @@
<context>
<name>outlineBasics</name>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="49"/>
<location filename="../src/ui/views/outlineBasics.py" line="47"/>
<source>Copy</source>
<translation>Copier</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="53"/>
<location filename="../src/ui/views/outlineBasics.py" line="51"/>
<source>Cut</source>
<translation>Couper</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="57"/>
<location filename="../src/ui/views/outlineBasics.py" line="55"/>
<source>Paste</source>
<translation>Coller</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="42"/>
<location filename="../src/ui/views/outlineBasics.py" line="40"/>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="63"/>
<location filename="../src/ui/views/outlineBasics.py" line="62"/>
<source>Set POV</source>
<translation>Choisir le POV</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="80"/>
<location filename="../src/ui/views/outlineBasics.py" line="79"/>
<source>Set Status</source>
<translation>Choisir le status</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="98"/>
<location filename="../src/ui/views/outlineBasics.py" line="95"/>
<source>Set Label</source>
<translation>Choisir le label</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="34"/>
<location filename="../src/ui/views/outlineBasics.py" line="32"/>
<source>New Folder</source>
<translation>Nouveau Dossier</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="38"/>
<location filename="../src/ui/views/outlineBasics.py" line="36"/>
<source>New Scene</source>
<translation>Nouvelle Scène</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="82"/>
<location filename="../src/ui/views/outlineBasics.py" line="64"/>
<source>None</source>
<translation>Aucun</translation>
</message>
<message>
<location filename="../src/ui/views/outlineBasics.py" line="138"/>
<location filename="../src/ui/views/outlineBasics.py" line="137"/>
<source>New</source>
<translation>Nouveau</translation>
</message>
@ -708,27 +758,40 @@
<context>
<name>qApp</name>
<message>
<location filename="../src/loadSave.py" line="41"/>
<location filename="../src/loadSave.py" line="44"/>
<source>Saving to {}.</source>
<translation>Enregistrement de {}.</translation>
</message>
<message>
<location filename="../src/loadSave.py" line="48"/>
<location filename="../src/loadSave.py" line="51"/>
<source>Loading {}... </source>
<translation>Chargement de {}...</translation>
</message>
</context>
<context>
<name>settingsWindow</name>
<message>
<location filename="../src/settingsWindow.py" line="39"/>
<source>New status</source>
<translation>Nouveau status</translation>
</message>
<message>
<location filename="../src/settingsWindow.py" line="54"/>
<source>New label</source>
<translation>Nouveau label</translation>
</message>
</context>
<context>
<name>sldImportance</name>
<message>
<location filename="../src/ui/sldImportance_ui.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"></translation>
<translation>Form</translation>
</message>
<message>
<location filename="../src/ui/sldImportance_ui.ui" line="39"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
<translation>TextLabel</translation>
</message>
<message>
<location filename="../src/ui/sldImportance.py" line="28"/>

View file

@ -36,7 +36,8 @@ def saveStandardItemModelXML(mdl, xml):
col = ET.SubElement(row, "col")
col.attrib["col"] = str(y)
if mdl.data(mdl.index(x, y), Qt.DecorationRole) != None:
col.attrib["color"] = iconColor(mdl.data(mdl.index(x, y), Qt.DecorationRole)).name(QColor.HexArgb)
color = iconColor(mdl.data(mdl.index(x, y), Qt.DecorationRole)).name(QColor.HexArgb)
col.attrib["color"] = color if color != "#ff000000" else "#00000000"
if mdl.data(mdl.index(x, y)) != "":
col.text = mdl.data(mdl.index(x, y))

View file

@ -139,19 +139,31 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.mdlLabels = QStandardItemModel()
for color, text in [
(Qt.transparent, ""),
(Qt.yellow, "Idea"),
(Qt.green, "Note"),
(Qt.blue, "Chapter"),
(Qt.red, "Scene")
(Qt.yellow, self.tr("Idea")),
(Qt.green, self.tr("Note")),
(Qt.blue, self.tr("Chapter")),
(Qt.red, self.tr("Scene"))
]:
self.mdlLabels.appendRow(QStandardItem(iconFromColor(color), text))
# Status
self.mdlStatus = QStandardItemModel()
for text in [
"",
self.tr("TODO"),
self.tr("First draft"),
self.tr("Second draft"),
self.tr("Final")
]:
self.mdlStatus.appendRow(QStandardItem(text))
# Outline
self.mdlOutline = outlineModel()
self.treeRedacOutline.setModel(self.mdlOutline)
self.treePlanOutline.setModelPersos(self.mdlPersos)
self.treePlanOutline.setModelLabels(self.mdlLabels)
self.treePlanOutline.setModelStatus(self.mdlStatus)
self.treePlanOutline.setModel(self.mdlOutline)
self.cmbPlanPOV.setModels(self.mdlPersos, self.mdlOutline)
@ -181,7 +193,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.cmbRedacPOV.setModels(self.mdlPersos, self.mdlOutline)
self.cmbRedacLabel.setModels(self.mdlLabels, self.mdlOutline)
self.cmbRedacStatus.setModel(self.mdlOutline)
self.cmbRedacStatus.setModels(self.mdlStatus, self.mdlOutline)
#self.chkRedacCompile.setModel(self.mdlOutline)
self.mprOutline = QDataWidgetMapper()
@ -230,6 +242,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.tblDebugPersosInfos.setModel(self.mdlPersosInfos)
self.treeDebugOutline.setModel(self.mdlOutline)
self.lstDebugLabels.setModel(self.mdlLabels)
self.lstDebugStatus.setModel(self.mdlStatus)
# Playing with qStyle
self.cmbStyle.addItems(list(QStyleFactory.keys()))
@ -326,6 +340,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
loadStandardItemModelXML(self.mdlPersos, "{}/perso.xml".format(project))
loadStandardItemModelXML(self.mdlPersosInfos, "{}/persoInfos.xml".format(project))
loadStandardItemModelXML(self.mdlLabels, "{}/labels.xml".format(project))
loadStandardItemModelXML(self.mdlStatus, "{}/status.xml".format(project))
self.mdlOutline.loadFromXML("{}/outline.xml".format(project))
# Stuff
@ -351,6 +366,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
saveStandardItemModelXML(self.mdlPersos, "{}/perso.xml".format(self.currentProject))
saveStandardItemModelXML(self.mdlPersosInfos, "{}/persoInfos.xml".format(self.currentProject))
saveStandardItemModelXML(self.mdlLabels, "{}/labels.xml".format(self.currentProject))
saveStandardItemModelXML(self.mdlStatus, "{}/status.xml".format(self.currentProject))
self.mdlOutline.saveToXML("{}/outline.xml".format(self.currentProject))
# closeEvent

View file

@ -14,13 +14,10 @@ from functions import *
class outlineModel(QAbstractItemModel):
newStatuses = pyqtSignal()
def __init__(self):
QAbstractItemModel.__init__(self)
self.rootItem = outlineItem(self, title="root")
self.generateStatuses()
def index(self, row, column, parent):
@ -95,9 +92,6 @@ class outlineModel(QAbstractItemModel):
item = index.internalPointer()
item.setData(index.column(), value, role)
if index.column() == Outline.status.value:
self.generateStatuses()
self.dataChanged.emit(index.sibling(index.row(), 0),
index.sibling(index.row(), max([i.value for i in Outline])))
return True
@ -310,33 +304,10 @@ class outlineModel(QAbstractItemModel):
#try:
root = ET.parse(xml)
self.rootItem = outlineItem(self, xml=ET.tostring(root))
self.generateStatuses()
#except:
#print("N'arrive pas à ouvrir {}".format(xml))
#return
################# DIVERS #################
def generateStatuses(self, item=None):
if item == None:
self.statuses = [
"TODO",
"First draft",
"Second draft",
"Final"
]
item = self.rootItem
val = item.data(Outline.status.value)
if val and not val in self.statuses:
self.statuses.append(val)
self.newStatuses.emit()
for c in item.children():
self.generateStatuses(c)
class outlineItem():

View file

@ -29,6 +29,19 @@ class settingsWindow(QWidget, Ui_Settings):
self.btnLabelRemove.clicked.connect(self.removeLabel)
self.btnLabelColor.clicked.connect(self.setLabelColor)
# Statuses
self.lstStatus.setModel(self.mw.mdlStatus)
self.lstStatus.setRowHidden(0, True)
self.btnStatusAdd.clicked.connect(self.addStatus)
self.btnStatusRemove.clicked.connect(self.removeStatus)
def addStatus(self):
self.mw.mdlStatus.appendRow(QStandardItem(self.tr("New status")))
def removeStatus(self):
for i in self.lstStatus.selectedIndexes():
self.mw.mdlStatus.removeRows(i.row(), 1)
def updateLabelColor(self, index):
px = QPixmap(64, 64)
px.fill(iconColor(self.mw.mdlLabels.item(index.row()).icon()))

View file

@ -13,40 +13,41 @@ class cmbOutlineStatusChoser(QComboBox):
QComboBox.__init__(self, parent)
self.activated[int].connect(self.changed)
self.currentModelIndex = None
self.setEditable(True)
self.setAutoFillBackground(True)
def setModel(self, mdlOutline):
def setModels(self, mdlStatus, mdlOutline):
self.mdlStatus = mdlStatus
self.mdlStatus.dataChanged.connect(self.updateItems) # Not emiting?
self.mdlOutline = mdlOutline
self.mdlOutline.dataChanged.connect(self.updateItems)
self.mdlOutline.dataChanged.connect(self.updateSelectedItem)
self.mdlOutline.newStatuses.connect(self.updateItems)
self.updateItems()
def updateSelectedItem(self, idx1=None, idx2=None):
if not self.currentModelIndex or not self.currentModelIndex.isValid():
self.setCurrentIndex(0)
else:
item = self.currentModelIndex.internalPointer()
self.setCurrentIndex(self.findText(item.data(Outline.status.value)))
val = self.currentModelIndex.internalPointer().data(Outline.status.value)
if not val: val = 0
try:
self.setCurrentIndex(int(val))
except:
pass
def changed(self, idx):
if self.currentModelIndex:
modelIndex = self.mdlOutline.index(self.currentModelIndex.row(), Outline.status.value, self.currentModelIndex.parent())
self.mdlOutline.setData(modelIndex, self.currentText())
self.mdlOutline.setData(modelIndex, self.currentIndex())
def setCurrentModelIndex(self, idx):
self.currentModelIndex = idx
self.updateItems()
self.updateSelectedItem()
def updateItems(self):
def updateItems(self, topLeft=None, bottomRight=None, roles=None):
self.clear()
self.addItem("")
for status in self.mdlOutline.statuses:
self.addItem(status)
for i in range(self.mdlStatus.rowCount()):
item = self.mdlStatus.item(i, 0)
if item:
self.addItem(item.text())
if self.currentModelIndex:
self.updateSelectedItem()

View file

@ -137,6 +137,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.stack.setCurrentIndex(3)
self.outlineView.setModelPersos(mainWindow().mdlPersos)
self.outlineView.setModelLabels(mainWindow().mdlLabels)
self.outlineView.setModelStatus(mainWindow().mdlStatus)
self.outlineView.setModel(self._model)
self.outlineView.setRootIndex(self.currentIndex)

View file

@ -952,7 +952,6 @@ class Ui_MainWindow(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.cmbRedacStatus.sizePolicy().hasHeightForWidth())
self.cmbRedacStatus.setSizePolicy(sizePolicy)
self.cmbRedacStatus.setEditable(True)
self.cmbRedacStatus.setFrame(False)
self.cmbRedacStatus.setObjectName("cmbRedacStatus")
self.formLayout_5.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.cmbRedacStatus)
@ -1097,6 +1096,9 @@ class Ui_MainWindow(object):
self.lstDebugLabels = QtWidgets.QListView(self.tab)
self.lstDebugLabels.setObjectName("lstDebugLabels")
self.horizontalLayout.addWidget(self.lstDebugLabels)
self.lstDebugStatus = QtWidgets.QListView(self.tab)
self.lstDebugStatus.setObjectName("lstDebugStatus")
self.horizontalLayout.addWidget(self.lstDebugStatus)
self.tabWidget.addTab(self.tab, "")
self.verticalLayout_29.addWidget(self.tabWidget)
self.tabMain.addTab(self.lytTabDebug, "")
@ -1366,12 +1368,12 @@ class Ui_MainWindow(object):
self.actLabels.setText(_translate("MainWindow", "Labels..."))
self.actStatus.setText(_translate("MainWindow", "Status..."))
from ui.cmbOutlineLabelChoser import cmbOutlineLabelChoser
from ui.chkOutlineCompile import chkOutlineCompile
from ui.views.outlineView import outlineView
from ui.cmbOutlinePersoChoser import cmbOutlinePersoChoser
from ui.cmbOutlineStatusChoser import cmbOutlineStatusChoser
from ui.sldImportance import sldImportance
from ui.editors.editorWidget import editorWidget
from ui.collapsibleGroupBox2 import collapsibleGroupBox2
from ui.cmbOutlineLabelChoser import cmbOutlineLabelChoser
from ui.sldImportance import sldImportance
from ui.cmbOutlineStatusChoser import cmbOutlineStatusChoser
from ui.views.outlineView import outlineView
from ui.chkOutlineCompile import chkOutlineCompile
from ui.views.treeView import treeView
from ui.editors.editorWidget import editorWidget
from ui.cmbOutlinePersoChoser import cmbOutlinePersoChoser

View file

@ -1879,9 +1879,6 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="frame">
<bool>false</bool>
</property>
@ -2140,6 +2137,9 @@
<item>
<widget class="QListView" name="lstDebugLabels"/>
</item>
<item>
<widget class="QListView" name="lstDebugStatus"/>
</item>
</layout>
</widget>
</widget>

View file

@ -66,7 +66,7 @@ class Ui_Settings(object):
self.tab_2.setObjectName("tab_2")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.tab_2)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.lstStatus = QtWidgets.QListWidget(self.tab_2)
self.lstStatus = QtWidgets.QListView(self.tab_2)
self.lstStatus.setObjectName("lstStatus")
self.verticalLayout_4.addWidget(self.lstStatus)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
@ -90,7 +90,7 @@ class Ui_Settings(object):
self.verticalLayout.addWidget(self.tabWidget)
self.retranslateUi(Settings)
self.tabWidget.setCurrentIndex(0)
self.tabWidget.setCurrentIndex(1)
QtCore.QMetaObject.connectSlotsByName(Settings)
def retranslateUi(self, Settings):

View file

@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@ -93,7 +93,9 @@
<string/>
</property>
<property name="icon">
<iconset theme="list-add"/>
<iconset theme="list-add">
<normaloff/>
</iconset>
</property>
</widget>
</item>
@ -103,7 +105,9 @@
<string/>
</property>
<property name="icon">
<iconset theme="list-remove"/>
<iconset theme="list-remove">
<normaloff/>
</iconset>
</property>
</widget>
</item>
@ -130,7 +134,7 @@
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QListWidget" name="lstStatus"/>
<widget class="QListView" name="lstStatus"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">

View file

@ -281,16 +281,18 @@ class corkDelegate(QStyledItemDelegate):
mainRect = self.mainRect
status = item.data(Outline.status.value)
if status:
p.save()
p.setClipRegion(QRegion(mainRect))
f = p.font()
f.setPointSize(f.pointSize() + 12)
f.setBold(True)
p.setFont(f)
p.setPen(QColor(Qt.red).lighter(175))
_rotate(-35)
p.drawText(mainRect, Qt.AlignCenter, status)
p.restore()
it = mainWindow().mdlStatus.item(int(status), 0)
if it != None:
p.save()
p.setClipRegion(QRegion(mainRect))
f = p.font()
f.setPointSize(f.pointSize() + 12)
f.setBold(True)
p.setFont(f)
p.setPen(QColor(Qt.red).lighter(175))
_rotate(-35)
p.drawText(mainRect, Qt.AlignCenter, it.text())
p.restore()
# Draw Summary
# One line

View file

@ -58,6 +58,7 @@ class outlineBasics(QAbstractItemView):
self.menu.addSeparator()
# POV
self.menuPOV = QMenu(qApp.translate("outlineBasics", "Set POV"), self.menu)
mw = mainWindow()
a = QAction(QIcon.fromTheme("edit-delete"), qApp.translate("outlineBasics", "None"), self.menuPOV)
@ -74,25 +75,23 @@ class outlineBasics(QAbstractItemView):
mpr.mapped.connect(self.setPOV)
self.menu.addMenu(self.menuPOV)
# Status
self.menuStatus = QMenu(qApp.translate("outlineBasics", "Set Status"), self.menu)
if self.model():
a = QAction(QIcon.fromTheme("edit-delete"), qApp.translate("outlineBasics", "None"), self.menuStatus)
a.triggered.connect(lambda: self.setStatus(""))
self.menuStatus.addAction(a)
self.menuStatus.addSeparator()
#a = QAction(QIcon.fromTheme("edit-delete"), qApp.translate("outlineBasics", "None"), self.menuStatus)
#a.triggered.connect(lambda: self.setStatus(""))
#self.menuStatus.addAction(a)
#self.menuStatus.addSeparator()
mpr = QSignalMapper(self.menuStatus)
for status in self.model().statuses:
a = QAction(status, self.menuStatus)
a.triggered.connect(mpr.map)
mpr.setMapping(a, status)
self.menuStatus.addAction(a)
mpr.mapped[str].connect(self.setStatus)
mpr = QSignalMapper(self.menuStatus)
for i in range(mw.mdlStatus.rowCount()):
a = QAction(mw.mdlStatus.item(i, 0).text(), self.menuStatus)
a.triggered.connect(mpr.map)
mpr.setMapping(a, i)
self.menuStatus.addAction(a)
mpr.mapped.connect(self.setStatus)
self.menu.addMenu(self.menuStatus)
# Labels
self.menuLabel = QMenu(qApp.translate("outlineBasics", "Set Label"), self.menu)
mpr = QSignalMapper(self.menuLabel)
for i in range(mw.mdlLabels.rowCount()):

View file

@ -13,13 +13,15 @@ from ui.views.outlineBasics import *
class outlineView(QTreeView, dndView, outlineBasics):
def __init__(self, parent=None, modelPersos=None, modelLabels=None):
def __init__(self, parent=None, modelPersos=None, modelLabels=None, modelStatus=None):
QTreeView.__init__(self, parent)
dndView.__init__(self)
outlineBasics.__init__(self, parent)
self.modelPersos = modelPersos
self.modelLabels = modelLabels
self.modelStatus = modelStatus
self.header().setStretchLastSection(False)
def setModelPersos(self, model):
@ -30,6 +32,10 @@ class outlineView(QTreeView, dndView, outlineBasics):
# This is used by treeOutlineLabelDelegate to display labels
self.modelLabels = model
def setModelStatus(self, model):
# This is used by treeOutlineStatusDelegate to display statuses
self.modelStatus = model
def setModel(self, model):
QTreeView.setModel(self, model)
@ -38,7 +44,7 @@ class outlineView(QTreeView, dndView, outlineBasics):
self.setItemDelegateForColumn(Outline.POV.value, self.treePlanOutlinePersoDelegate)
self.treePlanOutlineCompileDelegate = treeOutlineCompileDelegate()
self.setItemDelegateForColumn(Outline.compile.value, self.treePlanOutlineCompileDelegate)
self.treePlanOutlineStatusDelegate = treeOutlineStatusDelegate()
self.treePlanOutlineStatusDelegate = treeOutlineStatusDelegate(self.modelStatus)
self.setItemDelegateForColumn(Outline.status.value, self.treePlanOutlineStatusDelegate)
self.treePlanOutlineGoalPercentageDelegate = treeOutlineGoalPercentageDelegate()
self.setItemDelegateForColumn(Outline.goalPercentage.value, self.treePlanOutlineGoalPercentageDelegate)

View file

@ -113,32 +113,43 @@ class treeOutlineGoalPercentageDelegate(QStyledItemDelegate):
class treeOutlineStatusDelegate(QStyledItemDelegate):
def __init__(self, parent=None):
def __init__(self, mdlStatus, parent=None):
QStyledItemDelegate.__init__(self, parent)
self.mdlStatus = mdlStatus
def sizeHint(self, option, index):
s = QStyledItemDelegate.sizeHint(self, option, index)
if s.width() > 150:
s.setWidth(150)
elif s.width() < 50:
s.setWidth(50)
return s + QSize(18, 0)
def createEditor(self, parent, option, index):
editor = QComboBox(parent)
editor.setAutoFillBackground(True)
editor.setEditable(True)
editor.setFrame(False)
return editor
def setEditorData(self, editor, index):
statuses = index.model().statuses
editor.addItem("")
for status in statuses:
editor.addItem(status)
editor.setCurrentIndex(editor.findText(index.data()))
for i in range(self.mdlStatus.rowCount()):
editor.addItem(self.mdlStatus.item(i, 0).text())
val = index.internalPointer().data(Outline.status.value)
if not val: val = 0
editor.setCurrentIndex(int(val))
editor.showPopup()
def setModelData(self, editor, model, index):
val = editor.currentText()
val = editor.currentIndex()
model.setData(index, val)
def displayText(self, value, locale):
try:
return self.mdlStatus.item(int(value), 0).text()
except:
return ""
class treeOutlineLabelDelegate(QStyledItemDelegate):

View file

@ -8,7 +8,6 @@
<label row="3" text="4"/>
<label row="4" text="5"/>
<label row="5" text="6"/>
<label row="6" text="7"/>
</vertical>
<horizontal>
<label row="0" text="1"/>
@ -16,25 +15,22 @@
</header>
<data>
<row row="0">
<col col="0" color="#ff000000"/>
<col col="0" color="#00000000"/>
</row>
<row row="1">
<col col="0" color="#ffffff00">Ideas</col>
<col col="0" color="#ffffff00">Idée</col>
</row>
<row row="2">
<col col="0" color="#ff00ff00">Notes</col>
<col col="0" color="#ff00ff00">Note</col>
</row>
<row row="3">
<col col="0" color="#ff0000ff">Chapter</col>
<col col="0" color="#ff0000ff">Chapitre</col>
</row>
<row row="4">
<col col="0" color="#ffff0000">Scene</col>
<col col="0" color="#ffff0000">Scène</col>
</row>
<row row="5">
<col col="0" color="#fffa4eec">New label</col>
</row>
<row row="6">
<col col="0" color="#ff7ef8f4">New label</col>
<col col="0" color="#ffc9ff9d">Nouveau label</col>
</row>
</data>
</model>

View file

@ -3,8 +3,8 @@
<outlineItem title="Nouveau" type="folder" label="2" compile="2" wordCount="15">
<outlineItem title="Nouveau" type="scene" compile="2" text="return QTextEdit.resizeEvent(self, e) ad ad ad ad adaasd ad adsdasd ad e drset" wordCount="15"/>
</outlineItem>
<outlineItem title="Parent" type="folder" label="0" status="Second draft" compile="2" wordCount="787">
<outlineItem title="Nouveau" type="folder" summarySentance="Résumé de la scène en une phrase" status="First draft" compile="2" wordCount="27">
<outlineItem title="Parent" type="folder" label="0" compile="2" wordCount="787">
<outlineItem title="Nouveau" type="folder" summarySentance="Résumé de la scène en une phrase" compile="2" wordCount="27">
<outlineItem title="A" type="scene" compile="2" text="§Du texteDu texteDu text ad ad ad ad a Du texteDu te asd " wordCount="13" setGoal="10"/>
<outlineItem title="B" type="scene" compile="2" setGoal="3"/>
<outlineItem title="C" type="scene" compile="2" text="adasd ad ad asdasd asdasdasdasd asdad asd asd asd asd asd as as " wordCount="13" setGoal="3"/>
@ -13,7 +13,7 @@
<outlineItem title="Nouveau" type="scene" compile="2"/>
</outlineItem>
</outlineItem>
<outlineItem title="Nouveau" type="folder" summarySentance="Résumé de la scène en une phrase" summaryFull="asdasd asd " label="2" status="TODO" compile="2" wordCount="12">
<outlineItem title="Nouveau" type="folder" summarySentance="Résumé de la scène en une phrase" summaryFull="asdasd asd " label="2" compile="2" wordCount="12">
<outlineItem title="B" type="scene" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
</outlineItem>
<outlineItem title="Nouveau" type="folder" label="1" compile="2" wordCount="727">
@ -35,29 +35,29 @@
<outlineItem title="B" type="scene" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="B" type="scene" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
</outlineItem>
<outlineItem title="MOIMOIMOI" type="scene" summarySentance="Résumé" summaryFull="Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**?" status="Second draft" compile="2" text="Là ça joue, et on est content. Pas de raison de se plaindre. **OK**?&#10;&#10;Ben voilà, suffisait de demander ! " wordCount="21" setGoal="250"/>
<outlineItem title="MOIMOIMOI" type="scene" summarySentance="Résumé" summaryFull="Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**? Là ça joue, et on est content. Pas de raison de se plaindre. **OK**?" compile="2" text="Là ça joue, et on est content. Pas de raison de se plaindre. **OK**?&#10;&#10;Ben voilà, suffisait de demander ! " wordCount="21" setGoal="250"/>
</outlineItem>
<outlineItem title="Nouveau A" type="folder" POV="1" label="0" compile="2" wordCount="604" setGoal="250">
<outlineItem title="Nouveau A" type="folder" POV="1" label="0" status="0" compile="2" wordCount="604" setGoal="250">
<outlineItem title="Nouveau" type="scene" label="0" compile="2" text="ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" wordCount="211"/>
<outlineItem title="Nouveau Avec un nom franchement très long et on est mal barré pour l'imprimer correctement" type="scene" POV="2" label="0" compile="2" text="ASDASd ASD ASDASd ASD " wordCount="4"/>
<outlineItem title="B" type="scene" label="0" status="0" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="B" type="scene" label="0" status="0" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="B" type="scene" label="0" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="B" type="scene" label="0" status="Final" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="B" type="scene" label="0" status="Final" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="Nouveau" type="scene" label="0" compile="2"/>
<outlineItem title="Nouveau" type="scene" label="0" compile="2" text="ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" wordCount="211"/>
<outlineItem title="B" type="scene" label="0" status="Final" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="A" type="scene" label="0" status="TODO" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="B" type="scene" label="0" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="Nouveau" type="scene" label="0" status="First draft" compile="2" text="ASDASd ASD " wordCount="2"/>
<outlineItem title="A" type="scene" label="0" status="Final" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="A" type="scene" label="0" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="B" type="scene" label="0" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="Nouveau" type="scene" label="0" compile="2" text="ASDASd ASD " wordCount="2"/>
<outlineItem title="A" type="scene" label="0" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
</outlineItem>
<outlineItem title="A" type="scene" POV="0" label="0" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="Nouveau" type="folder" label="0" compile="2" wordCount="596">
<outlineItem title="Nouveau" type="scene" POV="0" label="0" compile="2" text="ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" wordCount="211"/>
<outlineItem title="Titre cool" type="scene" POV="0" label="0" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="Nouveau" type="scene" POV="0" label="0" compile="2" text="ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" wordCount="211"/>
<outlineItem title="Titre cool" type="scene" POV="0" label="0" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="Titre cool" type="scene" POV="0" label="0" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="Nouveau" type="folder" status="2" compile="2" wordCount="596">
<outlineItem title="Nouveau" type="scene" POV="0" label="0" status="0" compile="2" text="ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" wordCount="211"/>
<outlineItem title="Titre cool" type="scene" POV="0" label="0" status="1" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="Nouveau" type="scene" POV="0" label="1" status="4" compile="2" text="ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD ASDASd ASD adasaas adasds adssdawdas saasdASDASd ASD ASDASd ASD ASDASd ASD &#10;&#10;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" wordCount="211"/>
<outlineItem title="Titre cool" type="scene" POV="0" label="1" status="3" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="Titre cool" type="scene" POV="0" label="0" status="0" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
</outlineItem>
<outlineItem title="Titre cool" type="scene" POV="2" label="5" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
<outlineItem title="Titre cool" type="scene" POV="2" label="5" status="0" compile="2" text="asdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasdasdasd asd asd asd asd asdasd asdaasd asdasd asd aasdasd asd asd asd asd asdasd asdaasd " wordCount="58" setGoal="50"/>
</outlineItem>

36
test_project/status.xml Normal file
View file

@ -0,0 +1,36 @@
<?xml version='1.0' encoding='UTF-8'?>
<model>
<header>
<vertical>
<label row="0" text="1"/>
<label row="1" text="2"/>
<label row="2" text="3"/>
<label row="3" text="4"/>
<label row="4" text="5"/>
<label row="5" text="6"/>
</vertical>
<horizontal>
<label row="0" text="1"/>
</horizontal>
</header>
<data>
<row row="0">
<col col="0"/>
</row>
<row row="1">
<col col="0">TODO</col>
</row>
<row row="2">
<col col="0">Premier brouillon</col>
</row>
<row row="3">
<col col="0">Second brouillon</col>
</row>
<row row="4">
<col col="0">Final</col>
</row>
<row row="5">
<col col="0">Nouveau status</col>
</row>
</data>
</model>