Needs to do the Markdown syntax highlighter now...

This commit is contained in:
Olivier Keshavjee 2016-03-11 15:45:51 +01:00
parent 6e43756669
commit a27e5db6f5
11 changed files with 63 additions and 29 deletions

View file

@ -23,6 +23,10 @@ def saveProject(version=None):
# FIXME: add settings to chose between saving as zip or not.
def clearSaveCache():
v1.cache = {}
def loadProject(project):
# Detect version

View file

@ -530,7 +530,7 @@ def exportOutlineItem(root):
content = outlineToMMD(child)
files.append((fpath, content))
elif child.type() in ["txt", "t2t"]:
elif child.type() in ["txt", "t2t", "md"]:
content = outlineToMMD(child)
files.append((spath, content))

View file

@ -11,7 +11,7 @@ from PyQt5.QtWidgets import QMainWindow, QHeaderView, qApp, QMenu, QActionGroup,
from manuskript import settings
from manuskript.enums import Character, PlotStep, Plot, World
from manuskript.functions import AUC, wordCount, appPath
from manuskript.loadSave import saveProject, loadProject
from manuskript import loadSave
from manuskript.models.characterModel import characterModel
from manuskript.models.outlineModel import outlineModel
from manuskript.models.plotModel import plotModel
@ -375,8 +375,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Clear datas
self.loadEmptyDatas()
self.saveTimer.stop()
loadSave.clearSaveCache()
# UI
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
@ -460,7 +460,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.currentProject = projectName
QSettings().setValue("lastProject", projectName)
saveProject() # version=0
loadSave.saveProject() # version=0
self.saveTimerNoChanges.stop()
# Giving some feedback
@ -481,7 +481,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def loadDatas(self, project):
errors = loadProject(project)
errors = loadSave.loadProject(project)
# Giving some feedback
if not errors:

View file

@ -481,9 +481,9 @@ class outlineItem():
elif role == Qt.DecorationRole and column == Outline.title.value:
if self.isFolder():
return QIcon.fromTheme("folder")
elif self.isText():
elif self.isText:
return QIcon.fromTheme("text-x-generic")
elif self.isT2T():
elif self.isT2T() or self.isMD():
return QIcon.fromTheme("text-x-script")
elif self.isHTML():
return QIcon.fromTheme("text-html")
@ -529,12 +529,12 @@ class outlineItem():
# Stuff to do before
if column == Outline.type.value:
oldType = self._data[Outline.type]
if oldType == "html" and data in ["txt", "t2t"]:
if oldType == "html" and data in ["txt", "t2t", "md"]:
# Resource inneficient way to convert HTML to plain text
e = QTextEdit()
e.setHtml(self._data[Outline.text])
self._data[Outline.text] = e.toPlainText()
elif oldType in ["txt", "t2t"] and data == "html" and Outline.text in self._data:
elif oldType in ["txt", "t2t", "md"] and data == "html" and Outline.text in self._data:
self._data[Outline.text] = self._data[Outline.text].replace("\n", "<br>")
elif column == Outline.text.value:
@ -663,6 +663,12 @@ class outlineItem():
def isT2T(self):
return self._data[Outline.type] == "t2t"
def isMD(self):
return self._data[Outline.type] == "md"
def isMMD(self):
return self._data[Outline.type] == "md"
def isHTML(self):
return self._data[Outline.type] == "html"

View file

