o
    ,h[U                     @   sH   d dl mZ d dlmZ ddlmZ G dd dZG dd dejZd	S )
    )CommentType)Image   )	xmlwriterc                   @   s@   e Zd ZdZ	ddedededededefd	d
ZdddZdS )
ButtonTypez?
    A class to represent a button in an Excel worksheet.

    Nrowcolheightwidthbutton_numberoptionsc                 C   sd   || _ || _|| _|| _d| d| _d| | _d| _d| _d| _d| _	d| _
g | _| | dS )a  
        Initialize a ButtonType instance.

        Args:
            row (int): The row number of the button.
            col (int): The column number of the button.
            height (int): The height of the button.
            width (int): The width of the button.
            button_number (int): The button number.
            options (dict): Additional options for the button.
        z
[0]!Button_ClickzButton Nr   r   )r   r   r
   r	   macrocaptiondescriptionx_scaley_scalex_offsety_offsetvertices_set_user_options)selfr   r   r	   r
   r   r    r   D/var/www/html/rh/venv/lib/python3.10/site-packages/xlsxwriter/vml.py__init__   s   zButtonType.__init__c                 C   s   |du rdS | d| j| _| d| j| _| d| j| _| d| j| _| d| j| _| d| j| _| drBd	|d  | _| d
rO| j|d
  | _| dr\| j|d  | _td| j | _td| j | _dS )zh
        This method handles the additional optional parameters to
        ``insert_button()``.
        Nr
   r	   r   r   r   r   r   z[0]!r   r   g      ?)	getr
   r	   r   r   r   r   r   int)r   r   r   r   r   r   C   s    


zButtonType._set_user_optionsN)__name__
__module____qualname____doc__r   dictr   r   r   r   r   r   r      s"    
'r   c                   @   s  e Zd ZdZ			dZd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!efd"d#Zd$efd%d&Zd'efd(d)Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd$efd2d3Zd[d4ed5efd6d7Zd5efd8d9Z d!efd:d;Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFdG Z'dHdI Z(dJdK Z)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/dXdY Z0dS )\Vmlz8
    A class for writing the Excel XLSX Vml file.


    Nc                 C   s   d}|    | | |r%|   |D ]}|d7 }| ||| |d7 }q|r?|   |D ]}|d7 }| ||| |d7 }q-|r[|   d}	|D ]}
|d7 }| ||	|
 |	d7 }	qI| d | 	  d S )Nr   xml)
_write_xml_namespace_write_shapelayout_write_button_shapetype_write_button_shape_write_comment_shapetype_write_comment_shape_write_image_shapetype_write_image_shape_xml_end_tag
_xml_close)r   data_idvml_shape_idcomments_databuttons_dataheader_imagesz_indexbuttoncommentindeximager   r   r   _assemble_xml_filew   s0   	




zVml._assemble_xml_filec                 C   s@   |dd \}}}}|d9 }|d9 }|d9 }|d9 }||||fS )N            ?r   )r   r   lefttopr
   r	   r   r   r   _pixels_to_points   s   zVml._pixels_to_pointsc                 C   sB   d}|d }|d }|d }d|fd|fd|fg}|  d| d S )	Nzurn:schemas-microsoft-com:vmlzoffice:officezoffice:excelzxmlns:vzxmlns:ozxmlns:xr$   )_xml_start_tag)r   schemaxmlnsxmlns_oxmlns_x
