Saving and loading some settings, in an ugly way

This commit is contained in:
Olivier Keshavjee 2015-06-15 20:09:16 +02:00
parent 9452b32f50
commit f89998743f
10 changed files with 306 additions and 55 deletions

View file

@ -1,9 +1,6 @@
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
from ui.mainWindow import *
@ -14,6 +11,7 @@ from models.outlineModel import *
from models.persosProxyModel import *
from functions import *
from settingsWindow import *
import settings
# Spell checker support
try:
@ -212,6 +210,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.actLabels.triggered.connect(self.settingsLabel)
self.actStatus.triggered.connect(self.settingsStatus)
self.actQuit.triggered.connect(self.close)
self.generateViewMenu()
#Debug
self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"])
@ -378,6 +377,21 @@ class MainWindow(QMainWindow, Ui_MainWindow):
loadStandardItemModelXML(self.mdlLabels, "{}/labels.xml".format(project))
loadStandardItemModelXML(self.mdlStatus, "{}/status.xml".format(project))
self.mdlOutline.loadFromXML("{}/outline.xml".format(project))
settings.load("{}/settings.pickle".format(project))
# Stuff from settings
self.generateViewMenu()
self.sldCorkSizeFactor.setValue(settings.corkSizeFactor)
self.actSpellcheck.setChecked(settings.spellcheck)
self.updateMenuDict()
self.setDictionary()
self.redacEditor.setFolderView(settings.folderView)
if settings.folderView == "text":
self.btnRedacFolderText.setChecked(True)
elif settings.folderView == "cork":
self.btnRedacFolderCork.setChecked(True)
elif settings.folderView == "outline":
self.btnRedacFolderOutline.setChecked(True)
# Stuff
self.checkPersosID()
@ -393,9 +407,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def closeEvent(self, event):
# Save State and geometry
settings = QSettings(qApp.organizationName(), qApp.applicationName())
settings.setValue("geometry", self.saveGeometry())
settings.setValue("windowState", self.saveState())
stgs = QSettings(qApp.organizationName(), qApp.applicationName())
stgs.setValue("geometry", self.saveGeometry())
stgs.setValue("windowState", self.saveState())
# Save data from models
saveStandardItemModelXML(self.mdlFlatData, "{}/flatModel.xml".format(self.currentProject))
@ -404,6 +418,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
saveStandardItemModelXML(self.mdlLabels, "{}/labels.xml".format(self.currentProject))
saveStandardItemModelXML(self.mdlStatus, "{}/status.xml".format(self.currentProject))
self.mdlOutline.saveToXML("{}/outline.xml".format(self.currentProject))
settings.save("{}/settings.pickle".format(self.currentProject))
# closeEvent
QMainWindow.closeEvent(self, event)
@ -500,23 +515,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if enchant:
self.menuDict = QMenu(self.tr("Dictionary"))
self.menuDictGroup = QActionGroup(self)
for i in enchant.list_dicts():
a = QAction(str(i[0]), self)
a.setCheckable(True)
a.triggered.connect(self.setDictionary)
if str(i[0]) == enchant.get_default_language(): # "fr_CH"
a.setChecked(True)
self.menuDictGroup.addAction(a)
self.menuDict.addAction(a)
self.updateMenuDict()
self.menuTools.addMenu(self.menuDict)
self.actSpellcheck.toggled.connect(self.redacEditor.toggleSpellcheck)
self.actSpellcheck.toggled.connect(self.redacMetadata.toggleSpellcheck)
self.actSpellcheck.toggled.connect(self.outlineItemEditor.toggleSpellcheck)
self.actSpellcheck.toggled.connect(self.toggleSpellcheck)
self.dictChanged.connect(self.redacEditor.setDict)
self.dictChanged.connect(self.redacMetadata.setDict)
self.dictChanged.connect(self.outlineItemEditor.setDict)
else:
# No Spell check support
@ -528,14 +533,33 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.btnRedacFullscreen.clicked.connect(self.redacEditor.showFullscreen)
def updateMenuDict(self):
self.menuDict.clear()
for i in enchant.list_dicts():
a = QAction(str(i[0]), self)
a.setCheckable(True)
a.triggered.connect(self.setDictionary)
if settings.dict == None:
settings.dict = enchant.get_default_language()
if str(i[0]) == settings.dict:
a.setChecked(True)
self.menuDictGroup.addAction(a)
self.menuDict.addAction(a)
def setDictionary(self):
for i in self.menuDictGroup.actions():
if i.isChecked():
self.dictChanged.emit(i.text().replace("&", ""))
settings.dict = i.text().replace("&", "")
def openPyEnchantWebPage(self):
QDesktopServices.openUrl(QUrl("http://pythonhosted.org/pyenchant/"))
def toggleSpellcheck(self, val):
settings.spellcheck = val
self.redacEditor.toggleSpellcheck(val)
self.redacMetadata.toggleSpellcheck(val)
self.outlineItemEditor.toggleSpellcheck(val)
####################################################################################################
# SETTINGS #
@ -558,4 +582,69 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if tab:
self.sw.tabWidget.setCurrentIndex(tab)
self.sw.show()
####################################################################################################
# VIEW MENU #
####################################################################################################
def generateViewMenu(self):
values = [
(self.tr("Nothing"), "Nothing"),
(self.tr("POV"), "POV"),
(self.tr("Label"), "Label"),
(self.tr("Progress"), "Progress"),
(self.tr("Compile"), "Compile"),
]
menus = [
(self.tr("Tree"), "Tree"),
(self.tr("Index cards"), "Cork"),
(self.tr("Outline"), "Outline")
]
submenus = {
"Tree": [
(self.tr("Icon color"), "Icon"),
(self.tr("Text color"), "Text"),
(self.tr("Background color"), "Background"),
],
"Cork": [
(self.tr("Icon"), "Icon"),
(self.tr("Text"), "Text"),
(self.tr("Background"), "Background"),
(self.tr("Border"), "Border"),
(self.tr("Corner"), "Corner"),
],
"Outline": [
(self.tr("Icon color"), "Icon"),
(self.tr("Text color"), "Text"),
(self.tr("Background color"), "Background"),
],
}
self.menuView.clear()
#print("Generating menus with", settings.viewSettings)
for mnu, mnud in menus:
m = QMenu(mnu, self.menuView)
for s, sd in submenus[mnud]:
m2 = QMenu(s, m)
agp = QActionGroup(m2)
for v, vd in values:
a = QAction(v, m)
a.setCheckable(True)
a.setData("{},{},{}".format(mnud, sd, vd))
if settings.viewSettings[mnud][sd] == vd:
a.setChecked(True)
a.triggered.connect(self.setViewElement)
agp.addAction(a)
m2.addAction(a)
m.addMenu(m2)
self.menuView.addMenu(m)
def setViewElement(self):
action = self.sender()
item, part, element = action.data().split(",")
settings.viewSettings[item][part] = element

