Welcome windows: adds templates for fiction and non-fiction

This commit is contained in:
Olivier Keshavjee 2016-03-30 09:13:40 +02:00
parent b676d126ba
commit 644d0c1c7b
6 changed files with 41 additions and 27 deletions

View file

@ -86,7 +86,7 @@ frequencyAnalyzer = {
"phraseMax": 5
}
viewMode = "fiction"
viewMode = "fiction" # simple, fiction
saveToZip = True
def save(filename=None, protocol=None):

View file

@ -1294,7 +1294,7 @@ class Ui_MainWindow(object):
self.actViewTree.setText(_translate("MainWindow", "Tree"))
self.actModeSimple.setText(_translate("MainWindow", "&Simple"))
self.actModeFiction.setText(_translate("MainWindow", "&Fiction"))
self.actModeSnowflake.setText(_translate("MainWindow", "&Snowflake"))
self.actModeSnowflake.setText(_translate("MainWindow", "S&nowflake"))
self.actViewCork.setText(_translate("MainWindow", "Index cards"))
self.actViewOutline.setText(_translate("MainWindow", "Outline"))
self.actSettings.setText(_translate("MainWindow", "S&ettings"))

View file

@ -2291,7 +2291,7 @@ QListView::item:hover {
<bool>true</bool>
</property>
<property name="text">
<string>&amp;Snowflake</string>
<string>S&amp;nowflake</string>
</property>
</action>
<action name="actViewCork">

View file

@ -164,32 +164,33 @@ class welcome(QWidget, Ui_welcome):
def templates(self):
return [
(self.tr("Empty"), []),
(self.tr("Empty fiction"), [], "Fiction"),
(self.tr("Novel"), [
(20, self.tr("Chapter")),
(5, self.tr("Scene")),
(500, None) # A line with None is word count
]),
], "Fiction"),
(self.tr("Novella"), [
(10, self.tr("Chapter")),
(5, self.tr("Scene")),
(500, None)
]),
], "Fiction"),
(self.tr("Short Story"), [
(10, self.tr("Scene")),
(1000, None)
]),
], "Fiction"),
(self.tr("Trilogy"), [
(3, self.tr("Book")),
(3, self.tr("Section")),
(10, self.tr("Chapter")),
(5, self.tr("Scene")),
(500, None)
]),
], "Fiction"),
(self.tr("Empty non-fiction"), [], "Non-fiction"),
(self.tr("Research paper"), [
(3, self.tr("Section")),
(1000, None)
])
], "Non-fiction")
]
@classmethod
@ -204,13 +205,17 @@ class welcome(QWidget, Ui_welcome):
def changeTemplate(self, item, column):
template = [i for i in self.templates() if i[0] == item.text(0)]
self.btnCreate.setText(self.btnCreateText)
# Selected item is a template
if len(template):
self.template = template[0][1]
self.template = template[0]
self.updateTemplate()
# Selected item is a sample project
elif item.data(0, Qt.UserRole):
name = item.data(0, Qt.UserRole)
# Clear templates
self.template = self.templates()[0][1]
self.template = self.templates()[0]
self.updateTemplate()
# Change button text
self.btnCreate.setText("Open {}".format(name))
@ -235,7 +240,7 @@ class welcome(QWidget, Ui_welcome):
k = 0
hasWC = False
for d in self.template:
for d in self.template[1]:
spin = QSpinBox(self)
spin.setRange(0, 999999)
spin.setValue(d[0])
@ -264,29 +269,29 @@ class welcome(QWidget, Ui_welcome):
self.lytTemplate.addWidget(txt, k, 2)
k += 1
self.btnAddWC.setEnabled(not hasWC and len(self.template) > 0)
self.btnAddWC.setEnabled(not hasWC and len(self.template[1]) > 0)
self.btnAddLevel.setEnabled(True)
self.lblTotal.setVisible(hasWC)
self.updateWordCount()
def templateAddLevel(self):
if len(self.template) > 0 and \
self.template[len(self.template) - 1][1] == None:
if len(self.template[1]) > 0 and \
self.template[1][len(self.template[1]) - 1][1] == None:
# has word cound, so insert before
self.template.insert(len(self.template) - 1, (10, self.tr("Text")))
self.template[1].insert(len(self.template[1]) - 1, (10, self.tr("Text")))
else:
# No word count, so insert at end
self.template.append((10, self.tr("Something")))
self.template[1].append((10, self.tr("Something")))
self.updateTemplate()
def templateAddWordCount(self):
self.template.append((500, None))
self.template[1].append((500, None))
self.updateTemplate()
def deleteTemplateRow(self):
btn = self.sender()
row = btn.property("deleteRow")
self.template.pop(row)
self.template[1].pop(row)
self.updateTemplate()
def updateWordCount(self):
@ -319,11 +324,18 @@ class welcome(QWidget, Ui_welcome):
self.tree.setIndentation(0)
# Add templates
item = self.addTopLevelItem(self.tr("Templates"))
templates = self.templates()
item = self.addTopLevelItem(self.tr("Fiction"))
templates = [i for i in self.templates() if i[2] == "Fiction"]
for t in templates:
sub = QTreeWidgetItem(item, [t[0]])
# Add templates: non-fiction
item = self.addTopLevelItem(self.tr("Non-fiction"))
templates = [i for i in self.templates() if i[2] == "Non-fiction"]
for t in templates:
sub = QTreeWidgetItem(item, [t[0]])
# Add Demo project
item = self.addTopLevelItem(self.tr("Demo projects"))
dir = QDir(appPath("sample-projects"))
@ -342,6 +354,8 @@ class welcome(QWidget, Ui_welcome):
# Empty settings
imp.reload(settings)
t = [i for i in self.templates() if i[0] == self.template[0]]
if t and t[0][2] == "Non-fiction": settings.viewMode = "simple"
# Données
self.mw.mdlFlatData = QStandardItemModel(2, 8, self.mw)
@ -419,5 +433,5 @@ class welcome(QWidget, Ui_welcome):
# parent.appendChild(item)
addElement(item, datas[1:])
if self.template:
addElement(root, self.template)
if self.template[1]:
addElement(root, self.template[1])

View file

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'manuskript/ui/welcome_ui.ui'
#
# Created by: PyQt5 UI code generator 5.4.1
# Created by: PyQt5 UI code generator 5.4.2
#
# WARNING! All changes made in this file will be lost!
@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_welcome(object):
def setupUi(self, welcome):
welcome.setObjectName("welcome")
welcome.resize(705, 422)
welcome.resize(728, 459)
self.horizontalLayout = QtWidgets.QHBoxLayout(welcome)
self.horizontalLayout.setObjectName("horizontalLayout")
self.frame_2 = QtWidgets.QFrame(welcome)

View file

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>705</width>
<height>422</height>
<width>728</width>
<height>459</height>
</rect>
</property>
<property name="windowTitle">