/gluon/contrib/pyrtf/Styles.py
Python | 93 lines | 59 code | 21 blank | 13 comment | 12 complexity | c88a1a94c02693bd1d69cc4ba950efd8 MD5 | raw file
- """
- A Styles is a collection of PropertySets that can be applied to a particular RTF element.
- At present there are only two, Text and Paragraph but ListStyles will be added soon too.
- """
- from PropertySets import *
- class TextStyle :
- def __init__( self, text_props, name=None, shading_props=None ) :
- self.SetTextPropertySet ( text_props )
- self.SetName ( name )
- self.SetShadingPropertySet( shading_props )
- def Copy( self ) :
- return deepcopy( self )
- def SetName( self, value ) :
- self.Name = value
- return self
- def SetTextPropertySet( self, value ) :
- assert isinstance( value, TextPropertySet )
- self.TextPropertySet = value
- return self
- def SetShadingPropertySet( self, value ) :
- assert value is None or isinstance( value, ShadingPropertySet )
- self.ShadingPropertySet = value or ShadingPropertySet()
- return self
- class ParagraphStyle :
- def __init__( self, name, text_style, paragraph_props=None, frame_props=None, shading_props=None ) :
- # A style must have Font and a Font Size but the Text property set doesn't
- # make these mandatory so that they can be used for overrides so at this point
- # we need to make sure that that we have these values set
- if not text_style.TextPropertySet.Font : raise Exception( 'Paragraph Styles must have a Font specified.' )
- if not text_style.TextPropertySet.Size : raise Exception( 'Paragraph Styles must have a Font Size specified.' )
- self.SetName ( name )
- self.SetTextStyle ( text_style )
- self.SetParagraphPropertySet( paragraph_props )
- self.SetFramePropertySet ( frame_props )
- self.SetShadingPropertySet ( shading_props )
- self.SetBasedOn( None )
- self.SetNext ( None )
- def Copy( self ) :
- return deepcopy( self )
- def SetName( self, value ) :
- self.Name = value
- return self
- def SetTextStyle( self, value ) :
- assert isinstance( value, TextStyle )
- self.TextStyle = value
- return self
- def SetParagraphPropertySet( self, value ) :
- assert value is None or isinstance( value, ParagraphPropertySet )
- self.ParagraphPropertySet = value or ParagraphPropertySet()
- return self
- def SetFramePropertySet( self, value ) :
- assert value is None or isinstance( value, FramePropertySet )
- self.FramePropertySet = value or FramePropertySet()
- return self
- def SetShadingPropertySet( self, value ) :
- """Set the background shading for the paragraph."""
- assert value is None or isinstance( value, ShadingPropertySet )
- self.ShadingPropertySet = value or ShadingPropertySet()
- return self
- def SetBasedOn( self, value ) :
- """Set the Paragraph Style that this one is based on."""
- assert not value or isinstance( value, ParagraphStyle )
- self.BasedOn = value
- return self
- def SetNext( self, value ) :
- """Set the Paragraph Style that should follow this one."""
- assert not value or isinstance( value, ParagraphStyle )
- self.Next = value
- return self