
    Vh$                         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y))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                   T    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y)
VT100Framec                 f   t        j                  dd      at        t	        t        j
                  t        j                  t        j                  z               a	t        t        j                         d         a|j                  dd      | _        |j                  dd      | _        |d	   | _        |d	= t        | j                  z  x|d<   }t        | j                  z  x|d<   }t#        j$                  j&                  | g|i | t#        j(                  d
||      | _        | j*                  j-                  t"        j.                  t"        j0                  d       | j*                  j3                  d| j4                         | j*                  j3                  dd        | j*                  j3                  d| j6                         | j*                  j3                  d| j8                         | j*                  j3                  d| j:                         | j*                  j3                  d| j<                         | j*                  j?                          tA        jB                  t@        jD                  jF                  t@        jD                  jH                        | _%        | jL                  | jJ                  _&        | jN                  | jJ                  _'        | jP                  | jJ                  _(        d| _)        d| _*        | j*                  jW                  ddt        dz
  t        dz
  dd      | _,        y )NCourier
   )familysize	linespacewidthP   height   callbackr   )bgr   r    r   )sidefillexpandz<Key>z<1>c                      yNbreak )xs    H/home/dcms/DCMS/lib/python3.12/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__?   s>   ++YR8GOOV-A-AFMM-QRS	*;78
VVGR(
ffXr*:zN#djj007a%338qt1d1b1nn	1EgkkQG$//2 1204#3#344#3#34D$5$56//$..*>*>@T@TU&*&6&6#&*&6&6#%)__" kk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                  j                  ||||      }	|	D ]  }
| j                  j	                  |
        y )Nr      )r;   r>   rD   find_overlappingdelete)rY   sxsyexeycsxcsycexceyitemsitems              r,   _deletezVT100Frame._deleted   su    9nq :o!9nq :o!,,S#sC@ 	%DKKt$	%r.   c                 b   | j                   | j                  k(  rd| _         | xj                  dz  c_        | j                  | j                  k(  r]| j                  j                         D cg c]$  }| j                  j                  |dt               & c} | xj                  dz  c_        | j                   t        z  dz   }| j                  t        z  dz   }| j                  j                  |||dz   |dz         }|r)|D cg c]  }| j                  j                  |       c} |r5| j                  j                  |||t        z   dz
  |t        z   dz
  ||       | j                  j                  ||t        j                  t        ||       | xj                   dz  c_         y c c}w c c}w )Nr   r      r0   )anchorfonttextr%   )r+   r   r   r    rD   find_allmover>   r;   r_   r`   rW   create_textr@   NWr4   )	rY   chfgr#   r+   canvasXcanvasYri   rj   s	            r,   _writezVT100Frame._writem   s`   66TZZDFFFaKFvv$>Bkk>R>R>TU!!!Q4U!&&9$q(&&:%),,Wgw{GVWKX278$T[[%8KK(()#a'*$q( )  	WWZZgBR 	  	
 	!' V 9s   +)F'"F,c                    | j                   j                  |       | j                  j                  | j                         | j
                  t        z  dz   }| j                  t        z  dz   }| j                  j                  |||t        z   dz
  |t        z   dz
  dd      | _        | j                  j                  | j                         y )Nr   r/   r0   )rS   parseStringrD   r`   rX   r+   r;   r   r>   rW   lower)rY   datarw   rx   s       r,   writezVT100Frame.write   s    ##D)4;;'&&9$q(&&:%)kk22i!#j 1$ 3 
 	$++&r.   c           	      \   |j                   sy t        |j                     }|j                  dk7  xr t        |j                     }|j                  D ]N  }t        |      }|dk(  r| j                          %|dk(  r#| j                  s7| xj                  dz  c_        M|dk(  r+t        d      D cg c]  }| j                  d||       c} }|dk(  r| j                  | j                  dz
  k(  rh| j                  dd| j                  d       | j                  j                         D cg c]$  }| j                  j!                  |dt"               & c} | xj                  dz  c_
        |d	k(  r	d| _        +d
|cxk  rdk  s8n <| j                  |||       Q y c c}w c c}w )Nr         r   	    r   r             )displaycolorMaprv   r#   rp   ordbellr+   rangery   r   r    rk   r   rD   rq   rr   r>   )rY   irv   r#   ru   r   indexr+   s           r,   rT   zVT100Frame.writeString   sP   yyadd^TTS[+Xadd^&& 	(BBAAv		a66FFaKFa7<Qx@eS"b)@b66T[[1_,LLAtzz15 "&!5!5!7 ((A
{;
 FFaKFbq3BB'+	( As   0F$))F)c                    d|v r<|d   }|d d j                  d      }|D cg c]  }| j                  ||z          c} y d}| j                  | j                  }}t	        |      dkD  rt        |d d       }|d   dk(  re|dk(  r)| j                  ||| j                  | j                         y | j                  dd| j                  | j                         d| _        d| _        y |d   dk(  rk|dk(  r| j                  ||| j                  |       y |dk(  r| j                  d|||       d| _        y | j                  d|| j                  |       d| _        y |d   dk(  r| j                  ||||z   |       y y c c}w )N;r   r   JKP)	splitrV   r+   r   lenr<   rk   r   r    )rY   eraseendpartsr+   startr   s          r,   rV   zVT100Frame.parseErase   s]   %<)C#2J$$S)E/45!T__QW%5vvtvv1u:>cr
OE9zQ4::t{{;Q4::t{{;2Y#zQ4::q1!Q1a(Q4::q12Y#LLAq5y!, - 6s   E8c                    d}t        |      dkD  r|d   dk7  rt        |d d       }|d   dk(  r| xj                  |z  c_        y |d   dk(  r| xj                  |z  c_        y |d   dk(  r|dz
  | _        y |d   dk(  r|dz
  | _        y |d   dk(  rRt        |      dkD  r0t	        t        |d d j                  d            \  }}|dz  }|dz  }nd	\  }}|| _        || _        y y )
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   s     v;?vbzS0s$E":FFeOFBZ3FFeOFBZ3QYDFBZ3QYDFBZ36{Q3s 1 1# 671QQ1DFDF r.   c                 j    | j                   r'|j                  r| j                  |j                         yr(   )r"   charrY   events     r,   rI   zVT100Frame.keyPressed   s"    ==UZZMM%**%r.   c                 &    | j                  d       y )NzOAr"   r   s     r,   rJ   zVT100Frame.upPressed       hr.   c                 &    | j                  d       y )NzOBr   r   s     r,   rK   zVT100Frame.downPressed   r   r.   c                 &    | j                  d       y )NzOCr   r   s     r,   rM   zVT100Frame.rightPressed   r   r.   c                 &    | j                  d       y )NzODr   r   s     r,   rL   zVT100Frame.leftPressed   r   r.   N)__name__
__module____qualname__rB   rk   ry   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.fontro   r2    r   r4   r;   r>   	colorKeysr   rA   r   r*   r.   r,   <module>r      s  
    
 	:
	&  	
             !({  { r.   