Checkpoint: OPML import

This commit is contained in:
Cam Stevenson 2017-10-15 17:25:09 -04:00
parent a6123292ae
commit 982a96021b
4 changed files with 58 additions and 3 deletions

View file

View file

@ -0,0 +1,44 @@
#!/usr/bin/env python
# --!-- coding: utf8 --!--
# Import/export outline cards in OPML format
from manuskript.models.outlineModel import outlineItem
from manuskript.enums import Outline
import xmltodict
from manuskript.functions import mainWindow
import xml.etree.ElementTree as ET
def handleCard(_, card):
print(card['title'])
def exportOpml():
return True
def importOpml(opmlFilePath):
with open(opmlFilePath, 'r') as opmlFile:
opmlContent = opmlFile.read()
mw = mainWindow()
mdl = mw.mdlOutline
dict = xmltodict.parse(opmlContent, item_callback=handleCard)
opmlNode = dict['opml']
bodyNode = opmlNode['body']
outline = bodyNode['outline']
for element in outline:
if '@text' in element:
card = outlineItem(parent=mdl.rootItem)
card.title = element['@text']
card.ID = card.title
card.path = ''
if '@_note' in element:
card.setData(Outline.text.value, element['@_note'])
return True

View file

@ -26,6 +26,7 @@ from manuskript.ui.mainWindow import Ui_MainWindow
from manuskript.ui.tools.frequencyAnalyzer import frequencyAnalyzer
from manuskript.ui.views.outlineDelegates import outlineCharacterDelegate
from manuskript.ui.views.plotDelegate import plotDelegate
from manuskript.import_export import opml as opmlInputExport
# Spellcheck support
from manuskript.ui.views.textEditView import textEditView
@ -94,13 +95,14 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.cmbSummary.currentIndexChanged.emit(0)
# Main Menu
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
for i in [self.actSave, self.actSaveAs, self.actImport, self.actCloseProject,
self.menuEdit, self.menuView, self.menuTools, self.menuHelp]:
i.setEnabled(False)
self.actOpen.triggered.connect(self.welcome.openFile)
self.actSave.triggered.connect(self.saveDatas)
self.actSaveAs.triggered.connect(self.welcome.saveAsFile)
self.actImport.triggered.connect(self.importOutline)
self.actCompile.triggered.connect(self.doCompile)
self.actLabels.triggered.connect(self.settingsLabel)
self.actStatus.triggered.connect(self.settingsStatus)
@ -386,7 +388,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# UI
for i in [self.actOpen, self.menuRecents]:
i.setEnabled(False)
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
for i in [self.actSave, self.actSaveAs, self.actImport, self.actCloseProject,
self.menuEdit, self.menuView, self.menuTools, self.menuHelp]:
i.setEnabled(True)
@ -429,7 +431,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# UI
for i in [self.actOpen, self.menuRecents]:
i.setEnabled(True)
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
for i in [self.actSave, self.actSaveAs, self.actImport, self.actCloseProject,
self.menuEdit, self.menuView, self.menuTools, self.menuHelp]:
i.setEnabled(False)
@ -548,6 +550,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.statusBar().showMessage(
self.tr("Project {} loaded with some errors.").format(project), 5000)
def importOutline(self, project):
opmlInputExport.importOpml('/home/cstevenson/End Plan 2.opml')
return True
###############################################################################
# MAIN CONNECTIONS
###############################################################################

View file

@ -1123,6 +1123,9 @@ class Ui_MainWindow(object):
self.actSaveAs.setObjectName("actSaveAs")
self.actQuit = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("application-exit")
self.actImport = QtWidgets.QAction(MainWindow)
self.actImport.setIcon(icon)
self.actImport.setObjectName("actImport")
self.actQuit.setIcon(icon)
self.actQuit.setObjectName("actQuit")
self.actShowHelp = QtWidgets.QAction(MainWindow)
@ -1175,6 +1178,7 @@ class Ui_MainWindow(object):
self.menuFile.addAction(self.menuRecents.menuAction())
self.menuFile.addAction(self.actSave)
self.menuFile.addAction(self.actSaveAs)
self.menuFile.addAction(self.actImport)
self.menuFile.addAction(self.actCloseProject)
self.menuFile.addSeparator()
self.menuFile.addAction(self.actCompile)
@ -1316,6 +1320,7 @@ class Ui_MainWindow(object):
self.actSave.setShortcut(_translate("MainWindow", "Ctrl+S"))
self.actSaveAs.setText(_translate("MainWindow", "Sa&ve as..."))
self.actSaveAs.setShortcut(_translate("MainWindow", "Ctrl+Shift+S"))
self.actImport.setText("Import")
self.actQuit.setText(_translate("MainWindow", "&Quit"))
self.actQuit.setShortcut(_translate("MainWindow", "Ctrl+Q"))
self.actShowHelp.setText(_translate("MainWindow", "&Show help texts"))