95 lines
3.2 KiB
Python
95 lines
3.2 KiB
Python
|
"""
|
||
|
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
|
||
|
|