From 49ca4b0898a3a3745f524001884c9ed423760bed Mon Sep 17 00:00:00 2001 From: Olivier Keshavjee Date: Tue, 30 Jun 2015 12:27:43 +0200 Subject: [PATCH] Adds: cheat sheet --- i18n/manuskript.pro | 3 +- i18n/manuskript_fr.ts | 225 +++++++++++++++----------------- src/mainWindow.py | 5 +- src/models/outlineModel.py | 31 ++++- src/models/references.py | 69 ++++++++-- src/ui/cheatSheet.py | 138 ++++++++++++++++++++ src/ui/cheatSheet_ui.py | 62 +++++++++ src/ui/cheatSheet_ui.ui | 88 +++++++++++++ src/ui/collapsibleGroupBox2.py | 4 +- src/ui/editors/completer.py | 50 +------ src/ui/mainWindow.py | 58 +++----- src/ui/mainWindow.ui | 58 ++++---- src/ui/views/metadataView_ui.py | 11 +- src/ui/views/metadataView_ui.ui | 21 ++- 14 files changed, 565 insertions(+), 258 deletions(-) create mode 100644 src/ui/cheatSheet.py create mode 100644 src/ui/cheatSheet_ui.py create mode 100644 src/ui/cheatSheet_ui.ui diff --git a/i18n/manuskript.pro b/i18n/manuskript.pro index a97cc4b..3dc9d1e 100644 --- a/i18n/manuskript.pro +++ b/i18n/manuskript.pro @@ -2,6 +2,7 @@ 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/cheatSheet_ui.ui FORMS += ../src/ui/editors/editorWidget_ui.ui @@ -23,6 +24,7 @@ SOURCES += ../src/models/references.py SOURCES += ../src/ui/helpLabel.py SOURCES += ../src/ui/sldImportance.py SOURCES += ../src/ui/welcome.py +SOURCES += ../src/ui/cheatSheet.py SOURCES += ../src/ui/editors/editorWidget.py SOURCES += ../src/ui/editors/fullScreenEditor.py @@ -30,7 +32,6 @@ SOURCES += ../src/ui/editors/textFormat.py SOURCES += ../src/ui/editors/completer.py SOURCES += ../src/ui/editors/mainEditor.py - SOURCES += ../src/ui/views/corkDelegate.py SOURCES += ../src/ui/views/outlineDelegates.py SOURCES += ../src/ui/views/outlineBasics.py diff --git a/i18n/manuskript_fr.ts b/i18n/manuskript_fr.ts index b78ac84..15eb5c3 100644 --- a/i18n/manuskript_fr.ts +++ b/i18n/manuskript_fr.ts @@ -1,6 +1,5 @@ - - + MainWindow @@ -124,7 +123,7 @@ Noms - + Filter Filtre @@ -179,7 +178,7 @@ Informations détaillées - + Plots Intrigues @@ -214,7 +213,7 @@ Contexte - + Outline Plan @@ -224,207 +223,187 @@ Rédaction - + Tools Outils - + Cheat sheet Aide-mémoire - - Albert - perso - - - - - Jean - perso - - - - - Crapoquak - animal - - - - - La revenche du capitaine - intrigue - - - - + Debug Debug - + FlatData FlatData - + Persos Persos - + File Fichier - + Help Aide - + Open Ouvrir - + Ctrl+O - + Recents Récents - + Save Enregistrer - + Ctrl+S Ctrl+S - + Save as... Enregistrer sous... - + Ctrl+Shift+S - + Quit Quitter - + Ctrl+Q - + Show help texts Montrer les bulles d'aides - + Ctrl+Shift+B - + Spellcheck Correcteur orthographique - + F8 - + Mode Mode - + (~{} pages) (~{} pages) - + Enter infos about your book, and yourself. Entrez toutes les informations relatives au livre, ainsi qu'à vous. - + Take time to think about a one sentance (~50 words) summary of your book. Then expand it to a paragraph, then to a page, then to a full summary. Prenez le temps de réfléchir à un résumé de votre livre, en une phrase (~50 mots). Puis augmentez cette phrase en un paragraphe, puis en une page, puis en un résumé complet. - + Create your characters. Créez ici vos personnage. - + Develop plots. Développez vos intrigues. - + Create the outline of your masterpiece. Créez le plan de votre chef-d'œuvre. - + Write. Écrivez. - + Debug infos. Sometimes useful. Des infos pour débugger des fois pendant qu'on code c'est utile. - + Dictionary Dictionnaire - + Install PyEnchant to use spellcheck Installez PyEnchant pour profiter du correcteur orthographique - + Words: {}{} Mots: {}{} - + Text Texte - + Labels Labels - + Edit Édition - + Labels... Labels... - + Status... Status... @@ -444,7 +423,7 @@ Et si...? - + Index cards Cartes @@ -454,37 +433,37 @@ Métadonnées - + View Vue - + F9 F9 - + Tree Arbre - + Normal Normal - + Simple Simple - + Fractal Fractal - + Settings Réglages @@ -499,72 +478,72 @@ Le projet {} a été chargé. - + The basic situation, in the form of a 'What if...?' question. Ex: 'What if the most dangerous evil wizard could wasn't abled to kill a baby?' (Harry Potter) La situation de base, sous la forme d'une question: "Et si...?" Par exemple: "Et si le plus dangereux magiciens mauvais n'était pas capable de tuer un bébé?" (Harry Potter) - + Nothing Rien - + POV POV - + Label Label - + Progress Progrès - + Compile Compilation - + Icon color Couleur de l'icone - + Text color Couleur du texte - + Background color Couleur de l'arrière-plan - + Icon Icone - + Background Arrière-plan - + Border Bordure - + Corner Coin - + Close project Fermer le projet @@ -1107,6 +1086,44 @@ des lignes: Résumé en quelques phrases: + + cheatSheet + + + Form + Form + + + + Filter + Filtre + + + + Minor + + + + + Secondary + Secondaire + + + + Main + + + + + Characters + Personnages + + + + Texts + Textes + + cmbOutlineLabelChoser @@ -1151,34 +1168,6 @@ des lignes: Différentes valeurs - - completer - - - Texts - Textes - - - - Minor - Mineur - - - - Secondary - Secondaire - - - - Main - Principal - - - - Characters - Personnages - - corkDelegate @@ -1203,17 +1192,17 @@ des lignes: fullScreenEditor - + Theme: Thème: - + {} words / {} {} mots / {} - + {} words {} mots @@ -1237,17 +1226,17 @@ des lignes: mainEditor - + Root Racine - + {} words / {} {} mots / {} - + {} words {} mots diff --git a/src/mainWindow.py b/src/mainWindow.py index d8f4368..d18c66f 100644 --- a/src/mainWindow.py +++ b/src/mainWindow.py @@ -772,7 +772,10 @@ class MainWindow(QMainWindow, Ui_MainWindow): #self.treeRedacOutline.selectionModel().selectionChanged.connect(self.outlineSelectionChanged, AUC) #self.treePlanOutline.selectionModel().selectionChanged.connect(self.outlineSelectionChanged, AUC) #self.treePlanOutline.selectionModel().selectionChanged.connect(self.outlineSelectionChanged, AUC) - + + # Cheat Sheet + self.cheatSheet.setModels() + #Debug self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"]) self.tblDebugFlatData.setModel(self.mdlFlatData) diff --git a/src/models/outlineModel.py b/src/models/outlineModel.py index c458300..4209f13 100644 --- a/src/models/outlineModel.py +++ b/src/models/outlineModel.py @@ -3,11 +3,12 @@ from qt import * from enums import * - from enum import Enum from lxml import etree as ET - from functions import * +import locale +locale.setlocale(locale.LC_ALL, '') + class outlineModel(QAbstractItemModel): @@ -626,18 +627,44 @@ class outlineItem(): def ID(self): return self.data(Outline.ID.value) + def POV(self): + return self.data(Outline.POV.value) + def path(self): + "Returns path to item as string." if self.parent().parent(): return "{} > {}".format(self.parent().path(), self.title()) else: return self.title() + def pathID(self): + "Returns path to item as list of (ID, title)." + if self.parent().parent(): + return self.parent().pathID() + [(self.ID(), self.title())] + else: + return [(self.ID(), self.title())] + def level(self): if self.parent(): return self.parent().level() + 1 else: return -1 + def stats(self): + wc = self.data(Outline.wordCount.value) + goal = self.data(Outline.goal.value) + progress = self.data(Outline.goalPercentage.value) + if not wc: + wc = 0 + if goal: + return qApp.translate("outlineModel", "{} words / {} ({})").format( + locale.format("%d", wc, grouping=True), + locale.format("%d", goal, grouping=True), + "{}%".format(str(int(progress * 100)))) + else: + return qApp.translate("outlineModel", "{} words").format( + locale.format("%d", wc, grouping=True)) + def toXML(self): item = ET.Element("outlineItem") diff --git a/src/models/references.py b/src/models/references.py index c11d375..5e647ab 100644 --- a/src/models/references.py +++ b/src/models/references.py @@ -22,15 +22,39 @@ def infoForRef(ref): item = idx.internalPointer() - text = "

