Drag n Drop support different actions

This commit is contained in:
Olivier Keshavjee 2015-06-09 12:32:43 +02:00
parent b8deb873ad
commit 110eaa9ddb
15 changed files with 336 additions and 158 deletions

View file

@ -8,7 +8,6 @@ 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 *
@ -138,25 +137,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Outline
self.mdlOutline = outlineModel()
self.treeRedacOutline.setModel(self.mdlOutline)
self.treePlanOutline.setModelPersos(self.mdlPersos)
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.treePlanOutlineStatusDelegate = treeOutlineStatusDelegate()
self.treePlanOutline.setItemDelegateForColumn(Outline.status.value, self.treePlanOutlineStatusDelegate)
self.treePlanOutlineGoalPercentageDelegate = treeOutlineGoalPercentageDelegate()
self.treePlanOutline.setItemDelegateForColumn(Outline.goalPercentage.value, self.treePlanOutlineGoalPercentageDelegate)
self.cmbPlanPOV.setModels(self.mdlPersos, self.mdlOutline)
self.treePlanOutline.header().setSectionResizeMode(Outline.title.value, QHeaderView.Stretch)
self.treePlanOutline.header().setSectionResizeMode(Outline.POV.value, QHeaderView.ResizeToContents)
self.treePlanOutline.header().setSectionResizeMode(Outline.status.value, QHeaderView.ResizeToContents)
self.treePlanOutline.header().setSectionResizeMode(Outline.compile.value, QHeaderView.ResizeToContents)
self.treePlanOutline.header().setSectionResizeMode(Outline.wordCount.value, QHeaderView.ResizeToContents)
self.treePlanOutline.header().setSectionResizeMode(Outline.goal.value, QHeaderView.ResizeToContents)
self.treePlanOutline.header().setSectionResizeMode(Outline.goalPercentage.value, QHeaderView.ResizeToContents)
self.mprPlan = QDataWidgetMapper()
self.mprPlan.setModel(self.mdlOutline)
@ -175,12 +158,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
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, Outline.wordCount.value, Outline.goal.value, Outline.goalPercentage.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"))
@ -221,7 +198,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.sldCorkSizeFactor.valueChanged.connect(self.redacEditor.setCorkSizeFactor)
self.btnRedacFolderCork.toggled.connect(self.sldCorkSizeFactor.setVisible)
self.btnRedacFolderText.toggled.connect(lambda v: self.redacEditor.setFolderView("text" if v else "cork"))
self.btnRedacFolderText.clicked.connect(lambda v: self.redacEditor.setFolderView("text"))
self.btnRedacFolderCork.clicked.connect(lambda v: self.redacEditor.setFolderView("cork"))
self.btnRedacFolderOutline.clicked.connect(lambda v: self.redacEditor.setFolderView("outline"))
#Debug
self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"])
@ -249,6 +228,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.cmbPlanPOV.setHidden(idx.internalPointer().isFolder())
self.btnRedacFolderText.setHidden(not idx.internalPointer().isFolder())
self.btnRedacFolderCork.setHidden(not idx.internalPointer().isFolder())
self.btnRedacFolderOutline.setHidden(not idx.internalPointer().isFolder())
self.sldCorkSizeFactor.setHidden(not idx.internalPointer().isFolder())
def outlineAddItem(self, type="folder"):

View file

@ -176,8 +176,7 @@ class outlineModel(QAbstractItemModel):
def supportedDropActions(self):
return Qt.MoveAction # Qt.CopyAction |
#return Qt.CopyAction | Qt.MoveAction
return Qt.CopyAction | Qt.MoveAction
#def canDropMimeData(self, data, action, row, column, parent):
#if not data.hasFormat("application/xml"):
@ -276,7 +275,6 @@ class outlineModel(QAbstractItemModel):
return self.removeRows(row, 1, parent)
def removeRows(self, row, count, parent=QModelIndex()):
print("Removing")
if not parent.isValid():
parentItem = self.rootItem
else:

View file

