o
    ýÞh½/  ã                   @  sü   d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZmZmZmZmZ ddlmZ erLdd	lmZ dd
lm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 dS )z@Custom element classes related to paragraph properties (CT_PPr).é    )Úannotations)ÚTYPE_CHECKINGÚCallable)ÚWD_ALIGN_PARAGRAPHÚWD_LINE_SPACINGÚWD_TAB_ALIGNMENTÚWD_TAB_LEADER)ÚCT_DecimalNumber)ÚST_SignedTwipsMeasureÚST_TwipsMeasure)ÚBaseOxmlElementÚ	OneOrMoreÚOptionalAttributeÚRequiredAttributeÚ	ZeroOrOne)ÚLength)Ú	CT_SectPr)Ú	CT_Stringc                   @  sZ   e Zd ZU dZedeƒZded< edeƒZded< ede	ƒZ
ded< ed	e	ƒZded
< dS )ÚCT_Indz6``<w:ind>`` element, specifying paragraph indentation.zw:leftúLength | NoneÚleftzw:rightÚrightzw:firstLineÚ	firstLinez	w:hangingÚhangingN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r
   r   Ú__annotations__r   r   r   r   © r   r   úU/var/www/html/premium_crap/venv/lib/python3.10/site-packages/docx/oxml/text/parfmt.pyr      s   
 ÿÿÿÿr   c                   @  s$   e Zd ZU dZedeƒZded< dS )ÚCT_Jcz7``<w:jc>`` element, specifying paragraph justification.úw:valr   ÚvalN)r   r   r   r   r   r   r#   r   r   r   r   r    r!   .   s
   
 ÿr!   c                   @  s´  e Zd ZU dZded< ded< ded< ded	< d
ed< d
ed< dZededd… d�Zded< ededd… d�Zededd… d�Z	ededd… d�Z
ededd… d�Zededd… d�Zededd… d�Zed ed!d… d�Zed"ed#d… d�Zd$ed%< ed&ed'd… d�Zed(ed)d… d�Zd*ed+< ed,ed-d… d�Z[ed[d0d1„ƒZejd\d3d1„ƒZed[d4d5„ƒZejd\d6d5„ƒZed[d7d8„ƒZejd\d9d8„ƒZed]d;d<„ƒZejd=d<„ ƒZed>d?„ ƒZejd@d?„ ƒZedAdB„ ƒZejdCdB„ ƒZedDdE„ ƒZejdFdE„ ƒZedGdH„ ƒZejdIdH„ ƒZedJdK„ ƒZejdLdK„ ƒZedMdN„ ƒZejdOdN„ ƒZedPdQ„ ƒZejdRdQ„ ƒZed^dTdU„ƒZ e jd_dWdU„ƒZ edXdY„ ƒZ!e!jdZdY„ ƒZ!dS )`ÚCT_PPrz?``<w:pPr>`` element, containing the properties for a paragraph.zCallable[[], CT_Ind]Úget_or_add_indzCallable[[], CT_String]Úget_or_add_pStylezCallable[[], CT_SectPr]Úget_or_add_sectPrzCallable[[CT_SectPr], None]Ú_insert_sectPrzCallable[[], None]Ú_remove_pStyleÚ_remove_sectPr)$úw:pStyleú
w:keepNextúw:keepLinesúw:pageBreakBeforez	w:framePrúw:widowControlúw:numPrzw:suppressLineNumberszw:pBdrzw:shdúw:tabszw:suppressAutoHyphensz	w:kinsokuz
w:wordWrapzw:overflowPunctzw:topLinePunctzw:autoSpaceDEzw:autoSpaceDNzw:bidizw:adjustRightIndzw:snapToGridú	w:spacingúw:indzw:contextualSpacingzw:mirrorIndentszw:suppressOverlapúw:jczw:textDirectionzw:textAlignmentzw:textboxTightWrapúw:outlineLvlzw:divIdz
w:cnfStylezw:rPrúw:sectPrzw:pPrChanger+   é   N©Ú
successorszCT_String | NoneÚpStyler,   é   r-   é   r.   é   r/   é   r0   é   r1   é   r2   é   r3   é   zCT_Ind | NoneÚindr4   é   r5   é   r	   Ú
outlineLvlr6   é#   Úreturnr   c                 C  s@   | j }|du r	dS |j}|durt| ƒS |j}|du rdS |S )z©A |Length| value calculated from the values of `w:ind/@w:firstLine` and
        `w:ind/@w:hanging`.

        Returns |None| if the `w:ind` child is not present.
        N)rC   r   r   r   )ÚselfrC   r   r   r   r   r    Úfirst_line_indentz   s   
