
W*                 @   sr   d  d l  Td  d l m Z d  d l Z d  d l j Z d  d l m Z Gd d   d e  Z	 Gd d   d  Z
 d S)	    )*)EditorWindowN)	IOBindingc               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z f  d	 d
 d  Z d d   Z d d   Z	 d% d& d' d( d) g Z
 d d d d d  g Z d Z d d! d"  Z d# d$   Z d S)*OutputWindowc             G   s*   t  j |  |  |  j j d |  j  d  S)Nz<<goto-file-line>>)r   __init__textbindgoto_file_line)selfargs r   A/afs/.cs/s/python-3.5.2/amd64_ubu14/lib/python3.5/OutputWindow.pyr      s    zOutputWindow.__init__c             C   s   d S)Nr   r   )r
   filenamer   r   r   ispythonsource   s    zOutputWindow.ispythonsourcec             C   s   d S)NZOutputr   )r
   r   r   r   short_title   s    zOutputWindow.short_titlec             C   s   |  j    r d Sd Sd  S)Nyesno)Z	get_saved)r
   r   r   r   	maybesave   s    zOutputWindow.maybesaveinsertc             C   sg   t  | t t f  r* | j t j d  } |  j j | | |  |  j j |  |  j j   t	 |  S)Nreplace)

isinstancebytesdecoder   encodingr   r   Zseeupdatelen)r
   stagsmarkr   r   r   write%   s    zOutputWindow.writec             C   s"   x | D] } |  j  |  q Wd  S)N)r   )r
   linesliner   r   r   
writelines-   s    zOutputWindow.writelinesc             C   s   d  S)Nr   )r
   r   r   r   flush1   s    zOutputWindow.flushCut<<cut>>rmenu_check_cutCopy<<copy>>rmenu_check_copyPaste	<<paste>>rmenu_check_pasteNGo to file/line<<goto-file-line>>zfile "([^"]*)", line (\d+)z([^\s]+)\((\d+)\)z^(\s*\S.*?):\s*(\d+):z([^\s]+):\s*(\d+):z^\s*(\S.*?):\s*(\d+):c       	      C   s   |  j  d  k rN g  } x- |  j D]" } | j t j | t j   q W| |  _  |  j j d d  } |  j |  } | s |  j j d d  } |  j |  } | s t	 j
 d d d |  j d  S| \ } } |  j j |  } | 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)file_line_progsfile_line_patsappendrecompile
IGNORECASEr   get_file_line_helpertkMessageBoxZ	showerrorflistopenZgotoline)	r
   eventlpatr!   resultr   linenoZeditr   r   r   r	   I   s(     		
zOutputWindow.goto_file_linec             C   s   xx |  j  D]i } | j |  } | r
 | j d d  \ } } y t | d  } | j   PWq
 t k
 rr w
 Yq
 Xq
 Wd  Sy | t |  f SWn t k
 r d  SYn Xd  S)N      r)r0   searchgroupr:   closeOSErrorint	TypeError)r
   r!   progmatchr   r?   fr   r   r   r7   d   s    
zOutputWindow._file_line_helper)r$   r%   r&   )r'   r(   r)   )r*   r+   r,   )NNN)r-   r.   N)__name__
__module____qualname__r   r   r   r   r   r"   r#   Zrmenu_specsr1   r0   r	   r7   r   r   r   r   r      s(   			r   c               @   sR   e  Z d  Z d d d i d d d i i Z d d   Z d d	   Z d
 d   Z d S)OnDemandOutputWindowstdoutZ
foregroundZbluestderrz#007700c             C   s   | |  _  d  |  _ d  S)N)r9   owin)r
   r9   r   r   r   r      s    	zOnDemandOutputWindow.__init__c             C   s-   |  j  s |  j   |  j  j | | |  d  S)N)rR   setupr   )r
   r   r   r   r   r   r   r      s    	
zOnDemandOutputWindow.writec             C   su   t  |  j  |  _ } | j } x3 |  j j   D]" \ } } | r/ | j | |  q/ W| j d  |  j j |  _ d  S)NZsel)	r   r9   rR   r   tagdefsitemsZtag_configureZ	tag_raiser   )r
   rR   r   tagZcnfr   r   r   rS      s    	zOnDemandOutputWindow.setupN)rL   rM   rN   rT   r   r   rS   r   r   r   r   rO   x   s
   rO   )tkinterZidlelib.EditorWindowr   r3   Ztkinter.messageboxZ
messageboxr8   Zidlelibr   r   rO   r   r   r   r   <module>   s   
q