@ -52,7 +52,7 @@ corkBackground = {
"color": "#926239",
"image": ""
}
defaultTextType = "t2t"
defaultTextType = "md"
fullScreenTheme = "spacedreams"
textEditor = {

View file

@ -18,6 +18,7 @@ from manuskript.ui.editors.themes import getThemeName
from manuskript.ui.editors.themes import loadThemeDatas
from manuskript.ui.settings_ui import Ui_Settings
from manuskript.ui.views.textEditView import textEditView
from manuskript.ui.welcome import welcome
try:
import enchant
@ -59,11 +60,7 @@ class settingsWindow(QWidget, Ui_Settings):
self.chkAutoLoad.setChecked(autoLoad)
self.chkAutoLoad.stateChanged.connect(self.saveSettingsChanged)
dtt = [
("t2t", self.tr("Txt2Tags"), "text-x-script"),
("html", self.tr("Rich Text (html)"), "text-html"),
("txt", self.tr("Plain Text"), "text-x-generic"),
]
dtt = welcome.defaultTextType()
self.cmbDefaultTextType.clear()
for t in dtt:
self.cmbDefaultTextType.addItem(QIcon.fromTheme(t[2]), t[1], t[0])

View file

@ -0,0 +1,16 @@
#!/usr/bin/python
# -*- coding: utf8 -*-
from manuskript.ui.editors.basicHighlighter import basicHighlighter
class MMDHighlighter(basicHighlighter):
def __init__(self, editor, style="Default"):
basicHighlighter.__init__(self, editor)
def highlightBlock(self, text):
basicHighlighter.highlightBlockBefore(self, text)
# FIXME
basicHighlighter.highlightBlockAfter(self, text)

View file

@ -62,7 +62,8 @@ class textFormat(QWidget, Ui_textFormat):
elif item.isText():
self.align.setVisible(False)
self.format.setVisible(False)
elif item.isT2T():
elif item.isT2T() or item.isMD():
self.align.setVisible(False)
def setFormat(self):

View file

@ -5,6 +5,7 @@ from PyQt5.QtGui import QIcon, QBrush
from PyQt5.QtWidgets import QComboBox
from manuskript.enums import Outline
from manuskript.ui.welcome import welcome
class cmbOutlineTypeChoser(QComboBox):
@ -24,11 +25,8 @@ class cmbOutlineTypeChoser(QComboBox):
def updateItems(self):
self.clear()
types = [
("t2t", self.tr("Txt2Tags"), "text-x-generic"),
("html", self.tr("Rich Text (html)"), "text-html"),
("txt", self.tr("Plain Text"), "text-x-generic"),
]
types = welcome.defaultTextType()
for t in types:
self.addItem(QIcon.fromTheme(t[2]), t[1], t[0])
@ -43,7 +41,7 @@ class cmbOutlineTypeChoser(QComboBox):
index = index.sibling(index.row(), self._column)
self._index = index
# Disabled if item type is not text
self.setEnabled(index.internalPointer().type() in ["t2t", "html", "txt"])
self.setEnabled(index.internalPointer().type() in ["t2t", "html", "txt", "md"])
self.updateItems()
self.updateSelectedItem()
@ -57,7 +55,7 @@ class cmbOutlineTypeChoser(QComboBox):
if i.column() != self._column:
i = i.sibling(i.row(), self._column)
self._indexes.append(i)
if i.internalPointer().type() in ["t2t", "html", "txt"]:
if i.internalPointer().type() in ["t2t", "html", "txt", "md"]:
hasText = True
self.setEnabled(hasText)

View file

@ -11,6 +11,7 @@ from manuskript.enums import Outline
from manuskript.functions import AUC
from manuskript.functions import toString
from manuskript.models.outlineModel import outlineModel
from manuskript.ui.editors.MMDHighlighter import MMDHighlighter
from manuskript.ui.editors.basicHighlighter import basicHighlighter
from manuskript.ui.editors.t2tFunctions import t2tClearFormat
from manuskript.ui.editors.t2tFunctions import t2tFormatSelection
@ -160,6 +161,8 @@ class textEditView(QTextEdit):
self._textFormat = "html"
elif item.isT2T():
self._textFormat = "t2t"
elif item.isMD():
self._textFormat = "md"
else:
self._textFormat = "text"
@ -174,8 +177,10 @@ class textEditView(QTextEdit):
item = index.internalPointer()
if self._column == Outline.text.value and not item.isT2T():
self.highlighter = basicHighlighter(self)
else:
elif item.isT2T():
self.highlighter = t2tHighlighter(self)
elif item.isMD():
self.highlighter = MMDHighlighter(self)
self.highlighter.setDefaultBlockFormat(self._defaultBlockFormat)
@ -551,3 +556,7 @@ class textEditView(QTextEdit):
t2tFormatSelection(self, 2)
elif _format == "Clear":
t2tClearFormat(self)
elif self._textFormat == "md":
# FIXME
print("Not implemented yet.")

View file

@ -7,7 +7,8 @@ import os
from PyQt5.QtCore import QSettings, QRegExp, Qt, QDir
from PyQt5.QtGui import QIcon, QBrush, QColor, QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QWidget, QAction, QFileDialog, QSpinBox, QLineEdit, QLabel, QPushButton, QTreeWidgetItem
from PyQt5.QtWidgets import QWidget, QAction, QFileDialog, QSpinBox, QLineEdit, QLabel, QPushButton, QTreeWidgetItem, \
qApp
from manuskript import settings
from manuskript.enums import Outline
@ -191,11 +192,13 @@ class welcome(QWidget, Ui_welcome):
])
]
def defaultTextType(self):
@classmethod
def defaultTextType(cls):
return [
("t2t", self.tr("Txt2Tags"), "text-x-generic"),
("html", self.tr("Rich Text (html)"), "text-html"),
("txt", self.tr("Plain Text"), "text-x-generic"),
("t2t", qApp.translate("Welcome", "Txt2Tags"), "text-x-generic"),
("html", qApp.translate("Welcome", "Rich Text (html)"), "text-html"),
("txt", qApp.translate("Welcome", "Plain Text"), "text-x-generic"),
("md", qApp.translate("Welcome", "Multi-Markdown"), "text-x-generic"),
]
def changeTemplate(self, item, column):