Ë
    oj$  ã                   óÐ   — 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ÚwidthéP   Úheighté   Úcallbackr   )Úbgr   r    r   )ÚsideÚfillÚexpandz<Key>z<1>c                  ó   — y©NÚbreak© )Úxs    ú:/usr/lib/python3/dist-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>  € ä—+‘+ Y°RÔ8ˆÜœœGŸO™O¬V×-AÑ-AÄFÇMÁMÑ-QÓRÓSˆ	ÜœŸ™Ó*¨;Ñ7Ó8ˆ
Ø—V‘V˜G RÓ(ˆŒ
Ø—f‘f˜X rÓ*ˆŒØ˜:™ˆŒØˆzˆNÜ# d§j¡jÑ0Ð0ˆˆ7‰�aÜ%¨¯©Ñ3Ð3ˆˆ8‰�qÜ�‰×Ñ˜tÐ1 dÒ1¨bÒ1Ü—n‘n¨	¸À1ÔEˆŒØ�‰×ÑœgŸk™k´·±À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ˆ�‰Ô#Ø%)§_¡_ˆ�‰Ô"ð ˆŒØˆŒØ—k‘k×2Ñ2Øˆq”)˜a‘-¤¨a¡°gÀwð 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   € Ø”9‰n˜qÑ ˆØ”:‰o Ñ!ˆØ”9‰n˜qÑ ˆØ”:‰o Ñ!ˆØ—‘×,Ñ,¨S°#°s¸CÓ@ˆØò 	%ˆDØ�K‰K×Ñ˜tÕ$ñ	%r.   c                 ób  — | j                   | j                  k(  r’d| _         | 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`  € Ø�6‰6�T—Z‘ZÒØˆDŒFØ�FŠF�a‰K�FØ�v‰v˜Ÿ™Ò$Ø>B¿k¹k×>RÑ>RÓ>TÖU¸�—‘×!Ñ! ! Q¬¨Õ4ÓUØ—’˜!‘•Ø—&‘&œ9Ñ$ qÑ(ˆØ—&‘&œ:Ñ%¨Ñ)ˆØ—‘×,Ñ,¨W°g¸wÈ¹{ÈGÐVWÉKÓXˆÙØ27Ö8¨$ˆT�[‰[×Ñ Õ%Ó8ÙØ�K‰K×(Ñ(ØØØœ)Ñ# aÑ'Øœ*Ñ$ qÑ(ØØð )ô ð 	�‰×ÑØ�W¤W§Z¡Z´gÀBÈRð 	 ô 	
ð 	�Š�!‰Žùò' 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Ñ(ˆØ—&‘&œ:Ñ%¨Ñ)ˆØ—k‘k×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  € Ø�yŠyØÜ�a—d‘d‰^ˆØ�T‰T�S‰[Ò+œX a§d¡d™^ˆØ—&‘&ó 	(ˆBÜ�B“ˆAØ�AŠvØ—	‘	•Ø�a’Ø—6“6Ø—F’F˜a‘K–FØ�a’Ü7<¸Q³xÖ@¨e�—‘˜S " bÕ)Ô@Ø�b’Ø—6‘6˜TŸ[™[¨1™_Ò,Ø—L‘L  A t§z¡z°1Ô5ð "&§¡×!5Ñ!5Ó!7öàð Ÿ™×(Ñ(¨¨A´
¨{Õ;õð
 —F’F˜a‘K—FØ�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Ø˜#˜2�J×$Ñ$ SÓ)ˆEØ/4Ö5¨!ˆT�_‰_˜Q ™WÕ%Ó5ØØˆØ�v‰v�t—v‘vˆ1ˆÜˆu‹:˜Š>Ü˜˜c˜r˜
“OˆEØ�‰9˜ÒØ˜ŠzØ—‘˜Q  4§:¡:¨t¯{©{Õ;à—‘˜Q  4§:¡:¨t¯{©{Ô;Ø�”Ø�•Ø�2‰Y˜#ÒØ˜ŠzØ—‘˜Q  4§:¡:¨qÕ1Ø˜!’Ø—‘˜Q  1 aÔ(Ø�•à—‘˜Q  4§:¡:¨qÔ1Ø�•Ø�2‰Y˜#ÒØ�L‰L˜˜A˜q 5™y¨!Õ,ð ùò- 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‹;˜Š?˜v b™z¨SÒ0Ü˜˜s ˜Ó$ˆEØ�"‰:˜ÒØ�FŠF�e‰OŽFØ�B‰Z˜3ÒØ�FŠF�e‰OŽFØ�B‰Z˜3ÒØ˜Q‘YˆD�FØ�B‰Z˜3ÒØ˜Q‘YˆD�FØ�B‰Z˜3ÒÜ�6‹{˜QŠÜœ3  s¨ × 1Ñ 1°#Ó 6Ó7‘��1Ø�Q‘�Ø�Q‘‘à‘��1ØˆDŒFØˆD�Fð r.   c                 ój   — | j                   r'|j                  r| j                  |j                  «       yr(   )r"   Úchar©rY   Úevents     r,   rI   zVT100Frame.keyPressedê   s"   € Ø�=Š=˜UŸZšZØ�M‰M˜%Ÿ*™*Ô%Ø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.   