zCT_PPr.first_line_indentÚvaluec                 C  sT   | j d u r|d u rd S |  ¡ }d  |_|_|d u rd S |dk r%| |_d S ||_d S )Nr   )rC   r%   r   r   ©rI   rK   rC   r   r   r    rJ   Œ   s   
c                 C  ó   | j }|du r	dS |jS )z6The value of `w:ind/@w:left` or |None| if not present.N)rC   r   ©rI   rC   r   r   r    Úind_left™   ó   zCT_PPr.ind_leftc                 C  ó(   |d u r| j d u rd S |  ¡ }||_d S ©N)rC   r%   r   rL   r   r   r    rO   ¡   ó   
c                 C  rM   )z7The value of `w:ind/@w:right` or |None| if not present.N)rC   r   rN   r   r   r    Ú	ind_right¨   rP   zCT_PPr.ind_rightc                 C  rQ   rR   )rC   r%   r   rL   r   r   r    rT   °   rS   úWD_ALIGN_PARAGRAPH | Nonec                 C  s   | j dur	| j jS dS )z=Value of the `<w:jc>` child element or |None| if not present.N)Újcr#   ©rI   r   r   r    Újc_val·   s   zCT_PPr.jc_valc                 C  ó"   |d u r
|   ¡  d S ||  ¡ _d S rR   )Ú
_remove_jcÚget_or_add_jcr#   ©rI   rK   r   r   r    rX   ¼   s   c                 C  rM   )z7The value of `keepLines/@val` or |None| if not present.N)Ú	keepLinesr#   )rI   r]   r   r   r    ÚkeepLines_valÃ   rP   zCT_PPr.keepLines_valc                 C  rY   rR   )Ú_remove_keepLinesÚget_or_add_keepLinesr#   r\   r   r   r    r^   Ë   ó   c                 C  rM   )z6The value of `keepNext/@val` or |None| if not present.N)ÚkeepNextr#   )rI   rb   r   r   r    ÚkeepNext_valÒ   rP   zCT_PPr.keepNext_valc                 C  rY   rR   )Ú_remove_keepNextÚget_or_add_keepNextr#   r\   r   r   r    rc   Ú   ra   c                 C  rM   )z=The value of `pageBreakBefore/@val` or |None| if not present.N)ÚpageBreakBeforer#   )rI   rf   r   r   r    ÚpageBreakBefore_valá   rP   zCT_PPr.pageBreakBefore_valc                 C  rY   rR   )Ú_remove_pageBreakBeforeÚget_or_add_pageBreakBeforer#   r\   r   r   r    rg   é   ra   c                 C  rM   )z;The value of `w:spacing/@w:after` or |None| if not present.N)ÚspacingÚafter©rI   rj   r   r   r    Úspacing_afterð   rP   zCT_PPr.spacing_afterc                 C  ó$   |d u r| j d u rd S ||  ¡ _d S rR   )rj   Úget_or_add_spacingrk   r\   r   r   r    rm   ø   ó   c                 C  rM   )z<The value of `w:spacing/@w:before` or |None| if not present.N)rj   Úbeforerl   r   r   r    Úspacing_beforeþ   rP   zCT_PPr.spacing_beforec                 C  rn   rR   )rj   ro   rq   r\   r   r   r    rr     rp   c                 C  rM   )z:The value of `w:spacing/@w:line` or |None| if not present.N)rj   Úlinerl   r   r   r    Úspacing_line  rP   zCT_PPr.spacing_linec                 C  rn   rR   )rj   ro   rs   r\   r   r   r    rt     rp   c                 C  s4   | j }|du r	dS |j}|du r|jdurtjS |S )au  The value of `w:spacing/@w:lineRule` as a member of the :ref:`WdLineSpacing`
        enumeration.

        Only the `MULTIPLE`, `EXACTLY`, and `AT_LEAST` members are used. It is the
        responsibility of the client to calculate the use of `SINGLE`, `DOUBLE`, and
        `MULTIPLE` based on the value of `w:spacing/@w:line` if that behavior is
        desired.
        N)rj   ÚlineRulers   r   ÚMULTIPLE)rI   rj   ru   r   r   r    Úspacing_lineRule  s   
