B
    2*\                 @   s   d dl Z d dlmZ d dlmZ d dlmZ ddddd	gZdad
d Z	dd Z
G dd deZG dd dZedkrd dlmZ edddd dS )    N)
messagebox)EditorWindow)iomenuzfile "([^"]*)", line (\d+)z([^\s]+)\((\d+)\)z^(\s*\S.*?):\s*(\d+):z([^\s]+):\s*(\d+):z^\s*(\S.*?):\s*(\d+):c               C   s   dd t D ad S )Nc             S   s   g | ]}t |t jqS  )recompile
IGNORECASE).0Zpatr   r   9C:\ALexclude\prg\programme\Python37\Lib\idlelib\outwin.py
<listcomp>   s   z!compile_progs.<locals>.<listcomp>)file_line_patsfile_line_progsr   r   r   r
   compile_progs   s    r   c          	   C   s   t s
t  x^t D ]R}|| }|r|dd\}}yt|d}|  P W q tk
r`   wY qX qW d S y|t|fS  tk
r   d S X d S )N      r)	r   r   searchgroupopencloseOSErrorint	TypeError)lineprogmatchfilenamelinenofr   r   r
   file_line_helper   s"    


r   c               @   sf   e Zd ZdddddgZdd Zdd	 Zd
d Zdd ZdddZdd Z	dd Z
dd ZdddZdS )OutputWindow)ZCutz<<cut>>Zrmenu_check_cut)ZCopyz<<copy>>Zrmenu_check_copy)ZPastez	<<paste>>Zrmenu_check_paste)NNN)zGo to file/linez<<goto-file-line>>Nc             G   s>   t j| f|  | jd| j | jd | ddd d S )Nz<<goto-file-line>>z<<toggle-code-context>>optionsz*Code ContextZdisabled)r   __init__textZbindgoto_file_lineZunbindZupdate_menu_state)selfargsr   r   r
   r"   M   s    zOutputWindow.__init__c             C   s   dS )NFr   )r%   r   r   r   r
   ispythonsourceT   s    zOutputWindow.ispythonsourcec             C   s   dS )NZOutputr   )r%   r   r   r
   short_titleX   s    zOutputWindow.short_titlec             C   s   |   rdS dS )NZyesno)Z	get_saved)r%   r   r   r
   	maybesave\   s    zOutputWindow.maybesaver   insertc             C   sF   t |tr|tjd}| j||| | j| | j  t	|S )Nreplace)

isinstancebytesdecoder   encodingr#   r+   Zseeupdatelen)r%   stagsmarkr   r   r
   writea   s    

zOutputWindow.writec             C   s   x|D ]}|  | qW d S )N)r6   )r%   linesr   r   r   r
   
writelinesx   s    
zOutputWindow.writelinesc             C   s   d S )Nr   )r%   r   r   r
   flush}   s    zOutputWindow.flushc             O   s   t j|| d S )N)r   	showerror)r%   r&   kwargsr   r   r
   r:      s    zOutputWindow.showerrorNc             C   sd   | j dd}t|}|sJ| j dd}t|}|sJ| jdd| j d d S |\}}| j|| d S )Nzinsert linestartzinsert lineendzinsert -1line linestartzinsert -1line lineendzNo special linezTThe line you point at doesn't look like a valid file name followed by a line number.)parent)r#   getr   r:   flistZgotofileline)r%   Zeventr   resultr   r   r   r   r
   r$      s    	
zOutputWindow.goto_file_line)r   r+   )N)__name__
__module____qualname__Zrmenu_specsr"   r'   r(   r*   r6   r8   r9   r:   r$   r   r   r   r
   r    ;   s   
r    c               @   s6   e Zd ZddiddidZdd Zdd Zd	d
 ZdS )OnDemandOutputWindowZ
foregroundZbluez#007700)stdoutstderrc             C   s   || _ d | _d S )N)r>   owin)r%   r>   r   r   r
   r"      s    zOnDemandOutputWindow.__init__c             C   s"   | j s|   | j ||| d S )N)rF   setupr6   )r%   r3   r4   r5   r   r   r
   r6      s    zOnDemandOutputWindow.writec             C   sX   t | j | _}|j}x(| j D ]\}}|r"|j|f| q"W |d | jj| _d S )NZsel)	r    r>   rF   r#   tagdefsitemsZtag_configureZ	tag_raiser6   )r%   rF   r#   tagZcnfr   r   r
   rG      s    
zOnDemandOutputWindow.setupN)r@   rA   rB   rH   r"   r6   rG   r   r   r   r
   rC      s
   rC   __main__)mainzidlelib.idle_test.test_outwinr   F)	verbosityexit)r   Ztkinterr   Zidlelib.editorr   Zidlelibr   r   r   r   r   r    rC   r@   ZunittestrL   r   r   r   r
   <module>   s    f