86
src/settings.py Normal file
View file

@ -0,0 +1,86 @@
# -*- coding: utf-8 -*-
import pickle
import pprint
viewSettings = {
"Tree": {
"Icon": "Nothing",
"Text": "Compile",
"Background": "Nothing",
},
"Cork": {
"Icon": "Nothing",
"Text": "Nothing",
"Background": "Nothing",
"Corner": "Label",
"Border": "Nothing",
},
"Outline": {
"Icon": "Nothing",
"Text": "Compile",
"Background": "Nothing",
},
}
spellcheck = False
dict = None
corkSizeFactor = 100
folderView = "cork"
def save(filename):
global spellcheck, dict, corkSliderFactor, viewSettings, corkSizeFactor, folderView
allSettings = {
"viewSettings": viewSettings,
"dict": dict,
"spellcheck": spellcheck,
"corkSizeFactor": corkSizeFactor,
"folderView": folderView
}
#pp=pprint.PrettyPrinter(indent=4, compact=False)
#print("Saving:")
#pp.pprint(allSettings)
f = open(filename, "wb")
pickle.dump(allSettings, f)
def load(filename):
try:
global allSettings
f = open(filename, "rb")
allSettings = pickle.load(f)
except:
print("{} doesn't exist, cannot load settings.".format(filename))
return
#pp=pprint.PrettyPrinter(indent=4, compact=False)
#print("Loading:")
#pp.pprint(allSettings)
if "viewSettings" in allSettings:
global viewSettings
viewSettings = allSettings["viewSettings"]
if "dict" in allSettings:
global dict
dict = allSettings["dict"]
if "spellcheck" in allSettings:
global spellcheck
spellcheck = allSettings["spellcheck"]
if "corkSizeFactor" in allSettings:
global corkSizeFactor
corkSizeFactor = allSettings["corkSizeFactor"]
if "folderView" in allSettings:
global folderView
folderView = allSettings["folderView"]