zCT_PPr.spacing_lineRulec                 C  rn   rR   )rj   ro   ru   r\   r   r   r    rw   ,  rp   ú
str | Nonec                 C  rM   )zGString contained in `./w:pStyle/@val`, or None if child is not present.N)r:   r#   )rI   r:   r   r   r    Ústyle2  rP   zCT_PPr.stylery   c                 C  s&   |du r
|   ¡  dS |  ¡ }||_dS )z‹Set `./w:pStyle/@val` `style`, adding a new element if necessary.

        If `style` is |None|, remove `./w:pStyle` when present.
        N)r)   r&   r#   )rI   ry   r:   r   r   r    ry   :  s
   
c                 C  rM   )z:The value of `widowControl/@val` or |None| if not present.N)ÚwidowControlr#   )rI   rz   r   r   r    ÚwidowControl_valF  rP   zCT_PPr.widowControl_valc                 C  rY   rR   )Ú_remove_widowControlÚget_or_add_widowControlr#   r\   r   r   r    r{   N  ra   )rH   r   )rK   r   )rH   rU   )rH   rx   )ry   rx   )"r   r   r   r   r   Ú_tag_seqr   r:   rb   r]   rf   rz   ÚnumPrÚtabsrj   rC   rV   rF   ÚsectPrÚpropertyrJ   ÚsetterrO   rT   rX   r^   rc   rg   rm   rr   rt   rw   ry   r{   r   r   r   r    r$   6   s    
 &ÿÿÿ















r$   c                   @  s8   e Zd ZdZedeƒZedeƒZedeƒZ	ede
ƒZdS )Ú
CT_Spacingzk``<w:spacing>`` element, specifying paragraph spacing attributes such as space
    before and line spacing.zw:afterzw:beforezw:linez
w:lineRuleN)r   r   r   r   r   r   rk   rq   r
   rs   r   ru   r   r   r   r    r„   V  s    


r„   c                   @  sX   e Zd ZU dZedeƒZded< ede	e	j
d�Zded< ed	eƒZd
ed< ddd„ZdS )Ú
CT_TabStopz´`<w:tab>` element, representing an individual tab stop.

    Overloaded to use for a tab-character in a run, which also uses the w:tab tag but
    only needs a __str__ method.
    r"   r   r#   zw:leader)ÚdefaultzWD_TAB_LEADER | NoneÚleaderzw:posr   ÚposrH   Ústrc                 C  s   dS )z®Text equivalent of a `w:tab` element appearing in a run.

        Allows text of run inner-content to be accessed consistently across all text
        inner-content.
        ú	r   rW   r   r   r    Ú__str__q  s   zCT_TabStop.__str__N)rH   r‰   )r   r   r   r   r   r   r#   r   r   r   ÚSPACESr‡   r
   rˆ   r‹   r   r   r   r    r…   `  s   
 ÿÿÿr…   c                   @  s$   e Zd ZdZeddd�Zdd„ ZdS )ÚCT_TabStopszC``<w:tabs>`` element, container for a sorted sequence of tab stops.zw:tabr   r8   c                 C  sV   |   ¡ }||||_|_|_| jD ]}|j|jk r#| |¡ |  S q|  |¡ |S )z<Insert a newly created `w:tab` child element in `pos` order.)Ú_new_tabrˆ   r#   r‡   Útab_lstÚaddpreviousÚappend)rI   rˆ   Úalignr‡   Únew_tabÚtabr   r   r    Úinsert_tab_in_order  s   

þ
zCT_TabStops.insert_tab_in_orderN)r   r   r   r   r   r”   r•   r   r   r   r    r�   z  s    r�   N)!r   Ú
__future__r   Útypingr   r   Údocx.enum.textr   r   r   r   Údocx.oxml.sharedr	   Údocx.oxml.simpletypesr
   r   Údocx.oxml.xmlchemyr   r   r   r   r   Údocx.sharedr   Údocx.oxml.sectionr   r   r   r!   r$   r„   r…   r�   r   r   r   r    Ú<module>   s&      "
