B
    j@5\1                 @   sN  d Z ddlmZ yddlmZ W n ek
r8   eZY nX ddlmZ dd Z	G dd de
ZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZeZeZeZeZeZeZeZd#S )$aI  
PropertySets group common attributes together, each property set is used to control a specific part of the rendering.

PropertySets can be used in different elements of the document.

For example the FramePropertySet is used in paragraphs, tables, cells, etc.

The TextPropertySet can be used for text or in a Paragraph Style.

    )object)
StringType)deepcopyc             C   s$   | rt | tkst| dd} | S )N  )typer   AssertionErrorreplace)value r   1lib/python3.7/site-packages/PyRTF/PropertySets.pyMakeAttributeName   s    r   c                   s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	AttributedListNc                s&   t t|   || _t t| j| _d S )N)superr   __init__AcceptedTypeappend_append)selfZaccepted_type)	__class__r   r   r      s    zAttributedList.__init__c             G   sX   xR|D ]J}| j r t|| j s t| | t|dd }|rt|j}t| || qW d S )NName)r   
isinstancer   r   getattrr   r   setattr)r   valuesr
   namer   r   r   r   "   s    
 

zAttributedList.appendc             C   s   |   }|j| d d    |S )N)r   r   )r   memoresultr   r   r   __deepcopy__-   s    zAttributedList.__deepcopy__)N)__name__
__module____qualname__r   r   r   __classcell__r   r   )r   r   r      s   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Colourc             C   s,   |  | | | | | | | d S )N)SetNameSetRedSetGreenSetBlue)r   r   ZredZgreenZbluer   r   r   r   3   s    


zColour.__init__c             C   s
   || _ | S )N)r   )r   r
   r   r   r   r$   9   s    zColour.SetNamec             C   s
   || _ | S )N)ZRed)r   r
   r   r   r   r%   =   s    zColour.SetRedc             C   s
   || _ | S )N)ZGreen)r   r
   r   r   r   r&   A   s    zColour.SetGreenc             C   s
   || _ | S )N)ZBlue)r   r
   r   r   r   r'   E   s    zColour.SetBlueN)r   r    r!   r   r$   r%   r&   r'   r   r   r   r   r#   2   s
   r#   c                   s   e Zd Z fddZ  ZS )Coloursc                s   t t| t d S )N)r   r(   r   r#   )r   )r   r   r   r   J   s    zColours.__init__)r   r    r!   r   r"   r   r   )r   r   r(   I   s   r(   c               @   sF   e Zd ZdddZdd Zdd Zd	d
 Zdd Zdd Zdd Z	dS )Fontr   Nc             C   s@   |  | | | | | | | | | | | d S )N)r$   	SetFamilySetCharacterSetSetPitch	SetPanoseSetAlternate)r   r   ZfamilyZcharacter_setZpitchZpanoseZ	alternater   r   r   r   N   s    




zFont.__init__c             C   s
   || _ | S )N)r   )r   r
   r   r   r   r$   V   s    zFont.SetNamec             C   s
   || _ | S )N)ZFamily)r   r
   r   r   r   r*   Z   s    zFont.SetFamilyc             C   s
   || _ | S )N)ZCharacterSet)r   r
   r   r   r   r+   ^   s    zFont.SetCharacterSetc             C   s
   || _ | S )N)ZPitch)r   r
   r   r   r   r,   b   s    zFont.SetPitchc             C   s
   || _ | S )N)ZPanose)r   r
   r   r   r   r-   f   s    zFont.SetPanosec             C   s
   || _ | S )N)Z	Alternate)r   r
   r   r   r   r.   j   s    zFont.SetAlternate)r   NNN)
r   r    r!   r   r$   r*   r+   r,   r-   r.   r   r   r   r   r)   M   s   
r)   c                   s   e Zd Z fddZ  ZS )Fontsc                s   t t| t d S )N)r   r/   r   r)   )r   )r   r   r   r   o   s    zFonts.__init__)r   r    r!   r   r"   r   r   )r   r   r/   n   s   r/   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Paperc             C   s6   |  | | | | | | | | | d S )N)r$   SetCodeSetDescriptionSetWidth	SetHeight)r   r   codedescriptionwidthZheightr   r   r   r   s   s
    



