o
    j{&                     @   s   d Z ddlmZ ddlmZ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 ddd	d
ddZddddddZejjZdddZdS )zHModule that provides a GUI-based editor for Matplotlib's figure options.    )chain)cbookcmcolorsmarkersimage)QtGui)_formlayout)DateConverternum2dateZSolidZDashedZDashDotZDottedNone)-z--z-.:r   ZDefaultzSteps (Pre)zSteps (Mid)zSteps (Post))defaultz	steps-preZstepsz	steps-midz
steps-postNc                    sZ  d
dd  j  fdd D d  f
gt
fdd D d	}d
d  D dd  D g   D ]}| }|dkrQqF||f qFg }dd }D ]m\}}tj	t
| | dd}tj	t
| | dd}tj	t
| | dd}	d|f
dd|t| fd|t| fd| fd|f
dd|t| fd| fd|	fd|fg}
||
|dg qat|g 	g  j jD ]}| }|dks| du rq݈	||f qg }dd ttj D }	D ]d\}}| }|jtjvr||jfg|}|  \}}d|fd|jg| fd |fd!|fg}t!|d"rad#d tt"j#D }|d$|$ g|f g d%}|d&|% g|f |||dg qt||d'dfg}|r||d(df |r||d)df  	fd*d+}t&j'|d,|t()t*t+,d-d.|d/ dS )0zEdit matplotlib figure options)NNc                 S   s   t |tr
tt| S tt| S )z.Convert axis limits for correct input editors.)
isinstancer
   mapr   float)lim	converter r   l/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/backends/qt_editor/figureoptions.pyconvert_limits#   s   


z#figure_edit.<locals>.convert_limitsc              
      s4   i | ]\}}|t t d | d | qS get_r   )tuplegetattrget_converter.0nameaxis)axesr   r   r   
<dictcomp>+   s    zfigure_edit.<locals>.<dictcomp>ZTitlec                    sd   g | ].\}}d d|   dfd | d fd | d fd|j fd| d	d
ddgffqS )Nz<b>z	-Axis</b>ZMinr   ZMax   LabelZScaleZlinearlogZsymlogZlogit)titlelabelZget_text	get_scaler   )axis_limitssepr   r   
<listcomp>4   s    
zfigure_edit.<locals>.<listcomp>)z(Re-)Generate automatic legendFc                 S      i | ]	\}}||  qS r   )r   r   r   r   r   r"   D       c                 S   r,   r   )Z	get_unitsr   r   r   r   r"   H   r-   Z
_nolegend_c                 S   sf   || vri | |t |i} dd |  D }dd | D }|| |  }|gt| dd d S )a  
        Prepare entry for FormLayout.

        *d* is a mapping of shorthands to style names (a single style may
        have multiple shorthands, in particular the shorthands `None`,
        `"None"`, `"none"` and `""` are synonyms); *init* is one shorthand
        of the initial style.

        This function returns an list suitable for initializing a
        FormLayout combobox, namely `[initial_name, (shorthand,
        style_name), (shorthand, style_name), ...]`.
        c                 S      i | ]\}}||qS r   r   )r   shortr   r   r   r   r"   g       z5figure_edit.<locals>.prepare_data.<locals>.<dictcomp>c                 S   r.   r   r   )r   r   r/   r   r   r   r"   i   r0   c                 S   s   | d S )Nr#   r   )Zshort_and_namer   r   r   <lambda>o   s    z3figure_edit.<locals>.prepare_data.<locals>.<lambda>)key)stritemssorted)dinitZ
name2shortZ
short2nameZcanonical_initr   r   r   prepare_dataV   s   z!figure_edit.<locals>.prepare_dataT)Z
keep_alphar$   )Nz<b>Line</b>z
Line stylez
Draw styleZWidthzColor (RGBA))Nz<b>Marker</b>StyleSizezFace color (RGBA)zEdge color (RGBA) Nc                 S   s   g | ]\}}||fqS r   r   )r   r   cmapr   r   r   r+      s    ZColormapz
Min. valuez
Max. valueget_interpolationc                 S   s   g | ]}||fqS r   r   r   r   r   r   r   r+      s    Interpolation)datargbaautozInterpolation stageZAxesZCurveszImages, etc.c           '   
      s   fddD }|  d}r|  dng }r|  dng }| r&td| d} | |  }t D ]P\}\}}	|d|  }
