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

    Nrowcoltextoptionsreturnc                    || _         || _        || _        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   s        K/srv/django_bis/venv311/lib/python3.11/site-packages/xlsxwriter/comments.py__init__zCommentType.__init__   s      	%)!),,
*.
 !& !13 	48,,, 	w'''''    c                    |dS |                     d          }|r#t          |t          t          f          r|| _        |                     d          }|r#t          |t          t          f          r|| _        |                     d          }|rt          |t                    r|| _        |                     d          }|rt          |t                    r|| _        |                     d          }|rt          |t                    r|| _        |                     d          }|rt          |t                    r|| _	        |                     d          }|r#t          |t          t          f          r|| _
        |                     d	          }	|	rt          |	t                    r|	| _        |                     d
          }
|
rt          |
t                    r|
| _        |                     d          }|rt          |t                    r|| _        |                     d          }|t          |t                    r|| _        |                     d          rt#          j        |d                   | _        |                     d          }|r5t          |t                    r t)          |          \  }}|| _	        || _        |                     d          }|r+t          |t          t          f          r| j        |z  | _        |                     d          }|r+t          |t          t          f          r| j        |z  | _        t          d| j        z             | _        t          d| j        z             | _        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   r0   r1   r!   r"   s                   r,   r*   zCommentType._set_user_optionsM   sW    ?F G$$ 	ZU|44 	DJX&& 	!j#u66 	! DK;;z** 	%
8S11 	%$DM;;z** 	%
8S11 	%$DMKK,,	 	'Is33 	'&DNKK,,	 	'Is33 	'&DNKK,,	 	'IU|<< 	'&DNKK,,	 	'Is33 	'&DNkk-00 	+:k377 	+*DX&& 	!j-- 	! DK++i((:gt#<#<%DO;;w 	=*77+;<<DJ [[..
 	'*Z55 	'%6z%B%B"Y	&DN&DN ++i(( 	.z'C<88 	.g-DJ++i(( 	0z'C<88 	0+/DK tz)**
#+,,r.   c                    d}d}| j         dk    rd| _        d| _        nq| j         |dz
  k    rd| _        |dz
  | _        nQ| j         |dz
  k    rd| _        |dz
  | _        n1| j         |d	z
  k    rd
| _        |dz
  | _        nd| _        |d	z
  | _        | j        |dz
  k    rd| _        |dz
  | _        dS | j        |dz
  k    rd| _        |dz
  | _        dS | j        |d	z
  k    rd| _        |dz
  | _        dS d| _        |d	z   | _        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_maxs        r,   r)   zCommentType.set_offsets   s5    8q==DMDNNX1$$DM$q[DNNX1$$DM$q[DNNX1$$DM$q[DNNDM 1WDN8w{""DM$q[DNNNX1$$DM$q[DNNNX1$$DM$q[DNNNDM 1WDNNNr.   N)__name__
__module____qualname____doc__r4   r6   r   r   r   r5   r-   r*   r)    r.   r,   r   r      s         @D.( .(.( .( 	.(
 $sE#sE/$::;<.( 
.( .( .( .(b FJN- N-S%S%*@%@ ABN-	N- N- N- N-`$%s $% $% $% $% $% $% $% $%r.   r   c                   ,    e Zd ZdZd fdZ	 ddeee                  ddfdZddZ	dee         ddfd	Z
d
eddfdZdee         ddfdZdededdfdZdeddfdZdeddfdZdeddfdZdeddfdZdeddfdZddZdeddfdZdeddfdZ xZS )Commentsz=
    A class for writing the Excel XLSX Comments file.


    r   Nc                 V    t                                                       i | _        dS )z
        Constructor.

        N)superr-   
author_ids)r+   	__class__s    r,   r-   zComments.__init__   s&     	r.   comments_datac                    |g }|                                   |                                  |                     |           |                     |           |                     d           |                                  d S )Ncomments)_xml_declaration_write_comments_write_authors_write_comment_list_xml_end_tag
_xml_close)r+   rR   s     r,   _assemble_xml_filezComments._assemble_xml_file   s    
  M 	 	 	M*** 	  ///*%%% 	r.   c                 @    d}d|fg}|                      d|           d S )Nz9http://schemas.openxmlformats.org/spreadsheetml/2006/mainxmlnsrT   )_xml_start_tag)r+   r]   
attributess      r,   rV   zComments._write_comments  s0    K&'
J
33333r.   comment_datac                     d}|                      d           |D ]8}|j        }|-|| j        vr$|| j        |<   |dz  }|                     |           9|                     d           d S )Nr   authorsr   )r^   r   rP   _write_authorrY   )r+   r`   author_countcommentr   s        r,   rW   zComments._write_authors  s    I&&&# 		+ 		+G^F!fDO&C&C*6'! ""6***)$$$$$r.   datac                 2    |                      d|           d S )Nr   )_xml_data_element)r+   rf   s     r,   rc   zComments._write_author  s    x.....r.   c                     |                      d           |D ]3}d}|j        | j        |j                 }|                     ||           4|                     d           d S )NcommentList)r^   r   rP   _write_commentrY   )r+   r`   re   	author_ids       r,   rX   zComments._write_comment_list#  su    M***# 	4 	4GI~) OGN;	 3333-(((((r.   re   rm   c                     t          |j        |j                  }d|fg}|dk    r|                    d| f           |                     d|           |                     |           |                     d           d S )Nrefrk   authorIdre   )r   r   r   appendr^   _write_textrY   )r+   re   rm   ro   r_   s        r,   rl   zComments._write_comment2  s    W[99cl^
??zi>:;;;Iz222 	!!!)$$$$$r.   c                     |                      d           |                     |           |                     d           d S )Nr   )r^   _write_text_rrY   r+   re   s     r,   rr   zComments._write_textB  sF    F### 	7###&!!!!!r.   c                     |                      d           |                     |           |                     |j                   |                     d           d S )Nr)r^   _write_r_pr_write_text_tr   rY   ru   s     r,   rt   zComments._write_text_rK  s^    C    	!!! 	7<(((#r.   r   c                     g }t          |          r|                    d           |                     d||           d S )N)z	xml:spacepreservet)r
   rq   rh   )r+   r   r_   s      r,   ry   zComments._write_text_tW  sJ    
%% 	97888sD*55555r.   c                    |                      d           |                     |j                   |                                  |                     |j                   |                     |j                   |                     d           d S )NrPr)	r^   	_write_szr%   _write_color_write_r_fontr&   _write_familyr'   rY   ru   s     r,   rx   zComments._write_r_pr`  s    E""" 	w())) 	 	7,--- 	7.///%     r.   r%   c                 <    d|fg}|                      d|           d S )Nvalsz_xml_empty_tag)r+   r%   r_   s      r,   r   zComments._write_szr  s+    i()
D*-----r.   c                 8    dg}|                      d|           d S )N)indexedQ   r   r   )r+   r_   s     r,   r   zComments._write_colorx  s&    %&
GZ00000r.   r&   c                 <    d|fg}|                      d|           d S )Nr   rFontr   )r+   r&   r_   s      r,   r   zComments._write_r_font~  s+    i()
GZ00000r.   r'   c                 <    d|fg}|                      d|           d S )Nr   familyr   )r+   r'   r_   s      r,   r   zComments._write_family  s+    k*+
Hj11111r.   )r   NrF   )rG   rH   rI   rJ   r-   r   r   r   r[   rV   rW   r6   rc   rX   r4   rl   rr   rt   ry   rx   r5   r   r   r   r   __classcell__)rQ   s   @r,   rM   rM      s/               <@ %d;&78	   >4 4 4 4%4+< % % % % %&/# /$ / / / /)[0A )d ) ) ) )%k %c %d % % % % "; "4 " " " "
[ 
T 
 
 
 
6# 6$ 6 6 6 6!; !4 ! ! ! !$.5 .T . . . .1 1 1 11s 1t 1 1 1 12 2 2 2 2 2 2 2 2 2r.   rM   N)typingr   r   r   r   xlsxwriter.colorr    r	   utilityr
   r   r   r   	XMLwriterrM   rK   r.   r,   <module>r      s    / . . . . . . . . . . . " " " " " "       O O O O O O O O O Oj% j% j% j% j% j% j% j%d2 2 2 2 2y" 2 2 2 2 2r.   