source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/contrib/pyrtf/Styles.py

main
Last change on this file was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 3.2 KB
Line 
1"""
2A Styles is a collection of PropertySets that can be applied to a particular RTF element.
3
4At present there are only two, Text and Paragraph but ListStyles will be added soon too.
5
6
7"""
8
9from .PropertySets import *
10
11class 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
34class 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
Note: See TracBrowser for help on using the repository browser.