Source

mekk.xmind / README.txt

.. -*- mode: rst; coding: utf-8 -*-

==========
mekk.xmind
==========

``mekk.xmind`` is a pure-Python handler for XMind_ mind-map files.
It can be used to:

- generate XMind_ mind-maps from scratch (for example to visualize
  some data as a mind-map),
- modify existing ``.xmind`` files,
- parse existing ``.xmind`` files and analyze their content.

Examples
========

Creating mind-map::

    from mekk.xmind import XMindDocument
    
    OUTPUT = "test.xmind"
    
    xmind = XMindDocument.create(u"First sheet title", u"Root subject")
    first_sheet = xmind.get_first_sheet()
    root_topic = first_sheet.get_root_topic()
    
    root_topic.add_subtopic(u"First item")
    root_topic.add_subtopic(u"Second item")
    t = root_topic.add_subtopic(u"Third item")
    t.add_subtopic(u"Second level - 1")
    t.add_subtopic(u"Second level - 2")
    root_topic.add_subtopic(u"Detached topic", detached = True)
    t.add_subtopic(u"Another detached", detached = True)
    t.add_marker("flag-red")
    root_topic.add_subtopic(u"Link example").set_link("http://mekk.waw.pl")
    root_topic.add_subtopic(u"Attachment example").set_attachment(
        file("map_creator.py").read(), ".txt")
    root_topic.add_subtopic(u"With note").set_note(u"""This is just some dummy note.""")
    
    MARKER_CODE = "40g6170ftul9bo17p1r31nqk2a"
    XMP = "../../py_mekk_nozbe2xmind/src/mekk/nozbe2xmind/NozbeIconsMarkerPackage.xmp"
    root_topic.add_subtopic(u"With non-standard marker").add_marker(MARKER_CODE)
    
    xmind.embed_markers(XMP)
    
    xmind.save(OUTPUT)
    
    #xmind.pretty_print()
    
    print "Saved to", OUTPUT

Note: while examples above use ascii, unicode is fully supported.

Parsing mind map::

    from mekk.xmind import XMindDocument
    
    xmind = XMindDocument.open("test.xmind")
    
    sheet = xmind.get_first_sheet()
    print "Sheet title: ", sheet.get_title()
    
    root = sheet.get_root_topic()
    print "Root title: ", root.get_title()
    print "Root note: ", root.get_note()
    
    for topic in root.get_subtopics():
        print "* ", topic.get_title()
        print "   label: ", topic.get_label()
        print "   link: ", topic.get_link()
        print "   markers: ", list(topic.get_markers())
        # topic.get_subtopics()
    
etc.

To modify, just parse existing document, find items to modify and
change them as appropriate, then save.

Development
===========

The code is tracked using Mercurial. Repository can be found on
http://bitbucket.org/Mekk/mekk.xmind/.

Use the same place to report bugs, suggest improvements and offer
patches.

.. _XMind: http://xmind.net

License
=======

mekk.xmind is dual-licensed under Artistic License 2.0 and Mozilla Public
License 1.1. The complete license texts can be found in Artistic-2.0.txt
and MPL-1.1.txt.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.