|d| d  }|d| d  }|d| d  }|	 |krot d	| d
| |	j|
|dd |	| |		|  |	
|  q:t|D ]P\}}| d }|\	}}}}}}}}}|| || || || t|}|d || |dkr|| || || || qt|D ]D\}}| d }t|dkr|\}}}}} }!||  ||! nt|dkr|\}}}}|| || |jt||g  q|rPd}"d}# jdurB  }$|$jdu}"|$j }# j!|#d}%|%rP|%"|"  # }&|&j$%  D ]}t d| d || kru|&j$j&'   dS q[dS )zA callback to apply changes.c                    s"   i | ]}|t  d | d qS r   )r   r>   )r!   r   r   r"      s    z7figure_edit.<locals>.apply_callback.<locals>.<dictcomp>r   zUnexpected field   r#         Zset_scaleF)rB   Nnone   )ncolsr   r   )(pop
ValueError	set_title	enumerater4   r(   r   Z_set_limZset_label_textZ_set_converterZ	set_unitsZ	set_labelZset_linestyleZset_drawstyleZset_linewidthmcolorsto_rgbaZ	set_alphaZ	set_colorZ
set_markerZset_markersizeZset_markerfacecolorZset_markeredgecolorlenZset_interpolationZset_interpolation_stageZset_cmapZset_climr5   Zlegend_Z
get_legendZ
_draggableZ_ncolsZlegendZset_draggableZ
get_figureZcanvasZdrawZtoolbarZpush_current)'r@   Zorig_limitsgeneralcurves	mappablesr&   Zgenerate_legendir   r    Zaxis_minZaxis_maxZ
axis_labelZ
axis_scaleindexZcurveliner'   Z	linestyleZ	drawstyleZ	linewidthcolormarkerZ
markersizeZmarkerfacecolorZmarkeredgecolorrA   Zmappable_settingsmappabler<   lowhighinterpolationZinterpolation_stageZ	draggablerI   Z
old_legendZ
new_legendZfigure)r!   axis_converteraxis_map
axis_units	has_curvehas_smlabeled_lineslabeled_mappablesr   r   apply_callback   s   





















z#figure_edit.<locals>.apply_callbackzFigure optionsimageszqt4_editor_options.svg)r&   parenticonapply)-Z	_axis_mapr4   Z	get_titler   from_iterable	get_linesZ	get_labelappendrN   Zto_hexrO   	get_colorZ	get_alphaZget_markeredgecolorZget_markerfacecolor
LINESTYLESZget_linestyle
DRAWSTYLESZget_drawstyleZget_linewidthMARKERSZ
get_markerZget_markersizeboolre   collectionsZ	get_arrayr5   r   Z
_colormapsZget_cmapr   Zget_climhasattrmimageZinterpolations_namesr=   Zget_interpolation_stager	   Zfeditr   ZQIconr3   r   Z_get_data_path)r!   rf   rQ   rV   r'   rR   r8   rW   ecfcZ	curvedatarY   rS   Zcmapsr<   rZ   r[   ZmappabledataZinterpolationsZinterpolation_stagesZdatalistrd   r   )r!   r]   r)   r^   r_   r   r`   ra   rb   rc   r*   r   figure_edit   s   



T
rv   )N)__doc__	itertoolsr   Z
matplotlibr   r   r   rN   r   r   rs   Zmatplotlib.backends.qt_compatr   Zmatplotlib.backends.qt_editorr	   Zmatplotlib.datesr
   r   rm   rn   ZMarkerStylero   rv   r   r   r   r   <module>   s&   