o b$@sdZddlZddlZddlmZddlmZda d\a a dZ iddd d d d d ddddddddddddddddddd d!d"d#d$d%d&Z Gd'd(d(ejZdS))zHModule to emulate a VT100 terminal in Tkinter. Maintainer: Paul Swartz N)ansi)NN)brgylmcwBRGYLMCWr#000000rz#c40000rz#00c400rz#c4c400rz#000080r z#c400c4r z#00c4c4r z#c4c4c4r z#626262r z#ff0000rz#00ff00rz#ffff00rz#0000ffrz#ff00ffrz#00ffffrz#ffffffc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS) VT100FramecOstjdddatttjtjtja t t da | dd|_| dd|_|d |_|d =t |j|d<}t |j|d<}tjj|g|Ri|tjd ||d |_|jjtjtjd d |jd|j|jddd|jd|j|jd|j|jd|j|jd|j|jt !t j"j#t j"j$|_%|j&|j%_&|j'|j%_'|j(|j%_(d|_)d|_*|jj+ddt d t d ddd|_,dS)NCourier )familysize linespacewidthPheightcallbackr)bgrrr)sidefillexpandzz<1>cSsdSNbreak)xr&r&:/usr/lib/python3/dist-packages/twisted/conch/ui/tkvt100.pyNsz%VT100Frame.__init__..zzzzrgreenr"outline)-tkFontFontttyFontmaxmapmeasurestring ascii_lettersdigits fontWidthintmetrics fontHeightgetrrrTkinterFrame__init__CanvascanvaspackTOPBOTHbind keyPressed upPressed downPressed leftPressed rightPressedfocusr AnsiParser ColorTextWHITEBLACK ansiParser writeString parseCursor parseEraser'rcreate_rectanglecursor)selfargskwr hr&r&r(r=?s8      zVT100Frame.__init__c Cs\|td}|td}|td}|td}|j||||} | D]} |j| q#dS)Nr)r6r9r?find_overlappingdelete) rTsxsyexeycsxcsycexceyitemsitemr&r&r(_deleteds    zVT100Frame._deletecsjjkr)d_jd7_jjkr)fddjDjd8_jtd}jtd}j|||d|d}|rOfdd|D|rejj |||td|td||djj ||t j t ||djd7_dS) Nrrcg|] }j|dt qSrr?mover9.0r'rTr&r( rsz%VT100Frame._write..csg|]}j|qSr&)r?rZ)rkrdrlr&r(rmxsr+)anchorfonttextr")r'rrrr?find_allr6r9rYrR create_textr;NWr/)rTchfgr canvasXcanvasYrcr&rlr(_writems0    zVT100Frame._writecCsr|j||j|j|jtd}|jtd}|jj |||td|tdddd|_|j |jdS)Nrr*r+) rN parseStringr?rZrSr'r6rr9rRlower)rTdatarwrxr&r&r(writes   zVT100Frame.writecs|jsdSt|j|jdkot|j|jD]u}t|}|dkr&q|dkr5jr4jd8_q|dkrGfddtdDq|dkrqj j dkri d d j d fd dj Dqj d7_ q|d kryd _qd |krd krnq|qdS)Nrr csg|] }dqS) )ry)rkindexr rvrTr&r(rmz*VT100Frame.writeString..rrcrfrgrhrjrlr&r(rms )displaycolorMaprvr rqordbellr'rangerrrerr?rrry)rTirurr&rr(rOs6    zVT100Frame.writeStringcsHd|vr|d|ddd}fdd|DdSd}jj}}t|dkr4t|dd}|ddkr\|dkrJ||jjdSddjjd_d_dS|ddkr|dkrq||j|dS|dkrd|||d_dSd|j|d_dS|dd kr|||||dSdS) N;csg|] }|qSr&)rQrjendrTr&r(rmrz)VT100Frame.parseErase..rrJKP)splitr'rlenr7rerr)rTerasepartsstartr'rr&rr(rQs4       zVT100Frame.parseErasecCsd}t|dkr|ddkrt|dd}|ddkr%|j|7_dS|ddkr4|j|8_dS|ddkrA|d|_dS|ddkrN|d|_dS|ddkr}t|dkrqtt|ddd\}}|d8}|d8}nd \}}||_||_dSdS) NrrHrDdrr)rr)rr7r'rr1r)rTrSrrr'r&r&r(rPs(        zVT100Frame.parseCursorcCs|jr |jr ||jdSr$)rcharrTeventr&r&r(rDs  zVT100Frame.keyPressedcC|ddS)NzOArrr&r&r(rEzVT100Frame.upPressedcCr)NzOBrrr&r&r(rFrzVT100Frame.downPressedcCr)NzOCrrr&r&r(rHrzVT100Frame.rightPressedcCr)NzODrrr&r&r(rGrzVT100Frame.leftPressedN)__name__ __module__ __qualname__r=reryr}rOrQrPrDrErFrHrGr&r&r&r(r>s%  r)__doc__r3tkinterr; tkinter.fontrpr-rr/r6r9 colorKeysrr<rr&r&r&r(sT