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
importers = [
markdownImporter,
#markdownImporter,
opmlImporter,
folderImporter,
#folderImporter,
]

View file

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

View file

@ -12,7 +12,7 @@ class opmlImporter(abstractImporter):
name = "OPML"
description = ""
fileFormat = "OPML Files (*.opml)"
fileFormat = "OPML Files (*.opml *.xml)"
icon = "text-x-opml+xml"
@classmethod
@ -23,15 +23,16 @@ class opmlImporter(abstractImporter):
ret = False
try:
with open(filePath, 'r') as opmlFile:
opmlContent = cls.saveNewlines(opmlFile.read())
with open(filePath, 'rb') as opmlFile:
#opmlContent = cls.saveNewlines(opmlFile.read())
opmlContent = opmlFile.read()
except:
QMessageBox.critical(settingsWidget,
qApp.translate("Import", "OPML Import"),
qApp.translate("Import", "File open failed."))
return None
parsed = ET.fromstring(bytes(opmlContent, 'utf-8'))
parsed = ET.fromstring(opmlContent)
opmlNode = parsed
bodyNode = opmlNode.find("body")
@ -65,7 +66,8 @@ class opmlImporter(abstractImporter):
body = ""
note = underElement.get('_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')
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.setObjectName("formLayout_4")
self.chkGeneralSplitScenes = QtWidgets.QCheckBox(self.general)
self.chkGeneralSplitScenes.setEnabled(False)
self.chkGeneralSplitScenes.setObjectName("chkGeneralSplitScenes")
self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.chkGeneralSplitScenes)
self.txtGeneralSplitScenes = QtWidgets.QLineEdit(self.general)
self.txtGeneralSplitScenes.setEnabled(False)
self.txtGeneralSplitScenes.setObjectName("txtGeneralSplitScenes")
self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.txtGeneralSplitScenes)
self.chkGeneralTrimTitles = QtWidgets.QCheckBox(self.general)

View file

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

View file

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