@ -8,7 +8,6 @@ from qt import *
from enums import *
from ui.editors.editorWidget_ui import *
from ui.editors.customTextEdit import *
from ui.editors.corkDelegate import *
from functions import *
class editorWidget(QWidget, Ui_editorWidget_ui):
@ -28,18 +27,12 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.spellcheck = True
self.folderView = "cork"
self.corkView.setResizeMode(QListView.Adjust)
self.corkView.setWrapping(True)
self.corkView.setItemDelegate(corkDelegate())
self.corkView.setSpacing(5)
self.corkView.setStyleSheet("""QListView {
background:#926239;
}""")
def setFolderView(self, v):
oldV = self.folderView
if v == "cork":
self.folderView = "cork"
elif v == "outline":
self.folderView = "outline"
else:
self.folderView = "text"
@ -61,7 +54,67 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
item = index.internalPointer()
if item.isFolder() and self.folderView == "text":
# Couting the number of selected items
sel = [index]
for i in mainWindow().treeRedacOutline.selectionModel().selection().indexes():
if i.column() != 0: continue
if i not in sel: sel.append(i)
def addTitle(itm):
edt = customTextEdit(self, html="<h{l}>{t}</h{l}>".format(l=min(itm.level()+1, 5), t=itm.title()), autoResize=True)
edt.setFrameShape(QFrame.NoFrame)
self.txtEdits.append(edt)
l.addWidget(edt)
def addLine():
line = QFrame(self.scene)
line.setFrameShape(QFrame.HLine)
line.setFrameShadow(QFrame.Sunken)
l.addWidget(line)
def addScene(itm):
edt = customTextEdit(self, index=itm.index(), spellcheck=self.spellcheck, dict=self.currentDict, autoResize=True)
edt.setFrameShape(QFrame.NoFrame)
edt.setStatusTip(itm.path())
self.toggledSpellcheck.connect(edt.toggleSpellcheck)
self.dictChanged.connect(edt.setDict)
#edt.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
self.txtEdits.append(edt)
l.addWidget(edt)
def addChildren(itm):
for c in range(itm.childCount()):
child = itm.child(c)
if child.isFolder():
addTitle(child)
addChildren(child)
else:
addScene(child)
addLine()
def addSpacer():
l.addItem(QSpacerItem(10, 1000, QSizePolicy.Minimum, QSizePolicy.Expanding))
# Display multiple selected items
if len(sel) > 1 and False: # Buggy and not very useful, skip
self.stack.setCurrentIndex(1)
w = QWidget()
l = QVBoxLayout(w)
self.txtEdits = []
for idx in sel:
sItem = idx.internalPointer()
addTitle(sItem)
if sItem.isFolder():
addChildren(sItem)
else:
addScene(sItem)
addLine()
addSpacer()
self.scroll.setWidget(w)
elif item.isFolder() and self.folderView == "text":
self.stack.setCurrentIndex(1)
w = QWidget()
@ -70,44 +123,9 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.txtEdits = []
def addTitle(itm):
edt = customTextEdit(self, html="<h{l}>{t}</h{l}>".format(l=min(itm.level()+1, 5), t=itm.title()), autoResize=True)
edt.setFrameShape(QFrame.NoFrame)
self.txtEdits.append(edt)
l.addWidget(edt)
def addLine():
line = QFrame(self.scene)
line.setFrameShape(QFrame.HLine)
line.setFrameShadow(QFrame.Sunken)
l.addWidget(line)
def addScene(itm):
edt = customTextEdit(self, index=itm.index(), spellcheck=self.spellcheck, dict=self.currentDict, autoResize=True)
edt.setFrameShape(QFrame.NoFrame)
edt.setStatusTip(itm.path())
self.toggledSpellcheck.connect(edt.toggleSpellcheck)
self.dictChanged.connect(edt.setDict)
#edt.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
self.txtEdits.append(edt)
l.addWidget(edt)
def addChildren(itm):
for c in range(itm.childCount()):
child = itm.child(c)
if child.isFolder():
addTitle(child)
addChildren(child)
else:
addScene(child)
addLine()
addTitle(item)
addChildren(item)
l.addItem(QSpacerItem(10, 1000, QSizePolicy.Minimum, QSizePolicy.Expanding))
addSpacer()
self.scroll.setWidget(w)
elif item.isFolder() and self.folderView == "cork":
@ -115,6 +133,12 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.corkView.setModel(self._model)
self.corkView.setRootIndex(self.currentIndex)
elif item.isFolder() and self.folderView == "outline":
self.stack.setCurrentIndex(3)
self.outlineView.setModelPersos(mainWindow().mdlPersos)
self.outlineView.setModel(self._model)
self.outlineView.setRootIndex(self.currentIndex)
else:
self.stack.setCurrentIndex(0)

