mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-20 04:42:26 +12:00
Adds: MindMap import format #208
This commit is contained in:
parent
1aa6afc2bc
commit
7b4ba33d15
|
@ -4,6 +4,7 @@
|
||||||
from manuskript.importer.folderImporter import folderImporter
|
from manuskript.importer.folderImporter import folderImporter
|
||||||
from manuskript.importer.markdownImporter import markdownImporter
|
from manuskript.importer.markdownImporter import markdownImporter
|
||||||
from manuskript.importer.opmlImporter import opmlImporter
|
from manuskript.importer.opmlImporter import opmlImporter
|
||||||
|
from manuskript.importer.mindMapImporter import mindMapImporter
|
||||||
from manuskript.importer.pandocImporters import markdownPandocImporter, \
|
from manuskript.importer.pandocImporters import markdownPandocImporter, \
|
||||||
odtPandocImporter, ePubPandocImporter, docXPandocImporter, HTMLPandocImporter, \
|
odtPandocImporter, ePubPandocImporter, docXPandocImporter, HTMLPandocImporter, \
|
||||||
rstPandocImporter, LaTeXPandocImporter, OPMLPandocImporter
|
rstPandocImporter, LaTeXPandocImporter, OPMLPandocImporter
|
||||||
|
@ -13,6 +14,7 @@ importers = [
|
||||||
markdownImporter,
|
markdownImporter,
|
||||||
folderImporter,
|
folderImporter,
|
||||||
opmlImporter,
|
opmlImporter,
|
||||||
|
mindMapImporter,
|
||||||
|
|
||||||
# Pandoc
|
# Pandoc
|
||||||
markdownPandocImporter,
|
markdownPandocImporter,
|
||||||
|
|
80
manuskript/importer/mindMapImporter.py
Normal file
80
manuskript/importer/mindMapImporter.py
Normal 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
|
Loading…
Reference in a new issue