o
    Վj-                     @   sh   d dl mZmZmZmZ d dlmZ ddlmZ ddl	m
Z
mZmZ G dd dZG dd	 d	ejZd
S )    )DictListOptionalUnion)Color   )	xmlwriter)_preserve_whitespace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  ddf
dd	Z
	ddeeeeeee	f f  ddfd
dZdededdfddZdS )CommentTypez@
    A class to represent a comment in an Excel worksheet.

    Nrowcoltextoptionsreturnc                 C   s   || _ || _|| _d| _t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   authorr   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)   S/home/air/Certificate/back/venv/lib/python3.10/site-packages/xlsxwriter/comments.py__init__   s(   
zCommentType.__init__c                 C   s(  |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	}	|	rt|	tr|	| _| d
}
|
rt|
tr|
| _| d}|rt|tr|| _| d}|durt|tr|| _| drt|d | _| d}|rt|trt|\}}|| _	|| _| d}|rt|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   
start_cellr   r   g      ?)get
isinstanceintfloatr   r   r    r!   r   r   r"   strr#   r$   r   boolr   r   _from_valuer   r
   )r(   r   r   r   r    r!   r   r   r"   r#   r$   r   r,   r-   r   r   r)   r)   r*   r'   M   sd   














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__r0   r2   r   r   r   r1   r+   r'   r&   r)   r)   r)   r*   r      s*    

1
Pr   c                       s&  e Zd ZdZd+ fddZ	d,deee  ddfddZd+d	d
Z	dee ddfddZ
deddfddZdee ddfddZdededdfddZdeddfddZdeddfddZdeddfddZdeddfddZd eddfd!d"Zd+d#d$Zd%eddfd&d'Zd(eddfd)d*Z  ZS )-Commentsz=
    A class for writing the Excel XLSX Comments file.


    r   Nc                    s   t    i | _dS )z
        Constructor.

        N)superr+   
author_ids)r(   	__class__r)   r*   r+      s   

zComments.__init__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(   rK   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xmlnsrL   )_xml_start_tag)r(   rT   
attributesr)   r)   r*   rN     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   )rU   r   rH   _write_authorrQ   )r(   rW   author_countcommentr   r)   r)   r*   rO     s   


zComments._write_authorsdatac                 C   s   |  d| d S )Nr   )_xml_data_element)r(   r\   r)   r)   r*   rY     s   zComments._write_authorc                 C   sH   |  d |D ]}d}|jd ur| j|j }| || q| d d S )NcommentList)rU   r   rH   _write_commentrQ   )r(   rW   r[   	author_idr)   r)   r*   rP   #  s   

zComments._write_comment_listr[   ra   c                 C   sT   t |j|j}d|fg}|dkr|d| f | d| | | | d d S )Nrefr_   authorIdr[   )r   r   r   appendrU   _write_textrQ   )r(   r[   ra   rb   rV   r)   r)   r*   r`   2  s   

zComments._write_commentc                 C   s"   |  d | | | d d S )Nr   )rU   _write_text_rrQ   r(   r[   r)   r)   r*   re   B  s   

zComments._write_textc                 C   s.   |  d | | | |j | d d S )Nr)rU   _write_r_pr_write_text_tr   rQ   rg   r)   r)   r*   rf   K  s   

zComments._write_text_rr   c                 C   s(   g }t |r|d | d|| d S )N)z	xml:spacepreservet)r	   rd   r]   )r(   r   rV   r)   r)   r*   rj   W  s   
zComments._write_text_tc                 C   sD   |  d | |j |   | |j | |j | d d S )NrPr)	rU   	_write_szr"   _write_color_write_r_fontr#   _write_familyr$   rQ   rg   r)   r)   r*   ri   `  s   
zComments._write_r_prr"   c                 C      d|fg}|  d| d S )Nvalsz_xml_empty_tag)r(   r"   rV   r)   r)   r*   rn   r     
zComments._write_szc                 C   s   dg}|  d| d S )N)indexedQ   r   ru   )r(   rV   r)   r)   r*   ro   x  s   zComments._write_colorr#   c                 C   rr   )Nrs   rFontru   )r(   r#   rV   r)   r)   r*   rp   ~  rw   zComments._write_r_fontr$   c                 C   rr   )Nrs   familyru   )r(   r$   rV   r)   r)   r*   rq     rw   zComments._write_family)r   NrA   )rB   rC   rD   rE   r+   r   r   r   rS   rN   rO   r2   rY   rP   r0   r`   re   rf   rj   ri   r1   rn   ro   rp   rq   __classcell__r)   r)   rI   r*   rF      s,    


		
rF   N)typingr   r   r   r   xlsxwriter.colorr    r   utilityr	   r
   r   r   	XMLwriterrF   r)   r)   r)   r*   <module>   s   	 3