{}

".format(item.title()) - text += "Path: {}
".format(item.path()) - ss = item.data(Outline.summarySentance.value) - if ss: - text += "\nShort summary: {}
".format(ss) - - ls = item.data(Outline.summaryFull.value) - if ls: - text += "\nLong summary: {}
".format(ls) + #

Status: {status}

+ #

Label: {label}

+ + if item.POV(): + POV = "{text}".format( + ref="::C:{}::".format(item.POV()), + text=mainWindow().mdlPersos.getPersoNameByID(item.POV())) + else: + POV = qApp.translate("references", "None") + + path = item.pathID() + pathStr = [] + for _id, title in path: + pathStr.append("{text}".format( + ref="::T:{}::".format(_id), + text=title)) + path = " > ".join(pathStr) + + text = """

{title}

+

Path: {path}

+

Stats: {stats}

+

POV: {POV}

+

Short summary: {ss}

+

Long summary: {ls}

+

Notes: {notes}

+ """.format( + title=item.title(), + path=path, + stats=item.stats(), + POV=POV, + ss=item.data(Outline.summarySentance.value).replace("\n", "
"), + ls=item.data(Outline.summaryFull.value).replace("\n", "
"), + notes=linkifyAllRefs(item.data(Outline.notes.value)).replace("\n", "
")) return text @@ -42,6 +66,33 @@ def infoForRef(ref): else: return qApp.translate("references", "Unknown reference: {}.").format(ref) +def refToLink(ref): + match = re.fullmatch("::(\w):(\d+?)::", ref) + if match: + _type = match.group(1) + _ref = match.group(2) + text = "" + if _type == "T": + m = mainWindow().mdlOutline + idx = m.getIndexByID(_ref) + if idx.isValid(): + item = idx.internalPointer() + text = item.title() + + elif _type == "C": + m = mainWindow().mdlPersos + text = m.item(int(_ref), Perso.name.value).text() + + if text: + return "{text}".format( + ref=ref, + text=text) + else: + return ref + +def linkifyAllRefs(text): + return re.sub(r"::(\w):(\d+?)::", lambda m: refToLink(m.group(0)), text) + def tooltipForRef(ref): match = re.fullmatch("::(\w):(\d+?)::", ref) if match: diff --git a/src/ui/cheatSheet.py b/src/ui/cheatSheet.py new file mode 100644 index 0000000..119a970 --- /dev/null +++ b/src/ui/cheatSheet.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python +#--!-- coding: utf8 --!-- + +from qt import * +from enums import * +from models.outlineModel import * +from ui.cheatSheet_ui import * +from functions import * +from models.references import * + +class cheatSheet(QWidget, Ui_cheatSheet): + + activated = pyqtSignal(str) + + def __init__(self, parent=None): + QWidget.__init__(self, parent) + self.setupUi(self) + self.splitter.setStretchFactor(0, 3) + self.splitter.setStretchFactor(1, 70) + + self.txtFilter.textChanged.connect(self.updateListFromData) + self.txtFilter.returnPressed.connect(self.showInfos) + self.listDelegate = listCompleterDelegate(self) + self.list.setItemDelegate(self.listDelegate) + self.list.itemActivated.connect(self.showInfos) + self.view.linkActivated.connect(self.openLink) + + self.outlineModel = None + self.persoModel = None + + self.populateTimer = QTimer(self) + self.populateTimer.setSingleShot(True) + self.populateTimer.setInterval(500) + self.populateTimer.timeout.connect(self.populate) + self.populateTimer.stop() + + self.data = {} + + self.populate() + + def setModels(self): + self.outlineModel = mainWindow().mdlOutline + self.persoModel = mainWindow().mdlPersos + self.outlineModel.dataChanged.connect(self.populateTimer.start) + self.persoModel.dataChanged.connect(self.populateTimer.start) + + def populate(self): + if self.persoModel: + d = [] + + for r in range(self.persoModel.rowCount()): + name = self.persoModel.item(r, Perso.name.value).text() + ID = self.persoModel.item(r, Perso.ID.value).text() + imp = self.persoModel.item(r, Perso.importance.value).text() + imp = [self.tr("Minor"), self.tr("Secondary"), self.tr("Main")][int(imp)] + d.append((name, ID, imp)) + + self.data[(self.tr("Characters"), "C")] = d + if self.outlineModel: + d = [] + + def addChildren(item): + for c in item.children(): + d.append((c.title(), c.ID(), c.path())) + addChildren(c) + + r = self.outlineModel.rootItem + addChildren(r) + + self.data[(self.tr("Texts"), "T")] = d + + self.updateListFromData() + + def addCategory(self, title): + item = QListWidgetItem(title) + item.setBackground(QBrush(lightBlue())) + item.setForeground(QBrush(Qt.darkBlue)) + item.setFlags(Qt.ItemIsEnabled) + f = item.font() + f.setBold(True) + item.setFont(f) + self.list.addItem(item) + + def updateListFromData(self): + self.list.clear() + for cat in self.data: + filtered = [i for i in self.data[cat] if self.txtFilter.text().lower() in i[0].lower()] + if filtered: + self.addCategory(cat[0]) + for item in filtered: + i = QListWidgetItem(item[0]) + i.setData(Qt.UserRole, "::{}:{}::".format(cat[1], item[1])) + i.setData(Qt.UserRole+1, item[2]) + self.list.addItem(i) + + self.list.setCurrentRow(1) + + def showInfos(self): + i = self.list.currentItem() + ref = i.data(Qt.UserRole) + if ref: + self.view.setText(infoForRef(ref)) + + def openLink(self, link): + openReference(link) + + def keyPressEvent(self, event): + if event.key() in [Qt.Key_Up, Qt.Key_Down]: + self.list.keyPressEvent(event) + else: + QWidget.keyPressEvent(self, event) + + +class listCompleterDelegate(QStyledItemDelegate): + def __init__(self, parent=None): + QStyledItemDelegate.__init__(self, parent) + + def paint(self, painter, option, index): + extra = index.data(Qt.UserRole+1) + if not extra: + return QStyledItemDelegate.paint(self, painter, option, index) + + else: + if option.state & QStyle.State_Selected: + painter.fillRect(option.rect, option.palette.color(QPalette.Inactive, QPalette.Highlight)) + + title = index.data() + extra = " - {}".format(extra) + painter.drawText(option.rect, Qt.AlignLeft, title) + + fm = QFontMetrics(option.font) + w = fm.width(title) + r = QRect(option.rect) + r.setLeft(r.left() + w) + painter.save() + painter.setPen(Qt.gray) + painter.drawText(r, Qt.AlignLeft, extra) + painter.restore() \ No newline at end of file diff --git a/src/ui/cheatSheet_ui.py b/src/ui/cheatSheet_ui.py new file mode 100644 index 0000000..41b8465 --- /dev/null +++ b/src/ui/cheatSheet_ui.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'src/ui/cheatSheet_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_cheatSheet(object): + def setupUi(self, cheatSheet): + cheatSheet.setObjectName("cheatSheet") + cheatSheet.resize(400, 344) + self.verticalLayout_2 = QtWidgets.QVBoxLayout(cheatSheet) + self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.txtFilter = QtWidgets.QLineEdit(cheatSheet) + self.txtFilter.setProperty("clearButtonEnabled", True) + self.txtFilter.setObjectName("txtFilter") + self.verticalLayout_2.addWidget(self.txtFilter) + self.splitter = QtWidgets.QSplitter(cheatSheet) + self.splitter.setOrientation(QtCore.Qt.Vertical) + self.splitter.setObjectName("splitter") + self.list = QtWidgets.QListWidget(self.splitter) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.list.sizePolicy().hasHeightForWidth()) + self.list.setSizePolicy(sizePolicy) + self.list.setObjectName("list") + self.scrollArea = QtWidgets.QScrollArea(self.splitter) + self.scrollArea.setWidgetResizable(True) + self.scrollArea.setObjectName("scrollArea") + self.scrollAreaWidgetContents = QtWidgets.QWidget() + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 396, 119)) + self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") + self.verticalLayout = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents) + self.verticalLayout.setObjectName("verticalLayout") + self.view = QtWidgets.QLabel(self.scrollAreaWidgetContents) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.view.sizePolicy().hasHeightForWidth()) + self.view.setSizePolicy(sizePolicy) + self.view.setText("") + self.view.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.view.setWordWrap(True) + self.view.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) + self.view.setObjectName("view") + self.verticalLayout.addWidget(self.view) + self.scrollArea.setWidget(self.scrollAreaWidgetContents) + self.verticalLayout_2.addWidget(self.splitter) + + self.retranslateUi(cheatSheet) + QtCore.QMetaObject.connectSlotsByName(cheatSheet) + + def retranslateUi(self, cheatSheet): + _translate = QtCore.QCoreApplication.translate + cheatSheet.setWindowTitle(_translate("cheatSheet", "Form")) + self.txtFilter.setPlaceholderText(_translate("cheatSheet", "Filter")) + diff --git a/src/ui/cheatSheet_ui.ui b/src/ui/cheatSheet_ui.ui new file mode 100644 index 0000000..02d537b --- /dev/null +++ b/src/ui/cheatSheet_ui.ui @@ -0,0 +1,88 @@ + + + cheatSheet + + + + 0 + 0 + 400 + 344 + + + + Form + + + + 0 + + + + + Filter + + + true + + + + + + + Qt::Vertical + + + + + 0 + 0 + + + + + + true + + + + + 0 + 0 + 396 + 119 + + + + + + + + 0 + 0 + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + + + + + + diff --git a/src/ui/collapsibleGroupBox2.py b/src/ui/collapsibleGroupBox2.py index b3eff51..098c45e 100644 --- a/src/ui/collapsibleGroupBox2.py +++ b/src/ui/collapsibleGroupBox2.py @@ -1,8 +1,5 @@ #!/usr/bin/env python #--!-- coding: utf8 --!-- - - - from qt import * @@ -33,6 +30,7 @@ class collapsibleGroupBox2(QWidget): self.switched = True self.vPolicy = self.sizePolicy().verticalPolicy() + self.parent().layout().setAlignment(Qt.AlignTop) def setFlat(self, val): if val: diff --git a/src/ui/editors/completer.py b/src/ui/editors/completer.py index 14ced3c..280d26a 100644 --- a/src/ui/editors/completer.py +++ b/src/ui/editors/completer.py @@ -20,24 +20,11 @@ class completer(QWidget, Ui_completer): self.listDelegate = listCompleterDelegate(self) self.list.setItemDelegate(self.listDelegate) self.list.itemActivated.connect(self.submit) - - self.outlineModel = mainWindow().mdlOutline - self.persoModel = mainWindow().mdlPersos - - self.populateTimer = QTimer(self) - self.populateTimer.setSingleShot(True) - self.populateTimer.setInterval(500) - self.populateTimer.timeout.connect(self.populate) - self.populateTimer.stop() - self.outlineModel.dataChanged.connect(self.populateTimer.start) - self.persoModel.dataChanged.connect(self.populateTimer.start) - - self.data = {} - - self.populate() + self.list.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.hide() def popup(self, completion=""): + self.updateListFromData() self.text.setText(completion) self.text.setFocus(Qt.PopupFocusReason) self.show() @@ -48,39 +35,12 @@ class completer(QWidget, Ui_completer): item.setForeground(QBrush(Qt.darkBlue)) item.setFlags(Qt.ItemIsEnabled) self.list.addItem(item) - - def populate(self): - if self.outlineModel: - d = [] - - def addChildren(item): - for c in item.children(): - d.append((c.title(), c.ID(), c.path())) - addChildren(c) - - r = self.outlineModel.rootItem - addChildren(r) - - self.data[(self.tr("Texts"), "T")] = d - - if self.persoModel: - d = [] - - for r in range(self.persoModel.rowCount()): - name = self.persoModel.item(r, Perso.name.value).text() - ID = self.persoModel.item(r, Perso.ID.value).text() - imp = self.persoModel.item(r, Perso.importance.value).text() - imp = [self.tr("Minor"), self.tr("Secondary"), self.tr("Main")][int(imp)] - d.append((name, ID, imp)) - - self.data[(self.tr("Characters"), "C")] = d - - self.updateListFromData() def updateListFromData(self): + data = mainWindow().cheatSheet.data self.list.clear() - for cat in self.data: - filtered = [i for i in self.data[cat] if self.text.text().lower() in i[0].lower()] + for cat in data: + filtered = [i for i in data[cat] if self.text.text().lower() in i[0].lower()] if filtered: self.addCategory(cat[0]) for item in filtered: diff --git a/src/ui/mainWindow.py b/src/ui/mainWindow.py index 34f44f5..4206bb6 100644 --- a/src/ui/mainWindow.py +++ b/src/ui/mainWindow.py @@ -836,29 +836,23 @@ class Ui_MainWindow(object): self.verticalLayout_21 = QtWidgets.QVBoxLayout(self.tab_18) self.verticalLayout_21.setContentsMargins(0, 0, 0, 0) self.verticalLayout_21.setObjectName("verticalLayout_21") - self.groupBox_3 = QtWidgets.QGroupBox(self.tab_18) + self.groupBox_3 = collapsibleGroupBox2(self.tab_18) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.groupBox_3.setFont(font) self.groupBox_3.setFlat(True) self.groupBox_3.setObjectName("groupBox_3") self.verticalLayout_15 = QtWidgets.QVBoxLayout(self.groupBox_3) self.verticalLayout_15.setContentsMargins(0, 0, 0, 0) self.verticalLayout_15.setObjectName("verticalLayout_15") - self.lineEdit_3 = QtWidgets.QLineEdit(self.groupBox_3) - self.lineEdit_3.setObjectName("lineEdit_3") - self.verticalLayout_15.addWidget(self.lineEdit_3) - self.listWidget_5 = QtWidgets.QListWidget(self.groupBox_3) - self.listWidget_5.setObjectName("listWidget_5") - item = QtWidgets.QListWidgetItem() - self.listWidget_5.addItem(item) - item = QtWidgets.QListWidgetItem() - self.listWidget_5.addItem(item) - item = QtWidgets.QListWidgetItem() - self.listWidget_5.addItem(item) - item = QtWidgets.QListWidgetItem() - self.listWidget_5.addItem(item) - self.verticalLayout_15.addWidget(self.listWidget_5) - self.textEdit = QtWidgets.QTextEdit(self.groupBox_3) - self.textEdit.setObjectName("textEdit") - self.verticalLayout_15.addWidget(self.textEdit) + self.cheatSheet = cheatSheet(self.groupBox_3) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.cheatSheet.setFont(font) + self.cheatSheet.setObjectName("cheatSheet") + self.verticalLayout_15.addWidget(self.cheatSheet) self.verticalLayout_21.addWidget(self.groupBox_3) self.tabRedacInfos.addTab(self.tab_18, "") self.verticalLayout_16.addWidget(self.splitterRedac) @@ -1039,7 +1033,7 @@ class Ui_MainWindow(object): self.tabPlot.setCurrentIndex(0) self.comboBox_2.setCurrentIndex(0) self.stkPlotSummary.setCurrentIndex(0) - self.tabRedacInfos.setCurrentIndex(0) + self.tabRedacInfos.setCurrentIndex(1) self.tabWidget.setCurrentIndex(1) self.btnPlotShowSummary.toggled['bool'].connect(self.grpPlotSummary.setVisible) self.comboBox_2.currentIndexChanged['int'].connect(self.stkPlotSummary.setCurrentIndex) @@ -1119,18 +1113,6 @@ class Ui_MainWindow(object): self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabOutline), _translate("MainWindow", "Outline")) self.tabRedacInfos.setTabText(self.tabRedacInfos.indexOf(self.tab_17), _translate("MainWindow", "Metadata")) self.groupBox_3.setTitle(_translate("MainWindow", "Cheat sheet")) - self.lineEdit_3.setPlaceholderText(_translate("MainWindow", "Filter")) - __sortingEnabled = self.listWidget_5.isSortingEnabled() - self.listWidget_5.setSortingEnabled(False) - item = self.listWidget_5.item(0) - item.setText(_translate("MainWindow", "Albert - perso")) - item = self.listWidget_5.item(1) - item.setText(_translate("MainWindow", "Jean - perso")) - item = self.listWidget_5.item(2) - item.setText(_translate("MainWindow", "Crapoquak - animal")) - item = self.listWidget_5.item(3) - item.setText(_translate("MainWindow", "La revenche du capitaine - intrigue")) - self.listWidget_5.setSortingEnabled(__sortingEnabled) self.tabRedacInfos.setTabText(self.tabRedacInfos.indexOf(self.tab_18), _translate("MainWindow", "Tools")) self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabRedac), _translate("MainWindow", "Redaction")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_9), _translate("MainWindow", "FlatData")) @@ -1170,14 +1152,16 @@ class Ui_MainWindow(object): self.actSettings.setShortcut(_translate("MainWindow", "F8")) self.actCloseProject.setText(_translate("MainWindow", "Close project")) -from ui.views.persoTreeView import persoTreeView -from ui.views.textEditView import textEditView -from ui.sldImportance import sldImportance -from ui.views.metadataView import metadataView +from ui.views.treeView import treeView from ui.editors.mainEditor import mainEditor +from ui.views.persoTreeView import persoTreeView +from ui.sldImportance import sldImportance +from ui.cheatSheet import cheatSheet from ui.views.basicItemView import basicItemView from ui.views.outlineView import outlineView +from ui.collapsibleGroupBox2 import collapsibleGroupBox2 +from ui.views.metadataView import metadataView from ui.views.lineEditView import lineEditView -from ui.welcome import welcome from ui.views.plotTreeView import plotTreeView -from ui.views.treeView import treeView +from ui.views.textEditView import textEditView +from ui.welcome import welcome diff --git a/src/ui/mainWindow.ui b/src/ui/mainWindow.ui index f4ecde5..aa56cd5 100644 --- a/src/ui/mainWindow.ui +++ b/src/ui/mainWindow.ui @@ -1584,7 +1584,7 @@ QTabWidget::South - 0 + 1 true @@ -1614,7 +1614,13 @@ 0 - + + + + 75 + true + + Cheat sheet @@ -1626,39 +1632,15 @@ 0 - - - Filter + + + + 50 + false + - - - - - Albert - perso - - - - - Jean - perso - - - - - Crapoquak - animal - - - - - La revenche du capitaine - intrigue - - - - - - - @@ -2051,6 +2033,18 @@ QTreeWidget
ui.views.persoTreeView.h
+ + cheatSheet + QWidget +
ui.cheatSheet.h
+ 1 +
+ + collapsibleGroupBox2 + QGroupBox +
ui.collapsibleGroupBox2.h
+ 1 +
diff --git a/src/ui/views/metadataView_ui.py b/src/ui/views/metadataView_ui.py index ba18ce9..765168c 100644 --- a/src/ui/views/metadataView_ui.py +++ b/src/ui/views/metadataView_ui.py @@ -11,11 +11,16 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_metadataView(object): def setupUi(self, metadataView): metadataView.setObjectName("metadataView") - metadataView.resize(400, 425) + metadataView.resize(400, 537) self.verticalLayout = QtWidgets.QVBoxLayout(metadataView) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.textFormat = textFormat(metadataView) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.textFormat.sizePolicy().hasHeightForWidth()) + self.textFormat.setSizePolicy(sizePolicy) self.textFormat.setObjectName("textFormat") self.verticalLayout.addWidget(self.textFormat) self.groupBox_4 = collapsibleGroupBox2(metadataView) @@ -73,9 +78,9 @@ class Ui_metadataView(object): self.txtSummarySentance.setPlaceholderText(_translate("metadataView", "One line summary")) self.groupBox_6.setTitle(_translate("metadataView", "Notes")) +from ui.views.textEditCompleter import textEditCompleter from ui.views.textEditView import textEditView from ui.editors.textFormat import textFormat -from ui.views.textEditCompleter import textEditCompleter from ui.views.lineEditView import lineEditView -from ui.collapsibleGroupBox2 import collapsibleGroupBox2 from ui.views.propertiesView import propertiesView +from ui.collapsibleGroupBox2 import collapsibleGroupBox2 diff --git a/src/ui/views/metadataView_ui.ui b/src/ui/views/metadataView_ui.ui index dd43187..bb108e6 100644 --- a/src/ui/views/metadataView_ui.ui +++ b/src/ui/views/metadataView_ui.ui @@ -7,7 +7,7 @@ 0 0 400 - 425 + 537 @@ -18,7 +18,14 @@ 0 - + + + + 0 + 0 + + + @@ -114,6 +121,11 @@ QTextEdit
ui.views.textEditView.h
+ + lineEditView + QLineEdit +
ui.views.lineEditView.h
+
collapsibleGroupBox2 QGroupBox @@ -126,11 +138,6 @@
ui.views.propertiesView.h
1
- - lineEditView - QLineEdit -
ui.views.lineEditView.h
-
textFormat QWidget