zPaper.__init__c             C   s
   || _ | S )N)r   )r   r
   r   r   r   r$   z   s    zPaper.SetNamec             C   s
   || _ | S )N)ZCode)r   r
   r   r   r   r1   ~   s    zPaper.SetCodec             C   s
   || _ | S )N)ZDescription)r   r
   r   r   r   r2      s    zPaper.SetDescriptionc             C   s
   || _ | S )N)Width)r   r
   r   r   r   r3      s    zPaper.SetWidthc             C   s
   || _ | S )N)ZHeight)r   r
   r   r   r   r4      s    zPaper.SetHeightN)	r   r    r!   r   r$   r1   r2   r3   r4   r   r   r   r   r0   r   s   r0   c                   s   e Zd Z fddZ  ZS )Papersc                s   t t| t d S )N)r   r9   r   r0   )r   )r   r   r   r      s    zPapers.__init__)r   r    r!   r   r"   r   r   )r   r   r9      s   r9   c               @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )MarginsPropertySetNc             C   s,   |  | | | | | | | d S )N)SetTopSetLeft	SetBottomSetRight)r   topleftbottomrightr   r   r   r      s    


zMarginsPropertySet.__init__c             C   s
   || _ | S )N)Top)r   r
   r   r   r   r;      s    zMarginsPropertySet.SetTopc             C   s
   || _ | S )N)Left)r   r
   r   r   r   r<      s    zMarginsPropertySet.SetLeftc             C   s
   || _ | S )N)Bottom)r   r
   r   r   r   r=      s    zMarginsPropertySet.SetBottomc             C   s
   || _ | S )N)Right)r   r
   r   r   r   r>      s    zMarginsPropertySet.SetRight)NNNN)r   r    r!   r   r;   r<   r=   r>   r   r   r   r   r:      s
   
r:   c               @   s   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZeeeeeee	e
eeeegZdddZdd Zdd Zdd Zdd Zdd ZdS )ShadingPropertySet                        	   
         Nc             C   s,   |  | | | | | | | d S )N)
SetShadingSetForegroundSetBackground
SetPattern)r   ZshadingpatternZ
foregroundZ
backgroundr   r   r   r      s    


zShadingPropertySet.__init__c             C   s   t | j| j| j| jS )N)rG   Shading
Foreground
BackgroundPattern)r   r   r   r   r   r      s    zShadingPropertySet.__deepcopy__c             C   s
   || _ | S )N)rY   )r   r
   r   r   r   rT      s    zShadingPropertySet.SetShadingc             C   s    |d ks|| j kst|| _| S )N)PATTERNSr   r\   )r   r
   r   r   r   rW      s    zShadingPropertySet.SetPatternc             C   s   |rt |tst|| _| S )N)r   r#   r   rZ   )r   r
   r   r   r   rU      s    z ShadingPropertySet.SetForegroundc             C   s   |rt |tst|| _| S )N)r   r#   r   r[   )r   r
   r   r   r   rV      s    z ShadingPropertySet.SetBackground)NNNN)r   r    r!   Z
HORIZONTALZVERTICALZFORWARD_DIAGONALZBACKWARD_DIAGONALZVERTICAL_CROSSZDIAGONAL_CROSSZDARK_HORIZONTALZDARK_VERTICALZDARK_FORWARD_DIAGONALZDARK_BACKWARD_DIAGONALZDARK_VERTICAL_CROSSZDARK_DIAGONAL_CROSSr]   r   r   rT   rW   rU   rV   r   r   r   r   rG      s<   
rG   c               @   sd   e Zd ZdZdZdZdZdZdZdZ	eeeeeee	gZ
dd	d
Zdd Zdd Zdd Zdd ZdS )BorderPropertySetrH   rI   rJ   rK   rL   rM   rN   Nc             C   s2   |  | | |p| j | | | | d S )N)r3   SetStyleSINGLE	SetColour
SetSpacing)r   r7   ZstylecolourZspacingr   r   r   r      s    