View file

@ -6,6 +6,7 @@ from enums import *
from ui.editors.editorWidget_ui import *
from ui.views.textEditView import *
from functions import *
import settings
class editorWidget(QWidget, Ui_editorWidget_ui):
@ -37,11 +38,16 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
else:
self.folderView = "text"
# Saving value
settings.folderView = self.folderView
if oldV != self.folderView and self.currentIndex:
self.setCurrentModelIndex(self.currentIndex)
def setCorkSizeFactor(self, v):
self.corkView.itemDelegate().setCorkSizeFactor(v)
settings.corkSizeFactor = v
r = self.corkView.rootIndex()
if r.isValid():
@ -70,7 +76,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.currentIndex = index
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 = textEditView(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)
@ -82,7 +88,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
l.addWidget(line)
def addText(itm):
edt = customTextEdit(self, index=itm.index(), spellcheck=self.spellcheck, dict=self.currentDict, autoResize=True)
edt = textEditView(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)

View file

@ -982,6 +982,8 @@ class Ui_MainWindow(object):
self.menuTools.setObjectName("menuTools")
self.menuEdit = QtWidgets.QMenu(self.menubar)
self.menuEdit.setObjectName("menuEdit")
self.menuView = QtWidgets.QMenu(self.menubar)
self.menuView.setObjectName("menuView")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
@ -1006,10 +1008,6 @@ class Ui_MainWindow(object):
icon = QtGui.QIcon.fromTheme("application-exit")
self.actQuit.setIcon(icon)
self.actQuit.setObjectName("actQuit")
self.actSnowflakeMode = QtWidgets.QAction(MainWindow)
self.actSnowflakeMode.setCheckable(True)
self.actSnowflakeMode.setChecked(True)
self.actSnowflakeMode.setObjectName("actSnowflakeMode")
self.actNew = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("document-new")
self.actNew.setIcon(icon)
@ -1030,6 +1028,22 @@ class Ui_MainWindow(object):
self.actLabels.setObjectName("actLabels")
self.actStatus = QtWidgets.QAction(MainWindow)
self.actStatus.setObjectName("actStatus")
self.actViewTree = QtWidgets.QAction(MainWindow)
self.actViewTree.setObjectName("actViewTree")
self.actModeNorma = QtWidgets.QAction(MainWindow)
self.actModeNorma.setCheckable(True)
self.actModeNorma.setChecked(True)
self.actModeNorma.setObjectName("actModeNorma")
self.actModeSimple = QtWidgets.QAction(MainWindow)
self.actModeSimple.setCheckable(True)
self.actModeSimple.setObjectName("actModeSimple")
self.actModeFractal = QtWidgets.QAction(MainWindow)
self.actModeFractal.setCheckable(True)
self.actModeFractal.setObjectName("actModeFractal")
self.actViewCork = QtWidgets.QAction(MainWindow)
self.actViewCork.setObjectName("actViewCork")
self.actViewOutline = QtWidgets.QAction(MainWindow)
self.actViewOutline.setObjectName("actViewOutline")
self.menuFile.addAction(self.actNew)
self.menuFile.addAction(self.actOpen)
self.menuFile.addAction(self.actRecents)
@ -1037,7 +1051,9 @@ class Ui_MainWindow(object):
self.menuFile.addAction(self.actSaveAs)
self.menuFile.addSeparator()
self.menuFile.addAction(self.actQuit)
self.menuMode.addAction(self.actSnowflakeMode)
self.menuMode.addAction(self.actModeNorma)
self.menuMode.addAction(self.actModeSimple)
self.menuMode.addAction(self.actModeFractal)
self.menuHelp.addAction(self.actShowHelp)
self.menuTools.addAction(self.actSpellcheck)
self.menuEdit.addAction(self.actLabels)
@ -1045,11 +1061,12 @@ class Ui_MainWindow(object):
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuEdit.menuAction())
self.menubar.addAction(self.menuMode.menuAction())
self.menubar.addAction(self.menuView.menuAction())
self.menubar.addAction(self.menuTools.menuAction())
self.menubar.addAction(self.menuHelp.menuAction())
self.retranslateUi(MainWindow)
self.tabMain.setCurrentIndex(2)
self.tabMain.setCurrentIndex(6)
self.tabSummary.setCurrentIndex(0)
self.tabPersos.setCurrentIndex(0)
self.tabPlot.setCurrentIndex(0)
@ -1168,7 +1185,7 @@ class Ui_MainWindow(object):
self.treeWidget_2.setSortingEnabled(__sortingEnabled)
self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabOutline), _translate("MainWindow", "Outline"))
self.btnRedacFolderText.setText(_translate("MainWindow", "Text"))
self.btnRedacFolderCork.setText(_translate("MainWindow", "Cork"))
self.btnRedacFolderCork.setText(_translate("MainWindow", "Index cards"))
self.btnRedacFolderOutline.setText(_translate("MainWindow", "Outline"))
self.btnRedacFullscreen.setShortcut(_translate("MainWindow", "F11"))
self.tabRedacInfos.setTabText(self.tabRedacInfos.indexOf(self.tab_17), _translate("MainWindow", "Metadata"))
@ -1198,6 +1215,7 @@ class Ui_MainWindow(object):
self.menuHelp.setTitle(_translate("MainWindow", "Help"))
self.menuTools.setTitle(_translate("MainWindow", "Tools"))
self.menuEdit.setTitle(_translate("MainWindow", "Edit"))
self.menuView.setTitle(_translate("MainWindow", "View"))
self.actOpen.setText(_translate("MainWindow", "Open"))
self.actOpen.setShortcut(_translate("MainWindow", "Ctrl+O"))
self.actRecents.setText(_translate("MainWindow", "Recents"))
@ -1208,7 +1226,6 @@ class Ui_MainWindow(object):
self.actSaveAs.setShortcut(_translate("MainWindow", "Ctrl+Shift+S"))
self.actQuit.setText(_translate("MainWindow", "Quit"))
self.actQuit.setShortcut(_translate("MainWindow", "Ctrl+Q"))
self.actSnowflakeMode.setText(_translate("MainWindow", "&Snowflake"))
self.actNew.setText(_translate("MainWindow", "New"))
self.actNew.setShortcut(_translate("MainWindow", "Ctrl+N"))
self.actShowHelp.setText(_translate("MainWindow", "Show help texts"))
@ -1217,12 +1234,18 @@ class Ui_MainWindow(object):
self.actSpellcheck.setShortcut(_translate("MainWindow", "F8"))
self.actLabels.setText(_translate("MainWindow", "Labels..."))
self.actStatus.setText(_translate("MainWindow", "Status..."))
self.actViewTree.setText(_translate("MainWindow", "Tree"))
self.actModeNorma.setText(_translate("MainWindow", "Normal"))
self.actModeSimple.setText(_translate("MainWindow", "Simple"))
self.actModeFractal.setText(_translate("MainWindow", "Fractal"))
self.actViewCork.setText(_translate("MainWindow", "Index cards"))
self.actViewOutline.setText(_translate("MainWindow", "Outline"))
from ui.views.treeView import treeView
from ui.views.basicItemView import basicItemView
from ui.views.textEditView import textEditView
from ui.editors.editorWidget import editorWidget
from ui.sldImportance import sldImportance
from ui.views.lineEditView import lineEditView
from ui.editors.editorWidget import editorWidget
from ui.views.textEditView import textEditView
from ui.views.outlineView import outlineView
from ui.views.metadataView import metadataView
from ui.views.basicItemView import basicItemView
from ui.views.outlineView import outlineView
from ui.views.treeView import treeView

