ó
Æ^c           @   sÒ  d  Z  d d l Z d d l Z d d l Z d d l m Z e j j ƒ  Z yJ d d l	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z m Z Wn' e k
 r¼ d e f d „  ƒ  YZ n=Xd e
 f d „  ƒ  YZ d	 e
 f d
 „  ƒ  YZ d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ y
 e Z Wn e k
 r8e Z n Xd „  Z d Z  d Z! e g e j" j# _$ e e j" j# _% e e e ƒ g e j" j& _$ e e j" j& _% e e g e j" j' _$ e e j" j' _% e e e e e ƒ e e ƒ g e j" j( _$ e e j" j( _% e e e e e ƒ e e ƒ g e j" j) _$ e e j" j) _% e e e ƒ g e j" j* _$ e e j" j* _% e e e ƒ g e j" j+ _$ e e j" j+ _% d e f d „  ƒ  YZ e j, j- ƒ  s·e j. j- ƒ  rùe j, j- ƒ  rÌe  pÏe! Z/ e j" j# e/ ƒ Z0 e ƒ  Z1 d „  Z2 n  y( d d l3 Z3 d d l4 Z4 d d l5 Z5 Wn e k
 r4nš Xe j, j- ƒ  sSe j. j- ƒ  rÎe j6 j7 d d ƒ d k rÎe j, j- ƒ  rŒe j, j8 ƒ  p˜e j. j8 ƒ  Z9 d „  Z: y e: ƒ  Wn e; k
 rÄZ< qÎXe: Z2 n  d S(   sÔ   
Emulate a vt100 terminal in cmd.exe

By wrapping sys.stdout / sys.stderr with Ansiterm,
the vt100 escape characters will be interpreted and
the equivalent actions will be performed with Win32
console commands.

iÿÿÿÿN(   t   Utils(
   t	   Structuret   windllt   c_shortt   c_ushortt   c_ulongt   c_intt   byreft   c_wchart   POINTERt   c_longt   AnsiTermc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sC   | |  _  y |  j  j |  _ Wn t k
 r/ n X|  j  j |  _ d  S(   N(   t   streamt   errorst   AttributeErrort   encoding(   t   selfR   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   __init__   s    	c         C   s=   z+ t  j ƒ  |  j j | ƒ |  j j ƒ  Wd  t  j ƒ  Xd  S(   N(   t   wlockt   acquireR   t   writet   flusht   release(   R   t   txt(    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR       s
    
c         C   s   |  j  j ƒ  S(   N(   R   t   fileno(   R   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   (   s    c         C   s   |  j  j ƒ  d  S(   N(   R   R   (   R   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   +   s    c         C   s   |  j  j ƒ  S(   N(   R   t   isatty(   R   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   .   s    (   t   __name__t
   __module__R   R   R   R   R   (    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR      s
   				t   COORDc           B   s    e  Z d  e f d e f g Z RS(   t   Xt   Y(   R   R   R   t   _fields_(    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   2   s   t
   SMALL_RECTc           B   s2   e  Z d  e f d e f d e f d e f g Z RS(   t   Leftt   Topt   Rightt   Bottom(   R   R   R   R   (    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR    5   s   t   CONSOLE_SCREEN_BUFFER_INFOc           B   s;   e  Z d  e f d e f d e f d e f d e f g Z RS(   t   Sizet   CursorPositiont
   Attributest   Windowt   MaximumWindowSize(   R   R   R   R   R    R   (    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR%   8   s   t   CONSOLE_CURSOR_INFOc           B   s    e  Z d  e f d e f g Z RS(   t   dwSizet   bVisible(   R   R   R   R   R   (    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR+   ;   s   c         C   s   |  r t  |  ƒ p | S(   N(   t   int(   t   numbert   default(    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   <lambda>C   s    iõÿÿÿiôÿÿÿc           B   sq  e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 d	 d
 „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z i e d 6e d 6e d 6e d 6e d 6e d 6e
 d 6e	 d 6e	 d 6e d 6e d 6e d  6e d! 6e d" 6e d# 6e d$ 6Z e j d% ƒ Z d& „  Z d' „  Z d( „  Z d) „  Z d* „  Z RS(+   s)   
		emulate a vt100 terminal in cmd.exe
		c         C   sì   | |  _  y | j |  _ Wn t k
 r, n X| j |  _ g  |  _ | j ƒ  d k rZ t p] t } t j	 j
 | ƒ |  _ t ƒ  |  _ t ƒ  |  _ t j	 j |  j t |  j ƒ ƒ t ƒ  |  _ t j	 j |  j t |  j ƒ ƒ } | d k |  _ d  S(   Ni   i   (   R   R   R   R   t   cursor_historyR   t   STD_ERROR_HANDLEt   STD_OUTPUT_HANDLER   t   kernel32t   GetStdHandlet   hconsoleR%   t   _sbinfoR+   t   _csinfot   GetConsoleCursorInfoR   t   _orig_sbinfot   GetConsoleScreenBufferInfot   _isatty(   R   t   st   handlet   r(    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   [   s    		!c         C   s&   t  j j |  j t |  j ƒ ƒ |  j S(   s+   
			Updates self._sbinfo and returns it
			(   R   R5   R<   R7   R   R8   (   R   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   screen_buffer_infoq   s    c         C   s  | r t  | ƒ p d } |  j ƒ  } | d k rT t d | j j ƒ } | j j } n_ | d k r” t | j j | j j ƒ } | j j | j j } n | j } | j j | j j } t ƒ  } t j	 j
 |  j t d ƒ | | t | ƒ ƒ t j	 j |  j | j | | t | ƒ ƒ d  S(   Ni    i   i   t    (   R.   RA   R   R'   R   R&   R   R   R   R5   t   FillConsoleOutputCharacterWR7   R   R   t   FillConsoleOutputAttributeR(   (   R   t   paramt   modet   sbinfot
   line_startt   line_lengtht   chars_written(    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt
   clear_linex   s    		+c         C   s6  t  | d ƒ } |  j ƒ  } | d k rO t d d ƒ } | j j | j j } n‡ | d k r™ t d d ƒ } | j j | j j } t j j	 |  j
 | ƒ n= | j } | j j | j j | j j | j j | j j } t ƒ  } t j j |  j
 t d ƒ | | t | ƒ ƒ t j j |  j
 | j | | t | ƒ ƒ d  S(   Ni    i   i   RB   (   t   to_intRA   R   R'   R   R   R&   R   R5   t   SetConsoleCursorPositionR7   R   RC   R   R   RD   R(   (   R   RE   RF   RG   t   clear_startt   clear_lengthRJ   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   clear_screenˆ   s    	4	+c         C   s#   |  j  ƒ  } |  j j | j ƒ d  S(   N(   RA   R2   t   appendR'   (   R   RE   RG   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   push_cursor™   s    c         C   s5   |  j  r1 |  j  j ƒ  } t j j |  j | ƒ n  d  S(   N(   R2   t   popR   R5   RM   R7   (   R   RE   t   old_pos(    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt
   pop_cursor�   s    	c         C   s£   | j  d ƒ \ } } } t | d ƒ d } t | d ƒ d } |  j ƒ  } t t t d | ƒ | j j ƒ t t d | ƒ | j j ƒ ƒ } t	 j
 j |  j | ƒ d  S(   Nt   ;i   i    (   t	   partitionRL   RA   R   t   mint   maxR&   R   R   R   R5   RM   R7   (   R   RE   t   yt   sept   xRG   t   new_pos(    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt
   set_cursor¢   s    !c         C   sf   t  | d ƒ d } |  j ƒ  } t t t d | ƒ | j j ƒ | j j ƒ } t	 j
 j |  j | ƒ d  S(   Ni   i    (   RL   RA   R   RX   RY   R&   R   R'   R   R   R5   RM   R7   (   R   RE   R\   RG   R]   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt
   set_column­   s    i    c         C   sy   |  j  ƒ  } t t t d | j j | ƒ | j j ƒ t t d | j j | ƒ | j j ƒ ƒ } t j	 j
 |  j | ƒ d  S(   Ni    (   RA   R   RX   RY   R'   R   R&   R   R   R5   RM   R7   (   R   t   x_offsett   y_offsetRG   R]   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   move_cursor¶   s
    %+c         C   s   |  j  d t | d ƒ ƒ d  S(   NRa   i   (   Rb   RL   (   R   RE   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   move_up¾   s    c         C   s   |  j  d t | d ƒ ƒ d  S(   NRa   i   (   Rb   RL   (   R   RE   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt	   move_downÁ   s    c         C   s   |  j  d t | d ƒ ƒ d  S(   NR`   i   (   Rb   RL   (   R   RE   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt	   move_leftÄ   s    c         C   s   |  j  d t | d ƒ ƒ d  S(   NR`   i   (   Rb   RL   (   R   RE   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt
   move_rightÇ   s    c         C   s6   |  j  ƒ  } |  j d | j j d t | d ƒ ƒ d  S(   NR`   Ra   i   (   RA   Rb   R'   R   RL   (   R   RE   RG   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt	   next_lineÊ   s    	c         C   s7   |  j  ƒ  } |  j d | j j d t | d ƒ ƒ d  S(   NR`   Ra   i   (   RA   Rb   R'   R   RL   (   R   RE   RG   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt	   prev_lineÑ   s    	c         C   s    | d @d >| d @B| d @d ?BS(   Ni   i   i   (    (   R   t   c(    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   rgb2bgrØ   s    c         C   sT  | j  d ƒ } |  j ƒ  } | j } x| D]} t | d ƒ } d | k  oW d k  n rz | d @|  j | d ƒ B} q+ d | k  o‘ d k  n r¸ | d	 @|  j | d
 ƒ d >B} q+ | d k rÓ |  j j } q+ | d k rì | d O} q+ | d k r| d O} q+ | d k r+ | d @| d @d ?B| d @d >B} q+ q+ Wt j j |  j	 | ƒ d  S(   NRV   i    i   i&   iðÿ  i   i'   i0   iÿ  i(   i   i   i   i€   i   iˆÿ  ip   (
   t   splitRA   R(   RL   Rj   R;   R   R5   t   SetConsoleTextAttributeR7   (   R   RE   t   colsRG   t   attrRi   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt	   set_colorÛ   s$    	")c         C   s/   d |  j  _ t j j |  j t |  j  ƒ ƒ d  S(   Ni   (   R9   R-   R   R5   t   SetConsoleCursorInfoR7   R   (   R   RE   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   show_cursorð   s    c         C   s/   d |  j  _ t j j |  j t |  j  ƒ ƒ d  S(   Ni    (   R9   R-   R   R5   Rp   R7   R   (   R   RE   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   hide_cursorô   s    t   At   Bt   Ct   Dt   Et   Ft   Gt   Ht   ft   Jt   Kt   ht   lt   mR>   t   us)   (?:\x1b\[([0-9?;]*)([a-zA-Z])|([^\x1b]+))c         C   s    zŽ t  j ƒ  |  j r} xt |  j j | ƒ D]M \ } } } | ri |  j j | ƒ } | rv | |  | ƒ qv q) |  j | ƒ q) Wn |  j j	 | ƒ Wd  t  j
 ƒ  Xd  S(   N(   R   R   R=   t   ansi_tokenst   findallt   ansi_command_tablet   gett   writeconsoleR   R   R   (   R   t   textRE   t   cmdR   t   cmd_func(    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR     s    
	"c   
      C   sÓ   t  ƒ  } t j j } t | t ƒ r3 t j j } n  d } t | ƒ } d } x� | d k rÎ t | | ƒ } | | | | !} | |  j	 | | t
 | ƒ d  ƒ }	 |	 d k r· | d L} qN n  | | 7} | | 8} qN Wd  S(   Ni    i    i
   i   i €  (   R   R   R5   t   WriteConsoleAt
   isinstancet   _typet   WriteConsoleWt   lenRX   R7   R   t   None(
   R   R   RJ   R†   t   donet   todot   chunkt   doingt   bufR@   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR†     s     	!

c         C   s   |  j  j ƒ  S(   N(   R   R   (   R   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   4  s    c         C   s   d  S(   N(    (   R   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   7  s    c         C   s   |  j  S(   N(   R=   (   R   (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   :  s    (   R   R   t   __doc__R   RA   RK   RP   RR   RU   R^   R_   Rb   Rc   Rd   Re   Rf   Rg   Rh   Rj   Ro   Rq   Rr   R„   t   ret   compileR‚   R   R†   R   R   R   (    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyR   W   sV   																			
				c           C   s'   t  j j t t t ƒ ƒ t j j d S(   Ni   (   R   R5   R<   t   consoleR   RG   R&   R   (    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   get_term_colsA  s    t   TERMt    t   dumbt   emacsc           C   s;   t  j d t j t t j t  j d d d d d ƒ ƒ ƒ d S(   Nt   HHHHi    i   (   t   structt   unpackt   fcntlt   ioctlt   FDt   termiost
   TIOCGWINSZt   pack(    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   funN  s    (   Rœ   R�   (=   R•   t   osR–   t   syst   waflibR    t	   threadingt   LockR   t   ctypesR   R   R   R   R   R   R   R   R	   R
   t   ImportErrort   objectR   R   R    R%   R+   t   unicodeRŒ   t	   NameErrort   strRL   R4   R3   R5   R6   t   argtypest   restypeR<   Rl   RC   RD   RM   Rp   t   stdoutR   t   stderrR?   R˜   RG   R™   RŸ   R¡   R¤   t   environR…   R   R£   R§   t	   Exceptiont   e(    (    (    s2   /git_repos/PolyLV2/poly_mclk_in/waflib/ansiterm.pyt   <module>   sd   $J

	**æ	(9-	