Source code for gramps.gen.lib.styledtexttag

#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2008  Zsolt Foldvari
# Copyright (C) 2013  Doug Blank <doug.blank@gmail.com>
# Copyright (C) 2017  Nick Hall
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#

"Provide formatting tag definition for StyledText."

#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
from .styledtexttagtype import StyledTextTagType
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext

#-------------------------------------------------------------------------
#
# StyledTextTag class
#
#-------------------------------------------------------------------------
[docs] class StyledTextTag: """Hold formatting information for :py:class:`.StyledText`. :py:class:`StyledTextTag` is a container class, it's attributes are directly accessed. :ivar name: Type (or name) of the tag instance. E.g. 'bold', etc. :type name: :py:class:`.StyledTextTagType` instace :ivar value: Value of the tag. E.g. color hex string for font color, etc. :type value: str or None :ivar ranges: Pointer pairs into the string, where the tag applies. :type ranges: list of (int(start), int(end)) tuples. """ def __init__(self, name=None, value=None, ranges=None): """Setup initial instance variable values. .. note:: Since :py:class:`.GrampsType` supports the instance initialization with several different base types, please note that ``name`` parameter can be int, str, unicode, tuple, or even another :py:class:`.StyledTextTagType` instance. """ self.name = StyledTextTagType(name) self.value = value if ranges is None: self.ranges = [] else: # Current use of StyledTextTag is such that a shallow copy suffices. self.ranges = ranges
[docs] def serialize(self): """Convert the object to a serialized tuple of data. :return: Serialized format of the instance. :rtype: tuple """ return (self.name.serialize(), self.value, self.ranges)
[docs] def unserialize(self, data): """Convert a serialized tuple of data to an object. :param data: Serialized format of instance variables. :type data: tuple """ (the_name, self.value, self.ranges) = data self.name = StyledTextTagType() self.name.unserialize(the_name) return self
[docs] @classmethod def get_schema(cls): """ Returns the JSON Schema for this class. :returns: Returns a dict containing the schema. :rtype: dict """ return { "type": "object", "title": _("Tag"), "properties": { "_class": {"enum": [cls.__name__]}, "name": StyledTextTagType.get_schema(), "value": {"type": ["null", "string", "integer"], "title": _("Value")}, "ranges": {"type": "array", "items": {"type": "array", "items": {"type": "integer"}, "minItems": 2, "maxItems": 2}, "title": _("Ranges")} } }