mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-06-07 21:44:33 +12:00
New exporter: initial commit
This commit is contained in:
parent
74e9ad3906
commit
a53937833d
|
@ -1,32 +1,19 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# --!-- coding: utf8 --!--
|
# --!-- coding: utf8 --!--
|
||||||
import collections
|
|
||||||
|
|
||||||
from PyQt5.QtWidgets import qApp
|
from manuskript.exporter.manuskript import manuskriptExporter
|
||||||
|
from manuskript.exporter.mmd import mmdExporter
|
||||||
|
from manuskript.exporter.pandoc import pandocExporter
|
||||||
|
|
||||||
from manuskript.exporter.arbo import arboExporter
|
exporters = [
|
||||||
from manuskript.exporter.html import htmlExporter
|
manuskriptExporter,
|
||||||
from manuskript.exporter.odt import odtExporter
|
pandocExporter,
|
||||||
|
mmdExporter
|
||||||
|
]
|
||||||
|
|
||||||
formats = collections.OrderedDict([
|
def getExporterByName(name):
|
||||||
# Format
|
for e in exporters:
|
||||||
# Readable name
|
if e.name == name:
|
||||||
# Class
|
return e
|
||||||
# QFileDialog filter
|
|
||||||
('html', (
|
return None
|
||||||
qApp.translate("exporter", "HTML"),
|
|
||||||
htmlExporter,
|
|
||||||
qApp.translate("exporter", "HTML Document (*.html)"))),
|
|
||||||
('arbo', (
|
|
||||||
qApp.translate("exporter", "Arborescence"),
|
|
||||||
arboExporter,
|
|
||||||
None)),
|
|
||||||
('odt', (
|
|
||||||
qApp.translate("exporter", "OpenDocument (LibreOffice)"),
|
|
||||||
odtExporter,
|
|
||||||
qApp.translate("exporter", "OpenDocument (*.odt)"))),
|
|
||||||
('epub', (
|
|
||||||
"ePub (not yet)",
|
|
||||||
None,
|
|
||||||
None)),
|
|
||||||
])
|
|
|
@ -1,46 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# --!-- coding: utf8 --!--
|
|
||||||
import os
|
|
||||||
|
|
||||||
from manuskript.functions import mainWindow
|
|
||||||
|
|
||||||
|
|
||||||
class arboExporter():
|
|
||||||
requires = ["path"]
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def doCompile(self, path):
|
|
||||||
# FIXME: overwrites when items have identical names
|
|
||||||
mw = mainWindow()
|
|
||||||
root = mw.mdlOutline.rootItem
|
|
||||||
|
|
||||||
def writeItem(item, path):
|
|
||||||
if item.isFolder():
|
|
||||||
path2 = os.path.join(path, item.title())
|
|
||||||
|
|
||||||
try:
|
|
||||||
os.mkdir(path2)
|
|
||||||
except FileExistsError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
for c in item.children():
|
|
||||||
writeItem(c, path2)
|
|
||||||
|
|
||||||
else:
|
|
||||||
ext = ".md"
|
|
||||||
path2 = os.path.join(path, item.title() + ext)
|
|
||||||
f = open(path2, "w")
|
|
||||||
text = self.formatText(item.text(), item.type())
|
|
||||||
f.write(text)
|
|
||||||
|
|
||||||
for c in root.children():
|
|
||||||
writeItem(c, path)
|
|
||||||
|
|
||||||
def formatText(self, text, _type):
|
|
||||||
if _type == "t2t":
|
|
||||||
# Empty lines for headers
|
|
||||||
text = "\n\n\n" + text
|
|
||||||
|
|
||||||
return text
|
|
|
@ -1,29 +1,83 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# --!-- coding: utf8 --!--
|
# --!-- coding: utf8 --!--
|
||||||
|
|
||||||
import re
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
from PyQt5.QtWidgets import QWidget
|
||||||
|
|
||||||
|
|
||||||
|
class basicExporter:
|
||||||
|
|
||||||
|
name = ""
|
||||||
|
description = ""
|
||||||
|
exportTo = []
|
||||||
|
cmd = ""
|
||||||
|
|
||||||
class basicExporter():
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def runT2T(self, text, target="html"):
|
@classmethod
|
||||||
|
def getFormatByName(cls, name):
|
||||||
|
for f in cls.exportTo:
|
||||||
|
if f.name == name:
|
||||||
|
return f
|
||||||
|
|
||||||
cmdl = ['txt2tags', '-t', target, '--enc=utf-8', '--no-headers', '-o', '-', '-']
|
return None
|
||||||
|
|
||||||
cmd = subprocess.Popen(('echo', text), stdout=subprocess.PIPE)
|
@classmethod
|
||||||
try:
|
def isValid(cls):
|
||||||
output = subprocess.check_output(cmdl, stdin=cmd.stdout, stderr=subprocess.STDOUT) # , cwd="/tmp"
|
return cls.path() != None
|
||||||
except subprocess.CalledProcessError as e:
|
|
||||||
print("Error!")
|
|
||||||
return text
|
|
||||||
cmd.wait()
|
|
||||||
|
|
||||||
return output.decode("utf-8")
|
@classmethod
|
||||||
|
def version(cls):
|
||||||
|
return ""
|
||||||
|
|
||||||
def htmlBody(self, text):
|
@classmethod
|
||||||
text = text.replace("\n", "")
|
def path(cls):
|
||||||
text = re.sub(r".*<body[^>]*?>(.*)</body>.*", "\\1", text)
|
return shutil.which(cls.cmd)
|
||||||
return text
|
|
||||||
|
@classmethod
|
||||||
|
def run(cls, args):
|
||||||
|
r = subprocess.check_output([cls.cmd] + args) # timeout=.2
|
||||||
|
return r.decode("utf-8")
|
||||||
|
|
||||||
|
# Example of how to run a command
|
||||||
|
#
|
||||||
|
# cmdl = ['txt2tags', '-t', target, '--enc=utf-8', '--no-headers', '-o', '-', '-']
|
||||||
|
#
|
||||||
|
# cmd = subprocess.Popen(('echo', text), stdout=subprocess.PIPE)
|
||||||
|
# try:
|
||||||
|
# output = subprocess.check_output(cmdl, stdin=cmd.stdout, stderr=subprocess.STDOUT) # , cwd="/tmp"
|
||||||
|
# except subprocess.CalledProcessError as e:
|
||||||
|
# print("Error!")
|
||||||
|
# return text
|
||||||
|
# cmd.wait()
|
||||||
|
#
|
||||||
|
# return output.decode("utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
class basicFormat:
|
||||||
|
|
||||||
|
implemented = False
|
||||||
|
requires = {
|
||||||
|
"Settings": False,
|
||||||
|
"PreviewBefore": False,
|
||||||
|
"PreviewAfter": False,
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__(self, name, description=""):
|
||||||
|
self.name = name
|
||||||
|
self.description = description
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def settingsWidget(self):
|
||||||
|
return QWidget()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def previewWidgetBefore(self):
|
||||||
|
return QWidget()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def previewWidgetAfter(self):
|
||||||
|
return QWidget()
|
|
@ -1,71 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# --!-- coding: utf8 --!--
|
|
||||||
from manuskript.exporter.basic import basicExporter
|
|
||||||
from manuskript.functions import mainWindow
|
|
||||||
|
|
||||||
|
|
||||||
class htmlExporter(basicExporter):
|
|
||||||
requires = ["filename"]
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def doCompile(self, filename):
|
|
||||||
mw = mainWindow()
|
|
||||||
root = mw.mdlOutline.rootItem
|
|
||||||
|
|
||||||
html = ""
|
|
||||||
|
|
||||||
def appendItem(item):
|
|
||||||
if item.isFolder():
|
|
||||||
html = ""
|
|
||||||
title = "<h{l}>{t}</h{l}>\n".format(
|
|
||||||
l=str(item.level() + 1),
|
|
||||||
t=item.title())
|
|
||||||
html += title
|
|
||||||
|
|
||||||
for c in item.children():
|
|
||||||
html += appendItem(c)
|
|
||||||
|
|
||||||
return html
|
|
||||||
|
|
||||||
else:
|
|
||||||
text = self.formatText(item.text(), item.type())
|
|
||||||
return text
|
|
||||||
|
|
||||||
for c in root.children():
|
|
||||||
html += appendItem(c)
|
|
||||||
|
|
||||||
template = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/html4/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
||||||
<title>{TITLE}</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{BODY}
|
|
||||||
</body>
|
|
||||||
</html>"""
|
|
||||||
|
|
||||||
f = open(filename, "w")
|
|
||||||
f.write(template.format(
|
|
||||||
TITLE="FIXME",
|
|
||||||
BODY=html))
|
|
||||||
|
|
||||||
def formatText(self, text, _type):
|
|
||||||
|
|
||||||
if not text:
|
|
||||||
return text
|
|
||||||
|
|
||||||
if _type == "t2t":
|
|
||||||
text = self.runT2T(text)
|
|
||||||
|
|
||||||
elif _type == "txt":
|
|
||||||
text = text.replace("\n", "<br>")
|
|
||||||
|
|
||||||
elif _type == "html":
|
|
||||||
# keep only body
|
|
||||||
text = self.htmlBody(text)
|
|
||||||
|
|
||||||
return text + "<br>"
|
|
32
manuskript/exporter/manuskript.py
Normal file
32
manuskript/exporter/manuskript.py
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# --!-- coding: utf8 --!--
|
||||||
|
from PyQt5.QtWidgets import QTextEdit
|
||||||
|
|
||||||
|
from manuskript.exporter.basic import basicExporter, basicFormat
|
||||||
|
|
||||||
|
class markdownFormat(basicFormat):
|
||||||
|
name = "Markdown"
|
||||||
|
description = "A lightweigh markup language used by many tools."
|
||||||
|
implemented = False
|
||||||
|
requires = {
|
||||||
|
"Settings": True,
|
||||||
|
"PreviewBefore": True,
|
||||||
|
"PreviewAfter": False,
|
||||||
|
}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def settingsWidget(cls):
|
||||||
|
sW = QTextEdit()
|
||||||
|
return sW
|
||||||
|
|
||||||
|
class manuskriptExporter(basicExporter):
|
||||||
|
|
||||||
|
name = "Manuskript"
|
||||||
|
description = "Default exporter, provides basic formats used by other exporters."
|
||||||
|
exportTo = [
|
||||||
|
markdownFormat
|
||||||
|
]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def isValid(cls):
|
||||||
|
return True
|
28
manuskript/exporter/mmd.py
Normal file
28
manuskript/exporter/mmd.py
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# --!-- coding: utf8 --!--
|
||||||
|
|
||||||
|
from manuskript.exporter.basic import basicExporter, basicFormat
|
||||||
|
|
||||||
|
|
||||||
|
class mmdExporter(basicExporter):
|
||||||
|
|
||||||
|
name = "MultiMarkdown"
|
||||||
|
description = """<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."),
|
||||||
|
basicFormat("latex", ""),
|
||||||
|
basicFormat("OpenDocument", "OpenDocument format. Used by LibreOffice for example."),
|
||||||
|
basicFormat("ePub", "Books that don't kill trees."),
|
||||||
|
]
|
||||||
|
cmd = "mmd"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def version(cls):
|
||||||
|
if cls.isValid():
|
||||||
|
r = cls.run(["-v"])
|
||||||
|
return r.split("\n")[1]
|
||||||
|
else:
|
||||||
|
return ""
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# --!-- coding: utf8 --!--
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from PyQt5.QtGui import QTextDocument
|
|
||||||
|
|
||||||
from libs.odf.opendocument import OpenDocumentText
|
|
||||||
from libs.odf.text import H, P
|
|
||||||
from manuskript.exporter.basic import basicExporter
|
|
||||||
from manuskript.functions import appPath
|
|
||||||
from manuskript.functions import mainWindow
|
|
||||||
|
|
||||||
sys.path.append(os.path.join(appPath(), "libs"))
|
|
||||||
|
|
||||||
|
|
||||||
class odtExporter(basicExporter):
|
|
||||||
requires = ["filename"]
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def doCompile(self, filename):
|
|
||||||
mw = mainWindow()
|
|
||||||
root = mw.mdlOutline.rootItem
|
|
||||||
|
|
||||||
doc = OpenDocumentText()
|
|
||||||
|
|
||||||
def appendItem(item):
|
|
||||||
if item.isFolder():
|
|
||||||
|
|
||||||
self.addHeading(item.title(), item.level() + 1, doc)
|
|
||||||
|
|
||||||
for c in item.children():
|
|
||||||
appendItem(c)
|
|
||||||
|
|
||||||
else:
|
|
||||||
text = self.formatText(item.text(), item.type())
|
|
||||||
if text:
|
|
||||||
for l in text.split("\n"):
|
|
||||||
self.addParagraph(l, doc)
|
|
||||||
|
|
||||||
for c in root.children():
|
|
||||||
appendItem(c)
|
|
||||||
|
|
||||||
doc.save(filename)
|
|
||||||
|
|
||||||
def formatText(self, text, _type):
|
|
||||||
|
|
||||||
if not text:
|
|
||||||
return text
|
|
||||||
|
|
||||||
# if _type == "t2t":
|
|
||||||
# text = self.runT2T(text)
|
|
||||||
|
|
||||||
# elif _type == "txt":
|
|
||||||
# text = text.replace("\n", "<br>")
|
|
||||||
|
|
||||||
elif _type == "html":
|
|
||||||
doc = QTextDocument()
|
|
||||||
doc.setHtml(text)
|
|
||||||
text = doc.toPlainText()
|
|
||||||
# text = self.htmlBody(text)
|
|
||||||
|
|
||||||
return text
|
|
||||||
|
|
||||||
def addHeading(self, text, level, doc):
|
|
||||||
doc.text.addElement(H(outlinelevel=int(level), text=text))
|
|
||||||
return doc
|
|
||||||
|
|
||||||
def addParagraph(self, text, doc):
|
|
||||||
p = P(stylename="Text Body", text=text)
|
|
||||||
doc.text.addElement(p)
|
|
||||||
return doc
|
|
|
@ -1,59 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# --!-- coding: utf8 --!--
|
|
||||||
from PyQt5.QtGui import QTextDocument, QTextCursor, QTextDocumentWriter
|
|
||||||
|
|
||||||
from manuskript.exporter.basic import basicExporter
|
|
||||||
from manuskript.functions import mainWindow
|
|
||||||
|
|
||||||
|
|
||||||
class odtExporter(basicExporter):
|
|
||||||
requires = ["filename"]
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def doCompile(self, filename):
|
|
||||||
mw = mainWindow()
|
|
||||||
root = mw.mdlOutline.rootItem
|
|
||||||
|
|
||||||
doc = QTextDocument()
|
|
||||||
cursor = QTextCursor(doc)
|
|
||||||
|
|
||||||
def appendItem(item):
|
|
||||||
if item.isFolder():
|
|
||||||
|
|
||||||
cursor.setPosition(doc.characterCount() - 1)
|
|
||||||
title = "<h{l}>{t}</h{l}><br>\n".format(
|
|
||||||
l=str(item.level() + 1),
|
|
||||||
t=item.title())
|
|
||||||
cursor.insertHtml(title)
|
|
||||||
|
|
||||||
for c in item.children():
|
|
||||||
appendItem(c)
|
|
||||||
|
|
||||||
else:
|
|
||||||
text = self.formatText(item.text(), item.type())
|
|
||||||
cursor.setPosition(doc.characterCount() - 1)
|
|
||||||
cursor.insertHtml(text)
|
|
||||||
|
|
||||||
for c in root.children():
|
|
||||||
appendItem(c)
|
|
||||||
|
|
||||||
dw = QTextDocumentWriter(filename, "odt")
|
|
||||||
dw.write(doc)
|
|
||||||
|
|
||||||
def formatText(self, text, _type):
|
|
||||||
|
|
||||||
if not text:
|
|
||||||
return text
|
|
||||||
|
|
||||||
if _type == "t2t":
|
|
||||||
text = self.runT2T(text)
|
|
||||||
|
|
||||||
elif _type == "txt":
|
|
||||||
text = text.replace("\n", "<br>")
|
|
||||||
|
|
||||||
elif _type == "html":
|
|
||||||
text = self.htmlBody(text)
|
|
||||||
|
|
||||||
return text + "<br>"
|
|
42
manuskript/exporter/pandoc.py
Normal file
42
manuskript/exporter/pandoc.py
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# --!-- coding: utf8 --!--
|
||||||
|
|
||||||
|
from manuskript.exporter.basic import basicExporter, basicFormat
|
||||||
|
|
||||||
|
class HTMLFormat(basicFormat):
|
||||||
|
name = "HTML"
|
||||||
|
description = "A little known format modestly used. You know, web sites for example."
|
||||||
|
implemented = False
|
||||||
|
requires = {
|
||||||
|
"Settings": True,
|
||||||
|
"PreviewBefore": True,
|
||||||
|
"PreviewAfter": True,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class pandocExporter(basicExporter):
|
||||||
|
|
||||||
|
name = "Pandoc"
|
||||||
|
description = """<p>A universal document convertor. Can be used to convert markdown to a wide range of other
|
||||||
|
formats.</p>
|
||||||
|
<p>Website: <a href="http://www.pandoc.org">http://pandoc.org/</a></p>
|
||||||
|
"""
|
||||||
|
exportTo = [
|
||||||
|
HTMLFormat,
|
||||||
|
basicFormat("ePub", "Books that don't kill trees."),
|
||||||
|
basicFormat("OpenDocument", ""),
|
||||||
|
basicFormat("PDF", "Needs latex to be installed."),
|
||||||
|
basicFormat("DocX", "Microsoft Office (.docx) document."),
|
||||||
|
]
|
||||||
|
cmd = "pandoc"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def version(cls):
|
||||||
|
if cls.isValid():
|
||||||
|
r = cls.run(["-v"])
|
||||||
|
return r.split("\n")[0]
|
||||||
|
else:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ from manuskript.models.plotModel import plotModel
|
||||||
from manuskript.models.worldModel import worldModel
|
from manuskript.models.worldModel import worldModel
|
||||||
from manuskript.settingsWindow import settingsWindow
|
from manuskript.settingsWindow import settingsWindow
|
||||||
from manuskript.ui.collapsibleDockWidgets import collapsibleDockWidgets
|
from manuskript.ui.collapsibleDockWidgets import collapsibleDockWidgets
|
||||||
from manuskript.ui.compileDialog import compileDialog
|
from manuskript.ui.exporters.exporter import exporterDialog
|
||||||
from manuskript.ui.helpLabel import helpLabel
|
from manuskript.ui.helpLabel import helpLabel
|
||||||
from manuskript.ui.mainWindow import Ui_MainWindow
|
from manuskript.ui.mainWindow import Ui_MainWindow
|
||||||
from manuskript.ui.tools.frequencyAnalyzer import frequencyAnalyzer
|
from manuskript.ui.tools.frequencyAnalyzer import frequencyAnalyzer
|
||||||
|
@ -1077,5 +1077,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
def doCompile(self):
|
def doCompile(self):
|
||||||
self.compileDialog = compileDialog()
|
self.dialog = exporterDialog()
|
||||||
self.compileDialog.show()
|
self.dialog.show()
|
||||||
|
|
||||||
|
r = self.dialog.geometry()
|
||||||
|
r2 = self.geometry()
|
||||||
|
self.dialog.move(r2.center() - r.center())
|
||||||
|
|
||||||
|
|
|
@ -1,102 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# --!-- coding: utf8 --!--
|
|
||||||
from PyQt5.QtCore import Qt
|
|
||||||
from PyQt5.QtWidgets import QDialog, qApp, QFileDialog
|
|
||||||
|
|
||||||
from manuskript import exporter
|
|
||||||
from manuskript.ui.compileDialog_ui import Ui_compileDialog
|
|
||||||
|
|
||||||
|
|
||||||
class compileDialog(QDialog, Ui_compileDialog):
|
|
||||||
def __init__(self, parent=None):
|
|
||||||
QDialog.__init__(self, parent)
|
|
||||||
self.setupUi(self)
|
|
||||||
|
|
||||||
self.btnPath.clicked.connect(self.getPath)
|
|
||||||
self.btnFilename.clicked.connect(self.getFilename)
|
|
||||||
|
|
||||||
self.btnCompile.clicked.connect(self.doCompile)
|
|
||||||
self.cmbTargets.activated.connect(self.updateUI)
|
|
||||||
|
|
||||||
self.txtPath.setText("/home/olivier/Documents/Travail/Geekeries/Python/manuskript/ExportTest")
|
|
||||||
self.txtFilename.setText("/home/olivier/Documents/Travail/Geekeries/Python/manuskript/ExportTest/test.html")
|
|
||||||
|
|
||||||
self.populatesTarget()
|
|
||||||
self.updateUI()
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# UI
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
def populatesTarget(self):
|
|
||||||
for code in exporter.formats:
|
|
||||||
self.cmbTargets.addItem(exporter.formats[code][0], code)
|
|
||||||
|
|
||||||
def updateUI(self):
|
|
||||||
target = self.cmbTargets.currentData()
|
|
||||||
|
|
||||||
if not exporter.formats[target][1]:
|
|
||||||
self.btnCompile.setEnabled(False)
|
|
||||||
requires = []
|
|
||||||
else:
|
|
||||||
self.btnCompile.setEnabled(True)
|
|
||||||
requires = exporter.formats[target][1].requires
|
|
||||||
|
|
||||||
self.wPath.setVisible("path" in requires)
|
|
||||||
self.wFilename.setVisible("filename" in requires)
|
|
||||||
|
|
||||||
def startWorking(self):
|
|
||||||
# Setting override cursor
|
|
||||||
qApp.setOverrideCursor(Qt.WaitCursor)
|
|
||||||
|
|
||||||
# Button
|
|
||||||
self.btnCompile.setEnabled(False)
|
|
||||||
self.txtBtn = self.btnCompile.text()
|
|
||||||
self.btnCompile.setText(self.tr("Working..."))
|
|
||||||
|
|
||||||
def stopWorking(self):
|
|
||||||
# Removing override cursor
|
|
||||||
qApp.restoreOverrideCursor()
|
|
||||||
|
|
||||||
# Button
|
|
||||||
self.btnCompile.setEnabled(True)
|
|
||||||
self.btnCompile.setText(self.txtBtn)
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# USER INPUTS
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
def getPath(self):
|
|
||||||
path = self.txtPath.text()
|
|
||||||
path = QFileDialog.getExistingDirectory(self, self.tr("Chose export folder"), path)
|
|
||||||
if path:
|
|
||||||
self.txtPath.setText(path)
|
|
||||||
|
|
||||||
def getFilename(self):
|
|
||||||
fn = self.txtFilename.text()
|
|
||||||
target = self.cmbTargets.currentData()
|
|
||||||
fltr = exporter.formats[target][2]
|
|
||||||
fn = QFileDialog.getSaveFileName(self, self.tr("Chose export target"), fn, fltr)
|
|
||||||
|
|
||||||
if fn[0]:
|
|
||||||
self.txtFilename.setText(fn[0])
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# COMPILE
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
def doCompile(self):
|
|
||||||
target = self.cmbTargets.currentData()
|
|
||||||
|
|
||||||
self.startWorking()
|
|
||||||
|
|
||||||
if target == "arbo":
|
|
||||||
compiler = exporter.formats[target][1]()
|
|
||||||
compiler.doCompile(self.txtPath.text())
|
|
||||||
|
|
||||||
elif target in ["html", "odt"]:
|
|
||||||
compiler = exporter.formats[target][1]()
|
|
||||||
compiler.doCompile(self.txtFilename.text())
|
|
||||||
|
|
||||||
self.stopWorking()
|
|
|
@ -1,89 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'manuskript/ui/compileDialog_ui.ui'
|
|
||||||
#
|
|
||||||
# Created: Wed Mar 2 00:30:17 2016
|
|
||||||
# by: PyQt5 UI code generator 5.2.1
|
|
||||||
#
|
|
||||||
# WARNING! All changes made in this file will be lost!
|
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
||||||
|
|
||||||
class Ui_compileDialog(object):
|
|
||||||
def setupUi(self, compileDialog):
|
|
||||||
compileDialog.setObjectName("compileDialog")
|
|
||||||
compileDialog.resize(627, 343)
|
|
||||||
compileDialog.setModal(True)
|
|
||||||
self.verticalLayout = QtWidgets.QVBoxLayout(compileDialog)
|
|
||||||
self.verticalLayout.setObjectName("verticalLayout")
|
|
||||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
|
||||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
|
||||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
||||||
self.horizontalLayout.addItem(spacerItem)
|
|
||||||
self.label = QtWidgets.QLabel(compileDialog)
|
|
||||||
self.label.setObjectName("label")
|
|
||||||
self.horizontalLayout.addWidget(self.label)
|
|
||||||
self.cmbTargets = QtWidgets.QComboBox(compileDialog)
|
|
||||||
self.cmbTargets.setObjectName("cmbTargets")
|
|
||||||
self.horizontalLayout.addWidget(self.cmbTargets)
|
|
||||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
||||||
self.horizontalLayout.addItem(spacerItem1)
|
|
||||||
self.verticalLayout.addLayout(self.horizontalLayout)
|
|
||||||
self.wPath = QtWidgets.QWidget(compileDialog)
|
|
||||||
self.wPath.setObjectName("wPath")
|
|
||||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.wPath)
|
|
||||||
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
|
|
||||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
|
||||||
self.label_2 = QtWidgets.QLabel(self.wPath)
|
|
||||||
self.label_2.setObjectName("label_2")
|
|
||||||
self.horizontalLayout_3.addWidget(self.label_2)
|
|
||||||
self.txtPath = QtWidgets.QLineEdit(self.wPath)
|
|
||||||
self.txtPath.setObjectName("txtPath")
|
|
||||||
self.horizontalLayout_3.addWidget(self.txtPath)
|
|
||||||
self.btnPath = QtWidgets.QPushButton(self.wPath)
|
|
||||||
self.btnPath.setObjectName("btnPath")
|
|
||||||
self.horizontalLayout_3.addWidget(self.btnPath)
|
|
||||||
self.verticalLayout.addWidget(self.wPath)
|
|
||||||
self.wFilename = QtWidgets.QWidget(compileDialog)
|
|
||||||
self.wFilename.setObjectName("wFilename")
|
|
||||||
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.wFilename)
|
|
||||||
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
|
|
||||||
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
|
||||||
self.label_3 = QtWidgets.QLabel(self.wFilename)
|
|
||||||
self.label_3.setObjectName("label_3")
|
|
||||||
self.horizontalLayout_4.addWidget(self.label_3)
|
|
||||||
self.txtFilename = QtWidgets.QLineEdit(self.wFilename)
|
|
||||||
self.txtFilename.setObjectName("txtFilename")
|
|
||||||
self.horizontalLayout_4.addWidget(self.txtFilename)
|
|
||||||
self.btnFilename = QtWidgets.QPushButton(self.wFilename)
|
|
||||||
self.btnFilename.setObjectName("btnFilename")
|
|
||||||
self.horizontalLayout_4.addWidget(self.btnFilename)
|
|
||||||
self.verticalLayout.addWidget(self.wFilename)
|
|
||||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
|
||||||
self.verticalLayout.addItem(spacerItem2)
|
|
||||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
|
||||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
|
||||||
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
||||||
self.horizontalLayout_2.addItem(spacerItem3)
|
|
||||||
self.btnCompile = QtWidgets.QPushButton(compileDialog)
|
|
||||||
self.btnCompile.setObjectName("btnCompile")
|
|
||||||
self.horizontalLayout_2.addWidget(self.btnCompile)
|
|
||||||
self.btnCancel = QtWidgets.QPushButton(compileDialog)
|
|
||||||
self.btnCancel.setObjectName("btnCancel")
|
|
||||||
self.horizontalLayout_2.addWidget(self.btnCancel)
|
|
||||||
self.verticalLayout.addLayout(self.horizontalLayout_2)
|
|
||||||
|
|
||||||
self.retranslateUi(compileDialog)
|
|
||||||
QtCore.QMetaObject.connectSlotsByName(compileDialog)
|
|
||||||
|
|
||||||
def retranslateUi(self, compileDialog):
|
|
||||||
_translate = QtCore.QCoreApplication.translate
|
|
||||||
compileDialog.setWindowTitle(_translate("compileDialog", "Dialog"))
|
|
||||||
self.label.setText(_translate("compileDialog", "Compile as:"))
|
|
||||||
self.label_2.setText(_translate("compileDialog", "Folder:"))
|
|
||||||
self.btnPath.setText(_translate("compileDialog", "..."))
|
|
||||||
self.label_3.setText(_translate("compileDialog", "File name:"))
|
|
||||||
self.btnFilename.setText(_translate("compileDialog", "..."))
|
|
||||||
self.btnCompile.setText(_translate("compileDialog", "Compile"))
|
|
||||||
self.btnCancel.setText(_translate("compileDialog", "Cancel"))
|
|
||||||
|
|
|
@ -1,154 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>compileDialog</class>
|
|
||||||
<widget class="QDialog" name="compileDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>627</width>
|
|
||||||
<height>343</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Dialog</string>
|
|
||||||
</property>
|
|
||||||
<property name="modal">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Compile as:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QComboBox" name="cmbTargets"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QWidget" name="wPath" native="true">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="text">
|
|
||||||
<string>Folder:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="txtPath"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="btnPath">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QWidget" name="wFilename" native="true">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_3">
|
|
||||||
<property name="text">
|
|
||||||
<string>File name:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="txtFilename"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="btnFilename">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_3">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="btnCompile">
|
|
||||||
<property name="text">
|
|
||||||
<string>Compile</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="btnCancel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Cancel</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
88
manuskript/ui/exporters/exporter.py
Normal file
88
manuskript/ui/exporters/exporter.py
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# --!-- coding: utf8 --!--
|
||||||
|
import os
|
||||||
|
from collections import OrderedDict
|
||||||
|
|
||||||
|
from PyQt5.QtCore import Qt
|
||||||
|
from PyQt5.QtGui import QBrush, QColor
|
||||||
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout
|
||||||
|
|
||||||
|
from manuskript import exporter
|
||||||
|
from manuskript.functions import lightBlue
|
||||||
|
from manuskript.ui.exporters.exporter_ui import Ui_exporter
|
||||||
|
from manuskript.ui.exporters.exportersManager import exportersManager
|
||||||
|
|
||||||
|
|
||||||
|
class exporterDialog(QWidget, Ui_exporter):
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
QWidget.__init__(self, parent)
|
||||||
|
self.setupUi(self)
|
||||||
|
|
||||||
|
# Var
|
||||||
|
self.currentExporter = None
|
||||||
|
|
||||||
|
# Populates lite
|
||||||
|
self.cmbExporters.clear()
|
||||||
|
for E in exporter.exporters:
|
||||||
|
|
||||||
|
if not E.isValid():
|
||||||
|
continue
|
||||||
|
|
||||||
|
self.cmbExporters.addItem(E.name)
|
||||||
|
self.cmbExporters.setItemData(self.cmbExporters.count() - 1, QBrush(QColor(Qt.darkBlue)), Qt.ForegroundRole)
|
||||||
|
self.cmbExporters.setItemData(self.cmbExporters.count() - 1, QBrush(lightBlue()), Qt.BackgroundRole)
|
||||||
|
item = self.cmbExporters.model().item(self.cmbExporters.count() - 1)
|
||||||
|
item.setFlags(Qt.ItemIsEnabled)
|
||||||
|
|
||||||
|
for f in E.exportTo:
|
||||||
|
name = f.name if f.implemented else self.tr("{} (not implemented yet)").format(f.name)
|
||||||
|
self.cmbExporters.addItem(name, E.name)
|
||||||
|
|
||||||
|
self.btnManageExporters.clicked.connect(self.openManager)
|
||||||
|
|
||||||
|
self.cmbExporters.currentIndexChanged.connect(self.updateUi)
|
||||||
|
self.cmbExporters.setCurrentIndex(1)
|
||||||
|
|
||||||
|
def updateUi(self, index):
|
||||||
|
name = self.cmbExporters.currentText()
|
||||||
|
exporterName = self.cmbExporters.currentData()
|
||||||
|
|
||||||
|
E = exporter.getExporterByName(exporterName)
|
||||||
|
|
||||||
|
if not E:
|
||||||
|
self.setWidgetsEnabled(False)
|
||||||
|
return
|
||||||
|
|
||||||
|
F = E.getFormatByName(name)
|
||||||
|
|
||||||
|
if not F or not F.implemented:
|
||||||
|
self.setWidgetsEnabled(False)
|
||||||
|
return
|
||||||
|
|
||||||
|
self.setWidgetsEnabled(True)
|
||||||
|
|
||||||
|
self.grpSettings.setVisible(F.requires["Settings"])
|
||||||
|
self.grpPreviewBefore.setVisible(F.requires["PreviewBefore"])
|
||||||
|
self.grpPreviewAfter.setVisible(F.requires["PreviewAfter"])
|
||||||
|
|
||||||
|
# if F.requires["Settings"]:
|
||||||
|
# self.settingsWidget = F.settingsWidget()
|
||||||
|
#
|
||||||
|
# if F.requires["PreviewBefore"]:
|
||||||
|
# self.previewBefore = F.previewWidgetBefore()
|
||||||
|
#
|
||||||
|
# if F.requires["PreviewAfter"]:
|
||||||
|
# self.previewAfter = F.previewWidgetAfter()
|
||||||
|
|
||||||
|
def setWidgetsEnabled(self, value):
|
||||||
|
self.grpSettings.setEnabled(value)
|
||||||
|
self.grpPreviewBefore.setEnabled(value)
|
||||||
|
self.grpPreviewAfter.setEnabled(value)
|
||||||
|
|
||||||
|
def openManager(self):
|
||||||
|
self.dialog = exportersManager()
|
||||||
|
self.dialog.show()
|
||||||
|
|
||||||
|
r = self.dialog.geometry()
|
||||||
|
r2 = self.geometry()
|
||||||
|
self.dialog.move(r2.center() - r.center())
|
77
manuskript/ui/exporters/exporter_ui.py
Normal file
77
manuskript/ui/exporters/exporter_ui.py
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Form implementation generated from reading ui file 'manuskript/ui/exporters/exporter_ui.ui'
|
||||||
|
#
|
||||||
|
# Created by: PyQt5 UI code generator 5.4.2
|
||||||
|
#
|
||||||
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
|
||||||
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
|
|
||||||
|
class Ui_exporter(object):
|
||||||
|
def setupUi(self, exporter):
|
||||||
|
exporter.setObjectName("exporter")
|
||||||
|
exporter.resize(792, 502)
|
||||||
|
self.verticalLayout = QtWidgets.QVBoxLayout(exporter)
|
||||||
|
self.verticalLayout.setObjectName("verticalLayout")
|
||||||
|
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||||
|
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout.addItem(spacerItem)
|
||||||
|
self.label = QtWidgets.QLabel(exporter)
|
||||||
|
self.label.setObjectName("label")
|
||||||
|
self.horizontalLayout.addWidget(self.label)
|
||||||
|
self.cmbExporters = QtWidgets.QComboBox(exporter)
|
||||||
|
self.cmbExporters.setObjectName("cmbExporters")
|
||||||
|
self.horizontalLayout.addWidget(self.cmbExporters)
|
||||||
|
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout.addItem(spacerItem1)
|
||||||
|
self.btnManageExporters = QtWidgets.QPushButton(exporter)
|
||||||
|
self.btnManageExporters.setObjectName("btnManageExporters")
|
||||||
|
self.horizontalLayout.addWidget(self.btnManageExporters)
|
||||||
|
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||||
|
self.splitter = QtWidgets.QSplitter(exporter)
|
||||||
|
self.splitter.setOrientation(QtCore.Qt.Horizontal)
|
||||||
|
self.splitter.setObjectName("splitter")
|
||||||
|
self.grpSettings = QtWidgets.QGroupBox(self.splitter)
|
||||||
|
self.grpSettings.setObjectName("grpSettings")
|
||||||
|
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.grpSettings)
|
||||||
|
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||||
|
self.settings = QtWidgets.QWidget(self.grpSettings)
|
||||||
|
self.settings.setObjectName("settings")
|
||||||
|
self.verticalLayout_3.addWidget(self.settings)
|
||||||
|
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||||
|
self.pushButton = QtWidgets.QPushButton(self.grpSettings)
|
||||||
|
self.pushButton.setObjectName("pushButton")
|
||||||
|
self.horizontalLayout_2.addWidget(self.pushButton)
|
||||||
|
self.verticalLayout_3.addLayout(self.horizontalLayout_2)
|
||||||
|
self.grpPreviewBefore = QtWidgets.QGroupBox(self.splitter)
|
||||||
|
self.grpPreviewBefore.setObjectName("grpPreviewBefore")
|
||||||
|
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.grpPreviewBefore)
|
||||||
|
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||||
|
self.previewBefore = QtWidgets.QWidget(self.grpPreviewBefore)
|
||||||
|
self.previewBefore.setObjectName("previewBefore")
|
||||||
|
self.verticalLayout_2.addWidget(self.previewBefore)
|
||||||
|
self.grpPreviewAfter = QtWidgets.QGroupBox(self.splitter)
|
||||||
|
self.grpPreviewAfter.setObjectName("grpPreviewAfter")
|
||||||
|
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.grpPreviewAfter)
|
||||||
|
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||||
|
self.previewAfter = QtWidgets.QWidget(self.grpPreviewAfter)
|
||||||
|
self.previewAfter.setObjectName("previewAfter")
|
||||||
|
self.verticalLayout_4.addWidget(self.previewAfter)
|
||||||
|
self.verticalLayout.addWidget(self.splitter)
|
||||||
|
|
||||||
|
self.retranslateUi(exporter)
|
||||||
|
QtCore.QMetaObject.connectSlotsByName(exporter)
|
||||||
|
|
||||||
|
def retranslateUi(self, exporter):
|
||||||
|
_translate = QtCore.QCoreApplication.translate
|
||||||
|
exporter.setWindowTitle(_translate("exporter", "Export"))
|
||||||
|
self.label.setText(_translate("exporter", "Export to:"))
|
||||||
|
self.btnManageExporters.setText(_translate("exporter", "Manage exporters"))
|
||||||
|
self.grpSettings.setTitle(_translate("exporter", "Settings"))
|
||||||
|
self.pushButton.setText(_translate("exporter", "Show Intermediate Preview"))
|
||||||
|
self.grpPreviewBefore.setTitle(_translate("exporter", "Preview"))
|
||||||
|
self.grpPreviewAfter.setTitle(_translate("exporter", "Preview"))
|
||||||
|
|
116
manuskript/ui/exporters/exporter_ui.ui
Normal file
116
manuskript/ui/exporters/exporter_ui.ui
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>exporter</class>
|
||||||
|
<widget class="QWidget" name="exporter">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>792</width>
|
||||||
|
<height>502</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Export</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Export to:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="cmbExporters"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btnManageExporters">
|
||||||
|
<property name="text">
|
||||||
|
<string>Manage exporters</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSplitter" name="splitter">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" name="grpSettings">
|
||||||
|
<property name="title">
|
||||||
|
<string>Settings</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="settings" native="true"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show Intermediate Preview</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" name="grpPreviewBefore">
|
||||||
|
<property name="title">
|
||||||
|
<string>Preview</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="previewBefore" native="true"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" name="grpPreviewAfter">
|
||||||
|
<property name="title">
|
||||||
|
<string>Preview</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="previewAfter" native="true"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
99
manuskript/ui/exporters/exportersManager.py
Normal file
99
manuskript/ui/exporters/exportersManager.py
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# --!-- coding: utf8 --!--
|
||||||
|
import os
|
||||||
|
from collections import OrderedDict
|
||||||
|
|
||||||
|
from PyQt5.QtCore import QSize
|
||||||
|
from PyQt5.QtCore import Qt
|
||||||
|
from PyQt5.QtWidgets import QWidget
|
||||||
|
|
||||||
|
from manuskript import exporter
|
||||||
|
from manuskript.ui.exporters.exportersManager_ui import Ui_ExportersManager
|
||||||
|
|
||||||
|
class exportersManager(QWidget, Ui_ExportersManager):
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
QWidget.__init__(self, parent)
|
||||||
|
self.setupUi(self)
|
||||||
|
|
||||||
|
# Var
|
||||||
|
self.currentExporter = None
|
||||||
|
|
||||||
|
# Populates lite
|
||||||
|
self.lstExporters.clear()
|
||||||
|
for E in exporter.exporters:
|
||||||
|
self.lstExporters.addItem(E.name)
|
||||||
|
|
||||||
|
# UI
|
||||||
|
for i in range(self.lstExporters.count()):
|
||||||
|
item = self.lstExporters.item(i)
|
||||||
|
item.setSizeHint(QSize(item.sizeHint().width(), 42))
|
||||||
|
item.setTextAlignment(Qt.AlignCenter)
|
||||||
|
self.lstExporters.setMaximumWidth(150)
|
||||||
|
self.lstExporters.setMinimumWidth(150)
|
||||||
|
|
||||||
|
self.lstExporters.currentTextChanged.connect(self.updateUi)
|
||||||
|
self.lstExportTo.currentTextChanged.connect(self.updateFormatDescription)
|
||||||
|
|
||||||
|
self.lstExporters.setCurrentRow(0)
|
||||||
|
|
||||||
|
def updateUi(self, name):
|
||||||
|
E = exporter.getExporterByName(name)
|
||||||
|
self.currentExporter = E
|
||||||
|
|
||||||
|
if not E:
|
||||||
|
self.stack.setEnabled(False)
|
||||||
|
return
|
||||||
|
|
||||||
|
self.stack.setEnabled(True)
|
||||||
|
|
||||||
|
# Updates name and description
|
||||||
|
self.lblExporterName.setText(E.name)
|
||||||
|
self.lblExporterDescription.setText(E.description)
|
||||||
|
|
||||||
|
# Updates formats
|
||||||
|
self.lstExportTo.clear()
|
||||||
|
|
||||||
|
for f in E.exportTo:
|
||||||
|
self.lstExportTo.addItem(f.name)
|
||||||
|
|
||||||
|
self.lstExportTo.setMaximumWidth(120)
|
||||||
|
self.lstExportTo.setMinimumWidth(120)
|
||||||
|
self.lstExportTo.setCurrentRow(0)
|
||||||
|
|
||||||
|
# Updates path & version
|
||||||
|
self.grpPath.setVisible(E.name != "Manuskript") # We hide if exporter is manuskript
|
||||||
|
|
||||||
|
# Installed
|
||||||
|
if E.isValid():
|
||||||
|
self.lblStatus.setText(self.tr("Installed"))
|
||||||
|
self.lblStatus.setStyleSheet("color: darkGreen;")
|
||||||
|
self.lblHelpText.setVisible(False)
|
||||||
|
self.lblVersion.setVisible(True)
|
||||||
|
self.lblVersionName.setVisible(True)
|
||||||
|
else:
|
||||||
|
self.lblStatus.setText(self.tr("Not found"))
|
||||||
|
self.lblStatus.setStyleSheet("color: red;")
|
||||||
|
self.lblHelpText.setVisible(True)
|
||||||
|
self.lblHelpText.setText(self.tr("{} not found. Install it, or set path manually.").format(name))
|
||||||
|
self.lblVersion.setVisible(False)
|
||||||
|
self.lblVersionName.setVisible(False)
|
||||||
|
|
||||||
|
# Version
|
||||||
|
self.lblVersion.setText(E.version())
|
||||||
|
|
||||||
|
# Path
|
||||||
|
self.txtPath.setText(E.path())
|
||||||
|
|
||||||
|
def updateFormatDescription(self, name):
|
||||||
|
if self.currentExporter:
|
||||||
|
f = self.currentExporter.getFormatByName(name)
|
||||||
|
|
||||||
|
if not f:
|
||||||
|
self.lblExportToDescription.setText("")
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.lblExportToDescription.setText("<b>{}:</b> {}".format(
|
||||||
|
name,
|
||||||
|
f.description))
|
||||||
|
|
||||||
|
|
177
manuskript/ui/exporters/exportersManager_ui.py
Normal file
177
manuskript/ui/exporters/exportersManager_ui.py
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Form implementation generated from reading ui file 'manuskript/ui/exporters/exportersManager_ui.ui'
|
||||||
|
#
|
||||||
|
# Created by: PyQt5 UI code generator 5.4.2
|
||||||
|
#
|
||||||
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
|
||||||
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
|
|
||||||
|
class Ui_ExportersManager(object):
|
||||||
|
def setupUi(self, ExportersManager):
|
||||||
|
ExportersManager.setObjectName("ExportersManager")
|
||||||
|
ExportersManager.resize(658, 439)
|
||||||
|
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(ExportersManager)
|
||||||
|
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
||||||
|
self.lstExporters = QtWidgets.QListWidget(ExportersManager)
|
||||||
|
self.lstExporters.setObjectName("lstExporters")
|
||||||
|
item = QtWidgets.QListWidgetItem()
|
||||||
|
self.lstExporters.addItem(item)
|
||||||
|
self.horizontalLayout_8.addWidget(self.lstExporters)
|
||||||
|
self.stack = QtWidgets.QWidget(ExportersManager)
|
||||||
|
self.stack.setObjectName("stack")
|
||||||
|
self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.stack)
|
||||||
|
self.verticalLayout_7.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.verticalLayout_7.setObjectName("verticalLayout_7")
|
||||||
|
self.lblExporterName = QtWidgets.QLabel(self.stack)
|
||||||
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||||||
|
sizePolicy.setHorizontalStretch(0)
|
||||||
|
sizePolicy.setVerticalStretch(0)
|
||||||
|
sizePolicy.setHeightForWidth(self.lblExporterName.sizePolicy().hasHeightForWidth())
|
||||||
|
self.lblExporterName.setSizePolicy(sizePolicy)
|
||||||
|
self.lblExporterName.setStyleSheet("background-color:lightBlue;\n"
|
||||||
|
"border:none;\n"
|
||||||
|
"padding:10px;\n"
|
||||||
|
"color:darkBlue;\n"
|
||||||
|
"font-size:16px;\n"
|
||||||
|
"font-weight:bold;\n"
|
||||||
|
"text-align:center;")
|
||||||
|
self.lblExporterName.setText("{Exporter Name}")
|
||||||
|
self.lblExporterName.setAlignment(QtCore.Qt.AlignCenter)
|
||||||
|
self.lblExporterName.setObjectName("lblExporterName")
|
||||||
|
self.verticalLayout_7.addWidget(self.lblExporterName)
|
||||||
|
self.grpDescription = QtWidgets.QGroupBox(self.stack)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(True)
|
||||||
|
font.setWeight(75)
|
||||||
|
self.grpDescription.setFont(font)
|
||||||
|
self.grpDescription.setObjectName("grpDescription")
|
||||||
|
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.grpDescription)
|
||||||
|
self.verticalLayout_5.setObjectName("verticalLayout_5")
|
||||||
|
self.lblExporterDescription = QtWidgets.QLabel(self.grpDescription)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.lblExporterDescription.setFont(font)
|
||||||
|
self.lblExporterDescription.setText("{ExporterDescription}")
|
||||||
|
self.lblExporterDescription.setWordWrap(True)
|
||||||
|
self.lblExporterDescription.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
|
||||||
|
self.lblExporterDescription.setObjectName("lblExporterDescription")
|
||||||
|
self.verticalLayout_5.addWidget(self.lblExporterDescription)
|
||||||
|
self.verticalLayout_7.addWidget(self.grpDescription)
|
||||||
|
self.grpExportTo = QtWidgets.QGroupBox(self.stack)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(True)
|
||||||
|
font.setWeight(75)
|
||||||
|
self.grpExportTo.setFont(font)
|
||||||
|
self.grpExportTo.setObjectName("grpExportTo")
|
||||||
|
self.horizontalLayout = QtWidgets.QHBoxLayout(self.grpExportTo)
|
||||||
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||||
|
self.lstExportTo = QtWidgets.QListWidget(self.grpExportTo)
|
||||||
|
self.lstExportTo.setObjectName("lstExportTo")
|
||||||
|
self.horizontalLayout.addWidget(self.lstExportTo)
|
||||||
|
self.frame = QtWidgets.QFrame(self.grpExportTo)
|
||||||
|
self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
|
||||||
|
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
|
||||||
|
self.frame.setObjectName("frame")
|
||||||
|
self.verticalLayout = QtWidgets.QVBoxLayout(self.frame)
|
||||||
|
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.verticalLayout.setSpacing(0)
|
||||||
|
self.verticalLayout.setObjectName("verticalLayout")
|
||||||
|
self.lblExportToDescription = QtWidgets.QLabel(self.frame)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.lblExportToDescription.setFont(font)
|
||||||
|
self.lblExportToDescription.setText("{FormatDescription}")
|
||||||
|
self.lblExportToDescription.setWordWrap(True)
|
||||||
|
self.lblExportToDescription.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
|
||||||
|
self.lblExportToDescription.setObjectName("lblExportToDescription")
|
||||||
|
self.verticalLayout.addWidget(self.lblExportToDescription)
|
||||||
|
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||||
|
self.verticalLayout.addItem(spacerItem)
|
||||||
|
self.horizontalLayout.addWidget(self.frame)
|
||||||
|
self.verticalLayout_7.addWidget(self.grpExportTo)
|
||||||
|
self.grpPath = QtWidgets.QGroupBox(self.stack)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(True)
|
||||||
|
font.setWeight(75)
|
||||||
|
self.grpPath.setFont(font)
|
||||||
|
self.grpPath.setObjectName("grpPath")
|
||||||
|
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.grpPath)
|
||||||
|
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||||
|
self.formLayout = QtWidgets.QFormLayout()
|
||||||
|
self.formLayout.setObjectName("formLayout")
|
||||||
|
self.label_2 = QtWidgets.QLabel(self.grpPath)
|
||||||
|
self.label_2.setObjectName("label_2")
|
||||||
|
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_2)
|
||||||
|
self.lblStatus = QtWidgets.QLabel(self.grpPath)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.lblStatus.setFont(font)
|
||||||
|
self.lblStatus.setText("{ExporterStatus}")
|
||||||
|
self.lblStatus.setObjectName("lblStatus")
|
||||||
|
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.lblStatus)
|
||||||
|
self.lblVersionName = QtWidgets.QLabel(self.grpPath)
|
||||||
|
self.lblVersionName.setObjectName("lblVersionName")
|
||||||
|
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lblVersionName)
|
||||||
|
self.lblVersion = QtWidgets.QLabel(self.grpPath)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.lblVersion.setFont(font)
|
||||||
|
self.lblVersion.setText("{ExporterVersion}")
|
||||||
|
self.lblVersion.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
|
||||||
|
self.lblVersion.setObjectName("lblVersion")
|
||||||
|
self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.lblVersion)
|
||||||
|
self.verticalLayout_2.addLayout(self.formLayout)
|
||||||
|
self.lblHelpText = QtWidgets.QLabel(self.grpPath)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.lblHelpText.setFont(font)
|
||||||
|
self.lblHelpText.setWordWrap(True)
|
||||||
|
self.lblHelpText.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
|
||||||
|
self.lblHelpText.setObjectName("lblHelpText")
|
||||||
|
self.verticalLayout_2.addWidget(self.lblHelpText)
|
||||||
|
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||||
|
self.txtPath = QtWidgets.QLineEdit(self.grpPath)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.txtPath.setFont(font)
|
||||||
|
self.txtPath.setObjectName("txtPath")
|
||||||
|
self.horizontalLayout_2.addWidget(self.txtPath)
|
||||||
|
self.btnSetPath = QtWidgets.QPushButton(self.grpPath)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.btnSetPath.setFont(font)
|
||||||
|
self.btnSetPath.setObjectName("btnSetPath")
|
||||||
|
self.horizontalLayout_2.addWidget(self.btnSetPath)
|
||||||
|
self.verticalLayout_2.addLayout(self.horizontalLayout_2)
|
||||||
|
self.verticalLayout_7.addWidget(self.grpPath)
|
||||||
|
self.horizontalLayout_8.addWidget(self.stack)
|
||||||
|
|
||||||
|
self.retranslateUi(ExportersManager)
|
||||||
|
QtCore.QMetaObject.connectSlotsByName(ExportersManager)
|
||||||
|
|
||||||
|
def retranslateUi(self, ExportersManager):
|
||||||
|
_translate = QtCore.QCoreApplication.translate
|
||||||
|
ExportersManager.setWindowTitle(_translate("ExportersManager", "Manage Exporters"))
|
||||||
|
__sortingEnabled = self.lstExporters.isSortingEnabled()
|
||||||
|
self.lstExporters.setSortingEnabled(False)
|
||||||
|
item = self.lstExporters.item(0)
|
||||||
|
item.setText(_translate("ExportersManager", "Manuskript"))
|
||||||
|
self.lstExporters.setSortingEnabled(__sortingEnabled)
|
||||||
|
self.grpDescription.setTitle(_translate("ExportersManager", "Description"))
|
||||||
|
self.grpExportTo.setTitle(_translate("ExportersManager", "Offers export to"))
|
||||||
|
self.grpPath.setTitle(_translate("ExportersManager", "Path"))
|
||||||
|
self.label_2.setText(_translate("ExportersManager", "Status:"))
|
||||||
|
self.lblVersionName.setText(_translate("ExportersManager", "Version:"))
|
||||||
|
self.lblHelpText.setText(_translate("ExportersManager", "{HelpText}"))
|
||||||
|
self.btnSetPath.setText(_translate("ExportersManager", "..."))
|
||||||
|
|
292
manuskript/ui/exporters/exportersManager_ui.ui
Normal file
292
manuskript/ui/exporters/exportersManager_ui.ui
Normal file
|
@ -0,0 +1,292 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>ExportersManager</class>
|
||||||
|
<widget class="QWidget" name="ExportersManager">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>658</width>
|
||||||
|
<height>439</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Manage Exporters</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
|
<item>
|
||||||
|
<widget class="QListWidget" name="lstExporters">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Manuskript</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="stack" native="true">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lblExporterName">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color:lightBlue;
|
||||||
|
border:none;
|
||||||
|
padding:10px;
|
||||||
|
color:darkBlue;
|
||||||
|
font-size:16px;
|
||||||
|
font-weight:bold;
|
||||||
|
text-align:center;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">{Exporter Name}</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="grpDescription">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Description</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lblExporterDescription">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">{ExporterDescription}</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="grpExportTo">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Offers export to</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QListWidget" name="lstExportTo"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lblExportToDescription">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">{FormatDescription}</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="grpPath">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Path</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Status:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="lblStatus">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">{ExporterStatus}</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="lblVersionName">
|
||||||
|
<property name="text">
|
||||||
|
<string>Version:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="lblVersion">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">{ExporterVersion}</string>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lblHelpText">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>{HelpText}</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="txtPath">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btnSetPath">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
Loading…
Reference in a new issue