View file

@ -18,7 +18,7 @@
<item>
<widget class="QTabWidget" name="tabMain">
<property name="currentIndex">
<number>2</number>
<number>6</number>
</property>
<property name="documentMode">
<bool>true</bool>
@ -1560,7 +1560,7 @@
<item>
<widget class="QPushButton" name="btnRedacFolderCork">
<property name="text">
<string>Cork</string>
<string>Index cards</string>
</property>
<property name="checkable">
<bool>true</bool>
@ -1893,7 +1893,9 @@
<property name="title">
<string>Mode</string>
</property>
<addaction name="actSnowflakeMode"/>
<addaction name="actModeNorma"/>
<addaction name="actModeSimple"/>
<addaction name="actModeFractal"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
@ -1914,9 +1916,15 @@
<addaction name="actLabels"/>
<addaction name="actStatus"/>
</widget>
<widget class="QMenu" name="menuView">
<property name="title">
<string>View</string>
</property>
</widget>
<addaction name="menuFile"/>
<addaction name="menuEdit"/>
<addaction name="menuMode"/>
<addaction name="menuView"/>
<addaction name="menuTools"/>
<addaction name="menuHelp"/>
</widget>
@ -1986,17 +1994,6 @@
<string>Ctrl+Q</string>
</property>
</action>
<action name="actSnowflakeMode">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>&amp;Snowflake</string>
</property>
</action>
<action name="actNew">
<property name="icon">
<iconset theme="document-new">
@ -2058,6 +2055,48 @@
<string>Status...</string>
</property>
</action>
<action name="actViewTree">
<property name="text">
<string>Tree</string>
</property>
</action>
<action name="actModeNorma">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>Normal</string>
</property>
</action>
<action name="actModeSimple">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Simple</string>
</property>
</action>
<action name="actModeFractal">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Fractal</string>
</property>
</action>
<action name="actViewCork">
<property name="text">
<string>Index cards</string>
</property>
</action>
<action name="actViewOutline">
<property name="text">
<string>Outline</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

