
    G@d                     N    d Z ddlmZ ddlmZmZ ddlmZ  G d de          ZdS )z3
This module contains the indentation guide panel.
    )Qt)QPainterQColor)Panelc                   R     e Zd ZdZd Z fdZd Zd Zd Zd Z	d Z
d	 Zd
 Z xZS )IndentationGuidez2Indentation guides to easy identify nested blocks.c                 l    t          j        |            t          j        | _        d| _        d| _        dS )zaInitialize IndentationGuide panel.
        i_width(int): identation width in characters.
           r   N)r   __init__r   darkGraycolori_width
bar_offsetselfs    Nlib/python3.11/site-packages/spyder/plugins/editor/panels/indentationguides.pyr   zIndentationGuide.__init__   s/     	t[
    c                     t                                          |           |                                }|j                            | j                   |j                            | j                   dS )z"Manages install setup of the pane.N)super
on_installhorizontalScrollBarvalueChangedconnectupdate_bar_positionsliderReleasedupdate)r   editorhorizontal_scrollbar	__class__s      r   r   zIndentationGuide.on_install!   sf    6"""%99;;)11$2JKKK+33DK@@@@@r   c                     || _         d S )N)r   )r   values     r   r   z$IndentationGuide.update_bar_position(   s    r   c                 *    |                                  S )zOverride Qt method.)sizer   s    r   sizeHintzIndentationGuide.sizeHint+   s    yy{{r   c                    t          |           }t          | j                  }|                    d           |                    |           | j                                                                        | j                                        	                                z   }| j        j
                            d          }|j        }| j        j        }| j                                        }|D ]}	||	         }
|	|
f}|                     ||          r| j                                                            |	          }| j                                                            |
dz
            }| j                                        }t#          | j                            |                              |                                                    }t#          | j                            |                              |                                                    }|                    t-          |	dz
  d                    }|                    |
dz
            }|rg||k    ra| j                                        }t#          |                    |dz            | j        z   |z             }|                    ||||           dS )zD
        Overriden Qt method.

        Paint indent guides.
        g      ?FoldingPanel   r   9N)r   r   r   	setAlphaFsetPenr   documentdocumentMargincontentOffsetxpanelsgetfolding_regionsleading_whitespacesget_visible_block_numbersdo_paintfindBlockByNumberintblockBoundingGeometry
translatedtopbottommaxfontMetricswidthr   drawLine)r   eventpainterr   offsetfolding_panelr1   r2   visible_blocks
start_lineend_lineline_numbersstart_block	end_blockcontent_offsetr9   r:   total_whitespaceend_whitespacefont_metricsr.   s                        r   
paintEventzIndentationGuide.paintEvent/   s    4..tz""u +&&((7799+++--//112 *..~>>'7"k= >>@@ * 	8 	8J&z2H&1L}}^\:: 8"k2244FF    K0022DDqL" "	 "&!:!:!<!<$+;;! !!+N!;!;CCEEC CT[>> )z.99&&((D D $7#:#:
Q**$, $, !4!8!8A!F!F! 8n8H&H&H#';#:#:#<#<LL../?#/EFF O,.45 6 6A$$QQ7771	8 	8r   c                 p    || _         |                     |           | j                                         dS )zToggle edge line visibility.N)_enabled
setVisibler   request_folding)r   states     r   set_enabledzIndentationGuide.set_enabledd   s7     	##%%%%%r   c                 N    | j         j                            d          | _        dS )z6Set color using syntax highlighter color for comments.commentN)r   highlighterget_color_namer   r   s    r   update_colorzIndentationGuide.update_colorm   s     [,;;IFF


r   c                     || _         dS )z7Set indentation width to be used to draw indent guides.N)r   )r   indentation_widths     r   set_indentation_widthz&IndentationGuide.set_indentation_widthq   s    (r   c                    |d         dz   }|d         dz   }|d         }|d         }||k     r||cxk    r|k    rn ndS ||k    r||k    rdS ||cxk    r|k    rn n||k    rdS ||cxk    r|k    rn n||cxk    r|k    rn ndS dS )ze
        Decide if we need to paint an indent guide according to the
        visible region.
        r   r'   TF )r   rC   rF   first_visible_linelast_visible_linerD   rE   s          r   r4   zIndentationGuide.do_paintu   s    ,A.2*1-1 "!_
? +++#xDDDD3DDDDDD4 +++<M0M0M4  :BBBB1BBBBBB,,,4  :BBBB1BBBBBB#xDDDD3DDDDDD4 ur   )__name__
__module____qualname____doc__r   r   r   r$   rM   rS   rX   r[   r4   __classcell__)r   s   @r   r   r      s        <<  A A A A A       18 18 18j& & &G G G) ) )! ! ! ! ! ! !r   r   N)	rc   qtpy.QtCorer   
qtpy.QtGuir   r   spyder.api.panelr   r   r]   r   r   <module>rh      s    
       ' ' ' ' ' ' ' ' # " " " " "C C C C Cu C C C C Cr   