mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-10 07:52:35 +12:00
Adds: OPML import with preview (using @camstevenson's importer) #200
This commit is contained in:
parent
fb50d42348
commit
a29eddabea
|
@ -6,7 +6,7 @@ from manuskript.importer.markdownImporter import markdownImporter
|
|||
from manuskript.importer.opmlImporter import opmlImporter
|
||||
|
||||
importers = [
|
||||
markdownImporter,
|
||||
#markdownImporter,
|
||||
opmlImporter,
|
||||
folderImporter,
|
||||
#folderImporter,
|
||||
]
|
||||
|
|
|
@ -8,5 +8,5 @@ class markdownImporter(abstractImporter):
|
|||
|
||||
name = "Markdown"
|
||||
description = ""
|
||||
fileFormat = "Markdown files (*.md; *.txt; *)"
|
||||
fileFormat = "Markdown files (*.md *.txt *)"
|
||||
icon = "text-x-markdown"
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue