Adds: OPML import with preview (using @camstevenson's importer) #200

This commit is contained in:
Olivier Keshavjee 2017-11-07 15:33:18 +01:00
parent fb50d42348
commit a29eddabea
6 changed files with 31 additions and 18 deletions

View file

@ -6,7 +6,7 @@ from manuskript.importer.markdownImporter import markdownImporter
from manuskript.importer.opmlImporter import opmlImporter from manuskript.importer.opmlImporter import opmlImporter
importers = [ importers = [
markdownImporter, #markdownImporter,
opmlImporter, opmlImporter,
folderImporter, #folderImporter,
] ]

View file

@ -8,5 +8,5 @@ class markdownImporter(abstractImporter):
name = "Markdown" name = "Markdown"
description = "" description = ""
fileFormat = "Markdown files (*.md; *.txt; *)" fileFormat = "Markdown files (*.md *.txt *)"
icon = "text-x-markdown" icon = "text-x-markdown"

View file

@ -12,7 +12,7 @@ class opmlImporter(abstractImporter):
name = "OPML" name = "OPML"
description = "" description = ""
fileFormat = "OPML Files (*.opml)" fileFormat = "OPML Files (*.opml *.xml)"
icon = "text-x-opml+xml" icon = "text-x-opml+xml"
@classmethod @classmethod
@ -23,15 +23,16 @@ class opmlImporter(abstractImporter):
ret = False ret = False
try: try:
with open(filePath, 'r') as opmlFile: with open(filePath, 'rb') as opmlFile:
opmlContent = cls.saveNewlines(opmlFile.read()) #opmlContent = cls.saveNewlines(opmlFile.read())
opmlContent = opmlFile.read()
except: except:
QMessageBox.critical(settingsWidget, QMessageBox.critical(settingsWidget,
qApp.translate("Import", "OPML Import"), qApp.translate("Import", "OPML Import"),
qApp.translate("Import", "File open failed.")) qApp.translate("Import", "File open failed."))
return None return None
parsed = ET.fromstring(bytes(opmlContent, 'utf-8')) parsed = ET.fromstring(opmlContent)
opmlNode = parsed opmlNode = parsed
bodyNode = opmlNode.find("body") bodyNode = opmlNode.find("body")
@ -65,7 +66,8 @@ class opmlImporter(abstractImporter):
body = "" body = ""
note = underElement.get('_note') note = underElement.get('_note')
if note is not None and not cls.isWhitespaceOnly(note): if note is not None and not cls.isWhitespaceOnly(note):
body = cls.restoreNewLines(note) #body = cls.restoreNewLines(note)
body = note
children = underElement.findall('outline') children = underElement.findall('outline')
if children is not None and len(children) > 0: if children is not None and len(children) > 0:

View file

@ -37,9 +37,11 @@ class Ui_generalSettings(object):
self.formLayout_4.setRowWrapPolicy(QtWidgets.QFormLayout.WrapLongRows) self.formLayout_4.setRowWrapPolicy(QtWidgets.QFormLayout.WrapLongRows)
self.formLayout_4.setObjectName("formLayout_4") self.formLayout_4.setObjectName("formLayout_4")
self.chkGeneralSplitScenes = QtWidgets.QCheckBox(self.general) self.chkGeneralSplitScenes = QtWidgets.QCheckBox(self.general)
self.chkGeneralSplitScenes.setEnabled(False)
self.chkGeneralSplitScenes.setObjectName("chkGeneralSplitScenes") self.chkGeneralSplitScenes.setObjectName("chkGeneralSplitScenes")
self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.chkGeneralSplitScenes) self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.chkGeneralSplitScenes)
self.txtGeneralSplitScenes = QtWidgets.QLineEdit(self.general) self.txtGeneralSplitScenes = QtWidgets.QLineEdit(self.general)
self.txtGeneralSplitScenes.setEnabled(False)
self.txtGeneralSplitScenes.setObjectName("txtGeneralSplitScenes") self.txtGeneralSplitScenes.setObjectName("txtGeneralSplitScenes")
self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.txtGeneralSplitScenes) self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.txtGeneralSplitScenes)
self.chkGeneralTrimTitles = QtWidgets.QCheckBox(self.general) self.chkGeneralTrimTitles = QtWidgets.QCheckBox(self.general)

