mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-06-01 18:49:38 +12:00
Checkpoint: OPML import
This commit is contained in:
parent
a6123292ae
commit
982a96021b
0
manuskript/import_export/__init__.py
Normal file
0
manuskript/import_export/__init__.py
Normal file
44
manuskript/import_export/opml.py
Normal file
44
manuskript/import_export/opml.py
Normal 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
|
|
@ -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
|
||||
###############################################################################
|
||||
|
|
|
@ -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"))
|
||||
|
|
Loading…
Reference in a new issue