o
    ýÞh“)  ã                   @  s˜   d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZmZmZ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dS )z2Custom element classes related to the styles part.é    )Úannotations)ÚWD_STYLE_TYPE)ÚST_DecimalNumberÚST_OnOffÚ	ST_String)ÚBaseOxmlElementÚOptionalAttributeÚRequiredAttributeÚ
ZeroOrMoreÚ	ZeroOrOnec                 C  s*   ddddddddd	d
dœ
  | |  dd¡¡S )zlReturn the style id corresponding to `name`, taking into account special-case
    names such as 'Heading 1'.ÚCaptionÚHeading1ÚHeading2ÚHeading3ÚHeading4ÚHeading5ÚHeading6ÚHeading7ÚHeading8ÚHeading9)
Úcaptionz	heading 1z	heading 2z	heading 3z	heading 4z	heading 5z	heading 6z	heading 7z	heading 8z	heading 9ú Ú )ÚgetÚreplace)Úname© r   úP/var/www/html/premium_crap/venv/lib/python3.10/site-packages/docx/oxml/styles.pyÚstyleId_from_name   s   öõr   c                   @  sp   e Zd ZdZeddd�ZedeƒZede	ƒZ
ede	ƒZede	ƒZed	eƒZed
e	ƒZdd„ Zdd„ Zdd„ ZdS )ÚCT_LatentStylesz¹`w:latentStyles` element, defining behavior defaults for latent styles and
    containing `w:lsdException` child elements that each override those defaults for a
    named latent style.zw:lsdExceptionr   ©Ú