attributesr   r   r   r%      s   zVml._write_xml_namespacec                 C   s*   dg}|  d| | | | d d S )Nv:exteditzo:shapelayout)rA   _write_idmapr-   r   r/   rF   r   r   r   r&      s   
zVml._write_shapelayoutc                 C   s   dd|fg}|  d| d S )NrG   datazo:idmap_xml_empty_tagrK   r   r   r   rJ      s   zVml._write_idmapc                 C   sZ   d}d}d}d}d|fd|fd|fd|fg}|  d	| |   | d
d | d	 d S )N_x0000_t20221600,21600   m,l,21600r21600,l21600,xeid	coordsizeo:sptpathv:shapetypetrect)rA   _write_stroke_write_comment_pathr-   r   shape_idrT   sptrV   rF   r   r   r   r)      s   zVml._write_comment_shapetypec                 C   s^   d}d}d}d}d|fd|fd|fd|fg}|  d	| |   |   |   | d	 d S )
N_x0000_t201rP      rR   rS   rT   rU   rV   rW   )rA   rZ   _write_button_path_write_shapetype_lockr-   r\   r   r   r   r'      s   zVml._write_button_shapetypec           	      C   s   d}d}d}d}d}d}d}d|fd|fd	|fd
|fd|fd|fd|fg}|  d| |   |   |   |   | d d S )N
_x0000_t75rP   K   rX   zm@4@5l@4@11@9@11@9@5xefrS   rT   rU   zo:preferrelativerV   filledstrokedrW   )rA   rZ   _write_formulas_write_image_path_write_aspect_ratio_lockr-   )	r   r]   rT   r^   o_preferrelativerV   rf   rg   rF   r   r   r   r+     s*   
zVml._write_image_shapetypec                 C      d}d|fg}|  d| d S )Nmiter	joinstylezv:strokerM   )r   rn   rF   r   r   r   rZ   7     
zVml._write_strokec                 C   s0   g }|r	| d | d|f | d| d S )N)gradientshapeokrX   o:connecttypev:path)appendrN   )r   rp   connecttyperF   r   r   r   r[   ?  s
   
zVml._write_comment_pathc                 C   sF   d}d}d}d}d}d|fd|fd|fd|fd|fg}|  d| d S )	Nre   rY   shadowoko:extrusionokstrokeokfillokrq   rr   rM   )r   ru   extrusionokrw   rx   rt   rF   r   r   r   ra   J  s   zVml._write_button_pathc                 C   s2   d}d}d}d|fd|fd|fg}|  d| d S )Nre   rX   rY   rv   rp   rq   rr   rM   )r   ry   rp   rt   rF   r   r   r   ri   \     zVml._write_image_pathc                 C   (   d}d}d|fd|fg}|  d| d S )NrI   rX   rH   	shapetypeo:lockrM   )r   extr|   rF   r   r   r   rb   j     zVml._write_shapetype_lockc                 C   r{   )NrI   rX   rH   rotationr}   rM   )r   r~   r   rF   r   r   r   _write_rotation_lockv  r   zVml._write_rotation_lockc                 C   r{   )NrI   rX   rH   aspectratior}   rM   )r   r~   r   rF   r   r   r   rj     r   zVml._write_aspect_ratio_lockr6   c                 C   s   d}d}d}dt | }| |j\}}}	}
|jrd}d|dd|dd	|	dd
|
dd| d| }d|fd|fd|fd|jfd|fg}| d| |   |   | d d | 	  | 
| | d d S )Nz#_x0000_t202autohidden_x0000_svisibleposition:absolute;margin-left:.15gpt;margin-top:	pt;width:
pt;height:pt;z-index:z;visibility:rS   typestyle	fillcoloro:insetmodev:shapenone)strr?   r   
is_visiblecolorrA   _write_comment_fill_write_shadowr[   _write_comment_textbox_write_comment_client_datar-   )r   r]   r4   r6   
shape_type	insetmode
visibilityr=   r>   r
   r	   r   rF   r   r   r   r*     sD   
zVml._write_comment_shaper5   c                 C   s   d}dt | }| |j\}}}}d|dd|dd|dd|dd| d	}	d
|fd|fg}
|jd ur=|
d|jf |
d|	f |
d |
d |
d |
d | d|
 |   |   | | | 	| | 
d d S )Nz#_x0000_t201r   r   r   r   r   r   r   z;mso-wrap-style:tightrS   r   altr   )zo:buttonrX   )r   buttonFace [67])strokecolorzwindowText [64])r   r   r   )r   r?   r   r   rs   rA   _write_button_fillr   _write_button_textbox_write_button_client_datar-   )r   r]   r4   r5   r   r=   r>   r
   r	   r   rF   r   r   r   r(     s>   






zVml._write_button_shaper8   c                 C   s   d}dt | }|j}|j}|j}|j}|j}	|j}
|j}|d | }|	d | }	dt|d d d  }dt|	d d d  }	d|d	d
|	d	d| }d|fd|fd|fd|fg}| 	d| | 
|
| |   | d d S )Nz#_x0000_t75r   g      R@r<   g      X@H   g      ?z3position:absolute;margin-left:0;margin-top:0;width:r   r   r   rS   zo:spidr   r   r   )r   
image_name_width_x_dpi_y_dpi_height_ref_id_header_positionr   rA   _write_imagedatar   r-   )r   r]   r4   r8   r   namer
   x_dpiy_dpir	   ref_idpositionr   rF   r   r   r   r,     s<   
zVml._write_image_shapec                 C   rl   )Nz#ffffe1color2v:fillrM   )r   color_2rF   r   r   r   r   %  ro   zVml._write_comment_fillc                 C   r{   )Nr   rX   r   zo:detectmouseclickr   rM   )r   r   detectmouseclickrF   r   r   r   r   -  r   zVml._write_button_fillc                 C   s2   d}d}d}d|fd|fd|fg}|  d| d S )NrX   blackonr   obscuredzv:shadowrM   )r   r   r   r   rF   r   r   r   r   9  rz   zVml._write_shadowc                 C   s2   d}d|fg}|  d| | d | d d S )Nmso-direction-alt:autor   	v:textboxr=   )rA   
_write_divr-   )r   r   rF   r   r   r   r   G  s
   

