o
    ûÐ,h•-  ã                   @   s`   d dl mZmZmZmZ ddlmZ ddlmZm	Z	m
Z
mZ G dd„ dƒZG dd„ dejƒZd	S )
é    )ÚDictÚListÚOptionalÚUnioné   )Ú	xmlwriter)Ú_preserve_whitespaceÚ	_xl_colorÚxl_cell_to_rowcolÚxl_rowcol_to_cellc                   @   s~   e Zd ZdZ	ddedededeeeeeee	f f  fdd„Z
	ddeeeeeee	f f  fd	d
„Zdedefdd„ZdS )ÚCommentTypez@
    A class to represent a comment in an Excel worksheet.

    NÚrowÚcolÚtextÚoptionsc                 C   sŠ   || _ || _|| _d| _d| _d| _d| _d| _d| _d| _	d| _
d| _d| _d| _d| _d| _d	| _g | _|  | j | j¡ |  |¡ dS )
a  
        Initialize a Comment instance.

        Args:
            row (int): The row number of the comment.
            col (int): The column number of the comment.
            text (str): The text of the comment.
            options (dict): Additional options for the comment.
        Nz#ffffe1r   é€   éJ   r   é   ÚTahomaé   )r   r   r   ÚauthorÚcolorÚ	start_rowÚ	start_colÚ
is_visibleÚwidthÚheightÚx_scaleÚy_scaleÚx_offsetÚy_offsetÚ	font_sizeÚ	font_nameÚfont_familyÚverticesÚset_offsetsÚ_set_user_options)Úselfr   r   r   r   © r(   úI/var/www/html/rh/venv/lib/python3.10/site-packages/xlsxwriter/comments.pyÚ__init__    s(   zCommentType.__init__c                 C   sB  |du rdS |  d¡}|rt|ttfƒr|| _|  d¡}|r(t|ttfƒr(|| _|  d¡}|r7t|tƒr7|| _|  d¡}|rFt|tƒrF|| _|  d¡}|rUt|tƒrU|| _|  d¡}|rdt|tƒrd|| _	|  d¡}|rut|ttfƒru|| _
|  d	¡}	|	r„t|	tƒr„|	| _|  d
¡}
|
r“t|
tƒr“|
| _|  d¡}|r¢t|tƒr¢|| _|  d¡}|dur³t|tƒr³|| _|  d¡}|rÍt|tƒrÍt|ƒ ¡ }| ddd¡| _|  d¡}|råt|tƒråt|ƒ\}}|| _	|| _|  d¡}|rùt|ttfƒrù| j| | _|  d¡}|rt|ttfƒr| j| | _td| j ƒ| _td| j ƒ| _dS )zh
        This method handles the additional optional parameters to
        ``write_comment()``.
        Nr   r   r   r    r   r   r!   r"   r#   r   Úvisibler   Úffú#r   Ú
start_cellr   r   g      à?)ÚgetÚ
isinstanceÚintÚfloatr   r   r   r    r   r   r!   Ústrr"   r#   r   Úboolr   r	   ÚlowerÚreplacer   r
   )r'   r   r   r   r   r    r   r   r!   r"   r#   r   r+   r   r.   r   r   r(   r(   r)   r&   P   sh   














zCommentType._set_user_optionsc                 C   s
  d}d}| j dkrd| _d| _n8| j |d kr d| _|d | _n(| j |d kr0d| _|d | _n| j |d	 kr@d
| _|d | _nd| _|d	 | _| j|d krYd| _|d | _dS | j|d krjd| _|d | _dS | j|d	 kr{d| _|d | _dS d| _|d	 | _dS )zÚ
        Set the default start cell and offsets for the comment. These are
        generally a fixed offset relative to the parent cell. However there are
        some edge cases for cells at the, well, edges.
        i   i @  r   r   é   é   é   é   r   é   é   é
   é1   é   é   N)r   r    r   r   r   r   )r'   r   r   Úrow_maxÚcol_maxr(   r(   r)   r%   ¤   s6   

zCommentType.set_offsets©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   r3   r   r   r   r2   r*   r&   r%   r(   r(   r(   r)   r      s"    
ûþýü
û1ÿ
ÿTr   c                       sî   e Zd ZdZ‡ fdd„Zd*deee  fdd„Zdd	„ Z	d
ee fdd„Z
defdd„Zd
ee fdd„Zdedefdd„Zdefdd„Zdef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$efd%d&„Zd'efd(d)„Z‡  ZS )+ÚCommentsz=
    A class for writing the Excel XLSX Comments file.


    c                    s   t ƒ  ¡  i | _dS )z
        Constructor.

        N)Úsuperr*   Ú
author_ids)r'   ©Ú	__class__r(   r)   r*   Ý   s   

zComments.__init__NÚcomments_datac                 C   sF   |d u rg }|   ¡  |  ¡  |  |¡ |  |¡ |  d¡ |  ¡  d S )NÚcomments)Ú_xml_declarationÚ_write_commentsÚ_write_authorsÚ_write_comment_listÚ_xml_end_tagÚ
_xml_close)r'   rM   r(   r(   r)   Ú_assemble_xml_fileì   s   


zComments._assemble_xml_filec                 C   s   d}d|fg}|   d|¡ d S )Nz9http://schemas.openxmlformats.org/spreadsheetml/2006/mainÚxmlnsrN   )Ú_xml_start_tag)r'   rV   Ú
attributesr(   r(   r)   rP   	  s   
zComments._write_commentsÚcomment_datac                 C   sZ   d}|   d¡ |D ]}|j}|d ur%|| jvr%|| j|< |d7 }|  |¡ q	|  d¡ d S )Nr   Úauthorsr   )rW   r   rJ   Ú_write_authorrS   )r'   rY   Úauthor_countÚcommentr   r(   r(   r)   rQ     s   


€zComments._write_authorsÚdatac                 C   s   |   d|¡ d S )Nr   )Ú_xml_data_element)r'   r^   r(   r(   r)   r[   $  s   zComments._write_authorc                 C   sH   |   d¡ |D ]}d}|jd ur| j|j }|  ||¡ q|  d¡ d S )NÚcommentListéÿÿÿÿ)rW   r   rJ   Ú_write_commentrS   )r'   rY   r]   Ú	author_idr(   r(   r)   rR   (  s   

zComments._write_comment_listr]   rc   c                 C   sT   t |j|jƒ}d|fg}|dkr| d|› f¡ |  d|¡ |  |¡ |  d¡ d S )NÚrefra   ÚauthorIdr]   )r   r   r   ÚappendrW   Ú_write_textrS   )r'   r]   rc   rd   rX   r(   r(   r)   rb   7  s   

zComments._write_commentc                 C   s"   |   d¡ |  |¡ |  d¡ d S )Nr   )rW   Ú_write_text_rrS   ©r'   r]   r(   r(   r)   rg   G  s   

zComments._write_textc                 C   s.   |   d¡ |  |¡ |  |j¡ |  d¡ d S )NÚr)rW   Ú_write_r_prÚ_write_text_tr   rS   ri   r(   r(   r)   rh   P  s   

zComments._write_text_rr   c                 C   s(   g }t |ƒr| d¡ |  d||¡ d S )N)z	xml:spaceÚpreserveÚt)r   rf   r_   )r'   r   rX   r(   r(   r)   rl   \  s   
zComments._write_text_tc                 C   sD   |   d¡ |  |j¡ |  ¡  |  |j¡ |  |j¡ |  d¡ d S )NÚrPr)	rW   Ú	_write_szr!   Ú_write_colorÚ_write_r_fontr"   Ú_write_familyr#   rS   ri   r(   r(   r)   rk   e  s   
zComments._write_r_prr!   c                 C   ó   d|fg}|   d|¡ d S )NÚvalÚsz©Ú_xml_empty_tag)r'   r!   rX   r(   r(   r)   rp   w  ó   
zComments._write_szc                 C   s   dg}|   d|¡ d S )N)ÚindexedéQ   r   rw   )r'   rX   r(   r(   r)   rq   }  s   zComments._write_colorr"   c                 C   rt   )Nru   ÚrFontrw   )r'   r"   rX   r(   r(   r)   rr   ƒ  ry   zComments._write_r_fontr#   c                 C   rt   )Nru   Úfamilyrw   )r'   r#   rX   r(   r(   r)   rs   ‰  ry   zComments._write_familyrC   )rD   rE   rF   rG   r*   r   r   r   rU   rP   rQ   r3   r[   rR   r1   rb   rg   rh   rl   rk   r2   rp   rq   rr   rs   Ú__classcell__r(   r(   rK   r)   rH   Ð   s"    		rH   N)Útypingr   r   r   r   Ú r   Úutilityr   r	   r
   r   r   Ú	XMLwriterrH   r(   r(   r(   r)   Ú<module>   s   	 7