zBorderPropertySet.__init__c             C   s
   || _ | S )N)r8   )r   r
   r   r   r   r3      s    zBorderPropertySet.SetWidthc             C   s    |d ks|| j kst|| _| S )N)STYLESr   ZStyle)r   r
   r   r   r   r_      s    zBorderPropertySet.SetStylec             C   s    |d kst |tst|| _| S )N)r   r#   r   )r   r
   r   r   r   ra      s    zBorderPropertySet.SetColourc             C   s
   || _ | S )N)ZSpacing)r   r
   r   r   r   rb     s    zBorderPropertySet.SetSpacing)NNNN)r   r    r!   r`   ZDOUBLEZSHADOWEDZDOUBLEDZDOTTEDZDASHEDZHAIRLINErd   r   r3   r_   ra   rb   r   r   r   r   r^      s   
r^   c               @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )FramePropertySetNc             C   s,   |  | | | | | | | d S )N)r;   r<   r=   r>   )r   r?   r@   rA   rB   r   r   r   r   	  s    


zFramePropertySet.__init__c             C   s    |d kst |tst|| _| S )N)r   r^   r   rC   )r   r
   r   r   r   r;     s    zFramePropertySet.SetTopc             C   s    |d kst |tst|| _| S )N)r   r^   r   rD   )r   r
   r   r   r   r<     s    zFramePropertySet.SetLeftc             C   s    |d kst |tst|| _| S )N)r   r^   r   rE   )r   r
   r   r   r   r=     s    zFramePropertySet.SetBottomc             C   s    |d kst |tst|| _| S )N)r   r^   r   rF   )r   r
   r   r   r   r>     s    zFramePropertySet.SetRight)NNNN)r   r    r!   r   r;   r<   r=   r>   r   r   r   r   re     s
   
re   c               @   sp   e Zd ZdZdZdZdZdZeeeegZdZ	dZ
dZdZdZe	e
eeegZddd	Zd
d Zdd Zdd ZdS )TabPropertySeti  rH   rI   rJ   rK   rL   Nc             C   s(   |  | | |p| j | | d S )N)r3   SetAlignmentLEFT	SetLeader)r   r7   	alignmentZleaderr   r   r   r   3  s    
zTabPropertySet.__init__c             C   s
   || _ | S )N)r8   )r   r
   r   r   r   r3   8  s    zTabPropertySet.SetWidthc             C   s   || j kst|| _| S )N)	ALIGNMENTr   	Alignment)r   r
   r   r   r   rg   <  s    zTabPropertySet.SetAlignmentc             C   s   |r|| j kst|| _| S )N)LEADERSr   ZLeader)r   r
   r   r   r   ri   A  s    zTabPropertySet.SetLeader)NNN)r   r    r!   ZDEFAULT_WIDTHrh   RIGHTCENTERZDECIMALrk   ZDOTSZHYPHENSZ	UNDERLINEZ
THICK_LINEZ
EQUAL_SIGNrm   r   r3   rg   ri   r   r   r   r   rf   #  s    
rf   c               @   s   e Zd Zd ddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )!TextPropertySetNc	       	      C   s   |  | | | | |pd | |p,d | |p:d | | | | | d | d | 	d | 
d | | d S )NF)SetFontSetSizeSetBold	SetItalicSetUnderlinera   SetFrameSetStrikeThroughSetDottedUnderlineSetDoubleUnderlineSetWordUnderlineSetExpansion)	r   ZfontsizeZboldZitalicZ	underlinerc   frameZ	expansionr   r   r   r   H  s    







zTextPropertySet.__init__c             C   s   t | S )N)r   )r   r   r   r   CopyY  s    zTextPropertySet.Copyc          
   C   s8   t | j| j| j| j| j| jt| j|}|	| j
 |S )N)rp   r)   SizeBoldItalic	Underliner#   r   Framerw   StrikeThrough)r   r   r   r   r   r   r   \  s    zTextPropertySet.__deepcopy__c             C   s   |rt |tst|| _| S )N)r   r)   r   )r   r
   r   r   r   rq   j  s    zTextPropertySet.SetFontc             C   s
   || _ | S )N)r   )r   r
   r   r   r   rr   o  s    zTextPropertySet.SetSizec             C   s   d| _ |rd| _ | S )NFT)r   )r   r
   r   r   r   rs   s  s     zTextPropertySet.SetBoldc             C   s   d| _ |rd| _ | S )NFT)r   )r   r
   r   r   r   rt   x  s     zTextPropertySet.SetItalicc             C   s   d| _ |rd| _ | S )NFT)r   )r   r
   r   r   r   ru   }  s     zTextPropertySet.SetUnderlinec             C   s    |d kst |tst|| _| S )N)r   r#   r   )r   r
   r   r   r   ra     s    zTextPropertySet.SetColourc             C   s    |d kst |tst|| _| S )N)r   r^   r   r   )r   r
   r   r   r   rv     s    zTextPropertySet.SetFramec             C   s   d| _ |rd| _ | S )NFT)r   )r   r
   r   r   r   rw     s     z TextPropertySet.SetStrikeThroughc             C   s   d| _ |rd| _ | S )NFT)ZDottedUnderline)r   r
   r   r   r   rx     s     z"TextPropertySet.SetDottedUnderlinec             C   s   d| _ |rd| _ | S )NFT)ZDoubleUnderline)r   r
   r   r   r   ry     s     z"TextPropertySet.SetDoubleUnderlinec             C   s   d| _ |rd| _ | S )NFT)ZWordUnderline)r   r
   r   r   r   rz     s     z TextPropertySet.SetWordUnderlinec             C   s
   || _ | S )N)Z	Expansion)r   r
   r   r   r   r{     s    zTextPropertySet.SetExpansion)NNNNNNNN)r   r    r!   r   r~   r   rq   rr   rs   rt   ru   ra   rv   rw   rx   ry   rz   r{   r   r   r   r   rp   F  s   
rp   c               @   s   e Zd ZdZdZdZdZdZeeeeegZdddZ	d	d
 Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )ParagraphPropertySetrH   rI   rJ   rK   rL   Nc	       	      C   sz   |  |p| j | | | | g | _|r8| j|  | |pBd  | |pPd  | |p^d  | 	| | 
d  d S )N)rg   rh   SetSpaceBeforeSetSpaceAfterTabsSetTabsSetFirstLineIndentSetLeftIndentSetRightIndentSetPageBreakBeforeSetSpaceBetweenLines)	r   rj   Zspace_beforeZspace_afterZtabsZfirst_line_indentZleft_indentZright_indentZpage_break_beforer   r   r   r     s    

 

zParagraphPropertySet.__init__c             C   s   t | S )N)r   )r   r   r   r   r~     s    zParagraphPropertySet.Copyc             C   s"   |r|| j kst|p| j| _| S )N)rk   r   rh   rl   )r   r
   r   r   r   rg     s    z!ParagraphPropertySet.SetAlignmentc             C   s
   || _ | S )N)ZSpaceBefore)r   r
   r   r   r   r     s    z#ParagraphPropertySet.SetSpaceBeforec             C   s
   || _ | S )N)Z
SpaceAfter)r   r
   r   r   r   r     s    z"ParagraphPropertySet.SetSpaceAfterc             G   s
   || _ | S )N)r   )r   paramsr   r   r   r     s    zParagraphPropertySet.SetTabsc             C   s
   || _ | S )N)ZFirstLineIndent)r   r
   r   r   r   r     s    z'ParagraphPropertySet.SetFirstLineIndentc             C   s
   || _ | S )N)Z
LeftIndent)r   r
   r   r   r   r     s    z"ParagraphPropertySet.SetLeftIndentc             C   s
   || _ | S )N)ZRightIndent)r   r
   r   r   r   r     s    z#ParagraphPropertySet.SetRightIndentc             C   s
   || _ | S )N)ZSpaceBetweenLines)r   r
   r   r   r   r     s    z)ParagraphPropertySet.SetSpaceBetweenLinesc             C   s   d| _ |rd| _ | S )NFT)ZPageBreakBefore)r   r
   r   r   r   r     s     z'ParagraphPropertySet.SetPageBreakBefore)NNNNNNNN)r   r    r!   rh   rn   ro   ZJUSTIFYZ
DISTRIBUTErk   r   r~   rg   r   r   r   r   r   r   r   r   r   r   r   r   r     s"   
r   N) __doc__builtinsr   typesr   ImportErrorstrcopyr   r   listr   r#   r(   r)   r/   r0   r9   r:   rG   r^   re   rf   rp   r   Z	MarginsPSZ	ShadingPSZBorderPSZFramePSZTabPSZTextPSZParagraphPSr   r   r   r   <module>
   s8   
!:"#^B