successorszw:countzw:defLockedStatezw:defQFormatzw:defSemiHiddenzw:defUIPriorityzw:defUnhideWhenUsedc                 C  s   t | |ƒ}|du rdS |S )z`Return the boolean value of the attribute having `attr_name`, or |False| if
        not present.NF©Úgetattr©ÚselfÚ	attr_nameÚvaluer   r   r   Ú	bool_prop/   s   
zCT_LatentStyles.bool_propc                 C  s   |   d| ¡}|sdS |d S )zHReturn the `w:lsdException` child having `name`, or |None| if not found.zw:lsdException[@w:name="%s"]Nr   ©Úxpath)r%   r   Úfoundr   r   r   Úget_by_name7   s   zCT_LatentStyles.get_by_namec                 C  s   t | |t|ƒƒ dS ©z7Set the on/off attribute having `attr_name` to `value`.N)ÚsetattrÚboolr$   r   r   r   Úset_bool_prop>   ó   zCT_LatentStyles.set_bool_propN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚlsdExceptionr   r   Úcountr   ÚdefLockedStateÚ
defQFormatÚdefSemiHiddenÚdefUIPriorityÚdefUnhideWhenUsedr(   r,   r0   r   r   r   r   r   !   s    





r   c                   @  sd   e Zd ZdZedeƒZedeƒZ	edeƒZ
edeƒZedeƒZedeƒZdd	„ Zd
d„ Zdd„ ZdS )ÚCT_LsdExceptionzb``<w:lsdException>`` element, defining override visibility behaviors for a named
    latent style.úw:lockedúw:nameú	w:qFormatúw:semiHiddenúw:uiPriorityúw:unhideWhenUsedc                 C  ó   |   ¡  | ¡ dS )z;Remove this `w:lsdException` element from the XML document.N©Ú	getparentÚremove©r%   r   r   r   ÚdeleteN   ó   zCT_LsdException.deletec                 C  s
   t | |ƒS )z_Return the boolean value of the attribute having `attr_name`, or |None| if
        not present.r"   )r%   r&   r   r   r   Úon_off_propR   s   
zCT_LsdException.on_off_propc                 C  s   t | ||ƒ dS r-   )r.   r$   r   r   r   Úset_on_off_propW   s   zCT_LsdException.set_on_off_propN)r2   r3   r4   r5   r   r   Úlockedr	   r   r   ÚqFormatÚ
semiHiddenr   Ú
uiPriorityÚunhideWhenUsedrI   rK   rL   r   r   r   r   r=   C   s    





r=   c                   @  sî  e Zd ZU dZ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ededd… d�Zededd… d�Zededd… d�Z[edeƒZded< edeƒZded< edeƒZed eƒZed!d"„ ƒZejd#d"„ ƒZed$d%„ ƒZd&d'„ Zed(d)„ ƒZejd*d)„ ƒZed+d,„ ƒZejd-d,„ ƒZed.d/„ ƒZ ed0d1„ ƒZ!e!jd2d1„ ƒZ!ed3d4„ ƒZ"e"jd5d4„ ƒZ"ed6d7„ ƒZ#e#jd8d7„ ƒZ#ed9d:„ ƒZ$e$jd;d:„ ƒZ$dS )<ÚCT_Stylez9A ``<w:style>`` element, representing a style definition.)r?   z	w:aliasesú	w:basedOnúw:nextzw:linkzw:autoRedefinezw:hiddenrB   rA   rC   r@   r>   z
w:personalzw:personalComposezw:personalReplyzw:rsidúw:pPrúw:rPrzw:tblPrzw:trPrzw:tcPrzw:tblStylePrr?   é   Nr    rS   é   rT   é   rB   é   rA   é	   rC   é
   r@   é   r>   é   rU   é   rV   é   zw:typezWD_STYLE_TYPE | NoneÚtypez	w:styleIdz
str | NoneÚstyleIdz	w:defaultzw:customStylec                 C  ó   | j }|du r	dS |jS )z5Value of `w:basedOn/@w:val` or |None| if not present.N)ÚbasedOnÚval)r%   rd   r   r   r   ÚbasedOn_valŒ   ó   zCT_Style.basedOn_valc                 C  s"   |d u r
|   ¡  d S ||  ¡ _d S ©N)Ú_remove_basedOnÚget_or_add_basedOnre   ©r%   r'   r   r   r   rf   ”   s   c                 C  s6   | j }|du r	dS |  ¡ }| |j¡}|du rdS |S )zkSibling CT_Style element this style is based on or |None| if no base style or
        base style not found.N)rd   rF   Ú	get_by_idre   )r%   rd   ÚstylesÚ
base_styler   r   r   rn   ›   s   zCT_Style.base_stylec                 C  rD   )zARemove this `w:style` element from its parent `w:styles` element.NrE   rH   r   r   r   rI   ¨   rJ   zCT_Style.deletec                 C  ó   | j }|du r	dS |jS )z5Value of `w:locked/@w:val` or |False| if not present.NF)rM   re   )r%   rM   r   r   r   Ú
locked_val¬   rg   zCT_Style.locked_valc                 C  ó*   |   ¡  t|ƒdu r|  ¡ }||_d S d S ©NT)Ú_remove_lockedr/   Ú_add_lockedre   )r%   r'   rM   r   r   r   rp   ´   ó
   
þc                 C  rc   )z5Value of ``<w:name>`` child or |None| if not present.N)r   re   )r%   r   r   r   r   Úname_val»   rg   zCT_Style.name_valc                 C  ó&   |   ¡  |d ur|  ¡ }||_d S d S rh   )Ú_remove_nameÚ	_add_namere   )r%   r'   r   r   r   r   rv   Ã   ó
   
þc                 C  s&   | j }|du r	dS |  ¡ }| |j¡S )z•Sibling CT_Style element identified by the value of `w:name/@w:val` or |None|
        if no value is present or no style with that style id is found.N)ÚnextrF   rl   re   )r%   r{   rm   r   r   r   Ú
next_styleÊ   s
   zCT_Style.next_stylec                 C  ro   )z6Value of `w:qFormat/@w:val` or |False| if not present.NF)rN   re   )r%   rN   r   r   r   ÚqFormat_valÔ   rg   zCT_Style.qFormat_valc                 C  s    |   ¡  t|ƒr|  ¡  d S d S rh   )Ú_remove_qFormatr/   Ú_add_qFormatrk   r   r   r   r}   Ü   s   ÿc                 C  ro   )z<Value of ``<w:semiHidden>`` child or |False| if not present.NF)rO   re   )r%   rO   r   r   r   ÚsemiHidden_valâ   rg   zCT_Style.semiHidden_valc                 C  rq   rr   )Ú_remove_semiHiddenr/   Ú_add_semiHiddenre   )r%   r'   rO   r   r   r   r€   ê   ru   c                 C  rc   )z;Value of ``<w:uiPriority>`` child or |None| if not present.N)rP   re   )r%   rP   r   r   r   ÚuiPriority_valñ   rg   zCT_Style.uiPriority_valc                 C  rw   rh   )Ú_remove_uiPriorityÚ_add_uiPriorityre   )r%   r'   rP   r   r   r   rƒ   ù   rz   c                 C  ro   )z=Value of `w:unhideWhenUsed/@w:val` or |False| if not present.NF)rQ   re   )r%   rQ   r   r   r   ÚunhideWhenUsed_val   rg   zCT_Style.unhideWhenUsed_valc                 C  rq   rr   )Ú_remove_unhideWhenUsedr/   Ú_add_unhideWhenUsedre   )r%   r'   rQ   r   r   r   r†     ru   )%r2   r3   r4   r5   Ú_tag_seqr   r   rd   r{   rP   rO   rQ   rN   rM   ÚpPrÚrPrr   r   ra   Ú__annotations__r   rb   r   ÚdefaultÚcustomStyleÚpropertyrf   Úsetterrn   rI   rp   rv   r|   r}   r€   rƒ   r†   r   r   r   r   rR   \   sn   
 ÿÿ









	






rR   c                   @  sb   e Zd ZdZdZededd… d�Zeddd�Z[d	d
„ Z	dd„ Z
ddd„Zddd„Zdd„ ZdS )Ú	CT_StyleszK``<w:styles>`` element, the root element of a styles part, i.e. styles.xml.)zw:docDefaultsúw:latentStylesúw:styler’   é   Nr    r“   r   c                 C  s0   |   ¡ }||_|rdnd|_t|ƒ|_||_|S )z—Return a newly added `w:style` element having `name` and `style_type`.

        `w:style/@customStyle` is set based on the value of `builtin`.
        NT)Ú	add_stylera   rŽ   r   rb   rv   )r%   r   Ú
style_typeÚbuiltinÚstyler   r   r   Úadd_style_of_type  s   
zCT_Styles.add_style_of_typec                   s&   ‡ fdd„|   ¡ D ƒ}|sdS |d S )zEReturn `w:style[@w:type="*{style_type}*][-1]` or |None| if not found.c                   s    g | ]}|j ˆ kr|jr|‘qS r   )ra   r�   )Ú.0Ús©r–   r   r   Ú
<listcomp>&  s    z)CT_Styles.default_for.<locals>.<listcomp>Néÿÿÿÿ)Ú_iter_styles)r%   r–   Údefault_styles_for_typer   rœ   r   Údefault_for$  s   
ÿzCT_Styles.default_forrb   ÚstrÚreturnúCT_Style | Nonec                 C  s    d|› d�}t t|  |¡ƒdƒS )zR`w:style` child where @styleId = `styleId`.

        |None| if not found.
        zw:style[@w:styleId="z"]N©r{   Úiterr*   )r%   rb   r*   r   r   r   rl   .  s   zCT_Styles.get_by_idr   c                 C  s   d| }t t|  |¡ƒdƒS )zd`w:style` child with `w:name` grandchild having value `name`.

        |None| if not found.
        zw:style[w:name/@w:val="%s"]Nr¥   )r%   r   r*   r   r   r   r,   6  s   zCT_Styles.get_by_namec                 C  s   dd„ |   d¡D ƒS )z@Generate each of the `w:style` child elements in document order.c                 s  s   � | ]}|V  qd S rh   r   )rš   r˜   r   r   r   Ú	<genexpr>@  s   € z)CT_Styles._iter_styles.<locals>.<genexpr>r“   r)   rH   r   r   r   rŸ   >  r1   zCT_Styles._iter_styles)rb   r¢   r£   r¤   )r   r¢   r£   r¤   )r2   r3   r4   r5   r‰   r   ÚlatentStylesr
   r˜   r™   r¡   rl   r,   rŸ   r   r   r   r   r‘     s    


r‘   N)r5   Ú
__future__r   Údocx.enum.styler   Údocx.oxml.simpletypesr   r   r   Údocx.oxml.xmlchemyr   r   r	   r
   r   r   r   r=   rR   r‘   r   r   r   r   Ú<module>   s    	" 5