mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-06-13 16:34:34 +12:00
Merge branch 'feature/Exporters' into develop
This commit is contained in:
commit
a42c7a41ab
|
@ -2,13 +2,11 @@
|
||||||
# --!-- coding: utf8 --!--
|
# --!-- coding: utf8 --!--
|
||||||
|
|
||||||
from manuskript.exporter.manuskript import manuskriptExporter
|
from manuskript.exporter.manuskript import manuskriptExporter
|
||||||
from manuskript.exporter.mmd import mmdExporter
|
|
||||||
from manuskript.exporter.pandoc import pandocExporter
|
from manuskript.exporter.pandoc import pandocExporter
|
||||||
|
|
||||||
exporters = [
|
exporters = [
|
||||||
manuskriptExporter(),
|
manuskriptExporter(),
|
||||||
pandocExporter(),
|
pandocExporter()
|
||||||
mmdExporter()
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def getExporterByName(name):
|
def getExporterByName(name):
|
||||||
|
@ -16,4 +14,4 @@ def getExporterByName(name):
|
||||||
if e.name == name:
|
if e.name == name:
|
||||||
return e
|
return e
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -19,6 +19,8 @@ class basicExporter:
|
||||||
cmd = ""
|
cmd = ""
|
||||||
customPath = ""
|
customPath = ""
|
||||||
icon = ""
|
icon = ""
|
||||||
|
absentTip = "" # A tip displayed when exporter is absent.
|
||||||
|
absentURL = "" # URL to open if exporter is absent.
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
settings = QSettings()
|
settings = QSettings()
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# --!-- coding: utf8 --!--
|
|
||||||
from PyQt5.QtWidgets import qApp
|
|
||||||
|
|
||||||
from manuskript.exporter.basic import basicExporter, basicFormat
|
|
||||||
|
|
||||||
|
|
||||||
class mmdExporter(basicExporter):
|
|
||||||
|
|
||||||
name = "MultiMarkdown"
|
|
||||||
description = qApp.translate("Export", """<p>A superset of markdown.</p>
|
|
||||||
<p>Website: <a href="http://fletcherpenney.net/multimarkdown/">http://fletcherpenney.net/multimarkdown/</a></p>
|
|
||||||
""")
|
|
||||||
exportTo = [
|
|
||||||
basicFormat("HTML", "A little known format modestly used. You know, web sites for example.", "text-html"),
|
|
||||||
basicFormat("latex", "", "text-x-tex"),
|
|
||||||
basicFormat("Flat XML", "", "text-xml"),
|
|
||||||
basicFormat("ePub", "Books that don't kill trees.", icon="application-epub+zip"),
|
|
||||||
]
|
|
||||||
cmd = "multimarkdown"
|
|
||||||
|
|
||||||
def version(self):
|
|
||||||
if self.isValid():
|
|
||||||
r = self.run(["-v"])
|
|
||||||
return r.split("\n")[1]
|
|
||||||
else:
|
|
||||||
return ""
|
|
||||||
|
|
|
@ -22,6 +22,8 @@ class pandocExporter(basicExporter):
|
||||||
<p>Website: <a href="http://www.pandoc.org">http://pandoc.org/</a></p>
|
<p>Website: <a href="http://www.pandoc.org">http://pandoc.org/</a></p>
|
||||||
""")
|
""")
|
||||||
cmd = "pandoc"
|
cmd = "pandoc"
|
||||||
|
absentTip = "Install pandoc to benefit from a wide range of export formats (DocX, ePub, PDF, etc.)"
|
||||||
|
absentURL = "http://pandoc.org/installing.html"
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
basicExporter.__init__(self)
|
basicExporter.__init__(self)
|
||||||
|
@ -40,7 +42,7 @@ class pandocExporter(basicExporter):
|
||||||
|
|
||||||
def version(self):
|
def version(self):
|
||||||
if self.isValid():
|
if self.isValid():
|
||||||
r = self.run(["-v"])
|
r = self.run(["--version"])
|
||||||
return r.split("\n")[0]
|
return r.split("\n")[0]
|
||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
||||||
|
|
|
@ -6,7 +6,9 @@ import re
|
||||||
from random import *
|
from random import *
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt, QRect, QStandardPaths, QObject, QRegExp, QDir
|
from PyQt5.QtCore import Qt, QRect, QStandardPaths, QObject, QRegExp, QDir
|
||||||
|
from PyQt5.QtCore import QUrl
|
||||||
from PyQt5.QtGui import QBrush, QIcon, QPainter, QColor, QImage, QPixmap
|
from PyQt5.QtGui import QBrush, QIcon, QPainter, QColor, QImage, QPixmap
|
||||||
|
from PyQt5.QtGui import QDesktopServices
|
||||||
from PyQt5.QtWidgets import qApp, QTextEdit
|
from PyQt5.QtWidgets import qApp, QTextEdit
|
||||||
|
|
||||||
from manuskript.enums import Outline
|
from manuskript.enums import Outline
|
||||||
|
@ -351,5 +353,10 @@ def customIcons():
|
||||||
|
|
||||||
return sorted(r)
|
return sorted(r)
|
||||||
|
|
||||||
|
|
||||||
def statusMessage(message, duration=5000):
|
def statusMessage(message, duration=5000):
|
||||||
mainWindow().statusBar().showMessage(message, duration)
|
mainWindow().statusBar().showMessage(message, duration)
|
||||||
|
|
||||||
|
|
||||||
|
def openURL(url):
|
||||||
|
QDesktopServices.openUrl(QUrl(url))
|
||||||
|
|
|
@ -1234,8 +1234,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||||
w.setDict(settings.dict)
|
w.setDict(settings.dict)
|
||||||
|
|
||||||
def openPyEnchantWebPage(self):
|
def openPyEnchantWebPage(self):
|
||||||
from PyQt5.QtGui import QDesktopServices
|
F.openURL("http://pythonhosted.org/pyenchant/")
|
||||||
QDesktopServices.openUrl(QUrl("http://pythonhosted.org/pyenchant/"))
|
|
||||||
|
|
||||||
def toggleSpellcheck(self, val):
|
def toggleSpellcheck(self, val):
|
||||||
settings.spellcheck = val
|
settings.spellcheck = val
|
||||||
|
|
|
@ -5,10 +5,10 @@ import os
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
from PyQt5.QtGui import QBrush, QColor, QIcon
|
from PyQt5.QtGui import QBrush, QColor, QIcon
|
||||||
from PyQt5.QtWidgets import QWidget
|
from PyQt5.QtWidgets import QWidget, QStyle
|
||||||
|
|
||||||
from manuskript import exporter
|
from manuskript import exporter
|
||||||
from manuskript.functions import writablePath
|
from manuskript.functions import writablePath, openURL
|
||||||
from manuskript.ui.exporters.exporter_ui import Ui_exporter
|
from manuskript.ui.exporters.exporter_ui import Ui_exporter
|
||||||
from manuskript.ui.exporters.exportersManager import exportersManager
|
from manuskript.ui.exporters.exportersManager import exportersManager
|
||||||
from manuskript.ui import style as S
|
from manuskript.ui import style as S
|
||||||
|
@ -43,7 +43,7 @@ class exporterDialog(QWidget, Ui_exporter):
|
||||||
self.cmbExporters.clear()
|
self.cmbExporters.clear()
|
||||||
for E in exporter.exporters:
|
for E in exporter.exporters:
|
||||||
|
|
||||||
if not E.isValid():
|
if not E.isValid() and not E.absentTip:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
self.cmbExporters.addItem(QIcon(E.icon), E.name)
|
self.cmbExporters.addItem(QIcon(E.icon), E.name)
|
||||||
|
@ -52,6 +52,10 @@ class exporterDialog(QWidget, Ui_exporter):
|
||||||
item = self.cmbExporters.model().item(self.cmbExporters.count() - 1)
|
item = self.cmbExporters.model().item(self.cmbExporters.count() - 1)
|
||||||
item.setFlags(Qt.ItemIsEnabled)
|
item.setFlags(Qt.ItemIsEnabled)
|
||||||
|
|
||||||
|
if not E.isValid() and E.absentTip:
|
||||||
|
self.cmbExporters.addItem(self.style().standardIcon(QStyle.SP_MessageBoxWarning), E.absentTip, "::URL::" + E.absentURL)
|
||||||
|
continue
|
||||||
|
|
||||||
for f in E.exportTo:
|
for f in E.exportTo:
|
||||||
|
|
||||||
if not f.isValid():
|
if not f.isValid():
|
||||||
|
@ -61,6 +65,12 @@ class exporterDialog(QWidget, Ui_exporter):
|
||||||
self.cmbExporters.addItem(QIcon.fromTheme(f.icon), name, E.name)
|
self.cmbExporters.addItem(QIcon.fromTheme(f.icon), name, E.name)
|
||||||
|
|
||||||
def updateUi(self, index):
|
def updateUi(self, index):
|
||||||
|
|
||||||
|
# We check if we have an URL to open
|
||||||
|
data = self.cmbExporters.currentData()
|
||||||
|
if data and data[:7] == "::URL::" and data[7:]:
|
||||||
|
openURL(data[7:])
|
||||||
|
|
||||||
E, F = self.getSelectedExporter()
|
E, F = self.getSelectedExporter()
|
||||||
|
|
||||||
if not E or not F or not F.implemented:
|
if not E or not F or not F.implemented:
|
||||||
|
@ -143,4 +153,4 @@ class exporterDialog(QWidget, Ui_exporter):
|
||||||
item.widget().deleteLater()
|
item.widget().deleteLater()
|
||||||
|
|
||||||
l.addWidget(widget)
|
l.addWidget(widget)
|
||||||
widget.setParent(group)
|
widget.setParent(group)
|
|
@ -3,11 +3,11 @@
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt, QTimer, QUrl
|
from PyQt5.QtCore import Qt, QTimer
|
||||||
from PyQt5.QtGui import QBrush, QColor, QIcon, QDesktopServices
|
from PyQt5.QtGui import QBrush, QColor, QIcon
|
||||||
from PyQt5.QtWidgets import QWidget, QFileDialog, QMessageBox, QStyle
|
from PyQt5.QtWidgets import QWidget, QFileDialog, QMessageBox, QStyle
|
||||||
|
|
||||||
from manuskript.functions import writablePath, appPath
|
from manuskript.functions import writablePath, appPath, openURL
|
||||||
from manuskript.ui.importers.importer_ui import Ui_importer
|
from manuskript.ui.importers.importer_ui import Ui_importer
|
||||||
from manuskript.ui.importers.generalSettings import generalSettings
|
from manuskript.ui.importers.generalSettings import generalSettings
|
||||||
from manuskript.ui import style
|
from manuskript.ui import style
|
||||||
|
@ -180,7 +180,7 @@ class importerDialog(QWidget, Ui_importer):
|
||||||
data = self.cmbImporters.currentData()
|
data = self.cmbImporters.currentData()
|
||||||
if data and data[:7] == "::URL::" and data[7:]:
|
if data and data[:7] == "::URL::" and data[7:]:
|
||||||
# FIXME: use functions.openURL after merge with feature/Exporters
|
# FIXME: use functions.openURL after merge with feature/Exporters
|
||||||
QDesktopServices.openUrl(QUrl(data[7:]))
|
openURL(data[7:])
|
||||||
return
|
return
|
||||||
|
|
||||||
F = self.currentFormat()
|
F = self.currentFormat()
|
||||||
|
|
Loading…
Reference in a new issue