Adds: MindMap import format #208

This commit is contained in:
Olivier Keshavjee 2017-11-13 00:32:34 +01:00
parent 1aa6afc2bc
commit 7b4ba33d15
2 changed files with 82 additions and 0 deletions

View file

@ -4,6 +4,7 @@
from manuskript.importer.folderImporter import folderImporter
from manuskript.importer.markdownImporter import markdownImporter
from manuskript.importer.opmlImporter import opmlImporter
from manuskript.importer.mindMapImporter import mindMapImporter
from manuskript.importer.pandocImporters import markdownPandocImporter, \
odtPandocImporter, ePubPandocImporter, docXPandocImporter, HTMLPandocImporter, \
rstPandocImporter, LaTeXPandocImporter, OPMLPandocImporter
@ -13,6 +14,7 @@ importers = [
markdownImporter,
folderImporter,
opmlImporter,
mindMapImporter,
# Pandoc
markdownPandocImporter,

View file

@ -0,0 +1,80 @@
#!/usr/bin/env python
# --!-- coding: utf8 --!--
from PyQt5.QtWidgets import qApp, QMessageBox
from manuskript.models.outlineModel import outlineItem
from manuskript.enums import Outline
from lxml import etree as ET
from manuskript.functions import mainWindow
from manuskript.importer.abstractImporter import abstractImporter
class mindMapImporter(abstractImporter):
name = "Mind Map"
description = ""
fileFormat = "Mind map Files (*.mm)"
icon = "text-x-opml+xml"
@classmethod
def isValid(cls):
return True
@classmethod
def startImport(cls, filePath, parentItem, settingsWidget, fromString=None):
"""
Import/export outline cards in mind map free plane.
"""
ret = False
if filePath != "":
# We have a filePath, so we read the file
try:
with open(filePath, 'rb') as f:
content = f.read()
except:
return None
elif fromString == "":
# We have neither filePath nor fromString, so we leave
return None
else:
# We load from string
content = bytes(fromString, "utf-8")
root = ET.fromstring(content)
node = root.find("node")
items = []
if node is not None:
items.extend(cls.parseItems(node, parentItem))
ret = True
if not ret:
QMessageBox.critical(
settingsWidget,
qApp.translate("Import", "Mind Map Import"),
qApp.translate("Import", "This does not appear to be a valid Mind Map file."))
return None
return items
@classmethod
def parseItems(cls, underElement, parentItem=None):
items = []
title = underElement.get('TEXT')
if title is not None:
item = outlineItem(parent=parentItem, title=title)
items.append(item)
children = underElement.findall('node')
if children is not None and len(children) > 0:
for c in children:
items.extend(cls.parseItems(c, item))
else:
item.setData(Outline.type.value, 'md')
return items