View file

@ -47,16 +47,19 @@ class Ui_editorWidget_ui(object):
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.cork)
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.corkView = QtWidgets.QListView(self.cork)
self.corkView.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
self.corkView.setDefaultDropAction(QtCore.Qt.MoveAction)
self.corkView.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
self.corkView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.corkView.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
self.corkView.setFlow(QtWidgets.QListView.LeftToRight)
self.corkView = corkView(self.cork)
self.corkView.setObjectName("corkView")
self.horizontalLayout_3.addWidget(self.corkView)
self.stack.addWidget(self.cork)
self.outline = QtWidgets.QWidget()
self.outline.setObjectName("outline")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.outline)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.outlineView = outlineView(self.outline)
self.outlineView.setObjectName("outlineView")
self.verticalLayout_3.addWidget(self.outlineView)
self.stack.addWidget(self.outline)
self.verticalLayout_2.addWidget(self.stack)
self.retranslateUi(editorWidget_ui)
@ -68,3 +71,5 @@ class Ui_editorWidget_ui(object):
editorWidget_ui.setWindowTitle(_translate("editorWidget_ui", "Form"))
from ui.editors.customTextEdit import customTextEdit
from ui.views.outlineView import outlineView
from ui.views.corkView import corkView

View file

@ -68,26 +68,17 @@
<number>0</number>
</property>
<item>
<widget class="QListView" name="corkView">
<property name="dragDropMode">
<enum>QAbstractItemView::DragDrop</enum>
</property>
<property name="defaultDropAction">
<enum>Qt::MoveAction</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
<property name="flow">
<enum>QListView::LeftToRight</enum>
</property>
</widget>
<widget class="corkView" name="corkView"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="outline">
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="outlineView" name="outlineView"/>
</item>
</layout>
</widget>
@ -101,6 +92,16 @@
<extends>QTextEdit</extends>
<header>ui.editors.customTextEdit.h</header>
</customwidget>
<customwidget>
<class>outlineView</class>
<extends>QTreeView</extends>
<header>ui.views.outlineView.h</header>
</customwidget>
<customwidget>
<class>corkView</class>
<extends>QListView</extends>
<header>ui.views.corkView.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>

View file

@ -703,7 +703,7 @@ class Ui_MainWindow(object):
self.splitterOutlineV = QtWidgets.QSplitter(self.layoutWidget)
self.splitterOutlineV.setOrientation(QtCore.Qt.Vertical)
self.splitterOutlineV.setObjectName("splitterOutlineV")
self.treePlanOutline = QtWidgets.QTreeView(self.splitterOutlineV)
self.treePlanOutline = outlineView(self.splitterOutlineV)
self.treePlanOutline.setDragEnabled(True)
self.treePlanOutline.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
self.treePlanOutline.setDefaultDropAction(QtCore.Qt.MoveAction)
@ -800,10 +800,7 @@ class Ui_MainWindow(object):
self.verticalLayout_30 = QtWidgets.QVBoxLayout(self.widget)
self.verticalLayout_30.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_30.setObjectName("verticalLayout_30")
self.treeRedacOutline = QtWidgets.QTreeView(self.widget)
self.treeRedacOutline.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
self.treeRedacOutline.setDefaultDropAction(QtCore.Qt.MoveAction)
self.treeRedacOutline.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
self.treeRedacOutline = treeView(self.widget)
self.treeRedacOutline.setObjectName("treeRedacOutline")
self.verticalLayout_30.addWidget(self.treeRedacOutline)
self.horizontalLayout_31 = QtWidgets.QHBoxLayout()
@ -870,6 +867,11 @@ class Ui_MainWindow(object):
self.btnRedacFolderCork.setObjectName("btnRedacFolderCork")
self.buttonGroup.addButton(self.btnRedacFolderCork)
self.horizontalLayout_19.addWidget(self.btnRedacFolderCork)
self.btnRedacFolderOutline = QtWidgets.QPushButton(self.layoutWidget1)
self.btnRedacFolderOutline.setCheckable(True)
self.btnRedacFolderOutline.setObjectName("btnRedacFolderOutline")
self.buttonGroup.addButton(self.btnRedacFolderOutline)
self.horizontalLayout_19.addWidget(self.btnRedacFolderOutline)
self.sldCorkSizeFactor = QtWidgets.QSlider(self.layoutWidget1)
self.sldCorkSizeFactor.setMinimumSize(QtCore.QSize(100, 0))
self.sldCorkSizeFactor.setMaximumSize(QtCore.QSize(200, 16777215))
@ -1276,6 +1278,7 @@ class Ui_MainWindow(object):
self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabOutline), _translate("MainWindow", "Outline"))
self.btnRedacFolderText.setText(_translate("MainWindow", "Text"))
self.btnRedacFolderCork.setText(_translate("MainWindow", "Cork"))
self.btnRedacFolderOutline.setText(_translate("MainWindow", "Outline"))
self.btnRedacFullscreen.setShortcut(_translate("MainWindow", "F11"))
self.groupBox_4.setTitle(_translate("MainWindow", "Properties"))
self.lblRedacPOV.setText(_translate("MainWindow", "POV"))
@ -1329,9 +1332,11 @@ class Ui_MainWindow(object):
self.actSpellcheck.setText(_translate("MainWindow", "Spellcheck"))
self.actSpellcheck.setShortcut(_translate("MainWindow", "F8"))
from ui.sldImportance import sldImportance
from ui.chkOutlineCompile import chkOutlineCompile
from ui.editors.editorWidget import editorWidget
from ui.cmbOutlineStatusChoser import cmbOutlineStatusChoser
from ui.cmbOutlinePersoChoser import cmbOutlinePersoChoser
from ui.collapsibleGroupBox2 import collapsibleGroupBox2
from ui.sldImportance import sldImportance
from ui.views.treeView import treeView
from ui.editors.editorWidget import editorWidget
from ui.views.outlineView import outlineView
from ui.chkOutlineCompile import chkOutlineCompile
from ui.cmbOutlineStatusChoser import cmbOutlineStatusChoser

