
    \d$                         d Z ddlZddlZddlmZ ddlmZ da	d\  a
adZi ddd	d
dddddddddddddddddddddd d!d"d#d$d%d&Z G d' d(ej                  ZdS ))zHModule to emulate a VT100 terminal in Tkinter.

Maintainer: Paul Swartz
    N   )ansi)NN)brgylmcwBRGYLMCWr   #000000r   z#c40000r   z#00c400r   z#c4c400r	   z#000080r
   z#c400c4r   z#00c4c4r   z#c4c4c4r   z#626262r   z#ff0000r   z#00ff00r   z#ffff00r   z#0000ffr   z#ff00ffr   z#00ffffr   z#ffffffc                   V    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )
VT100Framec                    t          j        dd          at          t	          t          j        t          j        t          j        z                       a	t          t                                          d                   a|                    dd          | _        |                    dd          | _        |d	         | _        |d	= t          | j        z  x|d<   }t          | j        z  x|d<   }t#          j        j        | g|R i | t#          j        d
||          | _        | j                            t"          j        t"          j        d           | j                            d| j                   | j                            dd            | j                            d| j                   | j                            d| j                   | j                            d| j                   | j                            d| j                   | j                                         tA          j!        t@          j"        j#        t@          j"        j$                  | _%        | j&        | j%        _&        | j'        | j%        _'        | j(        | j%        _(        d| _)        d| _*        | j        +                    ddt          dz
  t          dz
  dd          | _,        d S )NCourier
   )familysize	linespacewidthP   height   callbackr   )bgr   r    r   )sidefillexpandz<Key>z<1>c                     dS Nbreak )xs    8lib/python3.11/site-packages/twisted/conch/ui/tkvt100.py<lambda>z%VT100Frame.__init__.<locals>.<lambda>N   s    '     z<Up>z<Down>z<Left>z<Right>r   greenr%   outline)-tkFontFontttyFontmaxmapmeasurestringascii_lettersdigits	fontWidthintmetrics
fontHeightgetr   r    r"   TkinterFrame__init__CanvascanvaspackTOPBOTHbind
keyPressed	upPresseddownPressedleftPressedrightPressedfocusr   
AnsiParser	ColorTextWHITEBLACK
ansiParserwriteStringparseCursor
parseEraser+   r   create_rectanglecursor)selfargskwr   hs        r,   rB   zVT100Frame.__init__?   sV   +YR888GOV-AFM-QRRSS	**;788
VVGR((
ffXr**:zN#dj007a%338qt1d111b111n	1EEEgkQGGG$/222 1 12220004#34444#3444D$5666/$.*>@TUU&*&6#&*&6#%)_" k22q)a-agw 3 
 
r.   c                     |t           z  dz   }|t          z  dz   }|t           z  dz   }|t          z  dz   }| j                            ||||          }	|	D ]}
| j                            |
           d S )Nr      )r;   r>   rD   find_overlappingdelete)rY   sxsyexeycsxcsycexceyitemsitems              r,   _deletezVT100Frame._deleted   s    9nq :o!9nq :o!,,S#sC@@ 	% 	%DKt$$$$	% 	%r.   c                 |     j          j        k    r\d _          xj        dz  c_         j         j        k    r5 fd j                                        D               xj        dz  c_         j         t          z  dz   } j        t          z  dz   } j                            |||dz   |dz             }|r fd|D              |r6 j        	                    |||t          z   dz
  |t          z   dz
  ||            j        
                    ||t          j        t          ||            xj         dz  c_         d S )Nr   r   c                 T    g | ]$}j                             |d t                     %S r   rD   mover>   .0r+   rY   s     r,   
