<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
2a(                 @   s   d dl Z d dlmZ d dlZd dlmZmZmZ d dl	m
Z
 ddddd	d
ddddddhZdZdZe jdfddZdd ZG dd dZej  edkrd dlmZ edddd dS )     N)maxsize)TOPXSUNKEN)idleConfclassdefelifelseexceptfinallyforiftrywhilewithasyncd   i  z^(\s*)(\w*)c             C   s   |j | j S )N)matchgroups)codelinec r   0/opt/alt/python36/lib64/python3.6/codecontext.pyget_spaces_firstword   s    r   c             C   sF   t | \}}t|}t| |ks,| | dkr0t}|tko:|}|| |fS )N#)r   lenINFINITYBLOCKOPENERS)r   ZspacesZ	firstwordindentopenerr   r   r   get_line_info   s    r!   c               @   s^   e Zd Zdd Zedd Zdd Zddd	ZdddZdd Z	dddZ
dd Zdd ZdS )CodeContextc             C   s^   || _ |j| _| jd | _tj| _d | _d| _dg| _| jj	t
| j| _| jj	t| j| _d S )Nfont   r    F)r   r&   r%   F)editwintexttextfontr"   colorscontextcolorscontext
topvisibleinfoafterUPDATEINTERVALtimer_eventt1CONFIGUPDATEINTERVALconfig_timer_eventt2)selfr'   r   r   r   __init__0   s    zCodeContext.__init__c             C   s,   t jdddddd| _t jt j d| _d S )N
extensionsr"   Zmaxlinesint   )typedefaultr,   )r   Z	GetOptioncontext_depthZGetHighlightZCurrentThemer*   )clsr   r   r   reloadM   s    zCodeContext.reloadc          	   C   s2   y | j j| j | j j| j W n   Y nX d S )N)r(   Zafter_cancelr2   r5   )r6   r   r   r   __del__T   s
    zCodeContext.__del__Nc             C   s   | j s| jj| jjf}d}d}xP|D ]H}||jj|j d 7 }||jj|jd7 }||jj|jd7 }q$W tj	| jj
| j| jd | jd dd||tdd
| _ | j jd	| j | j jttd
| jjd n| j j  d | _ dS )Nr   padxborder
background
foregroundr$   disabled)	r#   bgZfgheightwidthrA   rB   Zreliefstatez<ButtonRelease-1>F)ZsidefillexpandZbeforebreak)r,   r'   r(   Z
text_frameZtkZgetintZ	pack_infoZcgettkinterZTexttopr)   r+   r   Zbind
jumptolinepackr   r   Zdestroy)r6   eventZwidgetsrA   rB   Zwidgetr   r   r   toggle_code_context_event\   s*    


z%CodeContext.toggle_code_context_eventr$   r   c             C   s   g }t }xt||d dD ]x}| jj| d| d}t|\}}	}
||k r|}|
dkrb|d7 }|
r||k r||kr|j|||	|
f ||krP qW |j  ||fS )Nr$   z.0z.endr
   r	   r&   )r
   r	   )r   ranger(   getr!   appendreverse)r6   new_topvisibleZstopline
stopindentlines
lastindentZlinenumr   r   r(   r    r   r   r   get_context   s    
zCodeContext.get_contextc             C   sZ  t | jjdjdd }| j|kr(d S | j|k rf| j|| j\}}x| jd d |krb| jd= qFW n`| jd d d }x,| jd d |kr| jd d }| jd= qzW | j|| jd d d |\}}| jj| || _dd | j| j d  D }|d rdnd}t	|| | j
d< d| j
d	< | j
jd
d | j
jddj||d   d| j
d	< d S )Nz@0,0.r   r$   c             S   s   g | ]}|d  qS )   r   ).0xr   r   r   
<listcomp>   s    z3CodeContext.update_code_context.<locals>.<listcomp>rG   ZnormalrI   z1.0end
rE   r&   r&   r&   r&   r&   r&   r&   )r9   r(   indexsplitr-   r[   r.   extendr=   r   r,   deleteinsertjoin)r6   rW   rY   rZ   rX   Zcontext_stringsZ	showfirstr   r   r   update_code_context   s0    



zCodeContext.update_code_contextc             C   sp   t | j}|dkrd}n:tt| jjd}td|| j d }| j||  d }| jj	| d | j
  d S )Nr$   rg   r   z.0)r   r.   r9   floatr,   rc   maxr=   r(   Zyviewri   )r6   rQ   rY   ZnewtopZcontextlineoffsetr   r   r   rO      s    
zCodeContext.jumptolinec             C   s$   | j r| j  | jjt| j| _d S )N)r,   ri   r(   r/   r0   r1   r2   )r6   r   r   r   r1      s    zCodeContext.timer_eventc             C   sv   | j d }| jr`|| jks&tj| jkr`|| _tj| _| j| jd< | jd | jd< | jd | jd< | j jt| j| _	d S )Nr#   rC   rD   )
r(   r,   r)   r"   r*   r+   r/   r3   r4   r5   )r6   Znewtextfontr   r   r   r4      s    
zCodeContext.config_timer_event)N)r$   r   )N)__name__
__module____qualname__r7   classmethodr?   r@   rR   r[   ri   rO   r1   r4   r   r   r   r   r"   -   s   
&
(
r"   __main__)mainz"idlelib.idle_test.test_codecontextr]   F)	verbosityexit)resysr   r   rM   Ztkinter.constantsr   r   r   Zidlelib.configr   r   r0   r3   compiler   r!   r"   r?   rm   Zunittestrr   r   r   r   r   <module>   s     =