0542a9b78c
svn: r10410
203 lines
5.9 KiB
Python
203 lines
5.9 KiB
Python
#
|
|
# Gramps - a GTK+/GNOME based genealogy program
|
|
#
|
|
# Copyright (C) 2000-2007 Donald N. Allingham
|
|
#
|
|
# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
|
|
# $Id$
|
|
|
|
"""
|
|
Note class for GRAMPS.
|
|
"""
|
|
|
|
#-------------------------------------------------------------------------
|
|
#
|
|
# GRAMPS modules
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
from gen.lib.primaryobj import BasicPrimaryObject
|
|
from gen.lib.notetype import NoteType
|
|
from gen.lib.markertype import MarkerType
|
|
from gen.lib.styledtext import StyledText
|
|
|
|
#-------------------------------------------------------------------------
|
|
#
|
|
# Class for notes used throughout the majority of GRAMPS objects
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
class Note(BasicPrimaryObject):
|
|
"""Define a text note.
|
|
|
|
Starting from GRAMPS 3.1 Note object stores the text in L{StyledText}
|
|
instance, thus it can have text formatting information.
|
|
|
|
To get and set only the clear text of the note use the L{get} and L{set}
|
|
methods.
|
|
|
|
To get and set the formatted version of the Note's text use the
|
|
L{get_styledtext} and L{set_styledtext} methods.
|
|
|
|
The note may be 'preformatted' or 'flowed', which indicates that the
|
|
text string is considered to be in paragraphs, separated by newlines.
|
|
|
|
@cvar POS_<x>: Position of <x> attribute in the serialized format of
|
|
an instance.
|
|
@type POS_<x>: int
|
|
|
|
@attention: The POS_<x> class variables reflect the serialized object, they
|
|
have to be updated in case the data structure or the L{serialize} method
|
|
changes!
|
|
|
|
"""
|
|
(FLOWED, FORMATTED) = range(2)
|
|
|
|
(POS_HANDLE,
|
|
POS_ID,
|
|
POS_TEXT,
|
|
POS_FORMAT,
|
|
POS_TYPE,
|
|
POS_CHANGE,
|
|
POS_MARKER,
|
|
POS_PRIVATE,) = range(8)
|
|
|
|
def __init__(self, text=""):
|
|
"""Create a new Note object, initializing from the passed string."""
|
|
BasicPrimaryObject.__init__(self)
|
|
self.text = StyledText(text)
|
|
self.format = Note.FLOWED
|
|
self.type = NoteType()
|
|
|
|
def serialize(self):
|
|
"""Convert the object to a serialized tuple of data.
|
|
|
|
@returns: The serialized format of the instance.
|
|
@rtype: tuple
|
|
|
|
"""
|
|
return (self.handle, self.gramps_id, self.text.serialize(), self.format,
|
|
self.type.serialize(), self.change, self.marker.serialize(),
|
|
self.private)
|
|
|
|
def unserialize(self, data):
|
|
"""Convert a serialized tuple of data to an object.
|
|
|
|
@param data: The serialized format of a Note.
|
|
@type: data: tuple
|
|
|
|
"""
|
|
(self.handle, self.gramps_id, the_text, self.format,
|
|
the_type, self.change, the_marker, self.private) = data
|
|
|
|
self.text = StyledText()
|
|
self.text.unserialize(the_text)
|
|
self.marker = MarkerType()
|
|
self.marker.unserialize(the_marker)
|
|
self.type = NoteType()
|
|
self.type.unserialize(the_type)
|
|
|
|
def get_text_data_list(self):
|
|
"""Return the list of all textual attributes of the object.
|
|
|
|
@returns: The list of all textual attributes of the object.
|
|
@rtype: list
|
|
|
|
"""
|
|
return [str(self.text)]
|
|
|
|
def set(self, text):
|
|
"""Set the text associated with the note to the passed string.
|
|
|
|
@param text: The I{clear} text defining the note contents.
|
|
@type text: str
|
|
|
|
"""
|
|
self.text = StyledText(text)
|
|
|
|
def get(self):
|
|
"""Return the text string associated with the note.
|
|
|
|
@returns: The I{clear} text of the note contents.
|
|
@rtype: str
|
|
|
|
"""
|
|
return str(self.text)
|
|
|
|
def set_styledtext(self, text):
|
|
"""Set the text associated with the note to the passed string.
|
|
|
|
@param text: The I{formatted} text defining the note contents.
|
|
@type text: L{StyledText}
|
|
|
|
"""
|
|
self.text = text
|
|
|
|
def get_styledtext(self):
|
|
"""Return the text string associated with the note.
|
|
|
|
@returns: The I{formatted} text of the note contents.
|
|
@rtype: L{StyledText}
|
|
|
|
"""
|
|
return self.text
|
|
|
|
def append(self, text):
|
|
"""Append the specified text to the text associated with the note.
|
|
|
|
@param text: Text string to be appended to the note.
|
|
@type text: str or L{StyledText}
|
|
|
|
"""
|
|
self.text = self.text + text
|
|
|
|
def set_format(self, format):
|
|
"""Set the format of the note to the passed value.
|
|
|
|
@param: format: The value can either indicate Flowed or Preformatted.
|
|
@type format: int
|
|
|
|
"""
|
|
self.format = format
|
|
|
|
def get_format(self):
|
|
"""Return the format of the note.
|
|
|
|
The value can either indicate Flowed or Preformatted.
|
|
|
|
@returns: 0 indicates Flowed, 1 indicates Preformated
|
|
@rtype: int
|
|
|
|
"""
|
|
return self.format
|
|
|
|
def set_type(self, the_type):
|
|
"""Set descriptive type of the Note.
|
|
|
|
@param the_type: descriptive type of the Note
|
|
@type the_type: str
|
|
|
|
"""
|
|
self.type.set(the_type)
|
|
|
|
def get_type(self):
|
|
"""Get descriptive type of the Note.
|
|
|
|
@returns: the descriptive type of the Note
|
|
@rtype: str
|
|
|
|
"""
|
|
return self.type
|