diff --git a/TODO.t2t b/TODO.t2t index 40cadcb..8a802de 100644 --- a/TODO.t2t +++ b/TODO.t2t @@ -4,4 +4,8 @@ Features - Coach (entrer le nombre de mot viser, se fixer des objectifs quotidiens / hebdomadaires (en temps, ou en mots, min ou max), faire des statistiques) - Différents modes: simple (que le outliner / rédacteur), snowflake strict (cache les éléments tant que le précédent n'a pas été accompli), snowflake souple (tout est affiché mais permet de naviger, avec conseils) - Boîte à sable: endroit pour expérimenter, des scenes particulières ou des perso en situations spéciales. Avec suggestions de thèmes / lieux / ... -- Distraction free: custom widget for that, with special features: customization, but also: locking (and unlocked after a certain number of words typed, or after a certain time; be sure to mask also all other screens), internet blocking for a time, etc. \ No newline at end of file +- Distraction free: custom widget for that, with special features: customization, but also: locking (and unlocked after a certain number of words typed, or after a certain time; be sure to mask also all other screens), internet blocking for a time, etc. + +Small things: +- Add color to characters +- Plot: column "comment", with custom text, or predefined ([...] button with menu: "Yes-but-no-and" → "yes but", "no and"; "traveler's journey" → "Call", etc.) \ No newline at end of file diff --git a/i18n/snowflaQe.pro b/i18n/snowflaQe.pro index ba912e0..a36b954 100644 --- a/i18n/snowflaQe.pro +++ b/i18n/snowflaQe.pro @@ -10,7 +10,8 @@ SOURCES += ../src/ui/helpLabel.py SOURCES += ../src/ui/sldImportance.py SOURCES += ../src/ui/editors/customTextEdit.py SOURCES += ../src/ui/editors/editorWidget.py -SOURCES += ../src/ui/editors/corkDelegate.py +SOURCES += ../src/ui/views/corkDelegate.py +SOURCES += ../src/ui/views/outlineBasics.py TRANSLATIONS += snowflaQe_fr.ts diff --git a/i18n/snowflaQe_fr.qm b/i18n/snowflaQe_fr.qm index 56f12e9..ba4cdfb 100644 Binary files a/i18n/snowflaQe_fr.qm and b/i18n/snowflaQe_fr.qm differ diff --git a/i18n/snowflaQe_fr.ts b/i18n/snowflaQe_fr.ts index 6c28366..345e954 100644 --- a/i18n/snowflaQe_fr.ts +++ b/i18n/snowflaQe_fr.ts @@ -1,6 +1,5 @@ - - + MainWindow @@ -129,7 +128,7 @@ Noms - + Filter Filtre @@ -149,7 +148,7 @@ Motivation - + Goal Goal @@ -174,7 +173,7 @@ <html><head/><body><p align="right">Résumé<br/>en un paragraphe</p></body></html> - + Notes Notes @@ -244,7 +243,7 @@ Contexte - + Outline Plan @@ -269,7 +268,7 @@ Goal: - + One line scene summary Résumé en une ligne @@ -284,197 +283,197 @@ Rédaction - + F11 - + Scene Scène - + Properties Propriétés - + POV POV - + Status - + Compile Compile - + Scene summary Résumé de la scène - + Tools Outils - + Cheat sheet Aide-mémoire - + Albert - perso - + Jean - perso - + Crapoquak - animal - + La revenche du capitaine - intrigue - + Debug - + FlatData - + Persos - + Perso Infos - + File Fichier - + Help Aide - + Open Ouvrir - + Ctrl+O - + Recents Récents - + Ctrl+R - + Save Enregistrer - + Ctrl+S - + Save as... Enregistrer sous... - + Ctrl+Shift+S - + Quit Quitter - + Ctrl+Q - + &Snowflake - + New Nouveau - + Ctrl+N - + Show help texts Montrer les bulles d'aides - + Ctrl+Shift+B - + Spellcheck Correcteur orthographique - + F8 - + Word count Nombre de mots - + Mode Mode - + New character Nouveau perso @@ -534,45 +533,55 @@ Mots: {}{} - - Un bâteau arrive au port et personne ne sait pourquoi - - - - - Le roi envoie des émissaires à bord. Ils ne reviennent jamais. - - - - - Le roi envoie son armée. - - - - - Intrigue général - - - - - Scène 1 - - - - - Scène 2 - - - - + Text - + Cork + + + Label + + + + + Labels + + + + + Un bâteau arrive au port et personne ne sait pourquoi + + + + + Le roi envoie des émissaires à bord. Ils ne reviennent jamais. + + + + + Le roi envoie son armée. + + + + + Intrigue général + + + + + Scène 1 + + + + + Scène 2 + + SpellAction @@ -598,12 +607,12 @@ corkDelegate - + One line summary Résumé en une ligne - + Full summary Résumé complet @@ -611,12 +620,12 @@ editorWidget - + {} words / {} {} mots / {} - + {} words {} mots @@ -637,6 +646,44 @@ Infobulle: Si tu me trouve dérengant, tu peux me cacher via le menu Aide. + + outlineBasics + + + Copy + Copier + + + + Cut + Couper + + + + Paste + Coller + + + + Delete + Supprimer + + + + Set POV + Choisir le POV + + + + Set Status + Choisir le status + + + + Set Label + choisir le label + + qApp diff --git a/src/ui/editors/editorWidget.py b/src/ui/editors/editorWidget.py index 4b7ae5b..ca439d9 100644 --- a/src/ui/editors/editorWidget.py +++ b/src/ui/editors/editorWidget.py @@ -136,6 +136,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui): elif item.isFolder() and self.folderView == "outline": self.stack.setCurrentIndex(3) self.outlineView.setModelPersos(mainWindow().mdlPersos) + self.outlineView.setModelLabels(mainWindow().mdlLabels) self.outlineView.setModel(self._model) self.outlineView.setRootIndex(self.currentIndex) diff --git a/src/ui/views/corkView.py b/src/ui/views/corkView.py index a407a9b..0912304 100644 --- a/src/ui/views/corkView.py +++ b/src/ui/views/corkView.py @@ -9,12 +9,14 @@ from enums import * from functions import * from ui.views.corkDelegate import * from ui.views.dndView import * +from ui.views.outlineBasics import * -class corkView(QListView, dndView): +class corkView(QListView, dndView, outlineBasics): def __init__(self, parent=None): QListView.__init__(self, parent) dndView.__init__(self, parent) + outlineBasics.__init__(self, parent) self.setResizeMode(QListView.Adjust) self.setWrapping(True) @@ -29,4 +31,8 @@ class corkView(QListView, dndView): def dragMoveEvent(self, event): dndView.dragMoveEvent(self, event) - QListView.dragMoveEvent(self, event) \ No newline at end of file + QListView.dragMoveEvent(self, event) + + def mouseReleaseEvent(self, event): + QListView.mouseReleaseEvent(self, event) + outlineBasics.mouseReleaseEvent(self, event) \ No newline at end of file diff --git a/src/ui/views/outlineBasics.py b/src/ui/views/outlineBasics.py new file mode 100644 index 0000000..6d3c6f0 --- /dev/null +++ b/src/ui/views/outlineBasics.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python +#--!-- coding: utf8 --!-- + + + + +from qt import * +from enums import * +from functions import * + +class outlineBasics(QAbstractItemView): + + def __init__(self, parent=None): + pass + + def getSelection(self): + sel = [] + for i in self.selectedIndexes(): + if i.column() != 0: continue + if not i in sel: sel.append(i) + return sel + + def mouseReleaseEvent(self, event): + + if event.button() == Qt.RightButton: + + index = self.currentIndex() + sel = self.getSelection() + clipboard = qApp.clipboard() + + # Copy, cut, paste + self.menu = QMenu() + self.actCopy = QAction(QIcon.fromTheme("edit-copy"), self.tr("Copy"), self.menu) + self.actCopy.triggered.connect(self.copy) + self.menu.addAction(self.actCopy) + + self.actCut = QAction(QIcon.fromTheme("edit-cut"), self.tr("Cut"), self.menu) + self.actCut.triggered.connect(self.cut) + self.menu.addAction(self.actCut) + + self.actPaste = QAction(QIcon.fromTheme("edit-paste"), self.tr("Paste"), self.menu) + self.actPaste.triggered.connect(self.paste) + self.menu.addAction(self.actPaste) + + self.actDelete = QAction(QIcon.fromTheme("edit-delete"), self.tr("Delete"), self.menu) + self.actDelete.triggered.connect(self.delete) + self.menu.addAction(self.actDelete) + + self.menu.addSeparator() + + if len(sel) > 0 and index.isValid() and not index.internalPointer().isFolder() \ + or not clipboard.mimeData().hasFormat("application/xml"): + self.actPaste.setEnabled(False) + + if len(sel) == 0: + self.actCopy.setEnabled(False) + self.actCut.setEnabled(False) + self.actDelete.setEnabled(False) + + + menuPOV = QMenu(self.tr("Set POV"), self.menu) + menuPOV.addAction("Not yet") + self.menu.addMenu(menuPOV) + + menuStatus = QMenu(self.tr("Set Status"), self.menu) + menuStatus.addAction("Not yet") + self.menu.addMenu(menuStatus) + + menuLabel = QMenu(self.tr("Set Label"), self.menu) + menuLabel.addAction("Not yet") + self.menu.addMenu(menuLabel) + + self.menu.popup(event.globalPos()) + + def copy(self): + mimeData = self.model().mimeData(self.selectionModel().selectedIndexes()) + qApp.clipboard().setMimeData(mimeData) + + def paste(self): + index = self.currentIndex() + if len(self.getSelection()) == 0: + index = QModelIndex() + data = qApp.clipboard().mimeData() + self.model().dropMimeData(data, Qt.CopyAction, -1, 0, index) + + def cut(self): + self.copy() + self.delete() + + def delete(self): + for i in self.getSelection(): + self.model().removeIndex(i) + \ No newline at end of file diff --git a/src/ui/views/outlineView.py b/src/ui/views/outlineView.py index 0fa4e7b..83b74e7 100644 --- a/src/ui/views/outlineView.py +++ b/src/ui/views/outlineView.py @@ -9,12 +9,15 @@ from enums import * from functions import * from ui.views.treeOutlineDelegates import * from ui.views.dndView import * +from ui.views.outlineBasics import * -class outlineView(QTreeView, dndView): +class outlineView(QTreeView, dndView, outlineBasics): def __init__(self, parent=None, modelPersos=None, modelLabels=None): QTreeView.__init__(self, parent) dndView.__init__(self) + outlineBasics.__init__(self, parent) + self.modelPersos = modelPersos self.modelLabels = modelLabels self.header().setStretchLastSection(False) @@ -66,4 +69,8 @@ class outlineView(QTreeView, dndView): def dragMoveEvent(self, event): dndView.dragMoveEvent(self, event) QTreeView.dragMoveEvent(self, event) + + def mouseReleaseEvent(self, event): + QTreeView.mouseReleaseEvent(self, event) + outlineBasics.mouseReleaseEvent(self, event) \ No newline at end of file diff --git a/src/ui/views/treeView.py b/src/ui/views/treeView.py index e9d34b7..db98bc9 100644 --- a/src/ui/views/treeView.py +++ b/src/ui/views/treeView.py @@ -8,13 +8,14 @@ from qt import * from enums import * from functions import * from ui.views.dndView import * +from ui.views.outlineBasics import * -class treeView(QTreeView, dndView): +class treeView(QTreeView, dndView, outlineBasics): def __init__(self, parent=None): QTreeView.__init__(self, parent) dndView.__init__(self, parent) - + outlineBasics.__init__(self, parent) def setModel(self, model): QTreeView.setModel(self, model) @@ -25,4 +26,8 @@ class treeView(QTreeView, dndView): def dragMoveEvent(self, event): dndView.dragMoveEvent(self, event) - QTreeView.dragMoveEvent(self, event) \ No newline at end of file + QTreeView.dragMoveEvent(self, event) + + def mouseReleaseEvent(self, event): + QTreeView.mouseReleaseEvent(self, event) + outlineBasics.mouseReleaseEvent(self, event) \ No newline at end of file diff --git a/test_project/outline.xml b/test_project/outline.xml index 23877b8..f286f0e 100644 --- a/test_project/outline.xml +++ b/test_project/outline.xml @@ -1,9 +1,9 @@ - - + + - + @@ -13,10 +13,10 @@ - + - + @@ -37,13 +37,10 @@ - + - - - @@ -55,6 +52,8 @@ - - + + + +