View file

@ -1341,7 +1341,7 @@
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QTreeView" name="treePlanOutline">
<widget class="outlineView" name="treePlanOutline">
<property name="dragEnabled">
<bool>true</bool>
</property>
@ -1549,17 +1549,7 @@
<number>0</number>
</property>
<item>
<widget class="QTreeView" name="treeRedacOutline">
<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>
<widget class="treeView" name="treeRedacOutline"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_31">
@ -1689,6 +1679,19 @@
</attribute>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnRedacFolderOutline">
<property name="text">
<string>Outline</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item>
<widget class="QSlider" name="sldCorkSizeFactor">
<property name="minimumSize">
@ -2324,6 +2327,16 @@
<header>ui.collapsibleGroupBox2.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>outlineView</class>
<extends>QTreeView</extends>
<header>ui.views.outlineView.h</header>
</customwidget>
<customwidget>
<class>treeView</class>
<extends>QTreeView</extends>
<header>ui.views.treeView.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>

0
src/ui/views/__init__.py Normal file
View file

View file

@ -248,6 +248,18 @@ class corkDelegate(QStyledItemDelegate):
#itemRect.right(), iconRect.bottom() + margin)
p.drawLine(bottomRect.topLeft(), bottomRect.topRight())
p.restore()
# Lines
if True:
p.save()
p.setPen(QColor("#EEE"))
fm = QFontMetrics(option.font)
h = fm.lineSpacing()
l = self.mainTextRect.topLeft() + QPoint(0, h)
while self.mainTextRect.contains(l):
p.drawLine(l, QPoint(self.mainTextRect.right(), l.y()))
l.setY(l.y() + h)
p.restore()
# Draw status
mainRect = self.mainRect
@ -281,18 +293,6 @@ class corkDelegate(QStyledItemDelegate):
p.setFont(option.font)
p.drawText(self.mainTextRect, Qt.TextWordWrap, fullSummary)
# Lines
if True:
p.save()
p.setPen(QColor("#EEE"))
fm = QFontMetrics(option.font)
h = fm.lineSpacing()
l = self.mainTextRect.topLeft() + QPoint(0, h)
while self.mainTextRect.contains(l):
p.drawLine(l, QPoint(self.mainTextRect.right(), l.y()))
l.setY(l.y() + h)
p.restore()
#Debug
#for r in [self.itemRect, self.iconRect, self.titleRect, self.bottomRect, self.mainLineRect, self.mainTextRect]:
#p.drawRect(r)

32
src/ui/views/corkView.py Normal file
View file

