a
    $Rîh$  ã                   @   sR   d Z ddlZddlmZ G dd„ dƒZdd„ ZedkrNdd	lmZ ed
dd dS )zidlelib.filelisté    N)Ú
messageboxc                   @   s^   e Zd ZddlmZ dd„ Zddd„Zddd	„Zdd
d„Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚFileListr   ©ÚEditorWindowc                 C   s   || _ i | _i | _i | _d S ©N)ÚrootÚdictÚinversedictÚvars)Úselfr   © r   ú8/opt/python-3.9.24/usr/lib/python3.9/idlelib/filelist.pyÚ__init__   s    zFileList.__init__Nc                 C   s”   |   |¡}tj |¡r2tjdd|f | jd d S tj |¡}|| jv r`| j| }|j	 
¡  |S |rl||ƒS |  | ||¡}|jr„|S | ¡  d S d S )Nz
File Errorz%r is a directory.©Zmaster)ÚcanonizeÚosÚpathÚisdirr   Ú	showerrorr   Únormcaser   ÚtopÚwakeupr   Z	good_loadÚ_close)r   ÚfilenameÚactionÚkeyÚeditr   r   r   Úopen   s(    
ý


zFileList.openc                 C   s(   |   |¡}|d ur$|d ur$| |¡ d S r   )r   Zgotoline)r   r   Úlinenor   r   r   r   Úgotofileline,   s    
zFileList.gotofilelinec                 C   s   |   | |¡S r   r   )r   r   r   r   r   Únew1   s    zFileList.newc                 O   s(   t | jƒD ]}| ¡ }|dkr
 q$q
dS )NÚcancelÚbreak)Úlistr	   Úclose)r   ÚargsÚkwdsr   Zreplyr   r   r   Úclose_all_callback4   s
    zFileList.close_all_callbackc                 C   sT   z| j | }W n ty*   tdƒ Y d S 0 |r8| j|= | j |= | j sP| j ¡  d S )Nz-Don't know this EditorWindow object.  (close))r	   ÚKeyErrorÚprintr   r   Úquit)r   r   r   r   r   r   Úunregister_maybe_terminate;   s    z#FileList.unregister_maybe_terminatec                 C   sî   |  ¡  z| j| }W n ty2   tdƒ Y d S 0 |jj}|sZ|rL| j|= d | j|< d S |  |¡}tj	 
|¡}||kr|d S || jv r²| j| }d | j|< tjdd|f | jd || j|< || j|< |rêz| j|= W n tyè   Y n0 d S )Nz.Don't know this EditorWindow object.  (rename)zName Conflictz.You now have multiple edit windows open for %rr   )Zsaved_change_hookr	   r(   r)   Úior   r   r   r   r   r   r   r   r   )r   r   r   r   ZnewkeyZconflictr   r   r   Úfilename_changed_editG   s>    




ý

zFileList.filename_changed_editc                 C   sF   t j |¡s:zt  ¡ }W n ty*   Y n0 t j ||¡}t j |¡S r   )r   r   ÚisabsÚgetcwdÚOSErrorÚjoinÚnormpath)r   r   Úpwdr   r   r   r   g   s    zFileList.canonize)N)N)N)Ú__name__Ú
__module__Ú__qualname__Úidlelib.editorr   r   r   r   r    r'   r+   r-   r   r   r   r   r   r      s   


 r   c                  C   sd   ddl m}  ddlm} ddlm} | ƒ }||ƒ ||ƒ | ¡  t|ƒ}| ¡  |j	r`| 
¡  d S )Nr   )ÚTk)Úfixwordbreaks)Úfix_scaling)Útkinterr8   r7   r9   Zidlelib.runr:   Zwithdrawr   r    r	   Zmainloop)r8   r9   r:   r   Úflistr   r   r   Ú_testr   s    r=   Ú__main__)Úmainzidlelib.idle_test.test_filelisté   )Ú	verbosity)	Ú__doc__r   r;   r   r   r=   r4   Zunittestr?   r   r   r   r   Ú<module>   s   k