View file

@ -80,13 +80,20 @@ QToolBox::tab:selected, QToolBox::tab:hover{
</property> </property>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QCheckBox" name="chkGeneralSplitScenes"> <widget class="QCheckBox" name="chkGeneralSplitScenes">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text"> <property name="text">
<string>Split scenes at:</string> <string>Split scenes at:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="QLineEdit" name="txtGeneralSplitScenes"/> <widget class="QLineEdit" name="txtGeneralSplitScenes">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item> </item>
<item row="3" column="0" colspan="2"> <item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="chkGeneralTrimTitles"> <widget class="QCheckBox" name="chkGeneralTrimTitles">

View file

@ -25,6 +25,7 @@ class importerDialog(QWidget, Ui_importer):
".rst": "text-plain", ".rst": "text-plain",
".tex": "text-x-tex", ".tex": "text-x-tex",
".opml": "text-x-opml+xml", ".opml": "text-x-opml+xml",
".xml": "text-x-opml+xml",
".html": "text-html", ".html": "text-html",
} }
@ -38,6 +39,7 @@ class importerDialog(QWidget, Ui_importer):
self.setStyleSheet(style.mainWindowSS()) self.setStyleSheet(style.mainWindowSS())
self.tree.setStyleSheet("QTreeView{background:transparent;}") self.tree.setStyleSheet("QTreeView{background:transparent;}")
self.editor.setStyleSheet("QWidget{background:transparent;}") self.editor.setStyleSheet("QWidget{background:transparent;}")
self.editor.toggleSpellcheck(False)
# Register importFormats: # Register importFormats:
self.importers = importer.importers self.importers = importer.importers
@ -52,12 +54,8 @@ class importerDialog(QWidget, Ui_importer):
self.btnImport.clicked.connect(self.doImport) self.btnImport.clicked.connect(self.doImport)
self.cmbImporters.currentTextChanged.connect(self.updateSettings) self.cmbImporters.currentTextChanged.connect(self.updateSettings)
#self.setFileName("") self.setFileName("")
QTimer.singleShot(50, lambda: self.updateSettings()
self.cmbImporters.setCurrentText("OPML"))
QTimer.singleShot(50, lambda:
self.setFileName("/home/olivier/Dropbox/Documents/Travail/Geekeries/Python/PyCharmProjects/manuskript/test-projects/IMPORTS/End Plan 2.opml")
)
############################################################################ ############################################################################
# Combobox / Formats # Combobox / Formats
@ -108,14 +106,18 @@ class importerDialog(QWidget, Ui_importer):
self.lblFileName.setText(os.path.basename(fileName)) self.lblFileName.setText(os.path.basename(fileName))
self.lblFileName.setToolTip(fileName) self.lblFileName.setToolTip(fileName)
ext = os.path.splitext(fileName)[1] ext = os.path.splitext(fileName)[1]
icon = None
if ext and ext in self.formatsIcon: if ext and ext in self.formatsIcon:
icon = QIcon.fromTheme(self.formatsIcon[ext]) icon = QIcon.fromTheme(self.formatsIcon[ext])
elif os.path.isdir(fileName): elif os.path.isdir(fileName):
icon = QIcon.fromTheme("folder") icon = QIcon.fromTheme("folder")
#self.lblIcon.setVisible(True) if icon:
h = self.lblFileName.height() self.lblIcon.setVisible(True)
self.lblIcon.setPixmap(icon.pixmap(h, h)) h = self.lblFileName.height()
self.lblIcon.setPixmap(icon.pixmap(h, h))
else:
self.lblIcon.hide()
else: else:
self.fileName = None self.fileName = None