<listcomp>z%VT100Frame._write.<locals>.<listcomp>r   s/    UUU!!!Q44UUUr.      c                 D    g | ]}j                             |          S r*   )rD   r`   )rr   rj   rY   s     r,   rs   z%VT100Frame._write.<locals>.<listcomp>x   s)    888$T[%%888r.   r0   )anchorfonttextr%   )r+   r   r   r    rD   find_allr;   r>   r_   rW   create_textr@   NWr4   )rY   chfgr#   canvasXcanvasYri   s   `      r,   _writezVT100Frame._writem   sh   6TZDFFFaKFFv$$UUUUdk>R>R>T>TUUUU!&9$q(&:%),,Wgw{GVWKXX 	98888%8888 	K(()#a'*$q( )    	WWZgBR 	  	
 	
 	
 	!r.   c                 t   | j                             |           | j                            | j                   | j        t          z  dz   }| j        t          z  dz   }| j        	                    |||t          z   dz
  |t          z   dz
  dd          | _        | j        
                    | j                   d S )Nr   r/   r0   )rS   parseStringrD   r`   rX   r+   r;   r   r>   rW   lower)rY   datar~   r   s       r,   writezVT100Frame.write   s    ##D)))4;'''&9$q(&:%)k22i!#j 1$ 3 
 
 	$+&&&&&r.   c                     |j         sd S t          |j                 |j        dk    ot          |j                 |j        D ]}t          |          }|dk    r                                  -|dk    r j        r xj        dz  c_        K|dk    r fdt          d          D              o|dk    rg j	         j
        dz
  k    rC                     dd j        d            fd	 j                                        D              ˉ xj	        dz  c_	        |d
k    rd _        d|cxk    rdk     rn                      |           d S )Nr         r   	   c                 >    g | ]}                     d           S ) )r   )rr   indexr#   r}   rY   s     r,   rs   z*VT100Frame.writeString.<locals>.<listcomp>   s)    @@@eS"b))@@@r.   r   r   c                 T    g | ]$}j                             |d t                     %S rn   ro   rq   s     r,   rs   z*VT100Frame.writeString.<locals>.<listcomp>   s?        ((A
{;;  r.             )displaycolorMapr}   r#   rx   ordbellr+   ranger   r    rk   r   rD   ry   r   )rY   ir|   r   r#   r}   s   `   @@r,   rT   zVT100Frame.writeString   s   y 	Fad^TS[+Xad^& 	( 	(BBAAvv		a6  FFaKFFa@@@@@@uQxx@@@@@b6T[1_,,LLAtz1555   !%!5!5!7!7    
 FFaKFFFbq3BB'''+	( 	(r.   c                     d|v r6|d         |d d                              d          } fd|D              d S d} j         j        }}t          |          dk    rt	          |d d                   }|d         dk    r\|dk    r$                     || j         j                   d S                      dd j         j                   d _        d _        d S |d         dk    rr|dk    r                     || j        |           d S |dk    r!                     d|||           d _        d S                      d| j        |           d _        d S |d         dk    r                     ||||z   |           d S d S )	N;c                 @    g | ]}                     |z             S r*   )rV   )rr   r+   endrY   s     r,   rs   z)VT100Frame.parseErase.<locals>.<listcomp>   s)    555!T__QW%%555r.   r   r   JKP)splitr+   r   lenr<   rk   r   r    )rY   erasepartsstartr+   r   r   s   `     @r,   rV   zVT100Frame.parseErase   s   %<<)C#2#J$$S))E55555u5555Fvtv1u::>>crc
OOE9zzQ4:t{;;;;;Q4:t{;;;2Y#zzQ4:q11111!Q1a(((Q4:q1112Y#LLAq5y!,,,,, r.   c                 2   d}t          |          dk    r#|d         dk    rt          |d d                   }|d         dk    r| xj        |z  c_        d S |d         dk    r| xj        |z  c_        d S |d         dk    r|dz
  | _        d S |d         dk    r|dz
  | _        d S |d         dk    rft          |          dk    r>t	          t          |d d                             d                    \  }}|dz  }|dz  }nd	\  }}|| _        || _        d S d S )
Nr   r   Hr   Ddr   r   )r   r   )r   r<   r+   r   r6   r   )rY   rX   r   r   r+   s        r,   rU   zVT100Frame.parseCursor   s9    v;;??vbzS00ss$$E":FFeOFFFFBZ3FFeOFFFFBZ3QYDFFFBZ3QYDFFFBZ36{{Q3ss 1 1# 6 6771QQ1DFDFFF r.   c                 V    | j         r!|j        r|                      |j                   dS r(   )r"   charrY   events     r,   rI   zVT100Frame.keyPressed   s.    = 	&UZ 	&MM%*%%%wr.   c                 0    |                      d           d S )NzOAr"   r   s     r,   rJ   zVT100Frame.upPressed       hr.   c                 0    |                      d           d S )NzOBr   r   s     r,   rK   zVT100Frame.downPressed   r   r.   c                 0    |                      d           d S )NzOCr   r   s     r,   rM   zVT100Frame.rightPressed   r   r.   c                 0    |                      d           d S )NzODr   r   s     r,   rL   zVT100Frame.leftPressed   r   r.   N)__name__
__module____qualname__rB   rk   r   r   rT   rV   rU   rI   rJ   rK   rM   rL   r*   r.   r,   r   r   >   s        #
 #
 #
J% % %  4' ' '( ( (8- - -:  6  
                        r.   r   )__doc__r8   tkinterr@   tkinter.fontrw   r2    r   r4   r;   r>   	colorKeysr   rA   r   r*   r.   r,   <module>r      se   
                 
 	:
	&  	
             !({  {  {  {  {  {  {  {  {  { r.   