B
     S]8                 @   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
   !lib/python3.7/idlelib/filelist.py__init__   s    zFileList.__init__Nc             C   s   |st | |}tj|r:tjdd|f | jd d S tj|}|| j	krh| j	| }|j
  |S |rt||S | | ||}|jr|S |  d S d S )Nz
File Errorz%r is a directory.)master)AssertionErrorcanonizeospathisdirtkMessageBox	showerrorr   normcaser   topwakeupr   Z	good_loadZ_close)r	   filenameactionkeyeditr
   r
   r   open   s(    




zFileList.openc             C   s(   |  |}|d k	r$|d k	r$|| d S )N)r   Zgotoline)r	   r   linenor   r
   r
   r   gotofileline,   s    
zFileList.gotofilelinec             C   s   |  | |S )N)r   )r	   r   r
   r
   r   new1   s    zFileList.newc             O   s*   x$t | jD ]}| }|dkrP qW dS )NZcancelbreak)listr   close)r	   argskwdsr   Zreplyr
   r
   r   close_all_callback4   s
    zFileList.close_all_callbackc             C   sT   y| j | }W n tk
r*   td d S X |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   |   y| j| }W n tk
r2   td d S X |jj}|sZ|rL| j|= d | j|< d S | |}tj	
|}||kr|d S || jkr| j| }d | j|< tjdd|f | jd || j|< || j|< |ry| j|= W n tk
r   Y nX d S )Nz.Don't know this EditorWindow object.  (rename)zName Conflictz.You now have multiple edit windows open for %r)r   )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   sH   t j|s<yt  }W n tk
r,   Y nX t j||}t j|S )N)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)tkinterr6   r5   r7   Zidlelib.runr8   Zwithdrawr   r   r   Zmainloop)r6   r7   r8   r   Zflistr
   r
   r   _testr   s    r:   __main__)mainzidlelib.idle_test.test_filelist   )	verbosity)
__doc__r   r9   r   r   r   r:   r2   Zunittestr<   r
   r
   r
   r   <module>   s   k