zVml._write_comment_textboxc                 C   s8   d}d|fdg}|  d| | d|j | d d S )Nr   r   )zo:singleclickre   r   center)rA   r   r   r-   )r   r5   r   rF   r   r   r   r   T  s
   zVml._write_button_textboxalignr   c                 C   s:   d| }d|fg}|  d| |r| | | d d S )Nztext-align:r   div)rA   _write_button_fontr-   )r   r   r   r   rF   r   r   r   r   a  s   

zVml._write_divc                 C   s4   d}d}d}d|fd|fd|fg}|  d|| d S )NCalibri   z#000000facesizer   font_xml_data_element)r   r   r   r   r   rF   r   r   r   r   o  s   zVml._write_button_fontc                 C   sr   d}d|fg}|  d| |   |   | |j |   | |j | |j	 |j
r2|   | d d S )NNote
ObjectTypex:ClientData)rA   _write_move_with_cells_write_size_with_cells_write_anchorr   _write_auto_fill
_write_rowr   _write_columnr   r   _write_visibler-   )r   r6   object_typerF   r   r   r   r   }  s   
zVml._write_comment_client_datac                 C   s`   d}d|fg}|  d| | |j |   |   | |j |   |   | 	d d S )NButtonr   r   )
rA   r   r   _write_print_objectr   _write_fmla_macror   _write_text_halign_write_text_valignr-   )r   r5   r   rF   r   r   r   r     s   
zVml._write_button_client_datac                 C      |  d d S )Nzx:MoveWithCellsrM   r   r   r   r   r        zVml._write_move_with_cellsc                 C   r   )Nzx:SizeWithCellsrM   r   r   r   r   r     r   zVml._write_size_with_cellsc                 C   r   )Nz	x:VisiblerM   r   r   r   r   r     r   zVml._write_visiblec                 C   sX   |d d \}}}}}}}}	||||||||	g}
dd |
D }
d |
}| d| d S )Nr:   c                 S   s   g | ]}t |qS r   )r   ).0ir   r   r   
<listcomp>  s    z%Vml._write_anchor.<locals>.<listcomp>z, zx:Anchor)joinr   )r   r   	col_start	row_startx1y1col_endrow_endx2y2stringsrL   r   r   r   r     s
   
zVml._write_anchorc                 C   s   d}|  d| d S )NFalsez
x:AutoFillr   r   rL   r   r   r   r     s   zVml._write_auto_fillc                 C      |  d| d S )Nzx:Rowr   r   r   r   r   r        zVml._write_rowc                 C   r   )Nzx:Columnr   r   r   r   r   r     r   zVml._write_columnc                 C      |  dd d S )Nzx:PrintObjectr   r   r   r   r   r   r     r   zVml._write_print_objectc                 C   r   )Nzx:TextHAlignCenterr   r   r   r   r   r     r   zVml._write_text_halignc                 C   r   )Nzx:TextVAlignr   r   r   r   r   r   r     r   zVml._write_text_valignc                 C   r   )Nzx:FmlaMacror   r   r   r   r   r     r   zVml._write_fmla_macroc                 C   s(   ddt | fd|fg}| d| d S )Nzo:relidrIdzo:titlezv:imagedata)r   rN   )r   r   o_titlerF   r   r   r   r     s   zVml._write_imagedatac                 C   s   |  d | d | d | d | d | d | d | d | d	 | d
 | d | d | d | d d S )Nz
v:formulaszif lineDrawn pixelLineWidth 0z
sum @0 1 0z
sum 0 0 @1zprod @2 1 2zprod @3 21600 pixelWidthzprod @3 21600 pixelHeightz
sum @0 0 1zprod @6 1 2zprod @7 21600 pixelWidthzsum @8 21600 0zprod @7 21600 pixelHeightzsum @10 21600 0)rA   _write_formular-   r   r   r   r   rh     s   












zVml._write_formulasc                 C   s   d|fg}|  d| d S )Neqnzv:frM   )r   r   rF   r   r   r   r     s   
zVml._write_formula)NNNr   )1r   r   r    r!   r9   r?   r%   r&   rJ   r)   r'   r+   rZ   r[   ra   ri   rb   r   rj   r   r*   r   r(   r   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh   r   r   r   r   r   r#   k   s\    
4	$412 	r#   N)	xlsxwriter.commentsr   xlsxwriter.imager    r   r   	XMLwriterr#   r   r   r   r   <module>   s
   
U