Ϫf$dZddlZddlZddlmZddlmZda d\a a dZ iddd d d d d ddddddddddddddddddd d!d"d#d$d%d&Z Gd'd(ejZy))zHModule to emulate a VT100 terminal in Tkinter. Maintainer: Paul Swartz N)ansi)NN)brgylmcwBRGYLMCWr#000000rz#c40000rz#00c400rz#c4c400r z#000080r z#c400c4r z#00c4c4r z#c4c4c4r z#626262rz#ff0000rz#00ff00rz#ffff00rz#0000ffrz#ff00ffrz#00ffffrz#ffffffcTeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zy ) VT100Framecftjddatt tj t jt jza ttjda |jdd|_|jdd|_|d |_|d =t|jzx|d<}t|jzx|d<}t#j$j&|g|i|t#j(d || |_|j*j-t"j.t"j0d |j*j3d|j4|j*j3dd|j*j3d|j6|j*j3d|j8|j*j3d|j:|j*j3d|j<|j*j?tAjBt@jDjFt@jDjH|_%|jL|jJ_&|jN|jJ_'|jP|jJ_(d|_)d|_*|j*jWddtd z td z dd|_,y)NCourier )familysize linespacewidthPheightcallbackr)bgrr r)sidefillexpandzz<1>cyNbreak)xs :/usr/lib/python3/dist-packages/twisted/conch/ui/tkvt100.pyz%VT100Frame.__init__..Nszzzzrgreenr%outline)-tkFontFontttyFontmaxmapmeasurestring ascii_lettersdigits fontWidthintmetrics fontHeightgetrr r"TkinterFrame__init__CanvascanvaspackTOPBOTHbind keyPressed upPressed downPressed leftPressed rightPressedfocusr AnsiParser ColorTextWHITEBLACK ansiParser writeString parseCursor parseEraser+rcreate_rectanglecursor)selfargskwr hs r,rBzVT100Frame.__init__?s>++YR8GOOV-A-AFMM-QRS *;78 VVGR( ffXr* : zN#djj007 a% 338 q t1d1b1nn 1E  gkk QG $//2  12 0 4#3#34 4#3#34 D$5$56 //$..*>*>@T@TU&*&6&6#&*&6&6#%)__" kk22 q)a-agw3  r.c|tzdz}|tzdz}|tzdz}|tzdz}|jj||||} | D]} |jj | y)Nr)r;r>rDfind_overlappingdelete) rYsxsyexeycsxcsycexceyitemsitems r,_deletezVT100Frame._deletedsu9nq :o!9nq :o! ,,S#sC@ %D KK  t $ %r.cb|j|jk(rd|_|xjdz c_|j|jk(r]|jj Dcgc]$}|jj |dt &c}|xjdzc_|jtzdz}|jtzdz}|jj|||dz|dz}|r)|Dcgc]}|jj|c}|r5|jj|||tzdz |tzdz |||jj||tjt|||xjdz c_ycc}wcc}w)Nrrr0)anchorfonttextr%)r+rrr rDfind_allmover>r;r_r`rW create_textr@NWr4) rYchfgr#r+canvasXcanvasYrirjs r,_writezVT100Frame._writems` 66TZZ DF FFaKFvv$>Bkk>R>R>TU!!!Q 4U! &&9$q(&&:%) ,,Wgw{GVWKX 27 8$T[[   % 8 KK ( ()#a'*$q( )   WWZZgBR   ! 'V 9s +)F'"F,c|jj||jj|j|j t zdz}|jtzdz}|jj|||t zdz |tzdz dd|_|jj|jy)Nrr/r0) rS parseStringrDr`rXr+r;rr>rWlower)rYdatarwrxs r,writezVT100Frame.writes ##D) 4;;'&&9$q(&&:%)kk22   i ! # j 1 $ 3   $++&r.c \|jsyt|j}|jdk7xrt|j}|jD]N}t |}|dk(r|j %|dk(r#|js7|xjdzc_M|dk(r+tdDcgc]}|jd||c}}|dk(r|j|jdz k(rh|jdd|jd|jjDcgc]$}|jj!|dt" &c}|xjdz c_ |d k(r d|_+d |cxkrd ks8n<|j|||Qycc}wcc}w) Nrr  rr )displaycolorMaprvr#rpordbellr+rangeryrr rkrrDrqrrr>)rYirvr#rurindexr+s r,rTzVT100Frame.writeStringsPyy  add^ TTS[ +Xadd^&& (BBAAv a66FFaKFa7cr OE 9 z Q4::t{{; Q4::t{{; 2Y# z Q4::q1! Q1a( Q4::q1 2Y#  LLAq5y! ,- 6sE8cd}t|dkDr|ddk7rt|dd}|ddk(r|xj|z c_y|ddk(r|xj|zc_y|ddk(r |dz |_y|ddk(r |dz |_y|ddk(rRt|dkDr0t t|ddj d\}}|dz}|dz}nd \}}||_||_yy) NrrHrDdrr)rr)rr<r+rr6r)rYrXrrr+s r,rUzVT100Frame.parseCursors  v;?vbzS0s $E ":  FFeOF BZ3  FFeOF BZ3 QYDF BZ3 QYDF BZ3 6{Q3s 1 1# 671QQ1DFDFr.cj|jr'|jr|j|jyr()r"charrYevents r,rIzVT100Frame.keyPresseds" ==UZZ MM%** %r.c&|jdy)NzOAr"rs r,rJzVT100Frame.upPressed hr.c&|jdy)NzOBrrs r,rKzVT100Frame.downPressedrr.c&|jdy)NzOCrrs r,rMzVT100Frame.rightPressedrr.c&|jdy)NzODrrs r,rLzVT100Frame.leftPressedrr.N)__name__ __module__ __qualname__rBrkryr~rTrVrUrIrJrKrMrLr*r.r,rr>s?# J%4 '(8-:6     r.r)__doc__r8tkinterr@ tkinter.fontror2rr4r;r> colorKeysrrArr*r.r,rs    :   &                      ! ({ { r.