Source code for gramps.gen.plug.docgen.tablestyle

#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2007  Donald N. Allingham
# Copyright (C) 2002       Gary Shao
# Copyright (C) 2007       Brian G. Matherly
# Copyright (C) 2009       Benny Malengier
# Copyright (C) 2009       Gary Burton
#
# 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.
#

#-------------------------------------------------------------------------
#
# standard python modules
#
#-------------------------------------------------------------------------

#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------

#-------------------------------------------------------------------------
#
# set up logging
#
#-------------------------------------------------------------------------
import logging
log = logging.getLogger(".tablestyle")

#------------------------------------------------------------------------
#
# TableStyle
#
#------------------------------------------------------------------------
[docs]class TableStyle(object): """ Specifies the style or format of a table. The TableStyle contains the characteristics of table width (in percentage of the full width), the number of columns, and the width of each column as a percentage of the width of the table. """ def __init__(self, obj=None): """ Create a new TableStyle object, with the values initialized to empty, with allocating space for up to 100 columns. :param obj: if not None, then the object created gets is attributes from the passed object instead of being initialized to empty. """ if obj: self.width = obj.width self.columns = obj.columns self.colwid = obj.colwid[:] else: self.width = 0 self.columns = 0 self.colwid = [ 0 ] * 100
[docs] def set_width(self, width): """ Set the width of the table in terms of percent of the available width """ self.width = width
[docs] def get_width(self): """ Return the specified width as a percentage of the available space """ return self.width
[docs] def set_columns(self, columns): """ Set the number of columns. :param columns: number of columns that should be used. """ self.columns = columns
[docs] def get_columns(self): """ Return the number of columns """ return self.columns
[docs] def set_column_widths(self, clist): """ Set the width of all the columns at once, taking the percentages from the passed list. """ self.columns = len(clist) for i in range(self.columns): self.colwid[i] = clist[i]
[docs] def set_column_width(self, index, width): """ Set the width of a specified column to the specified width. :param index: column being set (index starts at 0) :param width: percentage of the table width assigned to the column """ self.colwid[index] = width
[docs] def get_column_width(self, index): """ Return the column width of the specified column as a percentage of the entire table width. :param index: column to return (index starts at 0) """ return self.colwid[index] #------------------------------------------------------------------------ # # TableCellStyle # #------------------------------------------------------------------------
[docs]class TableCellStyle(object): """ Defines the style of a particular table cell. Characteristics are: right border, left border, top border, bottom border, and padding. """ def __init__(self, obj=None): """ Create a new TableCellStyle instance. :param obj: if not None, specifies that the values should be copied from the passed object instead of being initialized to empty. """ if obj: self.rborder = obj.rborder self.lborder = obj.lborder self.tborder = obj.tborder self.bborder = obj.bborder self.padding = obj.padding self.longlist = obj.longlist else: self.rborder = 0 self.lborder = 0 self.tborder = 0 self.bborder = 0 self.padding = 0 self.longlist = 0
[docs] def set_padding(self, val): "Return the cell padding in centimeters" self.padding = val
[docs] def set_borders(self, val): """ Defines if a border is used :param val: if True, a border is used, if False, it is not """ self.rborder = val self.lborder = val self.tborder = val self.bborder = val
[docs] def set_right_border(self, val): """ Defines if a right border in used :param val: if True, a right border is used, if False, it is not """ self.rborder = val
[docs] def set_left_border(self, val): """ Defines if a left border in used :param val: if True, a left border is used, if False, it is not """ self.lborder = val
[docs] def set_top_border(self, val): """ Defines if a top border in used :param val: if True, a top border is used, if False, it is not """ self.tborder = val
[docs] def set_bottom_border(self, val): """ Defines if a bottom border in used :param val: if 1, a bottom border is used, if 0, it is not """ self.bborder = val
[docs] def set_longlist(self, val): self.longlist = val
[docs] def get_padding(self): "Return the cell padding in centimeters" return self.padding
[docs] def get_right_border(self): "Return 1 if a right border is requested" return self.rborder
[docs] def get_left_border(self): "Return 1 if a left border is requested" return self.lborder
[docs] def get_top_border(self): "Return 1 if a top border is requested" return self.tborder
[docs] def get_bottom_border(self): "Return 1 if a bottom border is requested" return self.bborder
[docs] def get_longlist(self): return self.longlist