From 5ecdabd43e440f66f3543da581929a4dfa2b79b2 Mon Sep 17 00:00:00 2001 From: Olivier Keshavjee Date: Wed, 3 Jun 2015 19:25:03 +0200 Subject: [PATCH] Help bubbles that look cute. --- src/mainWindow.py | 63 ++++++--- src/ui/helpLabel.py | 26 ++++ src/ui/mainWindow.py | 130 +++++++++++-------- src/ui/mainWindow.ui | 300 ++++++++++++++++++++++++------------------- 4 files changed, 311 insertions(+), 208 deletions(-) create mode 100644 src/ui/helpLabel.py diff --git a/src/mainWindow.py b/src/mainWindow.py index 8284082..7efd6a9 100644 --- a/src/mainWindow.py +++ b/src/mainWindow.py @@ -7,6 +7,7 @@ from __future__ import unicode_literals from qt import * from ui.mainWindow import * +from ui.helpLabel import helpLabel from loadSave import * from enums import * from models.outlineModel import * @@ -19,21 +20,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.readSettings() # UI - self.splitterPersos.setStretchFactor(0, 25) - self.splitterPersos.setStretchFactor(1, 75) - - self.splitterPlot.setStretchFactor(0, 20) - self.splitterPlot.setStretchFactor(1, 40) - self.splitterPlot.setStretchFactor(2, 40) - - - self.splitterPlan.setStretchFactor(0, 25) - self.splitterPlan.setStretchFactor(1, 75) - - - self.splitterRedac.setStretchFactor(0, 20) - self.splitterRedac.setStretchFactor(1, 60) - self.splitterRedac.setStretchFactor(2, 20) + self.setupMoreUi() # Word count self.mprWordCount = QSignalMapper(self) @@ -313,4 +300,48 @@ class MainWindow(QMainWindow, Ui_MainWindow): wc = len(src.toPlainText().strip().split(" ")) if src.toPlainText() else 0 if i in [2, 3]: pages = " (~{} pages)".format(int(wc / 25) / 10.) else: pages = "" - lbl.setText("Mots: {}{}".format(wc, pages)) \ No newline at end of file + lbl.setText("Mots: {}{}".format(wc, pages)) + + + def setupMoreUi(self): + # Splitters + self.splitterPersos.setStretchFactor(0, 25) + self.splitterPersos.setStretchFactor(1, 75) + + self.splitterPlot.setStretchFactor(0, 20) + self.splitterPlot.setStretchFactor(1, 40) + self.splitterPlot.setStretchFactor(2, 40) + + self.splitterPlan.setStretchFactor(0, 25) + self.splitterPlan.setStretchFactor(1, 75) + + self.splitterRedac.setStretchFactor(0, 20) + self.splitterRedac.setStretchFactor(1, 60) + self.splitterRedac.setStretchFactor(2, 20) + + # Help box + + references = [ + (self.lytTabOverview, + "Entrez toutes les informations relatives au livre, ainsi qu'à vous."), + (self.lytTabSummary, + "Prenez le temps de réfléchir à un résumé de votre livre, en une phrase. Puis augmentez cette phrase en un paragraphe, puis en une page, puis en un résumé complet."), + (self.lytTabPersos, + "Créez ici vos personnage."), + (self.lytTabPlot, + "Développez vos intrigues."), + (self.lytTabOutline, + "Créez le plan de votre chef-d'œuvre."), + (self.lytTabRedac, + "Écrivez."), + (self.lytTabDebug, + "Des infos pour débugger des fois pendant qu'on code c'est utile."), + ] + + for widget, text in references: + print(text) + label = helpLabel(text) + self.actShowHelp.toggled.connect(label.setVisible) + widget.layout().insertWidget(0, label) + + self.actShowHelp.setChecked(False) \ No newline at end of file diff --git a/src/ui/helpLabel.py b/src/ui/helpLabel.py new file mode 100644 index 0000000..10a6b8c --- /dev/null +++ b/src/ui/helpLabel.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +#--!-- coding: utf8 --!-- + +from __future__ import print_function +from __future__ import unicode_literals + +from qt import * + +class helpLabel(QLabel): + + def __init__(self, text=None, parent=None): + QLabel.__init__(self, text, parent) + + self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) + + self.setStatusTip("Infobulle: Si tu me trouve dérengant, tu peux me cacher via le menu Aide.") + + self.setStyleSheet(""" + QLabel { + background-color:lightYellow; + border:1px solid lightGray; + border-radius: 10px; + margin: 3px; + padding:10px; + color:gray; + }""") \ No newline at end of file diff --git a/src/ui/mainWindow.py b/src/ui/mainWindow.py index 149ae39..13faabc 100644 --- a/src/ui/mainWindow.py +++ b/src/ui/mainWindow.py @@ -19,11 +19,13 @@ class Ui_MainWindow(object): self.tabMain = QtWidgets.QTabWidget(self.centralwidget) self.tabMain.setDocumentMode(True) self.tabMain.setObjectName("tabMain") - self.tab_3 = QtWidgets.QWidget() - self.tab_3.setObjectName("tab_3") - self.horizontalLayout_26 = QtWidgets.QHBoxLayout(self.tab_3) + self.lytTabOverview = QtWidgets.QWidget() + self.lytTabOverview.setObjectName("lytTabOverview") + self.verticalLayout_23 = QtWidgets.QVBoxLayout(self.lytTabOverview) + self.verticalLayout_23.setObjectName("verticalLayout_23") + self.horizontalLayout_26 = QtWidgets.QHBoxLayout() self.horizontalLayout_26.setObjectName("horizontalLayout_26") - self.grpBookInfos = QtWidgets.QGroupBox(self.tab_3) + self.grpBookInfos = QtWidgets.QGroupBox(self.lytTabOverview) self.grpBookInfos.setObjectName("grpBookInfos") self.formLayout_3 = QtWidgets.QFormLayout(self.grpBookInfos) self.formLayout_3.setContentsMargins(6, 6, 6, -1) @@ -70,7 +72,7 @@ class Ui_MainWindow(object): self.txtGeneralLicense.setObjectName("txtGeneralLicense") self.formLayout_3.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.txtGeneralLicense) self.horizontalLayout_26.addWidget(self.grpBookInfos) - self.grpAuthor = QtWidgets.QGroupBox(self.tab_3) + self.grpAuthor = QtWidgets.QGroupBox(self.lytTabOverview) self.grpAuthor.setObjectName("grpAuthor") self.formLayout_4 = QtWidgets.QFormLayout(self.grpAuthor) self.formLayout_4.setContentsMargins(6, 6, 6, -1) @@ -88,12 +90,13 @@ class Ui_MainWindow(object): self.txtGeneralEmail.setObjectName("txtGeneralEmail") self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.txtGeneralEmail) self.horizontalLayout_26.addWidget(self.grpAuthor) - self.tabMain.addTab(self.tab_3, "") - self.tab = QtWidgets.QWidget() - self.tab.setObjectName("tab") - self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.tab) - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.tabSummary = QtWidgets.QTabWidget(self.tab) + self.verticalLayout_23.addLayout(self.horizontalLayout_26) + self.tabMain.addTab(self.lytTabOverview, "") + self.lytTabSummary = QtWidgets.QWidget() + self.lytTabSummary.setObjectName("lytTabSummary") + self.verticalLayout_24 = QtWidgets.QVBoxLayout(self.lytTabSummary) + self.verticalLayout_24.setObjectName("verticalLayout_24") + self.tabSummary = QtWidgets.QTabWidget(self.lytTabSummary) self.tabSummary.setTabPosition(QtWidgets.QTabWidget.West) self.tabSummary.setObjectName("tabSummary") self.tab_14 = QtWidgets.QWidget() @@ -249,13 +252,13 @@ class Ui_MainWindow(object): self.verticalLayout_4.addWidget(self.lblSummaryWCFull) self.horizontalLayout_8.addLayout(self.verticalLayout_4) self.tabSummary.addTab(self.tabWidgetPage2, "") - self.horizontalLayout_3.addWidget(self.tabSummary) - self.tabMain.addTab(self.tab, "") - self.tab_2 = QtWidgets.QWidget() - self.tab_2.setObjectName("tab_2") - self.horizontalLayout = QtWidgets.QHBoxLayout(self.tab_2) - self.horizontalLayout.setObjectName("horizontalLayout") - self.splitterPersos = QtWidgets.QSplitter(self.tab_2) + self.verticalLayout_24.addWidget(self.tabSummary) + self.tabMain.addTab(self.lytTabSummary, "") + self.lytTabPersos = QtWidgets.QWidget() + self.lytTabPersos.setObjectName("lytTabPersos") + self.verticalLayout_25 = QtWidgets.QVBoxLayout(self.lytTabPersos) + self.verticalLayout_25.setObjectName("verticalLayout_25") + self.splitterPersos = QtWidgets.QSplitter(self.lytTabPersos) self.splitterPersos.setOrientation(QtCore.Qt.Horizontal) self.splitterPersos.setChildrenCollapsible(False) self.splitterPersos.setObjectName("splitterPersos") @@ -425,13 +428,13 @@ class Ui_MainWindow(object): self.horizontalLayout_9.addWidget(self.btnStepEight) self.verticalLayout_9.addLayout(self.horizontalLayout_9) self.tabPersos.addTab(self.tab_12, "") - self.horizontalLayout.addWidget(self.splitterPersos) - self.tabMain.addTab(self.tab_2, "") - self.tab_4 = QtWidgets.QWidget() - self.tab_4.setObjectName("tab_4") - self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.tab_4) - self.horizontalLayout_5.setObjectName("horizontalLayout_5") - self.splitterPlot = QtWidgets.QSplitter(self.tab_4) + self.verticalLayout_25.addWidget(self.splitterPersos) + self.tabMain.addTab(self.lytTabPersos, "") + self.lytTabPlot = QtWidgets.QWidget() + self.lytTabPlot.setObjectName("lytTabPlot") + self.verticalLayout_26 = QtWidgets.QVBoxLayout(self.lytTabPlot) + self.verticalLayout_26.setObjectName("verticalLayout_26") + self.splitterPlot = QtWidgets.QSplitter(self.lytTabPlot) self.splitterPlot.setOrientation(QtCore.Qt.Horizontal) self.splitterPlot.setObjectName("splitterPlot") self.groupBox_2 = QtWidgets.QGroupBox(self.splitterPlot) @@ -664,16 +667,16 @@ class Ui_MainWindow(object): self.horizontalLayout_13.addWidget(self.txtPlotSummaryFull) self.stkPlotSummary.addWidget(self.page_3) self.verticalLayout_18.addWidget(self.stkPlotSummary) - self.horizontalLayout_5.addWidget(self.splitterPlot) - self.tabMain.addTab(self.tab_4, "") + self.verticalLayout_26.addWidget(self.splitterPlot) + self.tabMain.addTab(self.lytTabPlot, "") self.tab_5 = QtWidgets.QWidget() self.tab_5.setObjectName("tab_5") self.tabMain.addTab(self.tab_5, "") - self.tab_6 = QtWidgets.QWidget() - self.tab_6.setObjectName("tab_6") - self.horizontalLayout_12 = QtWidgets.QHBoxLayout(self.tab_6) - self.horizontalLayout_12.setObjectName("horizontalLayout_12") - self.splitterPlan = QtWidgets.QSplitter(self.tab_6) + self.lytTabOutline = QtWidgets.QWidget() + self.lytTabOutline.setObjectName("lytTabOutline") + self.verticalLayout_27 = QtWidgets.QVBoxLayout(self.lytTabOutline) + self.verticalLayout_27.setObjectName("verticalLayout_27") + self.splitterPlan = QtWidgets.QSplitter(self.lytTabOutline) self.splitterPlan.setOrientation(QtCore.Qt.Horizontal) self.splitterPlan.setChildrenCollapsible(False) self.splitterPlan.setObjectName("splitterPlan") @@ -743,13 +746,13 @@ class Ui_MainWindow(object): self.pushButton_23.setObjectName("pushButton_23") self.horizontalLayout_18.addWidget(self.pushButton_23) self.verticalLayout_14.addLayout(self.horizontalLayout_18) - self.horizontalLayout_12.addWidget(self.splitterPlan) - self.tabMain.addTab(self.tab_6, "") - self.tab_7 = QtWidgets.QWidget() - self.tab_7.setObjectName("tab_7") - self.horizontalLayout_20 = QtWidgets.QHBoxLayout(self.tab_7) - self.horizontalLayout_20.setObjectName("horizontalLayout_20") - self.splitterRedac = QtWidgets.QSplitter(self.tab_7) + self.verticalLayout_27.addWidget(self.splitterPlan) + self.tabMain.addTab(self.lytTabOutline, "") + self.lytTabRedac = QtWidgets.QWidget() + self.lytTabRedac.setObjectName("lytTabRedac") + self.verticalLayout_28 = QtWidgets.QVBoxLayout(self.lytTabRedac) + self.verticalLayout_28.setObjectName("verticalLayout_28") + self.splitterRedac = QtWidgets.QSplitter(self.lytTabRedac) self.splitterRedac.setOrientation(QtCore.Qt.Horizontal) self.splitterRedac.setObjectName("splitterRedac") self.layoutWidget1 = QtWidgets.QWidget(self.splitterRedac) @@ -905,13 +908,13 @@ class Ui_MainWindow(object): self.verticalLayout_15.addWidget(self.textEdit) self.verticalLayout_21.addWidget(self.groupBox_3) self.tabWidget_2.addTab(self.tab_18, "") - self.horizontalLayout_20.addWidget(self.splitterRedac) - self.tabMain.addTab(self.tab_7, "") - self.tab_8 = QtWidgets.QWidget() - self.tab_8.setObjectName("tab_8") - self.horizontalLayout_23 = QtWidgets.QHBoxLayout(self.tab_8) - self.horizontalLayout_23.setObjectName("horizontalLayout_23") - self.tabWidget = QtWidgets.QTabWidget(self.tab_8) + self.verticalLayout_28.addWidget(self.splitterRedac) + self.tabMain.addTab(self.lytTabRedac, "") + self.lytTabDebug = QtWidgets.QWidget() + self.lytTabDebug.setObjectName("lytTabDebug") + self.verticalLayout_29 = QtWidgets.QVBoxLayout(self.lytTabDebug) + self.verticalLayout_29.setObjectName("verticalLayout_29") + self.tabWidget = QtWidgets.QTabWidget(self.lytTabDebug) self.tabWidget.setTabPosition(QtWidgets.QTabWidget.West) self.tabWidget.setObjectName("tabWidget") self.tab_9 = QtWidgets.QWidget() @@ -947,8 +950,8 @@ class Ui_MainWindow(object): self.treeDebugOutline.setObjectName("treeDebugOutline") self.horizontalLayout_32.addWidget(self.treeDebugOutline) self.tabWidget.addTab(self.tab_20, "") - self.horizontalLayout_23.addWidget(self.tabWidget) - self.tabMain.addTab(self.tab_8, "") + self.verticalLayout_29.addWidget(self.tabWidget) + self.tabMain.addTab(self.lytTabDebug, "") self.horizontalLayout_2.addWidget(self.tabMain) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) @@ -958,6 +961,8 @@ class Ui_MainWindow(object): self.menu_Fichier.setObjectName("menu_Fichier") self.menuMode = QtWidgets.QMenu(self.menubar) self.menuMode.setObjectName("menuMode") + self.menu_Aide = QtWidgets.QMenu(self.menubar) + self.menu_Aide.setObjectName("menu_Aide") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") @@ -990,6 +995,12 @@ class Ui_MainWindow(object): icon = QtGui.QIcon.fromTheme("document-new") self.actionNouveau.setIcon(icon) self.actionNouveau.setObjectName("actionNouveau") + self.actShowHelp = QtWidgets.QAction(MainWindow) + self.actShowHelp.setCheckable(True) + self.actShowHelp.setChecked(True) + icon = QtGui.QIcon.fromTheme("system-help") + self.actShowHelp.setIcon(icon) + self.actShowHelp.setObjectName("actShowHelp") self.menu_Fichier.addAction(self.actionNouveau) self.menu_Fichier.addAction(self.actionOuvrir) self.menu_Fichier.addAction(self.action_R_cents) @@ -998,11 +1009,13 @@ class Ui_MainWindow(object): self.menu_Fichier.addSeparator() self.menu_Fichier.addAction(self.actionQuitter) self.menuMode.addAction(self.actionSnowflakeMode) + self.menu_Aide.addAction(self.actShowHelp) self.menubar.addAction(self.menu_Fichier.menuAction()) self.menubar.addAction(self.menuMode.menuAction()) + self.menubar.addAction(self.menu_Aide.menuAction()) self.retranslateUi(MainWindow) - self.tabMain.setCurrentIndex(6) + self.tabMain.setCurrentIndex(1) self.tabSummary.setCurrentIndex(0) self.tabPersos.setCurrentIndex(0) self.tabPlot.setCurrentIndex(0) @@ -1029,7 +1042,7 @@ class Ui_MainWindow(object): self.grpAuthor.setTitle(_translate("MainWindow", "Informations sur l\'auteur")) self.label_15.setText(_translate("MainWindow", "Nom")) self.label_19.setText(_translate("MainWindow", "Email")) - self.tabMain.setTabText(self.tabMain.indexOf(self.tab_3), _translate("MainWindow", "Aperçu")) + self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabOverview), _translate("MainWindow", "Aperçu")) self.label.setText(_translate("MainWindow", "Résumé en une phrase")) self.btnStepTwo.setText(_translate("MainWindow", "Suivant")) self.tabSummary.setTabText(self.tabSummary.indexOf(self.tab_14), _translate("MainWindow", "Une phrase")) @@ -1045,7 +1058,7 @@ class Ui_MainWindow(object): self.btnStepSeven.setText(_translate("MainWindow", "Suivant")) self.label_20.setText(_translate("MainWindow", "Résumé complet")) self.tabSummary.setTabText(self.tabSummary.indexOf(self.tabWidgetPage2), _translate("MainWindow", "4 pages")) - self.tabMain.setTabText(self.tabMain.indexOf(self.tab), _translate("MainWindow", "Résumé")) + self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabSummary), _translate("MainWindow", "Résumé")) self.groupBox.setTitle(_translate("MainWindow", "Noms")) self.lineEdit_8.setPlaceholderText(_translate("MainWindow", "Filter")) self.label_3.setText(_translate("MainWindow", "Nom")) @@ -1064,7 +1077,7 @@ class Ui_MainWindow(object): self.lineEdit.setPlaceholderText(_translate("MainWindow", "Filter")) self.btnStepEight.setText(_translate("MainWindow", "Suivant")) self.tabPersos.setTabText(self.tabPersos.indexOf(self.tab_12), _translate("MainWindow", "Informations détaillées")) - self.tabMain.setTabText(self.tabMain.indexOf(self.tab_2), _translate("MainWindow", "Personnages")) + self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabPersos), _translate("MainWindow", "Personnages")) self.groupBox_2.setTitle(_translate("MainWindow", "Intrigues")) __sortingEnabled = self.listWidget_3.isSortingEnabled() self.listWidget_3.setSortingEnabled(False) @@ -1105,7 +1118,7 @@ class Ui_MainWindow(object): self.comboBox_2.setItemText(0, _translate("MainWindow", "Un paragraphe")) self.comboBox_2.setItemText(1, _translate("MainWindow", "Une page")) self.comboBox_2.setItemText(2, _translate("MainWindow", "4 pages")) - self.tabMain.setTabText(self.tabMain.indexOf(self.tab_4), _translate("MainWindow", "Intrigues")) + self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabPlot), _translate("MainWindow", "Intrigues")) self.tabMain.setTabText(self.tabMain.indexOf(self.tab_5), _translate("MainWindow", "Contexte")) self.treeWidget_2.headerItem().setText(0, _translate("MainWindow", "Liste de scènes")) __sortingEnabled = self.treeWidget_2.isSortingEnabled() @@ -1120,7 +1133,7 @@ class Ui_MainWindow(object): self.groupbox.setTitle(_translate("MainWindow", "Détails de la scène")) self.label_9.setText(_translate("MainWindow", "POV")) self.txtPlanSummarySentance.setPlaceholderText(_translate("MainWindow", "Résumé de la scène en une ligne")) - self.tabMain.setTabText(self.tabMain.indexOf(self.tab_6), _translate("MainWindow", "Plan")) + self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabOutline), _translate("MainWindow", "Plan")) self.groupBox_4.setTitle(_translate("MainWindow", "Propriétés de la scène")) self.label_29.setText(_translate("MainWindow", "Personnage")) self.label_30.setText(_translate("MainWindow", "Status")) @@ -1143,14 +1156,15 @@ class Ui_MainWindow(object): item.setText(_translate("MainWindow", "La revenche du capitaine - intrigue")) self.listWidget_5.setSortingEnabled(__sortingEnabled) self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_18), _translate("MainWindow", "Tools")) - self.tabMain.setTabText(self.tabMain.indexOf(self.tab_7), _translate("MainWindow", "Rédaction")) + self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabRedac), _translate("MainWindow", "Rédaction")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_9), _translate("MainWindow", "FlatData")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_10), _translate("MainWindow", "Persos")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_16), _translate("MainWindow", "Perso Infos")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_20), _translate("MainWindow", "Outline")) - self.tabMain.setTabText(self.tabMain.indexOf(self.tab_8), _translate("MainWindow", "Debug")) + self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabDebug), _translate("MainWindow", "Debug")) self.menu_Fichier.setTitle(_translate("MainWindow", "&Fichier")) self.menuMode.setTitle(_translate("MainWindow", "Mo&de")) + self.menu_Aide.setTitle(_translate("MainWindow", "&Aide")) self.actionOuvrir.setText(_translate("MainWindow", "&Ouvrir")) self.actionOuvrir.setShortcut(_translate("MainWindow", "Ctrl+O")) self.action_R_cents.setText(_translate("MainWindow", "&Récents")) @@ -1164,6 +1178,8 @@ class Ui_MainWindow(object): self.actionSnowflakeMode.setText(_translate("MainWindow", "&Snowflake")) self.actionNouveau.setText(_translate("MainWindow", "&Nouveau")) self.actionNouveau.setShortcut(_translate("MainWindow", "Ctrl+N")) + self.actShowHelp.setText(_translate("MainWindow", "Afficher les &bulles d\'aide")) + self.actShowHelp.setShortcut(_translate("MainWindow", "Ctrl+Shift+B")) -from ui.collapsibleGroupBox import collapsibleGroupBox from ui.sldImportance import sldImportance +from ui.collapsibleGroupBox import collapsibleGroupBox diff --git a/src/ui/mainWindow.ui b/src/ui/mainWindow.ui index 8b77bb2..f01f959 100644 --- a/src/ui/mainWindow.ui +++ b/src/ui/mainWindow.ui @@ -18,156 +18,160 @@ - 6 + 1 true - + Aperçu - + - - - Information sur le livre - - - - 6 - - - 6 - - - 6 - - - - - Titre + + + + + Information sur le livre + + + + 6 - - - - - - - - - Sous titre + + 6 - - - - - - - - - Série + + 6 - - - - - - - - - Volume - - - - - - - + + + + Titre + + - - - - Qt::Horizontal + + + + + + + Sous titre - - - 40 - 20 - + + + + + + + + + Série - + + + + + + + + + Volume + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Genre + + + + + + + + + + License + + + + + - - - - - Genre + + + + + + Informations sur l'auteur + + + + 6 - - - - - - - - - License + + 6 - - - - - - - - - - - - Informations sur l'auteur - - - - 6 - - - 6 - - - 6 - - - - - Nom + + 6 - - - - - - - - - Email - - - - - - - - + + + + Nom + + + + + + + + + + Email + + + + + + + + + + - + Résumé - + @@ -479,11 +483,11 @@ - + Personnages - + @@ -820,11 +824,11 @@ - + Intrigues - + @@ -1265,11 +1269,11 @@ Contexte - + Plan - + @@ -1435,11 +1439,11 @@ - + Rédaction - + @@ -1747,11 +1751,11 @@ - + Debug - + @@ -1839,8 +1843,15 @@ + + + &Aide + + + + @@ -1932,6 +1943,25 @@ Ctrl+N + + + true + + + true + + + + + + + + Afficher les &bulles d'aide + + + Ctrl+Shift+B + +