From 5d88f7db876902fcd9a9eff28ef1f5003ea02925 Mon Sep 17 00:00:00 2001 From: Axel Voitier Date: Mon, 18 May 2015 20:54:48 +0200 Subject: [PATCH] Add support for labels. --- xmind/core/const.py | 2 ++ xmind/core/labels.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ xmind/core/topic.py | 29 +++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 xmind/core/labels.py diff --git a/xmind/core/const.py b/xmind/core/const.py index a9b27d1..c13463a 100644 --- a/xmind/core/const.py +++ b/xmind/core/const.py @@ -38,6 +38,8 @@ TAG_POSITION = "position" TAG_CHILDREN = "children" TAG_NOTES = "notes" +TAG_LABELS = "labels" +TAG_LABEL = "label" TAG_RELATIONSHIP = "relationship" TAG_RELATIONSHIPS = "relationships" TAG_MARKERREFS = "marker-refs" diff --git a/xmind/core/labels.py b/xmind/core/labels.py new file mode 100644 index 0000000..c86e303 --- /dev/null +++ b/xmind/core/labels.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +#-*- coding: utf-8 -*- + +""" + xmind.core.labels + ~~~~~~~~~~~~~~~~ + + :copyright: + :license: + +""" + +__author__ = "axel.voitier@gmail.com " + +from . import const + +from .mixin import TopicMixinElement + + +class LabelsElement(TopicMixinElement): + TAG_NAME = const.TAG_LABELS + + def __init__(self, node=None, ownerTopic=None): + super(LabelsElement, self).__init__(node, ownerTopic) + + +class LabelElement(TopicMixinElement): + TAG_NAME = const.TAG_LABEL + + def __init__(self, node=None, ownerTopic=None): + super(LabelElement, self).__init__(node, ownerTopic) + + def getLabel(self): + return self.getTextContent() + + def setLabel(self, label_text): + self.setTextContent(label_text) + + +def main(): + pass + +if __name__ == '__main__': + main() diff --git a/xmind/core/topic.py b/xmind/core/topic.py index 9b011cd..fc482b4 100644 --- a/xmind/core/topic.py +++ b/xmind/core/topic.py @@ -21,6 +21,7 @@ from .markerref import MarkerRefElement from .markerref import MarkerRefsElement from .markerref import MarkerId +from .labels import LabelsElement, LabelElement from .. import utils @@ -53,6 +54,9 @@ def _get_title(self): def _get_markerrefs(self): return self.getFirstChildNodeByTagName(const.TAG_MARKERREFS) + def _get_labels(self): + return self.getFirstChildNodeByTagName(const.TAG_LABELS) + def _get_position(self): return self.getFirstChildNodeByTagName(const.TAG_POSITION) @@ -134,6 +138,31 @@ def addMarker(self, markerId): mre.setMarkerId(markerId) tmp.appendChild(mre) return mre + + def getLabels(self): + labels_ = self._get_labels() + if not labels_: + return None + tmp = LabelsElement(labels_, self.getOwnerWorkbook()) + labels = tmp.getChildNodesByTagName(const.TAG_LABEL) + label_list = [] + if labels: + for i in labels: + label_list.append(LabelElement(i, self.getOwnerWorkbook())) + return label_list + + def addLabel(self, label_text): + labels_ = self._get_labels() + if not labels_: + tmp = LabelsElement(None, self.getOwnerWorkbook()) + self.appendChild(tmp) + else: + tmp = LabelsElement(labels_, self.getOwnerWorkbook()) + + label = LabelElement(None, self.getOwnerWorkbook()) + label.setLabel(label_text) + tmp.appendChild(label) + return label def setFolded(self): self.setAttribute(const.ATTR_BRANCH, const.VAL_FOLDED)