mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-14 09:52:27 +12:00
Opening and template widget
This commit is contained in:
parent
c2707cf089
commit
961ec8cfe9
|
@ -1,5 +1,6 @@
|
|||
FORMS += ../src/ui/mainWindow.ui
|
||||
FORMS += ../src/ui/settings.ui
|
||||
FORMS += ../src/ui/welcome_ui.ui
|
||||
FORMS += ../src/ui/sldImportance_ui.ui
|
||||
|
||||
FORMS += ../src/ui/editors/editorWidget_ui.ui
|
||||
|
@ -15,6 +16,7 @@ SOURCES += ../src/settingsWindow.py
|
|||
|
||||
SOURCES += ../src/ui/helpLabel.py
|
||||
SOURCES += ../src/ui/sldImportance.py
|
||||
SOURCES += ../src/ui/welcome.py
|
||||
|
||||
SOURCES += ../src/ui/editors/editorWidget.py
|
||||
SOURCES += ../src/ui/editors/fullScreenEditor.py
|
||||
|
|
|
@ -36,10 +36,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
self.setupMoreUi()
|
||||
|
||||
# Welcome
|
||||
self.treeWelcome.expandAll()
|
||||
self.loadRecents()
|
||||
self.btnWelcomeOpen.clicked.connect(self.openFile)
|
||||
self.actOpen.triggered.connect(self.openFile)
|
||||
self.welcome.updateValues()
|
||||
#self.welcome.btnCreate.clicked.connect
|
||||
self.stack.setCurrentIndex(0)
|
||||
|
||||
# Word count
|
||||
self.mprWordCount = QSignalMapper(self)
|
||||
|
@ -72,110 +71,25 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
self.cmbSummary.setCurrentIndex(0)
|
||||
self.cmbSummary.currentIndexChanged.emit(0)
|
||||
|
||||
# Données
|
||||
self.mdlFlatData = QStandardItemModel(2, 8)
|
||||
|
||||
# Persos
|
||||
self.mdlPersos = QStandardItemModel(0, 0)
|
||||
#self.mdlPersosProxy = None # persosProxyModel() # None
|
||||
self.mdlPersosProxy = persosProxyModel(self)
|
||||
|
||||
self.mdlPersosInfos = QStandardItemModel(1, 0)
|
||||
self.mdlPersosInfos.insertColumn(0, [QStandardItem("ID")])
|
||||
self.mdlPersosInfos.setHorizontalHeaderLabels(["Description"])
|
||||
|
||||
# Labels
|
||||
self.mdlLabels = QStandardItemModel()
|
||||
for color, text in [
|
||||
(Qt.transparent, ""),
|
||||
(Qt.yellow, self.tr("Idea")),
|
||||
(Qt.green, self.tr("Note")),
|
||||
(Qt.blue, self.tr("Chapter")),
|
||||
(Qt.red, self.tr("Scene")),
|
||||
(Qt.cyan, self.tr("Research"))
|
||||
]:
|
||||
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))
|
||||
|
||||
# Plot
|
||||
self.mdlPlots = plotModel()
|
||||
|
||||
# Outline
|
||||
self.mdlOutline = outlineModel()
|
||||
|
||||
# Main Menu
|
||||
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
|
||||
self.menuEdit, self.menuMode, self.menuView, self.menuTools,
|
||||
self.menuHelp]:
|
||||
i.setEnabled(False)
|
||||
|
||||
|
||||
self.actOpen.triggered.connect(self.welcome.openFile)
|
||||
self.actSave.triggered.connect(self.saveDatas)
|
||||
self.actSaveAs.triggered.connect(self.welcome.saveAsFile)
|
||||
self.actLabels.triggered.connect(self.settingsLabel)
|
||||
self.actStatus.triggered.connect(self.settingsStatus)
|
||||
self.actSettings.triggered.connect(self.settingsWindow)
|
||||
self.actCloseProject.triggered.connect(self.closeProject)
|
||||
|
||||
self.actQuit.triggered.connect(self.close)
|
||||
self.generateViewMenu()
|
||||
|
||||
#Debug
|
||||
self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"])
|
||||
self.tblDebugFlatData.setModel(self.mdlFlatData)
|
||||
self.tblDebugPersos.setModel(self.mdlPersos)
|
||||
self.tblDebugPersosInfos.setModel(self.mdlPersosInfos)
|
||||
self.tblDebugPlots.setModel(self.mdlPlots)
|
||||
self.tblDebugPlotsPersos.setModel(self.mdlPlots)
|
||||
self.tblDebugSubPlots.setModel(self.mdlPlots)
|
||||
self.tblDebugPlots.selectionModel().currentChanged.connect(
|
||||
lambda: self.tblDebugPlotsPersos.setRootIndex(self.mdlPlots.index(
|
||||
self.tblDebugPlots.selectionModel().currentIndex().row(),
|
||||
Plot.persos.value)))
|
||||
self.tblDebugPlots.selectionModel().currentChanged.connect(
|
||||
lambda: self.tblDebugSubPlots.setRootIndex(self.mdlPlots.index(
|
||||
self.tblDebugPlots.selectionModel().currentIndex().row(),
|
||||
Plot.subplots.value)))
|
||||
self.treeDebugOutline.setModel(self.mdlOutline)
|
||||
self.lstDebugLabels.setModel(self.mdlLabels)
|
||||
self.lstDebugStatus.setModel(self.mdlStatus)
|
||||
|
||||
#self.loadProject(os.path.join(appPath(), "test_project.zip"))
|
||||
|
||||
###############################################################################
|
||||
# WELCOME
|
||||
###############################################################################
|
||||
|
||||
def loadRecents(self):
|
||||
sttgns = QSettings()
|
||||
if sttgns.contains("recentFiles"):
|
||||
lst = sttgns.value("recentFiles")
|
||||
self.menuRecents.clear()
|
||||
for f in lst:
|
||||
name = os.path.split(f)[1]
|
||||
a = QAction(name, self)
|
||||
a.setData(f)
|
||||
a.triggered.connect(self.loadRecentFile)
|
||||
self.menuRecents.addAction(a)
|
||||
|
||||
self.btnWelcomeRecent.setMenu(self.menuRecents)
|
||||
|
||||
def openFile(self):
|
||||
filename = QFileDialog.getOpenFileName(self,
|
||||
self.tr("Open project"),
|
||||
".",
|
||||
self.tr("Manuskript project (*.msk)"))[0]
|
||||
if filename:
|
||||
self.loadProject(filename)
|
||||
|
||||
###############################################################################
|
||||
# SUMMARY
|
||||
###############################################################################
|
||||
|
@ -387,18 +301,31 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
self._updatingSubPlot = False
|
||||
|
||||
###############################################################################
|
||||
# GENERAL AKA UNSORTED
|
||||
# LOAD AND SAVE
|
||||
###############################################################################
|
||||
|
||||
def loadRecentFile(self):
|
||||
act = self.sender()
|
||||
self.loadProject(act.data())
|
||||
|
||||
def loadProject(self, project):
|
||||
def loadProject(self, project, loadFromFile=True):
|
||||
"""Loads the project ``project``.
|
||||
|
||||
If ``loadFromFile`` is False, then it does not load datas from file.
|
||||
It assumes that the datas have been populated in a different way."""
|
||||
if loadFromFile and not os.path.exists(project):
|
||||
print(self.tr("The file {} does not exist. Try again.").format(project))
|
||||
self.statusBar().showMessage(
|
||||
self.tr("The file {} does not exist. Try again.").format(project),
|
||||
5000)
|
||||
return
|
||||
|
||||
self.currentProject = project
|
||||
|
||||
|
||||
# Load empty settings
|
||||
import settings
|
||||
QSettings().setValue("lastProject", project)
|
||||
|
||||
# Load data
|
||||
self.loadDatas()
|
||||
if loadFromFile:
|
||||
self.loadEmptyDatas()
|
||||
self.loadDatas()
|
||||
self.makeConnections()
|
||||
|
||||
# Load settings
|
||||
|
@ -432,6 +359,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
self.saveTimerNoChanges.setInterval(settings.autoSaveNoChangesDelay
|
||||
* 1000)
|
||||
self.saveTimerNoChanges.setSingleShot(True)
|
||||
self.mdlFlatData.dataChanged.connect(self.startTimerNoChanges)
|
||||
self.mdlOutline.dataChanged.connect(self.startTimerNoChanges)
|
||||
self.mdlPersos.dataChanged.connect(self.startTimerNoChanges)
|
||||
self.mdlPersosInfos.dataChanged.connect(self.startTimerNoChanges)
|
||||
|
@ -450,25 +378,188 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
|
||||
# Stuff
|
||||
self.checkPersosID()
|
||||
|
||||
# Adds header labels
|
||||
self.mdlPersos.setHorizontalHeaderLabels([i.name for i in Perso])
|
||||
|
||||
# Save recent files in settings
|
||||
sttgns = QSettings()
|
||||
if sttgns.contains("recentFiles"):
|
||||
recentFiles = sttgns.value("recentFiles")
|
||||
else:
|
||||
recentFiles = []
|
||||
|
||||
while project in recentFiles:
|
||||
recentFiles.remove(project)
|
||||
recentFiles.insert(0, project)
|
||||
recentFiles = recentFiles[:10]
|
||||
sttgns.setValue("recentFiles", recentFiles)
|
||||
|
||||
# Show main Window
|
||||
self.stack.setCurrentIndex(1)
|
||||
|
||||
def closeProject(self):
|
||||
# Save datas
|
||||
self.saveDatas()
|
||||
|
||||
self.currentProject = None
|
||||
QSettings().setValue("lastProject", "")
|
||||
|
||||
# Clear datas
|
||||
self.loadEmptyDatas()
|
||||
|
||||
self.saveTimer.stop()
|
||||
|
||||
# UI
|
||||
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
|
||||
self.menuEdit, self.menuMode, self.menuView, self.menuTools,
|
||||
self.menuHelp]:
|
||||
i.setEnabled(False)
|
||||
|
||||
# Reload recent files
|
||||
self.welcome.updateValues()
|
||||
|
||||
# Show welcome dialog
|
||||
self.stack.setCurrentIndex(0)
|
||||
|
||||
def readSettings(self):
|
||||
# Load State and geometry
|
||||
sttgns = QSettings(qApp.organizationName(), qApp.applicationName())
|
||||
if sttgns.contains("geometry"):
|
||||
self.restoreGeometry(sttgns.value("geometry"))
|
||||
if sttgns.contains("windowState"):
|
||||
self.restoreState(sttgns.value("windowState"))
|
||||
|
||||
def closeEvent(self, event):
|
||||
# Save State and geometry
|
||||
sttgns = QSettings(qApp.organizationName(), qApp.applicationName())
|
||||
sttgns.setValue("geometry", self.saveGeometry())
|
||||
sttgns.setValue("windowState", self.saveState())
|
||||
|
||||
# Specific settings to save before quitting
|
||||
settings.lastTab = self.tabMain.currentIndex()
|
||||
|
||||
if self.currentProject:
|
||||
# Remembering the current item
|
||||
if len(self.treeRedacOutline.selectedIndexes()) == 0:
|
||||
sel = QModelIndex()
|
||||
else:
|
||||
sel = self.treeRedacOutline.currentIndex()
|
||||
settings.lastIndex = self.mdlOutline.pathToIndex(sel)
|
||||
|
||||
# Save data from models
|
||||
if self.currentProject and settings.saveOnQuit:
|
||||
self.saveDatas()
|
||||
|
||||
# closeEvent
|
||||
QMainWindow.closeEvent(self, event)
|
||||
|
||||
def startTimerNoChanges(self):
|
||||
if settings.autoSaveNoChanges:
|
||||
self.saveTimerNoChanges.start()
|
||||
|
||||
def saveDatas(self, projectName=None):
|
||||
"""Saves the current project (in self.currentProject).
|
||||
|
||||
If ``projectName`` is given, currentProject becomes projectName.
|
||||
In other words, it "saves as...".
|
||||
"""
|
||||
|
||||
if projectName:
|
||||
self.currentProject = projectName
|
||||
QSettings().setValue("lastProject", projectName)
|
||||
|
||||
# Saving
|
||||
files = []
|
||||
|
||||
files.append((saveStandardItemModelXML(self.mdlFlatData),
|
||||
"flatModel.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlPersos),
|
||||
"perso.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlPersosInfos),
|
||||
"persoInfos.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlLabels),
|
||||
"labels.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlStatus),
|
||||
"status.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlPlots),
|
||||
"plots.xml"))
|
||||
files.append((self.mdlOutline.saveToXML(),
|
||||
"outline.xml"))
|
||||
files.append((settings.save(),
|
||||
"settings.pickle"))
|
||||
|
||||
saveFilesToZip(files, self.currentProject)
|
||||
|
||||
# Giving some feedback
|
||||
print(self.tr("Project {} saved.").format(self.currentProject))
|
||||
self.statusBar().showMessage(
|
||||
self.tr("Project {} saved.").format(self.currentProject), 5000)
|
||||
|
||||
|
||||
def loadEmptyDatas(self):
|
||||
self.mdlFlatData = QStandardItemModel()
|
||||
self.mdlPersos = QStandardItemModel()
|
||||
self.mdlPersosProxy = persosProxyModel(self)
|
||||
self.mdlPersosInfos = QStandardItemModel()
|
||||
self.mdlLabels = QStandardItemModel()
|
||||
self.mdlStatus = QStandardItemModel()
|
||||
self.mdlPlots = plotModel()
|
||||
self.mdlOutline = outlineModel()
|
||||
|
||||
def loadDatas(self):
|
||||
# Loading
|
||||
files = loadFilesFromZip(self.currentProject)
|
||||
|
||||
errors = []
|
||||
|
||||
if "flatModel.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlFlatData,
|
||||
files["flatModel.xml"], fromString=True)
|
||||
else:
|
||||
errors.append("flatModel.xml")
|
||||
|
||||
if "perso.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlPersos,
|
||||
files["perso.xml"], fromString=True)
|
||||
else:
|
||||
errors.append("perso.xml")
|
||||
|
||||
|
||||
if "persoInfos.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlPersosInfos,
|
||||
files["persoInfos.xml"], fromString=True)
|
||||
else:
|
||||
errors.append("perso.xml")
|
||||
|
||||
if "labels.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlLabels,
|
||||
files["labels.xml"], fromString=True)
|
||||
else:
|
||||
errors.append("perso.xml")
|
||||
|
||||
if "status.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlStatus,
|
||||
files["status.xml"], fromString=True)
|
||||
else:
|
||||
errors.append("perso.xml")
|
||||
|
||||
if "plots.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlPlots,
|
||||
files["plots.xml"], fromString=True)
|
||||
else:
|
||||
errors.append("perso.xml")
|
||||
|
||||
if "outline.xml" in files:
|
||||
self.mdlOutline.loadFromXML(files["outline.xml"], fromString=True)
|
||||
else:
|
||||
errors.append("perso.xml")
|
||||
|
||||
if "settings.pickle" in files:
|
||||
settings.load(files["settings.pickle"], fromString=True)
|
||||
else:
|
||||
errors.append("perso.xml")
|
||||
|
||||
|
||||
# Giving some feedback
|
||||
if not errors:
|
||||
print(self.tr("Project {} loaded.").format(self.currentProject))
|
||||
self.statusBar().showMessage(
|
||||
self.tr("Project {} loaded.").format(self.currentProject), 5000)
|
||||
else:
|
||||
print(self.tr("Project {} loaded with some errors:").format(self.currentProject))
|
||||
for e in errors:
|
||||
print(self.tr(" * {} wasn't found in project file.").format(e))
|
||||
self.statusBar().showMessage(
|
||||
self.tr("Project {} loaded with some errors.").format(self.currentProject), 5000)
|
||||
|
||||
###############################################################################
|
||||
# MAIN CONNECTIONS
|
||||
###############################################################################
|
||||
|
||||
def makeConnections(self):
|
||||
|
||||
|
@ -631,99 +722,31 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
lambda v: self.redacEditor.setFolderView("cork"))
|
||||
self.btnRedacFolderOutline.clicked.connect(
|
||||
lambda v: self.redacEditor.setFolderView("outline"))
|
||||
|
||||
def readSettings(self):
|
||||
# Load State and geometry
|
||||
sttgns = QSettings(qApp.organizationName(), qApp.applicationName())
|
||||
if sttgns.contains("geometry"):
|
||||
self.restoreGeometry(sttgns.value("geometry"))
|
||||
if sttgns.contains("windowState"):
|
||||
self.restoreState(sttgns.value("windowState"))
|
||||
|
||||
def closeEvent(self, event):
|
||||
# Save State and geometry
|
||||
sttgns = QSettings(qApp.organizationName(), qApp.applicationName())
|
||||
sttgns.setValue("geometry", self.saveGeometry())
|
||||
sttgns.setValue("windowState", self.saveState())
|
||||
|
||||
# Specific settings to save before quitting
|
||||
settings.lastTab = self.tabMain.currentIndex()
|
||||
if len(self.treeRedacOutline.selectedIndexes()) == 0:
|
||||
sel = QModelIndex()
|
||||
else:
|
||||
sel = self.treeRedacOutline.currentIndex()
|
||||
settings.lastIndex = self.mdlOutline.pathToIndex(sel)
|
||||
|
||||
# Save data from models
|
||||
if self.currentProject and settings.saveOnQuit:
|
||||
self.saveDatas()
|
||||
|
||||
# closeEvent
|
||||
QMainWindow.closeEvent(self, event)
|
||||
|
||||
def startTimerNoChanges(self):
|
||||
if settings.autoSaveNoChanges:
|
||||
self.saveTimerNoChanges.start()
|
||||
|
||||
def saveDatas(self):
|
||||
# Saving
|
||||
files = []
|
||||
|
||||
files.append((saveStandardItemModelXML(self.mdlFlatData),
|
||||
"flatModel.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlPersos),
|
||||
"perso.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlPersosInfos),
|
||||
"persoInfos.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlLabels),
|
||||
"labels.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlStatus),
|
||||
"status.xml"))
|
||||
files.append((saveStandardItemModelXML(self.mdlPlots),
|
||||
"plots.xml"))
|
||||
files.append((self.mdlOutline.saveToXML(),
|
||||
"outline.xml"))
|
||||
files.append((settings.save(),
|
||||
"settings.pickle"))
|
||||
|
||||
saveFilesToZip(files, self.currentProject)
|
||||
|
||||
# Giving some feedback
|
||||
print(self.tr("Project {} saved.").format(self.currentProject))
|
||||
self.statusBar().showMessage(
|
||||
self.tr("Project {} saved.").format(self.currentProject), 5000)
|
||||
|
||||
def loadDatas(self):
|
||||
# Loading
|
||||
files = loadFilesFromZip(self.currentProject)
|
||||
|
||||
if "flatModel.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlFlatData,
|
||||
files["flatModel.xml"], fromString=True)
|
||||
if "perso.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlPersos,
|
||||
files["perso.xml"], fromString=True)
|
||||
if "persoInfos.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlPersosInfos,
|
||||
files["persoInfos.xml"], fromString=True)
|
||||
if "labels.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlLabels,
|
||||
files["labels.xml"], fromString=True)
|
||||
if "status.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlStatus,
|
||||
files["status.xml"], fromString=True)
|
||||
if "plots.xml" in files:
|
||||
loadStandardItemModelXML(self.mdlPlots,
|
||||
files["plots.xml"], fromString=True)
|
||||
if "outline.xml" in files:
|
||||
self.mdlOutline.loadFromXML(files["outline.xml"], fromString=True)
|
||||
if "settings.pickle" in files:
|
||||
settings.load(files["settings.pickle"], fromString=True)
|
||||
|
||||
# Giving some feedback
|
||||
print(self.tr("Project {} loaded.").format(self.currentProject))
|
||||
self.statusBar().showMessage(
|
||||
self.tr("Project {} loaded.").format(self.currentProject), 5000)
|
||||
|
||||
#Debug
|
||||
self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"])
|
||||
self.tblDebugFlatData.setModel(self.mdlFlatData)
|
||||
self.tblDebugPersos.setModel(self.mdlPersos)
|
||||
self.tblDebugPersosInfos.setModel(self.mdlPersosInfos)
|
||||
self.tblDebugPlots.setModel(self.mdlPlots)
|
||||
self.tblDebugPlotsPersos.setModel(self.mdlPlots)
|
||||
self.tblDebugSubPlots.setModel(self.mdlPlots)
|
||||
self.tblDebugPlots.selectionModel().currentChanged.connect(
|
||||
lambda: self.tblDebugPlotsPersos.setRootIndex(self.mdlPlots.index(
|
||||
self.tblDebugPlots.selectionModel().currentIndex().row(),
|
||||
Plot.persos.value)))
|
||||
self.tblDebugPlots.selectionModel().currentChanged.connect(
|
||||
lambda: self.tblDebugSubPlots.setRootIndex(self.mdlPlots.index(
|
||||
self.tblDebugPlots.selectionModel().currentIndex().row(),
|
||||
Plot.subplots.value)))
|
||||
self.treeDebugOutline.setModel(self.mdlOutline)
|
||||
self.lstDebugLabels.setModel(self.mdlLabels)
|
||||
self.lstDebugStatus.setModel(self.mdlStatus)
|
||||
self.mdlPersos.setHorizontalHeaderLabels([i.name for i in Perso])
|
||||
|
||||
###############################################################################
|
||||
# GENERAL AKA UNSORTED
|
||||
###############################################################################
|
||||
|
||||
def clickCycle(self, i):
|
||||
if i == 0: # step 2 - paragraph summary
|
||||
|
@ -847,6 +870,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
lambda: self.redacEditor.showFullscreen(
|
||||
self.treeRedacOutline.currentIndex()))
|
||||
|
||||
###############################################################################
|
||||
# SPELLCHECK
|
||||
###############################################################################
|
||||
|
||||
def updateMenuDict(self):
|
||||
|
||||
if not enchant:
|
||||
|
|
|
@ -159,4 +159,5 @@ def load(string, fromString=False):
|
|||
|
||||
if "fullScreenTheme" in allSettings:
|
||||
global fullScreenTheme
|
||||
fullScreenTheme = allSettings["fullScreenTheme"]
|
||||
fullScreenTheme = allSettings["fullScreenTheme"]
|
||||
|
|
@ -47,6 +47,9 @@ class settingsWindow(QWidget, Ui_Settings):
|
|||
self.chkSaveOnQuit.stateChanged.connect(self.saveSettingsChanged)
|
||||
self.txtAutoSave.textEdited.connect(self.saveSettingsChanged)
|
||||
self.txtAutoSaveNoChanges.textEdited.connect(self.saveSettingsChanged)
|
||||
autoLoad, last = self.mw.welcome.getAutoLoadValues()
|
||||
self.chkAutoLoad.setChecked(autoLoad)
|
||||
self.chkAutoLoad.stateChanged.connect(self.saveSettingsChanged)
|
||||
|
||||
# Views
|
||||
self.tabViews.setCurrentIndex(0)
|
||||
|
@ -130,8 +133,8 @@ class settingsWindow(QWidget, Ui_Settings):
|
|||
|
||||
def setStyle(self, style):
|
||||
#Save style to Qt Settings
|
||||
settings = QSettings(qApp.organizationName(), qApp.applicationName())
|
||||
settings.setValue("applicationStyle", style)
|
||||
sttgs = QSettings(qApp.organizationName(), qApp.applicationName())
|
||||
sttgs.setValue("applicationStyle", style)
|
||||
qApp.setStyle(style)
|
||||
|
||||
def saveSettingsChanged(self):
|
||||
|
@ -140,6 +143,10 @@ class settingsWindow(QWidget, Ui_Settings):
|
|||
if self.txtAutoSaveNoChanges.text() in ["", "0"]:
|
||||
self.txtAutoSaveNoChanges.setText("1")
|
||||
|
||||
sttgs = QSettings()
|
||||
sttgs.setValue("autoLoad", True if self.chkAutoLoad.checkState() else False)
|
||||
sttgs.sync()
|
||||
|
||||
settings.autoSave = True if self.chkAutoSave.checkState() else False
|
||||
settings.autoSaveNoChanges = True if self.chkAutoSaveNoChanges.checkState() else False
|
||||
settings.saveOnQuit = True if self.chkSaveOnQuit.checkState() else False
|
||||
|
|
|
@ -22,122 +22,20 @@ class Ui_MainWindow(object):
|
|||
self.stack.setObjectName("stack")
|
||||
self.page_5 = QtWidgets.QWidget()
|
||||
self.page_5.setObjectName("page_5")
|
||||
self.verticalLayout_33 = QtWidgets.QVBoxLayout(self.page_5)
|
||||
self.verticalLayout_33.setObjectName("verticalLayout_33")
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 210, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_33.addItem(spacerItem)
|
||||
self.horizontalLayout_35 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_35.setObjectName("horizontalLayout_35")
|
||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_35.addItem(spacerItem1)
|
||||
self.frame_2 = QtWidgets.QFrame(self.page_5)
|
||||
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
|
||||
self.frame_2.setObjectName("frame_2")
|
||||
self.verticalLayout_32 = QtWidgets.QVBoxLayout(self.frame_2)
|
||||
self.verticalLayout_32.setObjectName("verticalLayout_32")
|
||||
self.horizontalLayout_23 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_23.setObjectName("horizontalLayout_23")
|
||||
self.treeWelcome = QtWidgets.QTreeWidget(self.frame_2)
|
||||
self.treeWelcome.setRootIsDecorated(False)
|
||||
self.treeWelcome.setObjectName("treeWelcome")
|
||||
item_0 = QtWidgets.QTreeWidgetItem(self.treeWelcome)
|
||||
font = QtGui.QFont()
|
||||
font.setBold(True)
|
||||
font.setWeight(75)
|
||||
item_0.setFont(0, font)
|
||||
brush = QtGui.QBrush(QtGui.QColor(230, 230, 255))
|
||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
||||
item_0.setBackground(0, brush)
|
||||
brush = QtGui.QBrush(QtGui.QColor(0, 0, 128))
|
||||
brush.setStyle(QtCore.Qt.NoBrush)
|
||||
item_0.setForeground(0, brush)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_0 = QtWidgets.QTreeWidgetItem(self.treeWelcome)
|
||||
font = QtGui.QFont()
|
||||
font.setBold(True)
|
||||
font.setWeight(75)
|
||||
item_0.setFont(0, font)
|
||||
brush = QtGui.QBrush(QtGui.QColor(230, 230, 255))
|
||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
||||
item_0.setBackground(0, brush)
|
||||
brush = QtGui.QBrush(QtGui.QColor(0, 0, 128))
|
||||
brush.setStyle(QtCore.Qt.NoBrush)
|
||||
item_0.setForeground(0, brush)
|
||||
self.treeWelcome.header().setVisible(False)
|
||||
self.horizontalLayout_23.addWidget(self.treeWelcome)
|
||||
self.verticalLayout_31 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_31.setObjectName("verticalLayout_31")
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_31.addItem(spacerItem2)
|
||||
self.gridLayout = QtWidgets.QGridLayout()
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.page_5)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.spinBox = QtWidgets.QSpinBox(self.frame_2)
|
||||
self.spinBox.setMaximum(999)
|
||||
self.spinBox.setProperty("value", 20)
|
||||
self.spinBox.setObjectName("spinBox")
|
||||
self.gridLayout.addWidget(self.spinBox, 0, 1, 1, 1)
|
||||
self.lineEdit_4 = QtWidgets.QLineEdit(self.frame_2)
|
||||
self.lineEdit_4.setObjectName("lineEdit_4")
|
||||
self.gridLayout.addWidget(self.lineEdit_4, 0, 2, 1, 1)
|
||||
self.label_32 = QtWidgets.QLabel(self.frame_2)
|
||||
self.label_32.setObjectName("label_32")
|
||||
self.gridLayout.addWidget(self.label_32, 1, 0, 1, 1)
|
||||
self.spinBox_2 = QtWidgets.QSpinBox(self.frame_2)
|
||||
self.spinBox_2.setMaximum(999)
|
||||
self.spinBox_2.setProperty("value", 5)
|
||||
self.spinBox_2.setObjectName("spinBox_2")
|
||||
self.gridLayout.addWidget(self.spinBox_2, 1, 1, 1, 1)
|
||||
self.lineEdit_6 = QtWidgets.QLineEdit(self.frame_2)
|
||||
self.lineEdit_6.setObjectName("lineEdit_6")
|
||||
self.gridLayout.addWidget(self.lineEdit_6, 1, 2, 1, 1)
|
||||
self.label_33 = QtWidgets.QLabel(self.frame_2)
|
||||
self.label_33.setObjectName("label_33")
|
||||
self.gridLayout.addWidget(self.label_33, 2, 0, 1, 1)
|
||||
self.spinBox_3 = QtWidgets.QSpinBox(self.frame_2)
|
||||
self.spinBox_3.setMaximum(99999)
|
||||
self.spinBox_3.setProperty("value", 500)
|
||||
self.spinBox_3.setObjectName("spinBox_3")
|
||||
self.gridLayout.addWidget(self.spinBox_3, 2, 1, 1, 1)
|
||||
self.label_30 = QtWidgets.QLabel(self.frame_2)
|
||||
self.label_30.setObjectName("label_30")
|
||||
self.gridLayout.addWidget(self.label_30, 2, 2, 1, 1)
|
||||
self.verticalLayout_31.addLayout(self.gridLayout)
|
||||
self.horizontalLayout_23.addLayout(self.verticalLayout_31)
|
||||
self.verticalLayout_32.addLayout(self.horizontalLayout_23)
|
||||
self.line_4 = QtWidgets.QFrame(self.frame_2)
|
||||
self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.line_4.setObjectName("line_4")
|
||||
self.verticalLayout_32.addWidget(self.line_4)
|
||||
self.checkBox = QtWidgets.QCheckBox(self.frame_2)
|
||||
self.checkBox.setChecked(True)
|
||||
self.checkBox.setObjectName("checkBox")
|
||||
self.verticalLayout_32.addWidget(self.checkBox)
|
||||
self.horizontalLayout_20 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_20.setObjectName("horizontalLayout_20")
|
||||
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_20.addItem(spacerItem3)
|
||||
self.btnWelcomeOpen = QtWidgets.QPushButton(self.frame_2)
|
||||
self.btnWelcomeOpen.setObjectName("btnWelcomeOpen")
|
||||
self.horizontalLayout_20.addWidget(self.btnWelcomeOpen)
|
||||
self.btnWelcomeRecent = QtWidgets.QPushButton(self.frame_2)
|
||||
self.btnWelcomeRecent.setObjectName("btnWelcomeRecent")
|
||||
self.horizontalLayout_20.addWidget(self.btnWelcomeRecent)
|
||||
self.btnWelcomeCreate = QtWidgets.QPushButton(self.frame_2)
|
||||
self.btnWelcomeCreate.setObjectName("btnWelcomeCreate")
|
||||
self.horizontalLayout_20.addWidget(self.btnWelcomeCreate)
|
||||
self.verticalLayout_32.addLayout(self.horizontalLayout_20)
|
||||
self.horizontalLayout_35.addWidget(self.frame_2)
|
||||
spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_35.addItem(spacerItem4)
|
||||
self.verticalLayout_33.addLayout(self.horizontalLayout_35)
|
||||
spacerItem5 = QtWidgets.QSpacerItem(20, 209, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_33.addItem(spacerItem5)
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.gridLayout.addItem(spacerItem1, 1, 2, 1, 1)
|
||||
self.welcome = welcome(self.page_5)
|
||||
self.welcome.setMinimumSize(QtCore.QSize(200, 200))
|
||||
self.welcome.setObjectName("welcome")
|
||||
self.gridLayout.addWidget(self.welcome, 1, 1, 1, 1)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem2, 0, 1, 1, 1)
|
||||
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem3, 2, 1, 1, 1)
|
||||
self.stack.addWidget(self.page_5)
|
||||
self.page_4 = QtWidgets.QWidget()
|
||||
self.page_4.setObjectName("page_4")
|
||||
|
@ -185,8 +83,8 @@ class Ui_MainWindow(object):
|
|||
self.txtGeneralVolume = lineEditView(self.grpBookInfos)
|
||||
self.txtGeneralVolume.setObjectName("txtGeneralVolume")
|
||||
self.horizontalLayout_25.addWidget(self.txtGeneralVolume)
|
||||
spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_25.addItem(spacerItem6)
|
||||
spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_25.addItem(spacerItem4)
|
||||
self.formLayout_3.setLayout(3, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout_25)
|
||||
self.label_14 = QtWidgets.QLabel(self.grpBookInfos)
|
||||
self.label_14.setObjectName("label_14")
|
||||
|
@ -274,8 +172,8 @@ class Ui_MainWindow(object):
|
|||
self.lblSummaryWCSentance.setText("")
|
||||
self.lblSummaryWCSentance.setObjectName("lblSummaryWCSentance")
|
||||
self.verticalLayout_5.addWidget(self.lblSummaryWCSentance)
|
||||
spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_5.addItem(spacerItem7)
|
||||
spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_5.addItem(spacerItem5)
|
||||
self.tabSummary.addWidget(self.tabSummaryPage1)
|
||||
self.tabSummaryPage2 = QtWidgets.QWidget()
|
||||
self.tabSummaryPage2.setObjectName("tabSummaryPage2")
|
||||
|
@ -295,8 +193,8 @@ class Ui_MainWindow(object):
|
|||
self.txtSummarySentance_2.setReadOnly(True)
|
||||
self.txtSummarySentance_2.setObjectName("txtSummarySentance_2")
|
||||
self.verticalLayout.addWidget(self.txtSummarySentance_2)
|
||||
spacerItem8 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout.addItem(spacerItem8)
|
||||
spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout.addItem(spacerItem6)
|
||||
self.horizontalLayout_4.addLayout(self.verticalLayout)
|
||||
self.line = QtWidgets.QFrame(self.tabSummaryPage2)
|
||||
self.line.setFrameShape(QtWidgets.QFrame.VLine)
|
||||
|
@ -315,8 +213,8 @@ class Ui_MainWindow(object):
|
|||
self.lblSummaryWCPara.setText("")
|
||||
self.lblSummaryWCPara.setObjectName("lblSummaryWCPara")
|
||||
self.verticalLayout_2.addWidget(self.lblSummaryWCPara)
|
||||
spacerItem9 = QtWidgets.QSpacerItem(20, 264, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem9)
|
||||
spacerItem7 = QtWidgets.QSpacerItem(20, 264, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem7)
|
||||
self.horizontalLayout_4.addLayout(self.verticalLayout_2)
|
||||
self.tabSummary.addWidget(self.tabSummaryPage2)
|
||||
self.tabSummaryPage3 = QtWidgets.QWidget()
|
||||
|
@ -332,8 +230,8 @@ class Ui_MainWindow(object):
|
|||
self.txtSummaryPara_2.setReadOnly(True)
|
||||
self.txtSummaryPara_2.setObjectName("txtSummaryPara_2")
|
||||
self.verticalLayout_6.addWidget(self.txtSummaryPara_2)
|
||||
spacerItem10 = QtWidgets.QSpacerItem(20, 264, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_6.addItem(spacerItem10)
|
||||
spacerItem8 = QtWidgets.QSpacerItem(20, 264, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_6.addItem(spacerItem8)
|
||||
self.horizontalLayout_7.addLayout(self.verticalLayout_6)
|
||||
self.line_2 = QtWidgets.QFrame(self.tabSummaryPage3)
|
||||
self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
|
||||
|
@ -390,8 +288,8 @@ class Ui_MainWindow(object):
|
|||
self.formLayout_5.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.tabSummary)
|
||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||
spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_5.addItem(spacerItem11)
|
||||
spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_5.addItem(spacerItem9)
|
||||
self.btnStepThree = QtWidgets.QPushButton(self.lytTabSummary)
|
||||
icon = QtGui.QIcon.fromTheme("go-next")
|
||||
self.btnStepThree.setIcon(icon)
|
||||
|
@ -508,8 +406,8 @@ class Ui_MainWindow(object):
|
|||
self.formLayout.setWidget(7, QtWidgets.QFormLayout.FieldRole, self.txtPersoSummaryPara)
|
||||
self.horizontalLayout_21 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_21.setObjectName("horizontalLayout_21")
|
||||
spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_21.addItem(spacerItem12)
|
||||
spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_21.addItem(spacerItem10)
|
||||
self.btnStepFour = QtWidgets.QPushButton(self.infos)
|
||||
icon = QtGui.QIcon.fromTheme("go-next")
|
||||
self.btnStepFour.setIcon(icon)
|
||||
|
@ -544,8 +442,8 @@ class Ui_MainWindow(object):
|
|||
self.verticalLayout_17.addWidget(self.txtPersoSummaryFull)
|
||||
self.horizontalLayout_22 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_22.setObjectName("horizontalLayout_22")
|
||||
spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_22.addItem(spacerItem13)
|
||||
spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_22.addItem(spacerItem11)
|
||||
self.btnStepSix = QtWidgets.QPushButton(self.tab_11)
|
||||
icon = QtGui.QIcon.fromTheme("go-next")
|
||||
self.btnStepSix.setIcon(icon)
|
||||
|
@ -594,8 +492,8 @@ class Ui_MainWindow(object):
|
|||
self.lineEdit = QtWidgets.QLineEdit(self.tab_12)
|
||||
self.lineEdit.setObjectName("lineEdit")
|
||||
self.horizontalLayout_9.addWidget(self.lineEdit)
|
||||
spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_9.addItem(spacerItem14)
|
||||
spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_9.addItem(spacerItem12)
|
||||
self.btnStepEight = QtWidgets.QPushButton(self.tab_12)
|
||||
icon = QtGui.QIcon.fromTheme("go-next")
|
||||
self.btnStepEight.setIcon(icon)
|
||||
|
@ -688,8 +586,8 @@ class Ui_MainWindow(object):
|
|||
self.verticalLayout_12.addWidget(self.lstPlotPerso)
|
||||
self.horizontalLayout_16 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_16.setObjectName("horizontalLayout_16")
|
||||
spacerItem15 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_16.addItem(spacerItem15)
|
||||
spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_16.addItem(spacerItem13)
|
||||
self.btnAddPlotPerso = QtWidgets.QPushButton(self.infos_2)
|
||||
self.btnAddPlotPerso.setText("")
|
||||
icon = QtGui.QIcon.fromTheme("list-add")
|
||||
|
@ -750,8 +648,8 @@ class Ui_MainWindow(object):
|
|||
self.btnRmSubPlot.setIcon(icon)
|
||||
self.btnRmSubPlot.setObjectName("btnRmSubPlot")
|
||||
self.horizontalLayout_17.addWidget(self.btnRmSubPlot)
|
||||
spacerItem16 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_17.addItem(spacerItem16)
|
||||
spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_17.addItem(spacerItem14)
|
||||
self.btnShowSubPlotSummary = QtWidgets.QPushButton(self.tab_15)
|
||||
self.btnShowSubPlotSummary.setText("")
|
||||
icon = QtGui.QIcon.fromTheme("text-x-generic")
|
||||
|
@ -816,6 +714,7 @@ class Ui_MainWindow(object):
|
|||
self.lstOutlinePlots.setDragEnabled(True)
|
||||
self.lstOutlinePlots.setDragDropMode(QtWidgets.QAbstractItemView.DragOnly)
|
||||
self.lstOutlinePlots.setObjectName("lstOutlinePlots")
|
||||
self.lstOutlinePlots.headerItem().setText(0, "1")
|
||||
self.lstOutlinePlots.header().setVisible(False)
|
||||
self.layoutWidget = QtWidgets.QWidget(self.splitterOutlineH)
|
||||
self.layoutWidget.setObjectName("layoutWidget")
|
||||
|
@ -862,8 +761,8 @@ class Ui_MainWindow(object):
|
|||
self.btnPlanRemoveItem.setIcon(icon)
|
||||
self.btnPlanRemoveItem.setObjectName("btnPlanRemoveItem")
|
||||
self.horizontalLayout_18.addWidget(self.btnPlanRemoveItem)
|
||||
spacerItem17 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_18.addItem(spacerItem17)
|
||||
spacerItem15 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_18.addItem(spacerItem15)
|
||||
self.btnPlanShowDetails = QtWidgets.QPushButton(self.layoutWidget)
|
||||
self.btnPlanShowDetails.setText("")
|
||||
icon = QtGui.QIcon.fromTheme("text-x-generic")
|
||||
|
@ -910,8 +809,8 @@ class Ui_MainWindow(object):
|
|||
self.btnRedacRemoveItem.setIcon(icon)
|
||||
self.btnRedacRemoveItem.setObjectName("btnRedacRemoveItem")
|
||||
self.horizontalLayout_31.addWidget(self.btnRedacRemoveItem)
|
||||
spacerItem18 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_31.addItem(spacerItem18)
|
||||
spacerItem16 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_31.addItem(spacerItem16)
|
||||
self.verticalLayout_30.addLayout(self.horizontalLayout_31)
|
||||
self.layoutWidget1 = QtWidgets.QWidget(self.splitterRedac)
|
||||
self.layoutWidget1.setObjectName("layoutWidget1")
|
||||
|
@ -958,8 +857,8 @@ class Ui_MainWindow(object):
|
|||
self.sldCorkSizeFactor.setOrientation(QtCore.Qt.Horizontal)
|
||||
self.sldCorkSizeFactor.setObjectName("sldCorkSizeFactor")
|
||||
self.horizontalLayout_19.addWidget(self.sldCorkSizeFactor)
|
||||
spacerItem19 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_19.addItem(spacerItem19)
|
||||
spacerItem17 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_19.addItem(spacerItem17)
|
||||
self.lblRedacWC = QtWidgets.QLabel(self.layoutWidget1)
|
||||
self.lblRedacWC.setMinimumSize(QtCore.QSize(10, 0))
|
||||
self.lblRedacWC.setText("")
|
||||
|
@ -1228,26 +1127,6 @@ class Ui_MainWindow(object):
|
|||
|
||||
def retranslateUi(self, MainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
self.treeWelcome.headerItem().setText(0, _translate("MainWindow", "1"))
|
||||
__sortingEnabled = self.treeWelcome.isSortingEnabled()
|
||||
self.treeWelcome.setSortingEnabled(False)
|
||||
self.treeWelcome.topLevelItem(0).setText(0, _translate("MainWindow", "Templates"))
|
||||
self.treeWelcome.topLevelItem(0).child(0).setText(0, _translate("MainWindow", "Empty"))
|
||||
self.treeWelcome.topLevelItem(0).child(1).setText(0, _translate("MainWindow", "Novel"))
|
||||
self.treeWelcome.topLevelItem(0).child(2).setText(0, _translate("MainWindow", "Novella"))
|
||||
self.treeWelcome.topLevelItem(0).child(3).setText(0, _translate("MainWindow", "Short Story"))
|
||||
self.treeWelcome.topLevelItem(0).child(4).setText(0, _translate("MainWindow", "Research paper"))
|
||||
self.treeWelcome.topLevelItem(1).setText(0, _translate("MainWindow", "Demo projects"))
|
||||
self.treeWelcome.setSortingEnabled(__sortingEnabled)
|
||||
self.lineEdit_4.setText(_translate("MainWindow", "Chapter"))
|
||||
self.label_32.setText(_translate("MainWindow", "of"))
|
||||
self.lineEdit_6.setText(_translate("MainWindow", "Scene"))
|
||||
self.label_33.setText(_translate("MainWindow", "of"))
|
||||
self.label_30.setText(_translate("MainWindow", "words each."))
|
||||
self.checkBox.setText(_translate("MainWindow", "Next time, automatically open last project"))
|
||||
self.btnWelcomeOpen.setText(_translate("MainWindow", "Open..."))
|
||||
self.btnWelcomeRecent.setText(_translate("MainWindow", "Recent"))
|
||||
self.btnWelcomeCreate.setText(_translate("MainWindow", "Create"))
|
||||
self.grpBookInfos.setTitle(_translate("MainWindow", "Book infos"))
|
||||
self.label_10.setText(_translate("MainWindow", "Title"))
|
||||
self.label_11.setText(_translate("MainWindow", "Subtitle"))
|
||||
|
@ -1372,12 +1251,13 @@ class Ui_MainWindow(object):
|
|||
self.actSettings.setShortcut(_translate("MainWindow", "F8"))
|
||||
self.actCloseProject.setText(_translate("MainWindow", "Close project"))
|
||||
|
||||
from ui.views.treeView import treeView
|
||||
from ui.welcome import welcome
|
||||
from ui.editors.editorWidget import editorWidget
|
||||
from ui.views.outlineView import outlineView
|
||||
from ui.views.basicItemView import basicItemView
|
||||
from ui.views.lineEditView import lineEditView
|
||||
from ui.views.textEditView import textEditView
|
||||
from ui.views.basicItemView import basicItemView
|
||||
from ui.sldImportance import sldImportance
|
||||
from ui.views.metadataView import metadataView
|
||||
from ui.editors.editorWidget import editorWidget
|
||||
from ui.views.plotTreeView import plotTreeView
|
||||
from ui.views.textEditView import textEditView
|
||||
from ui.views.treeView import treeView
|
||||
|
|
|
@ -33,8 +33,57 @@
|
|||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="page_5">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_33">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="0">
|
||||
<spacer name="horizontalSpacer_12">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<spacer name="horizontalSpacer_11">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="welcome" name="welcome" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>200</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<spacer name="verticalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<spacer name="verticalSpacer_6">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
|
@ -42,311 +91,7 @@
|
|||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>210</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_35">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_13">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_2">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_32">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_23">
|
||||
<item>
|
||||
<widget class="QTreeWidget" name="treeWelcome">
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>1</string>
|
||||
</property>
|
||||
</column>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Templates</string>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="textAlignment">
|
||||
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
|
||||
</property>
|
||||
<property name="background">
|
||||
<brush brushstyle="SolidPattern">
|
||||
<color alpha="255">
|
||||
<red>230</red>
|
||||
<green>230</green>
|
||||
<blue>255</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<brush brushstyle="NoBrush">
|
||||
<color alpha="255">
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>128</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Empty</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Novel</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Novella</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Short Story</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Research paper</string>
|
||||
</property>
|
||||
</item>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Demo projects</string>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="textAlignment">
|
||||
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
|
||||
</property>
|
||||
<property name="background">
|
||||
<brush brushstyle="SolidPattern">
|
||||
<color alpha="255">
|
||||
<red>230</red>
|
||||
<green>230</green>
|
||||
<blue>255</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<brush brushstyle="NoBrush">
|
||||
<color alpha="255">
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>128</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_31">
|
||||
<item>
|
||||
<spacer name="verticalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="spinBox">
|
||||
<property name="maximum">
|
||||
<number>999</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>20</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLineEdit" name="lineEdit_4">
|
||||
<property name="text">
|
||||
<string>Chapter</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_32">
|
||||
<property name="text">
|
||||
<string>of</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSpinBox" name="spinBox_2">
|
||||
<property name="maximum">
|
||||
<number>999</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLineEdit" name="lineEdit_6">
|
||||
<property name="text">
|
||||
<string>Scene</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_33">
|
||||
<property name="text">
|
||||
<string>of</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QSpinBox" name="spinBox_3">
|
||||
<property name="maximum">
|
||||
<number>99999</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>500</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QLabel" name="label_30">
|
||||
<property name="text">
|
||||
<string>words each.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkBox">
|
||||
<property name="text">
|
||||
<string>Next time, automatically open last project</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_20">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_11">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnWelcomeOpen">
|
||||
<property name="text">
|
||||
<string>Open...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnWelcomeRecent">
|
||||
<property name="text">
|
||||
<string>Recent</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnWelcomeCreate">
|
||||
<property name="text">
|
||||
<string>Create</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_14">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>209</height>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
|
@ -1633,6 +1378,11 @@
|
|||
<attribute name="headerVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string notr="true">1</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_14">
|
||||
|
@ -2403,7 +2153,9 @@
|
|||
</action>
|
||||
<action name="actCloseProject">
|
||||
<property name="icon">
|
||||
<iconset theme="window-close"/>
|
||||
<iconset theme="window-close">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Close project</string>
|
||||
|
@ -2460,6 +2212,12 @@
|
|||
<extends>QTreeWidget</extends>
|
||||
<header>ui.views.plotTreeView.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>welcome</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>ui.welcome.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
|
|
|
@ -10,7 +10,7 @@ class sldImportance(QWidget, Ui_sldImportance):
|
|||
importanceChanged = pyqtSignal(str)
|
||||
|
||||
def __init__(self, parent=None):
|
||||
QWidget.__init__(self)
|
||||
QWidget.__init__(self, parent)
|
||||
self.setupUi(self)
|
||||
self._column = 0
|
||||
self._updating = False
|
||||
|
|
367
src/ui/welcome.py
Normal file
367
src/ui/welcome.py
Normal file
|
@ -0,0 +1,367 @@
|
|||
#!/usr/bin/env python
|
||||
#--!-- coding: utf8 --!--
|
||||
|
||||
from qt import *
|
||||
from functions import *
|
||||
from ui.welcome_ui import *
|
||||
from models.outlineModel import *
|
||||
from models.plotModel import *
|
||||
from models.persosProxyModel import *
|
||||
import settings
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
|
||||
|
||||
class welcome(QWidget, Ui_welcome):
|
||||
def __init__(self, parent=None):
|
||||
QWidget.__init__(self, parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self.mw = mainWindow()
|
||||
self.btnOpen.clicked.connect(self.openFile)
|
||||
self.btnCreate.clicked.connect(self.createFile)
|
||||
self.chkLoadLastProject.toggled.connect(self.setAutoLoad)
|
||||
self.tree.itemActivated.connect(self.changeTemplate)
|
||||
self.btnAddLevel.clicked.connect(self.templateAddLevel)
|
||||
self.btnAddWC.clicked.connect(self.templateAddWordCount)
|
||||
|
||||
self.populateTemplates()
|
||||
|
||||
def updateValues(self):
|
||||
# Auto load
|
||||
autoLoad, last = self.getAutoLoadValues()
|
||||
self.chkLoadLastProject.setChecked(autoLoad)
|
||||
|
||||
# Recent Files
|
||||
self.loadRecents()
|
||||
|
||||
###############################################################################
|
||||
# AUTOLOAD
|
||||
###############################################################################
|
||||
|
||||
def showEvent(self, event):
|
||||
"""Waiting for things to be fully loaded to start opening projects."""
|
||||
QWidget.showEvent(self, event)
|
||||
|
||||
# Auto load last project
|
||||
autoLoad, last = self.getAutoLoadValues()
|
||||
|
||||
if autoLoad and last:
|
||||
self.mw.loadProject(last)
|
||||
|
||||
def getAutoLoadValues(self):
|
||||
sttgns = QSettings()
|
||||
if sttgns.contains("autoLoad"):
|
||||
autoLoad = True if sttgns.value("autoLoad") == "true" else False
|
||||
else:
|
||||
autoLoad = False
|
||||
if autoLoad and sttgns.contains("lastProject"):
|
||||
last = sttgns.value("lastProject")
|
||||
else:
|
||||
last = ""
|
||||
|
||||
return autoLoad, last
|
||||
|
||||
def setAutoLoad(self, v):
|
||||
QSettings().setValue("autoLoad", v)
|
||||
|
||||
###############################################################################
|
||||
# RECENTS
|
||||
###############################################################################
|
||||
|
||||
def loadRecents(self):
|
||||
sttgns = QSettings()
|
||||
if sttgns.contains("recentFiles"):
|
||||
lst = sttgns.value("recentFiles")
|
||||
self.mw.menuRecents.clear()
|
||||
for f in lst:
|
||||
name = os.path.split(f)[1]
|
||||
a = QAction(name, self)
|
||||
a.setData(f)
|
||||
a.setStatusTip(f)
|
||||
a.triggered.connect(self.loadRecentFile)
|
||||
self.mw.menuRecents.addAction(a)
|
||||
|
||||
self.btnRecent.setMenu(self.mw.menuRecents)
|
||||
|
||||
def appendToRecentFiles(self, project):
|
||||
sttgns = QSettings()
|
||||
if sttgns.contains("recentFiles"):
|
||||
recentFiles = sttgns.value("recentFiles")
|
||||
else:
|
||||
recentFiles = []
|
||||
|
||||
while project in recentFiles:
|
||||
recentFiles.remove(project)
|
||||
recentFiles.insert(0, project)
|
||||
recentFiles = recentFiles[:10]
|
||||
sttgns.setValue("recentFiles", recentFiles)
|
||||
|
||||
def loadRecentFile(self):
|
||||
act = self.sender()
|
||||
self.appendToRecentFiles(act.data())
|
||||
self.mw.loadProject(act.data())
|
||||
|
||||
###############################################################################
|
||||
# DIALOGS
|
||||
###############################################################################
|
||||
|
||||
def openFile(self):
|
||||
"""File dialog that request an existing file. For opening project."""
|
||||
filename = QFileDialog.getOpenFileName(self,
|
||||
self.tr("Open project"),
|
||||
".",
|
||||
self.tr("Manuskript project (*.msk)"))[0]
|
||||
if filename:
|
||||
self.appendToRecentFiles(filename)
|
||||
self.mw.loadProject(filename)
|
||||
|
||||
def saveAsFile(self):
|
||||
"""File dialog that request a file, existing or not.
|
||||
Save datas to that file, which then becomes the current project."""
|
||||
filename = QFileDialog.getSaveFileName(self,
|
||||
self.tr("Save project as..."),
|
||||
".",
|
||||
self.tr("Manuskript project (*.msk)"))[0]
|
||||
|
||||
if filename:
|
||||
self.appendToRecentFiles(filename)
|
||||
self.mw.saveDatas(filename)
|
||||
|
||||
def createFile(self):
|
||||
"""When starting a new project, ask for a place to save it.
|
||||
Datas are not loaded from file, so they must be populated another way."""
|
||||
filename = QFileDialog.getSaveFileName(self,
|
||||
self.tr("Create New Project"),
|
||||
".",
|
||||
self.tr("Manuskript project (*.msk)"))[0]
|
||||
|
||||
if filename:
|
||||
self.appendToRecentFiles(filename)
|
||||
self.loadDefaultDatas()
|
||||
self.mw.loadProject(filename, loadFromFile=False)
|
||||
|
||||
###############################################################################
|
||||
# TEMPLATES
|
||||
###############################################################################
|
||||
|
||||
def templates(self):
|
||||
return [
|
||||
(self.tr("Empty"), []),
|
||||
(self.tr("Novel"), [
|
||||
( 20, self.tr("Chapter")),
|
||||
( 5, self.tr("Scene")),
|
||||
( 500, None) # A line with None is word count
|
||||
]),
|
||||
(self.tr("Novella"), [
|
||||
( 10, self.tr("Chapter")),
|
||||
( 5, self.tr("Scene")),
|
||||
( 500, None)
|
||||
]),
|
||||
(self.tr("Short Story"), [
|
||||
( 10, self.tr("Scene")),
|
||||
(1000, None)
|
||||
]),
|
||||
(self.tr("Trilogy"), [
|
||||
( 3, self.tr("Book")),
|
||||
( 3, self.tr("Section")),
|
||||
( 10, self.tr("Chapter")),
|
||||
( 5, self.tr("Scene")),
|
||||
( 500, None)
|
||||
]),
|
||||
(self.tr("Research paper"), [
|
||||
( 3, self.tr("Section")),
|
||||
(1000, None)
|
||||
])
|
||||
]
|
||||
|
||||
def changeTemplate(self, item, column):
|
||||
self.template = [i for i in self.templates() if i[0] == item.text(0)][0][1]
|
||||
self.updateTemplate()
|
||||
|
||||
def updateTemplate(self):
|
||||
# Clear layout
|
||||
def clearLayout(l):
|
||||
while l.count() != 0:
|
||||
i = l.takeAt(0)
|
||||
if i.widget():
|
||||
i.widget().deleteLater()
|
||||
if i.layout():
|
||||
clearLayout(i.layout())
|
||||
|
||||
clearLayout(self.lytTemplate)
|
||||
|
||||
#self.templateLayout.addStretch()
|
||||
#l = QGridLayout()
|
||||
#self.templateLayout.addLayout(l)
|
||||
|
||||
k = 0
|
||||
hasWC = False
|
||||
for d in self.template:
|
||||
spin = QSpinBox(self)
|
||||
spin.setRange(0, 999999)
|
||||
spin.setValue(d[0])
|
||||
spin.valueChanged.connect(self.updateWordCount)
|
||||
|
||||
if d[1] != None:
|
||||
txt = QLineEdit(self)
|
||||
txt.setText(d[1])
|
||||
|
||||
else:
|
||||
hasWC = True
|
||||
txt = QLabel(self.tr("words each."), self)
|
||||
|
||||
if k != 0:
|
||||
of = QLabel(self.tr("of"), self)
|
||||
self.lytTemplate.addWidget(of, k, 0)
|
||||
|
||||
btn = QPushButton("", self)
|
||||
btn.setIcon(QIcon.fromTheme("edit-delete"))
|
||||
btn.setProperty("deleteRow", k)
|
||||
btn.clicked.connect(self.deleteTemplateRow)
|
||||
|
||||
self.lytTemplate.addWidget(btn, k, 3)
|
||||
|
||||
|
||||
self.lytTemplate.addWidget(spin, k, 1)
|
||||
self.lytTemplate.addWidget(txt, k, 2)
|
||||
k += 1
|
||||
|
||||
self.btnAddWC.setEnabled(not hasWC and len(self.template) > 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:
|
||||
# has word cound, so insert before
|
||||
self.template.insert(len(self.template) - 1, (10, self.tr("Text")))
|
||||
else:
|
||||
# No word count, so insert at end
|
||||
self.template.append((10, self.tr("Something")))
|
||||
self.updateTemplate()
|
||||
|
||||
def templateAddWordCount(self):
|
||||
self.template.append((500, None))
|
||||
self.updateTemplate()
|
||||
|
||||
def deleteTemplateRow(self):
|
||||
btn = self.sender()
|
||||
row = btn.property("deleteRow")
|
||||
self.template.pop(row)
|
||||
self.updateTemplate()
|
||||
|
||||
def updateWordCount(self):
|
||||
total = 1
|
||||
for s in self.findChildren(QSpinBox, QRegExp(".*"),
|
||||
Qt.FindChildrenRecursively):
|
||||
total = total * s.value()
|
||||
|
||||
if total == 1:
|
||||
total = 0
|
||||
|
||||
self.lblTotal.setText(self.tr("<b>Total:</b> {} words (~ {} pages)").format(
|
||||
locale.format("%d", total, grouping=True),
|
||||
locale.format("%d", total / 250, grouping=True)
|
||||
))
|
||||
|
||||
def addTopLevelItem(self, name):
|
||||
item = QTreeWidgetItem(self.tree, [name])
|
||||
item.setBackground(0, QBrush(QColor(Qt.blue).lighter(190)))
|
||||
item.setForeground(0, QBrush(Qt.darkBlue))
|
||||
item.setTextAlignment(0, Qt.AlignCenter)
|
||||
item.setFlags(Qt.ItemIsEnabled)
|
||||
f = item.font(0)
|
||||
f.setBold(True)
|
||||
item.setFont(0, f)
|
||||
return item
|
||||
|
||||
def populateTemplates(self):
|
||||
self.tree.clear()
|
||||
self.tree.setIndentation(0)
|
||||
|
||||
# Add templates
|
||||
item = self.addTopLevelItem(self.tr("Templates"))
|
||||
templates = self.templates()
|
||||
for t in templates:
|
||||
sub = QTreeWidgetItem(item, [t[0]])
|
||||
|
||||
# Add Demo project
|
||||
item = self.addTopLevelItem(self.tr("Demo projects"))
|
||||
# FIXME: none yet
|
||||
|
||||
self.tree.expandAll()
|
||||
|
||||
def loadDefaultDatas(self):
|
||||
# Données
|
||||
self.mw.mdlFlatData = QStandardItemModel(2, 8)
|
||||
|
||||
# Persos
|
||||
self.mw.mdlPersos = QStandardItemModel(0, 0)
|
||||
#self.mdlPersosProxy = None # persosProxyModel() # None
|
||||
self.mw.mdlPersosProxy = persosProxyModel(self)
|
||||
|
||||
self.mw.mdlPersosInfos = QStandardItemModel(1, 0)
|
||||
self.mw.mdlPersosInfos.insertColumn(0, [QStandardItem("ID")])
|
||||
self.mw.mdlPersosInfos.setHorizontalHeaderLabels(["Description"])
|
||||
|
||||
# Labels
|
||||
self.mw.mdlLabels = QStandardItemModel()
|
||||
for color, text in [
|
||||
(Qt.transparent, ""),
|
||||
(Qt.yellow, self.tr("Idea")),
|
||||
(Qt.green, self.tr("Note")),
|
||||
(Qt.blue, self.tr("Chapter")),
|
||||
(Qt.red, self.tr("Scene")),
|
||||
(Qt.cyan, self.tr("Research"))
|
||||
]:
|
||||
self.mw.mdlLabels.appendRow(QStandardItem(iconFromColor(color), text))
|
||||
|
||||
# Status
|
||||
self.mw.mdlStatus = QStandardItemModel()
|
||||
for text in [
|
||||
"",
|
||||
self.tr("TODO"),
|
||||
self.tr("First draft"),
|
||||
self.tr("Second draft"),
|
||||
self.tr("Final")
|
||||
]:
|
||||
self.mw.mdlStatus.appendRow(QStandardItem(text))
|
||||
|
||||
# Plot
|
||||
self.mw.mdlPlots = plotModel()
|
||||
|
||||
# Outline
|
||||
self.mw.mdlOutline = outlineModel()
|
||||
|
||||
|
||||
root = self.mw.mdlOutline.rootItem
|
||||
|
||||
def addElement(parent, datas):
|
||||
if len(datas) == 2 and datas[1][1] == None or \
|
||||
len(datas) == 1:
|
||||
# Next item is word count
|
||||
n = 0
|
||||
for i in range(datas[0][0]):
|
||||
n += 1
|
||||
item = outlineItem(title="{} {}".format(
|
||||
datas[0][1],
|
||||
str(n)),
|
||||
type="text")
|
||||
if len(datas) == 2:
|
||||
item.setData(Outline.setGoal.value, datas[1][0])
|
||||
parent.appendChild(item)
|
||||
else:
|
||||
n = 0
|
||||
for i in range(datas[0][0]):
|
||||
n += 1
|
||||
item = outlineItem(title="{} {}".format(
|
||||
datas[0][1],
|
||||
str(n)),
|
||||
type="folder")
|
||||
parent.appendChild(item)
|
||||
addElement(item, datas[1:])
|
||||
|
||||
addElement(root, self.template)
|
||||
|
131
src/ui/welcome_ui.py
Normal file
131
src/ui/welcome_ui.py
Normal file
|
@ -0,0 +1,131 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'src/ui/welcome_ui.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.4.1
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
class Ui_welcome(object):
|
||||
def setupUi(self, welcome):
|
||||
welcome.setObjectName("welcome")
|
||||
welcome.resize(705, 422)
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout(welcome)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.frame_2 = QtWidgets.QFrame(welcome)
|
||||
self.frame_2.setMinimumSize(QtCore.QSize(500, 0))
|
||||
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
|
||||
self.frame_2.setObjectName("frame_2")
|
||||
self.verticalLayout_32 = QtWidgets.QVBoxLayout(self.frame_2)
|
||||
self.verticalLayout_32.setObjectName("verticalLayout_32")
|
||||
self.horizontalLayout_23 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_23.setObjectName("horizontalLayout_23")
|
||||
self.tree = QtWidgets.QTreeWidget(self.frame_2)
|
||||
self.tree.setMaximumSize(QtCore.QSize(150, 16777215))
|
||||
self.tree.setRootIsDecorated(False)
|
||||
self.tree.setObjectName("tree")
|
||||
item_0 = QtWidgets.QTreeWidgetItem(self.tree)
|
||||
font = QtGui.QFont()
|
||||
font.setBold(True)
|
||||
font.setWeight(75)
|
||||
item_0.setFont(0, font)
|
||||
brush = QtGui.QBrush(QtGui.QColor(230, 230, 255))
|
||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
||||
item_0.setBackground(0, brush)
|
||||
brush = QtGui.QBrush(QtGui.QColor(0, 0, 128))
|
||||
brush.setStyle(QtCore.Qt.NoBrush)
|
||||
item_0.setForeground(0, brush)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_1 = QtWidgets.QTreeWidgetItem(item_0)
|
||||
item_0 = QtWidgets.QTreeWidgetItem(self.tree)
|
||||
font = QtGui.QFont()
|
||||
font.setBold(True)
|
||||
font.setWeight(75)
|
||||
item_0.setFont(0, font)
|
||||
brush = QtGui.QBrush(QtGui.QColor(230, 230, 255))
|
||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
||||
item_0.setBackground(0, brush)
|
||||
brush = QtGui.QBrush(QtGui.QColor(0, 0, 128))
|
||||
brush.setStyle(QtCore.Qt.NoBrush)
|
||||
item_0.setForeground(0, brush)
|
||||
self.tree.header().setVisible(False)
|
||||
self.horizontalLayout_23.addWidget(self.tree)
|
||||
self.templateLayout = QtWidgets.QVBoxLayout()
|
||||
self.templateLayout.setObjectName("templateLayout")
|
||||
self.lytTemplate = QtWidgets.QGridLayout()
|
||||
self.lytTemplate.setObjectName("lytTemplate")
|
||||
self.templateLayout.addLayout(self.lytTemplate)
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.templateLayout.addItem(spacerItem)
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
self.lblTotal = QtWidgets.QLabel(self.frame_2)
|
||||
self.lblTotal.setText("")
|
||||
self.lblTotal.setObjectName("lblTotal")
|
||||
self.horizontalLayout_2.addWidget(self.lblTotal)
|
||||
self.btnAddLevel = QtWidgets.QPushButton(self.frame_2)
|
||||
self.btnAddLevel.setEnabled(False)
|
||||
self.btnAddLevel.setObjectName("btnAddLevel")
|
||||
self.horizontalLayout_2.addWidget(self.btnAddLevel)
|
||||
self.btnAddWC = QtWidgets.QPushButton(self.frame_2)
|
||||
self.btnAddWC.setEnabled(False)
|
||||
self.btnAddWC.setObjectName("btnAddWC")
|
||||
self.horizontalLayout_2.addWidget(self.btnAddWC)
|
||||
self.templateLayout.addLayout(self.horizontalLayout_2)
|
||||
self.horizontalLayout_23.addLayout(self.templateLayout)
|
||||
self.verticalLayout_32.addLayout(self.horizontalLayout_23)
|
||||
self.line_4 = QtWidgets.QFrame(self.frame_2)
|
||||
self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.line_4.setObjectName("line_4")
|
||||
self.verticalLayout_32.addWidget(self.line_4)
|
||||
self.chkLoadLastProject = QtWidgets.QCheckBox(self.frame_2)
|
||||
self.chkLoadLastProject.setChecked(True)
|
||||
self.chkLoadLastProject.setObjectName("chkLoadLastProject")
|
||||
self.verticalLayout_32.addWidget(self.chkLoadLastProject)
|
||||
self.horizontalLayout_20 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_20.setObjectName("horizontalLayout_20")
|
||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_20.addItem(spacerItem1)
|
||||
self.btnOpen = QtWidgets.QPushButton(self.frame_2)
|
||||
self.btnOpen.setObjectName("btnOpen")
|
||||
self.horizontalLayout_20.addWidget(self.btnOpen)
|
||||
self.btnRecent = QtWidgets.QPushButton(self.frame_2)
|
||||
self.btnRecent.setObjectName("btnRecent")
|
||||
self.horizontalLayout_20.addWidget(self.btnRecent)
|
||||
self.btnCreate = QtWidgets.QPushButton(self.frame_2)
|
||||
self.btnCreate.setObjectName("btnCreate")
|
||||
self.horizontalLayout_20.addWidget(self.btnCreate)
|
||||
self.verticalLayout_32.addLayout(self.horizontalLayout_20)
|
||||
self.horizontalLayout.addWidget(self.frame_2)
|
||||
|
||||
self.retranslateUi(welcome)
|
||||
QtCore.QMetaObject.connectSlotsByName(welcome)
|
||||
|
||||
def retranslateUi(self, welcome):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
welcome.setWindowTitle(_translate("welcome", "Form"))
|
||||
self.tree.headerItem().setText(0, _translate("welcome", "1"))
|
||||
__sortingEnabled = self.tree.isSortingEnabled()
|
||||
self.tree.setSortingEnabled(False)
|
||||
self.tree.topLevelItem(0).setText(0, _translate("welcome", "Templates"))
|
||||
self.tree.topLevelItem(0).child(0).setText(0, _translate("welcome", "Empty"))
|
||||
self.tree.topLevelItem(0).child(1).setText(0, _translate("welcome", "Novel"))
|
||||
self.tree.topLevelItem(0).child(2).setText(0, _translate("welcome", "Novella"))
|
||||
self.tree.topLevelItem(0).child(3).setText(0, _translate("welcome", "Short Story"))
|
||||
self.tree.topLevelItem(0).child(4).setText(0, _translate("welcome", "Research paper"))
|
||||
self.tree.topLevelItem(1).setText(0, _translate("welcome", "Demo projects"))
|
||||
self.tree.setSortingEnabled(__sortingEnabled)
|
||||
self.btnAddLevel.setText(_translate("welcome", "Add level"))
|
||||
self.btnAddWC.setText(_translate("welcome", "Add wordcount"))
|
||||
self.chkLoadLastProject.setText(_translate("welcome", "Next time, automatically open last project"))
|
||||
self.btnOpen.setText(_translate("welcome", "Open..."))
|
||||
self.btnRecent.setText(_translate("welcome", "Recent"))
|
||||
self.btnCreate.setText(_translate("welcome", "Create"))
|
||||
|
259
src/ui/welcome_ui.ui
Normal file
259
src/ui/welcome_ui.ui
Normal file
|
@ -0,0 +1,259 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>welcome</class>
|
||||
<widget class="QWidget" name="welcome">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>705</width>
|
||||
<height>422</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>500</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_32">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_23">
|
||||
<item>
|
||||
<widget class="QTreeWidget" name="tree">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>1</string>
|
||||
</property>
|
||||
</column>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Templates</string>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="textAlignment">
|
||||
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
|
||||
</property>
|
||||
<property name="background">
|
||||
<brush brushstyle="SolidPattern">
|
||||
<color alpha="255">
|
||||
<red>230</red>
|
||||
<green>230</green>
|
||||
<blue>255</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<brush brushstyle="NoBrush">
|
||||
<color alpha="255">
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>128</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Empty</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Novel</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Novella</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Short Story</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Research paper</string>
|
||||
</property>
|
||||
</item>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Demo projects</string>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="textAlignment">
|
||||
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
|
||||
</property>
|
||||
<property name="background">
|
||||
<brush brushstyle="SolidPattern">
|
||||
<color alpha="255">
|
||||
<red>230</red>
|
||||
<green>230</green>
|
||||
<blue>255</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<brush brushstyle="NoBrush">
|
||||
<color alpha="255">
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>128</blue>
|
||||
</color>
|
||||
</brush>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="templateLayout">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="lytTemplate"/>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="lblTotal">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnAddLevel">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Add level</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnAddWC">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Add wordcount</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkLoadLastProject">
|
||||
<property name="text">
|
||||
<string>Next time, automatically open last project</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_20">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_11">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnOpen">
|
||||
<property name="text">
|
||||
<string>Open...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnRecent">
|
||||
<property name="text">
|
||||
<string>Recent</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnCreate">
|
||||
<property name="text">
|
||||
<string>Create</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in a new issue