@ -0,0 +1,32 @@
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
from enums import *
from functions import *
from ui.views.corkDelegate import *
from ui.views.dndView import *
class corkView(QListView, dndView):
def __init__(self, parent=None):
QListView.__init__(self, parent)
dndView.__init__(self, parent)
self.setResizeMode(QListView.Adjust)
self.setWrapping(True)
self.setItemDelegate(corkDelegate())
self.setSpacing(5)
self.setStyleSheet("""QListView {
background:#926239;
}""")
self.setVerticalScrollMode(self.ScrollPerPixel)
self.setFlow(self.LeftToRight)
self.setSelectionBehavior(self.SelectRows)
def dragMoveEvent(self, event):
dndView.dragMoveEvent(self, event)
QListView.dragMoveEvent(self, event)

25
src/ui/views/dndView.py Normal file
View file

@ -0,0 +1,25 @@
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
from enums import *
from functions import *
class dndView(QAbstractItemView):
def __init__(self, parent=None):
QAbstractItemView.__init__(self, parent)
self.setDragDropMode(self.DragDrop)
self.setDefaultDropAction(Qt.MoveAction)
self.setSelectionMode(self.ExtendedSelection)
def dragMoveEvent(self, event):
#return QAbstractItemView.dragMoveEvent(self, event)
#print(a)
if event.keyboardModifiers() & Qt.ControlModifier:
event.setDropAction(Qt.CopyAction)
else:
event.setDropAction(Qt.MoveAction)

View file

@ -0,0 +1,61 @@
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
from enums import *
from functions import *
from ui.views.treeOutlineDelegates import *
from ui.views.dndView import *
class outlineView(QTreeView, dndView):
def __init__(self, parent=None, modelPersos=None):
QTreeView.__init__(self, parent)
dndView.__init__(self, parent)
self.modelPersos = modelPersos
self.header().setStretchLastSection(False)
def setModelPersos(self, model):
# This is used by treeOutlinePersoDelegate to select character
self.modelPersos = model
def setModel(self, model):
QTreeView.setModel(self, model)
# Setting delegates
self.treePlanOutlinePersoDelegate = treeOutlinePersoDelegate(self.modelPersos)
self.setItemDelegateForColumn(Outline.POV.value, self.treePlanOutlinePersoDelegate)
self.treePlanOutlineCompileDelegate = treeOutlineCompileDelegate()
self.setItemDelegateForColumn(Outline.compile.value, self.treePlanOutlineCompileDelegate)
self.treePlanOutlineStatusDelegate = treeOutlineStatusDelegate()
self.setItemDelegateForColumn(Outline.status.value, self.treePlanOutlineStatusDelegate)
self.treePlanOutlineGoalPercentageDelegate = treeOutlineGoalPercentageDelegate()
self.setItemDelegateForColumn(Outline.goalPercentage.value, self.treePlanOutlineGoalPercentageDelegate)
# Hiding columns
for c in range(1, self.model().columnCount()):
self.hideColumn(c)
for c in [Outline.POV.value, Outline.status.value, Outline.compile.value,
Outline.wordCount.value, Outline.goal.value, Outline.goalPercentage.value]:
self.showColumn(c)
self.header().setSectionResizeMode(Outline.title.value, QHeaderView.Stretch)
self.header().setSectionResizeMode(Outline.POV.value, QHeaderView.ResizeToContents)
self.header().setSectionResizeMode(Outline.status.value, QHeaderView.ResizeToContents)
self.header().setSectionResizeMode(Outline.compile.value, QHeaderView.ResizeToContents)
self.header().setSectionResizeMode(Outline.wordCount.value, QHeaderView.ResizeToContents)
self.header().setSectionResizeMode(Outline.goal.value, QHeaderView.ResizeToContents)
self.header().setSectionResizeMode(Outline.goalPercentage.value, QHeaderView.ResizeToContents)
def setRootIndex(self, index):
QTreeView.setRootIndex(self, index)
self.treePlanOutlineGoalPercentageDelegate = treeOutlineGoalPercentageDelegate(index)
self.setItemDelegateForColumn(Outline.goalPercentage.value, self.treePlanOutlineGoalPercentageDelegate)
def dragMoveEvent(self, event):
dndView.dragMoveEvent(self, event)
QTreeView.dragMoveEvent(self, event)

View file