View file

@ -54,6 +54,8 @@ class basicItemView(QWidget, Ui_basicItemView):
self.cmbPOV.setCurrentModelIndexes(indexes)
self.txtGoal.setCurrentModelIndexes(indexes)
def setDict(self, d):
self.txtSummaryFull.setDict(d)
def toggleSpellcheck(self, v):
self.txtSummaryFull.toggleSpellcheck(v)

View file

@ -55,6 +55,10 @@ class metadataView(QWidget, Ui_metadataView):
self.properties.selectionChanged(sourceView)
def setDict(self, d):
self.txtNotes.setDict(d)
self.txtSummaryFull.setDict(d)
def toggleSpellcheck(self, v):
self.txtNotes.toggleSpellcheck(v)
self.txtSummaryFull.toggleSpellcheck(v)

View file

@ -179,8 +179,10 @@ class textEditView(QTextEdit):
# Spellchecking based on http://john.nachtimwald.com/2009/08/22/qplaintextedit-with-in-line-spell-check/
def setDict(self, d):
self.currentDict = d
self.dict = enchant.Dict(d)
self.highlighter.rehighlight()
if self.highlighter:
self.highlighter.rehighlight()
def toggleSpellcheck(self, v):
self.spellcheck = v

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<outlineItem title="root" type="folder" compile="2" wordCount="2126" setGoal="112">
<outlineItem title="root" type="folder" compile="2" wordCount="2140" setGoal="112">
<outlineItem title="Nouveau" type="folder" compile="2" wordCount="15">
<outlineItem title="Nouveau" type="text" POV="1" label="2" status="2" compile="2" text="return QTextEdit.resizeEvent(self, e) ad ad ad ad adaasd ad adsdasd ad e drset" wordCount="15"/>
</outlineItem>
@ -52,12 +52,12 @@
<outlineItem title="A" type="text" 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="Same title" type="text" summarySentance="Résumé court" POV="0" label="5" 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 AAAAA" wordCount="60" setGoal="50"/>
<outlineItem title="Nouveau" type="folder" POV="1" label="5" status="1" compile="2" wordCount="596">
<outlineItem title="Nouveau" type="text" POV="0" label="0" 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="Nouveau" type="folder" POV="1" label="5" status="1" compile="2" wordCount="607">
<outlineItem title="Nouveau" type="text" POV="0" label="0" 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 English French Français" wordCount="222"/>
<outlineItem title="Avec titre" type="text" POV="0" label="1" status="4" 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="100"/>
<outlineItem title="Avec titre" type="text" 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="text" POV="0" label="1" status="4" 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="Avec titre" type="text" POV="0" label="1" status="4" 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="100"/>
</outlineItem>
<outlineItem title="Same title 2" type="text" POV="1" label="5" 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 asdasd &#10;&#10;asdasd asd " wordCount="64" setGoal="1000"/>
<outlineItem title="Same title 2" type="text" summaryFull="Français&#10;French Word Mot" POV="1" label="5" 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 asdasd &#10;&#10;asdasd asd maison français French " wordCount="67" setGoal="1000"/>
</outlineItem>

Binary file not shown.