mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-17 11:22:28 +12:00
Merge branch 'feature/Exporters' into develop
This commit is contained in:
commit
a42c7a41ab
|
@ -2,13 +2,11 @@
|
|||
# --!-- coding: utf8 --!--
|
||||
|
||||
from manuskript.exporter.manuskript import manuskriptExporter
|
||||
from manuskript.exporter.mmd import mmdExporter
|
||||
from manuskript.exporter.pandoc import pandocExporter
|
||||
|
||||
exporters = [
|
||||
manuskriptExporter(),
|
||||
pandocExporter(),
|
||||
mmdExporter()
|
||||
pandocExporter()
|
||||
]
|
||||
|
||||
def getExporterByName(name):
|
||||
|
@ -16,4 +14,4 @@ def getExporterByName(name):
|
|||
if e.name == name:
|
||||
return e
|
||||
|
||||
return None
|
||||
return None
|
||||
|
|
|
@ -19,6 +19,8 @@ class basicExporter:
|
|||
cmd = ""
|
||||
customPath = ""
|
||||
icon = ""
|
||||
absentTip = "" # A tip displayed when exporter is absent.
|
||||
absentURL = "" # URL to open if exporter is absent.
|
||||
|
||||
def __init__(self):
|
||||
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>
|
||||
""")
|
||||
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):
|
||||
basicExporter.__init__(self)
|
||||
|
@ -40,7 +42,7 @@ class pandocExporter(basicExporter):
|
|||
|
||||
def version(self):
|
||||
if self.isValid():
|
||||
r = self.run(["-v"])
|
||||
r = self.run(["--version"])
|
||||
return r.split("\n")[0]
|
||||
else:
|
||||
return ""
|
||||
|
|
|
@ -6,7 +6,9 @@ import re
|
|||
from random import *
|
||||
|
||||
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 QDesktopServices
|
||||
from PyQt5.QtWidgets import qApp, QTextEdit
|
||||
|
||||
from manuskript.enums import Outline
|
||||
|
@ -351,5 +353,10 @@ def customIcons():
|
|||
|
||||
return sorted(r)
|
||||
|
||||
|
||||
def statusMessage(message, duration=5000):
|
||||
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)
|
||||
|
||||
def openPyEnchantWebPage(self):
|
||||
from PyQt5.QtGui import QDesktopServices
|
||||
QDesktopServices.openUrl(QUrl("http://pythonhosted.org/pyenchant/"))
|
||||
F.openURL("http://pythonhosted.org/pyenchant/")
|
||||
|
||||
def toggleSpellcheck(self, val):
|
||||
settings.spellcheck = val
|
||||
|
|
|
@ -5,10 +5,10 @@ import os
|
|||
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtGui import QBrush, QColor, QIcon
|
||||
from PyQt5.QtWidgets import QWidget
|
||||
from PyQt5.QtWidgets import QWidget, QStyle
|
||||
|
||||
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.exportersManager import exportersManager
|
||||
from manuskript.ui import style as S
|
||||
|
@ -43,7 +43,7 @@ class exporterDialog(QWidget, Ui_exporter):
|
|||
self.cmbExporters.clear()
|
||||
for E in exporter.exporters:
|
||||
|
||||
if not E.isValid():
|
||||
if not E.isValid() and not E.absentTip:
|
||||
continue
|
||||
|
||||
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.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:
|
||||
|
||||
if not f.isValid():
|
||||
|
@ -61,6 +65,12 @@ class exporterDialog(QWidget, Ui_exporter):
|
|||
self.cmbExporters.addItem(QIcon.fromTheme(f.icon), name, E.name)
|
||||
|
||||
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()
|
||||
|
||||
if not E or not F or not F.implemented:
|
||||
|
@ -143,4 +153,4 @@ class exporterDialog(QWidget, Ui_exporter):
|
|||
item.widget().deleteLater()
|
||||
|
||||
l.addWidget(widget)
|
||||
widget.setParent(group)
|
||||
widget.setParent(group)
|
|
@ -3,11 +3,11 @@
|
|||
import json
|
||||
import os
|
||||
|
||||
from PyQt5.QtCore import Qt, QTimer, QUrl
|
||||
from PyQt5.QtGui import QBrush, QColor, QIcon, QDesktopServices
|
||||
from PyQt5.QtCore import Qt, QTimer
|
||||
from PyQt5.QtGui import QBrush, QColor, QIcon
|
||||
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.generalSettings import generalSettings
|
||||
from manuskript.ui import style
|
||||
|
@ -180,7 +180,7 @@ class importerDialog(QWidget, Ui_importer):
|
|||
data = self.cmbImporters.currentData()
|
||||
if data and data[:7] == "::URL::" and data[7:]:
|
||||
# FIXME: use functions.openURL after merge with feature/Exporters
|
||||
QDesktopServices.openUrl(QUrl(data[7:]))
|
||||
openURL(data[7:])
|
||||
return
|
||||
|
||||
F = self.currentFormat()
|
||||
|
|
Loading…
Reference in a new issue