@ -59,8 +59,15 @@ class treeOutlineCompileDelegate(QStyledItemDelegate):
return ""
class treeOutlineGoalPercentageDelegate(QStyledItemDelegate):
def __init__(self, parent=None):
def __init__(self, rootIndex=None, parent=None):
QStyledItemDelegate.__init__(self, parent)
self.rootIndex = rootIndex
def sizeHint(self, option, index):
sh = QStyledItemDelegate.sizeHint(self, option, index)
#if sh.width() > 50:
sh.setWidth(100)
return sh
def paint(self, painter, option, index):
if not index.isValid():
@ -78,6 +85,8 @@ class treeOutlineGoalPercentageDelegate(QStyledItemDelegate):
typ = item.data(Outline.type.value)
level = item.level()
if self.rootIndex:
level -= self.rootIndex.internalPointer().level() + 1
margin = 5
height = max(min(option.rect.height() - 2*margin, 12) - 2 * level, 6)

28
src/ui/views/treeView.py Normal file
View file

@ -0,0 +1,28 @@
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
from enums import *
from functions import *
from ui.views.dndView import *
class treeView(QTreeView, dndView):
def __init__(self, parent=None):
QTreeView.__init__(self, parent)
dndView.__init__(self, parent)
def setModel(self, model):
QTreeView.setModel(self, model)
# Hiding columns
for c in range(1, self.model().columnCount()):
self.hideColumn(c)
def dragMoveEvent(self, event):
dndView.dragMoveEvent(self, event)
QTreeView.dragMoveEvent(self, event)

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<outlineItem title="root" type="folder" compile="2" wordCount="1875" setGoal="112">
<outlineItem title="root" type="folder" compile="2" wordCount="2221" setGoal="112">
<outlineItem title="Nouveau" type="folder" 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>
@ -17,12 +17,13 @@
<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" compile="2" wordCount="727">
<outlineItem title="Nouveau" type="folder" compile="2"/>
<outlineItem title="Nouveau" type="folder" compile="2" wordCount="48">
<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 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="Nouveau" type="scene" compile="2" text="ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD **ASDASd** ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;ASDASd ASD ASDASd ASD &#10;asd asd &#10;" wordCount="199" setGoal="100"/>
<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 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 title="Nouveau s" type="scene" summaryFull="asd asdasd asaa asd asd " POV="1" compile="2" text="ASDASd ASD ASDASd ASD asd sss ad ad ssss" wordCount="9" setGoal="10"/>
<outlineItem title="MOIMOIMOI" type="scene" POV="1" compile="2" text="ASDASd ASD ASDASd ASD ASDASd ASD **ssss**" wordCount="7" setGoal="10"/>
<outlineItem title="Nouveau s" type="scene" POV="1" compile="2" text="ASDASd ASD ASDASd ASD asd sss ad ad ssss" wordCount="9" setGoal="10"/>
@ -36,28 +37,24 @@
</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>
<outlineItem title="Nouveau A" type="folder" compile="2" wordCount="989" setGoal="250">
<outlineItem title="Nouveau Avec un nom franchement très long et on est mal barré pour l'imprimer correctement" type="scene" compile="2" text="ASDASd ASD ASDASd ASD " wordCount="4"/>
<outlineItem title="Nouveau A" type="folder" compile="2" wordCount="1084" setGoal="250">
<outlineItem title="Nouveau" type="scene" 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" 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" status="First draft" compile="2" text="ASDASd ASD " wordCount="2"/>
<outlineItem title="A" type="scene" 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 Avec un nom franchement très long et on est mal barré pour l'imprimer correctement" type="scene" POV="2" compile="2" text="ASDASd ASD ASDASd ASD " wordCount="4"/>
<outlineItem title="Nouveau" type="scene" 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" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="Nouveau" type="scene" 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" 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 title="B" type="scene" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="Nouveau" type="scene" compile="2"/>
<outlineItem title="A" type="scene" 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="Nouveau" type="scene" 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" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="Nouveau" type="scene" 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" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="Nouveau" type="scene" 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" 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 title="A" type="scene" 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" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="Nouveau" type="scene" status="First draft" compile="2" text="ASDASd ASD " wordCount="2"/>
<outlineItem title="A" type="scene" 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>
<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 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 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 title="B" type="scene" compile="2" text="asd asd asd asd asd asd asd asd asd asd asd" wordCount="12" setGoal="10"/>
<outlineItem title="A" type="scene" 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" 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>