
    z%iR                         	 d dl Z d dlmZ d dlmZ g dZdad Zd Z G d de      Z	 G d	 d
      Z
edk(  rd dlmZ  eddd       yy)    N)
messagebox)EditorWindow)zfile "([^"]*)", line (\d+)z([^\s]+)\((\d+)\)z^(\s*\S.*?):\s*(\d+):z([^\s]+):\s*(\d+):z^\s*(\S.*?):\s*(\d+):c                  |    	 t         D  cg c]&  } t        j                  | t        j                        ( c} ay c c} w N)file_line_patsrecompile
IGNORECASEfile_line_progs)pats    B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/outwin.pycompile_progsr      s3    E #12 zz#r}}5 2O 2s   +9c                     	 t         s
t                t         D ]H  }|j                  |       }|s|j                  dd      \  }}	 t	        |      }|j                           n y 	 |t        |      fS # t        $ r Y ew xY w# t        $ r Y y w xY w)N      )	r   r   searchgroupopencloseOSErrorint	TypeError)lineprogmatchfilenamelinenofs         r   file_line_helperr      s      D!${{1a0HfN	 V$$    s$   A2%B 2	A>=A>	BBc                   T    e Zd Z	 g dZdZd Zd Zd Zd ZddZ	d Z
d	 Zd
 ZddZy)OutputWindow))Cutz<<cut>>rmenu_check_cut)Copyz<<copy>>rmenu_check_copy)Pastez	<<paste>>rmenu_check_paste)NNN)zGo to file/line<<goto-file-line>>NFc                 |    t        j                  | g|  | j                  j                  d| j                         y )Nr(   )r   __init__textbindgoto_file_line)selfargss     r   r*   zOutputWindow.__init__N   s.    d*T*		+T-@-@A    c                      	 y)NF )r.   r   s     r   ispythonsourcezOutputWindow.ispythonsourceS   s    @r0   c                      	 y)NOutputr2   r.   s    r   short_titlezOutputWindow.short_titleW   s    'r0   c                 ,    	 | j                         rdS dS )Nyesno)	get_savedr6   s    r   	maybesavezOutputWindow.maybesave[   s    E(u2d2r0   c                     	 | j                   j                  |||       | j                   j                  |       | j                   j                          t	        |      S r   )r+   insertseeupdate_idletaskslenr.   stagsmarks       r   writezOutputWindow.write`   sH    	  			q$'		d		""$1vr0   c                 6    	 |D ]  }| j                  |        y r   )rF   )r.   linesr   s      r   
writelineszOutputWindow.writelinesv   s     , 	DJJt	r0   c                      	 y r   r2   r6   s    r   flushzOutputWindow.flush{   s    Br0   c                 .    t        j                  |i | y r   )r   	showerror)r.   r/   kwargss      r   rM   zOutputWindow.showerror   s    d-f-r0   Nc                 *   	 | j                   j                  dd      }t        |      }|sH| j                   j                  dd      }t        |      }|s| j                  dd| j                          y |\  }}| j                  j                  ||       y )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   rM   flistgotofileline)r.   eventr   resultr   r   s         r   r-   zOutputWindow.goto_file_line   s    	 yy}}/1AB!$' 99==!:!8:D%d+F%C99	  &
 !&

&1r0   )r2   r>   r   )__name__
__module____qualname__rmenu_specsallow_code_contextr*   r3   r7   r<   rF   rI   rK   rM   r-   r2   r0   r   r!   r!   :   sD    K B
3
,
.2r0   r!   c                   0    e Zd ZddiddidZd Zd Zd Zy)	OnDemandOutputWindow
foregroundbluez#007700)stdoutstderrc                      || _         d | _        y r   )rR   owin)r.   rR   s     r   r*   zOnDemandOutputWindow.__init__   s    
	r0   c                 v    | j                   s| j                          | j                   j                  |||       y r   )rb   setuprF   rB   s       r   rF   zOnDemandOutputWindow.write   s&    yyJJL		4&r0   c                    t        | j                        x| _        }|j                  }| j                  j                         D ]  \  }}|s	 |j                  |fi |  |j                  d       | j                  j                  | _        y )Nsel)	r!   rR   rb   r+   tagdefsitemstag_configure	tag_raiserF   )r.   rb   r+   tagcnfs        r   rd   zOnDemandOutputWindow.setup   su    '

33	Dyy**, 	/HC"""3.#.	/ 	uYY__
r0   N)rV   rW   rX   rg   r*   rF   rd   r2   r0   r   r\   r\      s*     !&) ),G'
%r0   r\   __main__)mainzidlelib.idle_test.test_outwinr   F)	verbosityexit)r   tkinterr   idlelib.editorr   r   r   r   r   r!   r\   rV   unittestrn   r2   r0   r   <module>rt      se    
  ' 28a2< a2J% %4 z	(AEB r0   