1 | """ |
---|
2 | A Styles is a collection of PropertySets that can be applied to a particular RTF element. |
---|
3 | |
---|
4 | At present there are only two, Text and Paragraph but ListStyles will be added soon too. |
---|
5 | |
---|
6 | |
---|
7 | """ |
---|
8 | |
---|
9 | from .PropertySets import * |
---|
10 | |
---|
11 | class TextStyle : |
---|
12 | def __init__( self, text_props, name=None, shading_props=None ) : |
---|
13 | self.SetTextPropertySet ( text_props ) |
---|
14 | self.SetName ( name ) |
---|
15 | self.SetShadingPropertySet( shading_props ) |
---|
16 | |
---|
17 | def Copy( self ) : |
---|
18 | return deepcopy( self ) |
---|
19 | |
---|
20 | def SetName( self, value ) : |
---|
21 | self.Name = value |
---|
22 | return self |
---|
23 | |
---|
24 | def SetTextPropertySet( self, value ) : |
---|
25 | assert isinstance( value, TextPropertySet ) |
---|
26 | self.TextPropertySet = value |
---|
27 | return self |
---|
28 | |
---|
29 | def SetShadingPropertySet( self, value ) : |
---|
30 | assert value is None or isinstance( value, ShadingPropertySet ) |
---|
31 | self.ShadingPropertySet = value or ShadingPropertySet() |
---|
32 | return self |
---|
33 | |
---|
34 | class ParagraphStyle : |
---|
35 | def __init__( self, name, text_style, paragraph_props=None, frame_props=None, shading_props=None ) : |
---|
36 | |
---|
37 | # A style must have Font and a Font Size but the Text property set doesn't |
---|
38 | # make these mandatory so that they can be used for overrides so at this point |
---|
39 | # we need to make sure that that we have these values set |
---|
40 | if not text_style.TextPropertySet.Font : raise Exception( 'Paragraph Styles must have a Font specified.' ) |
---|
41 | if not text_style.TextPropertySet.Size : raise Exception( 'Paragraph Styles must have a Font Size specified.' ) |
---|
42 | |
---|
43 | self.SetName ( name ) |
---|
44 | self.SetTextStyle ( text_style ) |
---|
45 | self.SetParagraphPropertySet( paragraph_props ) |
---|
46 | self.SetFramePropertySet ( frame_props ) |
---|
47 | self.SetShadingPropertySet ( shading_props ) |
---|
48 | |
---|
49 | self.SetBasedOn( None ) |
---|
50 | self.SetNext ( None ) |
---|
51 | |
---|
52 | def Copy( self ) : |
---|
53 | return deepcopy( self ) |
---|
54 | |
---|
55 | def SetName( self, value ) : |
---|
56 | self.Name = value |
---|
57 | return self |
---|
58 | |
---|
59 | def SetTextStyle( self, value ) : |
---|
60 | assert isinstance( value, TextStyle ) |
---|
61 | self.TextStyle = value |
---|
62 | return self |
---|
63 | |
---|
64 | def SetParagraphPropertySet( self, value ) : |
---|
65 | assert value is None or isinstance( value, ParagraphPropertySet ) |
---|
66 | self.ParagraphPropertySet = value or ParagraphPropertySet() |
---|
67 | return self |
---|
68 | |
---|
69 | def SetFramePropertySet( self, value ) : |
---|
70 | assert value is None or isinstance( value, FramePropertySet ) |
---|
71 | self.FramePropertySet = value or FramePropertySet() |
---|
72 | return self |
---|
73 | |
---|
74 | def SetShadingPropertySet( self, value ) : |
---|
75 | """Set the background shading for the paragraph.""" |
---|
76 | |
---|
77 | assert value is None or isinstance( value, ShadingPropertySet ) |
---|
78 | self.ShadingPropertySet = value or ShadingPropertySet() |
---|
79 | return self |
---|
80 | |
---|
81 | def SetBasedOn( self, value ) : |
---|
82 | """Set the Paragraph Style that this one is based on.""" |
---|
83 | |
---|
84 | assert not value or isinstance( value, ParagraphStyle ) |
---|
85 | self.BasedOn = value |
---|
86 | return self |
---|
87 | |
---|
88 | def SetNext( self, value ) : |
---|
89 | """Set the Paragraph Style that should follow this one.""" |
---|
90 | |
---|
91 | assert not value or isinstance( value, ParagraphStyle ) |
---|
92 | self.Next = value |
---|
93 | return self |
---|
94 | |
---|