From a29eddabeaf34b9def74eaee807ddad2e79eb108 Mon Sep 17 00:00:00 2001 From: Olivier Keshavjee Date: Tue, 7 Nov 2017 15:33:18 +0100 Subject: [PATCH] Adds: OPML import with preview (using @camstevenson's importer) #200 --- manuskript/importer/__init__.py | 4 ++-- manuskript/importer/markdownImporter.py | 2 +- manuskript/importer/opmlImporter.py | 12 ++++++----- manuskript/ui/importers/generalSettings_ui.py | 2 ++ manuskript/ui/importers/generalSettings_ui.ui | 9 ++++++++- manuskript/ui/importers/importer.py | 20 ++++++++++--------- 6 files changed, 31 insertions(+), 18 deletions(-) diff --git a/manuskript/importer/__init__.py b/manuskript/importer/__init__.py index d2f0bc1..8ca6230 100644 --- a/manuskript/importer/__init__.py +++ b/manuskript/importer/__init__.py @@ -6,7 +6,7 @@ from manuskript.importer.markdownImporter import markdownImporter from manuskript.importer.opmlImporter import opmlImporter importers = [ - markdownImporter, + #markdownImporter, opmlImporter, - folderImporter, + #folderImporter, ] diff --git a/manuskript/importer/markdownImporter.py b/manuskript/importer/markdownImporter.py index 0a3a5cd..2567f30 100644 --- a/manuskript/importer/markdownImporter.py +++ b/manuskript/importer/markdownImporter.py @@ -8,5 +8,5 @@ class markdownImporter(abstractImporter): name = "Markdown" description = "" - fileFormat = "Markdown files (*.md; *.txt; *)" + fileFormat = "Markdown files (*.md *.txt *)" icon = "text-x-markdown" diff --git a/manuskript/importer/opmlImporter.py b/manuskript/importer/opmlImporter.py index 6bb372b..e6474f5 100644 --- a/manuskript/importer/opmlImporter.py +++ b/manuskript/importer/opmlImporter.py @@ -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: diff --git a/manuskript/ui/importers/generalSettings_ui.py b/manuskript/ui/importers/generalSettings_ui.py index a07c172..1843ee0 100644 --- a/manuskript/ui/importers/generalSettings_ui.py +++ b/manuskript/ui/importers/generalSettings_ui.py @@ -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) diff --git a/manuskript/ui/importers/generalSettings_ui.ui b/manuskript/ui/importers/generalSettings_ui.ui index 4bc2c4a..21c4f95 100644 --- a/manuskript/ui/importers/generalSettings_ui.ui +++ b/manuskript/ui/importers/generalSettings_ui.ui @@ -80,13 +80,20 @@ QToolBox::tab:selected, QToolBox::tab:hover{ + + false + Split scenes at: - + + + false + + diff --git a/manuskript/ui/importers/importer.py b/manuskript/ui/importers/importer.py index 5984fa4..915149a 100644 --- a/manuskript/ui/importers/importer.py +++ b/manuskript/ui/importers/importer.py @@ -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