
    ;OOfQ                        d dl mZmZ 	 d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlmZmZmZmZmZ dZdZi dd	d
ej(                  d fdej*                  d fdej,                  d fdej.                  d fdej0                  d fdej2                  d fdej4                  d fdej6                  d fdej(                  dfdej*                  dfdej,                  dfdej.                  dfdej0                  dfdej2                  dfdej4                  dfdej6                  dfZ G d dee	      Z G d d      Zdek(  r e        yy)     )divisionprint_functionN)escape)
BaseScreenRealTerminalAttrSpecUNPRINTABLE_TRANS_TABLE)bytesPYTHON3	text_typexrangeord2i  i  default)r   blackzdark redz
dark greenbrown	dark bluezdark magentaz	dark cyan
light grayz	dark gray   z	light redzlight greenyellowz
light bluezlight magentaz
light cyanwhitec                        e Zd Z fdZddZ fdZ fdZd Zd Zd Z	d Z
d	 Z	 	 dd
ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )Screenc                     t         t        |           dg| _        i | _        d| _        d | _        d | _        g | _        d| _	        | j                          d| _        d| _        | j                  d dd       y )N)NNFr   r   )superr   __init__curses_pairspalette	has_colorscursor_state	_keyqueueprev_input_resizeset_input_timeoutslast_bstate_mouse_tracking_enabledregister_palette_entryself	__class__s    U/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/urwid/curses_display.pyr   zScreen.__init__>   sy    fT#%
  !"!',$##D)I>    c                    t        |      }|| j                  k(  ry|r`t        j                  dt        j                  z  t        j
                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                   z  t        j"                  z  t        j$                  z  t        j&                  z  t        j(                  z  t        j*                  z  t        j,                  z         || _        yt/               )z
        Enable mouse tracking.

        After calling this function get_input will include mouse
        click events along with keystrokes.
        Nr   )boolr&   curses	mousemaskBUTTON1_PRESSEDBUTTON1_RELEASEDBUTTON2_PRESSEDBUTTON2_RELEASEDBUTTON3_PRESSEDBUTTON3_RELEASEDBUTTON4_PRESSEDBUTTON4_RELEASEDBUTTON1_DOUBLE_CLICKEDBUTTON1_TRIPLE_CLICKEDBUTTON2_DOUBLE_CLICKEDBUTTON2_TRIPLE_CLICKEDBUTTON3_DOUBLE_CLICKEDBUTTON3_TRIPLE_CLICKEDBUTTON4_DOUBLE_CLICKEDBUTTON4_TRIPLE_CLICKEDBUTTON_SHIFT
BUTTON_ALTBUTTON_CTRLNotImplementedError)r)   enables     r+   set_mouse_trackingzScreen.set_mouse_trackingO   sv    fT111Q(()+1+B+BC(()+1+B+BC (() ,2+B+BC ((	) ,2+B+B	C
 //0
 392O2OP //0 392O2OP //0 392O2OP //0 392O2OP %%	& )/(9(9	: $$
% 
& (.$ &''r,   c                    t        j                         | _        t        j                         | _        | j                  r.t        j
                          t         j                  dk  rd| _        | j                  r	 t        j                          d| _        | j                          t        j                          t        j                  d       t        j                  d       | j                  j                  d       | j                   s| j#                         | _        t&        t(        | W          y# t        j                  $ r
 d| _        Y w xY w)z7
        Initialize the screen and input mode.
           FTr   
   r   N)r/   initscrr    
has_colorsr   start_colorCOLORSuse_default_colorshas_default_colors_curseserror_setup_colour_pairsnoechometa	halfdelaykeypad_signal_keys_settty_signal_keys_old_signal_keysr   r   _startr(   s    r+   rZ   zScreen._startk   s     !**,>> }}q !&>>.))+(,' 	  "Aa$$$($8$8$:D!fd"$ == .(-'.s   ;D3 3EEc                    t        j                          | j                  d       	 t        j                          | j                  r | j                  | j                    t        t        | +          y# t        j
                  $ r Y Mw xY w)z%
        Restore the screen.
        r   N)r/   echo	_curs_setendwinrP   rQ   rY   rX   r   r   _stopr(   s    r+   r_   zScreen._stop   sn     	q	MMO    D  $"7"78fd!# }} 		s   A4 4B
	B
c                     | j                   syt        d      D ]Y  }t        d      D ]I  }|t        j                  k(  r|t        j                  k(  r*t        j
                  |dz  dz   |z
  ||       K [ y)z
        Initialize all 63 color pairs based on the term:
        bg * 8 + 7 - fg
        So to get a color, we just need to use that term and get the right color
        pair number.
        NrH      )r   r   r/   COLOR_WHITECOLOR_BLACK	init_pair)r)   fgbgs      r+   rR   zScreen._setup_colour_pairs   sq     ~~) 	:BQi :++++++  a!b"b9:	:r,   c                     | j                   dk(  s|| j                   k(  ry 	 t        j                  |       || _         y # t        j                  $ r
 d| _         Y y w xY w)Nfixed)r!   r/   curs_setrP   rQ   )r)   xs     r+   r]   zScreen._curs_set   sT    w&!t/@/@*@	(OOA !D}} 	( 'D	(s   > AAc                 l    | j                   j                          | j                   j                          y N)r    clearrefreshr)   s    r+   _clearzScreen._clear   s    r,   c                     |dk(  r| j                         S |t        j                          nt        j                  |       | j                  j                  d       | j                  j                         S )Nr   )_getch_nodelayr/   cbreakrU   r    nodelaygetch)r)   wait_tenthss     r+   _getchzScreen._getch   sU    >&&((MMO[)qvv||~r,   c                     | j                   j                  d       	 	 t        j                          	 | j                   j                         S # t        j
                  $ r Y nw xY wJNr   )r    rt   r/   rs   rP   rQ   ru   ro   s    r+   rr   zScreen._getch_nodelay   sU    q vv||~ ==  s   A A#"A#c                 X    d } ||      | _          ||      | _         ||      | _        y)a8  
        Set the get_input timeout values.  All values have a granularity
        of 0.1s, ie. any value between 0.15 and 0.05 will be treated as
        0.1 and any value less than 0.05 will be treated as 0.  The
        maximum timeout value for this module is 25.5 seconds.

        max_wait -- amount of time in seconds to wait for input when
            there is no input pending, wait forever if None
        complete_wait -- amount of time in seconds to wait when
            get_input detects an incomplete escape sequence at the
            end of the available input
        resize_wait -- amount of time in seconds to wait for more input
            after receiving two screen resize requests in a row to
            stop urwid from consuming 100% cpu during a gradual
            window resize operation
        c                 *    | y t        | dz   dz        S )Ng?rI   )int)r    s    r+   convert_to_tenthsz4Screen.set_input_timeouts.<locals>.convert_to_tenths   s    y4%%r,   N)
max_tenthscomplete_tenthsresize_tenths)r)   max_waitcomplete_waitresize_waitr}   s        r+   r$   zScreen.set_input_timeouts   s/    &	&
 ,H50?.{;r,   c                    | j                   sJ | j                  | j                        \  }}|dgk(  rw| j                  rk	 | j                  | j                        \  }}||z  }|s#| j                  | j                        \  }}||z  }|dgk7  rnP|dd dgk7  r|j                  d       |dgk(  rd| _        n | j                  dk(  r
|sd| _        nd| _        |r||fS |S )a  Return pending input as a list.

        raw_keys -- return raw keycodes as well as translated versions

        This function will immediately return all the input since the
        last time it was called.  If there is no input pending it will
        wait before returning an empty list.  The wait time may be
        configured with the set_input_timeouts function.

        If raw_keys is False (default) this function will return a list
        of keys pressed.  If raw_keys is True this function will return
        a ( keys pressed, raw keycodes ) tuple instead.

        Examples of keys returned:

        * ASCII printable characters:  " ", "a", "0", "A", "-", "/"
        * ASCII control characters:  "tab", "enter"
        * Escape sequences:  "up", "page up", "home", "insert", "f1"
        * Key combinations:  "shift f1", "meta a", "ctrl b"
        * Window events:  "window resize"

        When a narrow encoding is not enabled:

        * "Extended ASCII" characters:  "\xa1", "\xb2", "\xfe"

        When a wide encoding is enabled:

        * Double-byte characters:  "\xa1\xea", "\xb2\xd4"

        When utf8 encoding is enabled:

        * Unicode characters: u"\u00a5", u'\u253c"

        Examples of mouse events returned:

        * Mouse button press: ('mouse press', 1, 15, 13),
                            ('meta mouse press', 2, 17, 23)
        * Mouse button release: ('mouse release', 0, 18, 13),
                              ('ctrl mouse release', 0, 17, 23)
        window resizer   N   r   r   )_started
_get_inputr~   r#   r   append)r)   raw_keyskeysrawraw2s        r+   	get_inputzScreen.get_input   s    R }}}OOT__6	c
 /""t'='=!__T-?-?@
dt!%**",JD$4KC/**  BCy?++O, /""%&D"##q(%&D"%&D"9r,   c                    t        j                          | j                  |      }d}g }g }|dk\  ra|j                  |       |t        k(  rd}n.|t
        k(  r|| j                         z  }n|j                  |       | j                         }|dk\  rag }	 |r!t        j                  |d      \  }}||z  }|r!|r|j                  d       ||fS # t        j                  $ r | j                  | j                        }|dk\  ra|j                  |       |t        k(  rd}n.|t
        k(  r|| j                         z  }n|j                  |       | j                         }|dk\  ra|r!t        j                  |d      \  }}||z  }|r!Y w xY w)NFr   Tr   )r/   doupdaterw   r   
KEY_RESIZE	KEY_MOUSE_encode_mouse_eventrr   r   process_keyqueueMoreInputRequiredr   )r)   rv   keyresizer   r   	processedruns           r+   r   zScreen._get_input6  s    	kk+&QhJJsOJi0022C %%'C Qh 		!"33D$?	TS 	 $ _-#~% '' 	!++d223C(

3
?!F)^D4466DKK$))+ ( "33D%@	TS 	 	!s   "C BF	#"F	F	c                   	
 | j                   x}}t        j                         \  }	
}}d|t        j                  z  rdz  |t        j                  z  rdz  |t        j
                  z  rdz  g 	
fd}|t        j                  z  r|dz  dk(  r |d       |dz  }|t        j                  z  r|dz  dk(  r |d       |dz  }|t        j                  z  r|dz  dk(  r |d       |dz  }|t        j                  z  r|dz  dk(  r |d       |dz  }|t        j                  z  r#|dz  r |dt        j                  z          |d	z  }|t        j                  z  r#|dz  r |dt        j                  z          |d
z  }|t        j                  z  r#|dz  r |dt        j                  z          |dz  }|t        j                  z  r#|dz  r |dt        j                  z          |dz  }|t        j                   z  r |dt        j"                  z          |t        j$                  z  r |dt        j"                  z          |t        j&                  z  r |dt        j"                  z          |t        j(                  z  r |dt        j"                  z          |t        j*                  z  r |dt        j"                  dz  z          |t        j,                  z  r |dt        j"                  dz  z          |t        j.                  z  r |dt        j"                  dz  z          |t        j0                  z  r |dt        j"                  dz  z          || _         S )Nr      rH      c           	      t    | z  } j                  dt        d      t        d      | dz   dz   dz   g       y )N   [M    !   )extendr   )blmodrj   ys    r+   append_buttonz1Screen._encode_mouse_event.<locals>.append_buttonq  s9    HAHHr49d3i2qtQrTCDr,   r   r   @   i)r%   r/   getmouserA   rB   rC   r1   r3   r5   r7   r2   r   MOUSE_RELEASE_FLAGr4   r6   r8   r9   MOUSE_MULTIPLE_CLICK_FLAGr;   r=   r?   r:   r<   r>   r@   )r)   lastnextidzbstater   r   r   rj   r   s          @@@@r+   r   zScreen._encode_mouse_eventf  s   &&&t"OO-Aa&F'''C1HCF%%%cQhcF&&&sbys	E F***tax1}1AIDF***tax1}1AIDF***tax1}1AIDF***tax1}2AIDF+++q1v888:CKDF+++q1v888:CKDF+++q1v888:CKDF+++q2 9 99;CKDF1111v???AF1111v???AF1111v???AF1112 @ @@BF1111v??AACF1111v??AACF1111v??AACF1112 @ @ BBDr,   c                     t        j                          | j                  j                  d       t        j                  d       | j                  j                         }t        j                          |S )Nr   d   )r/   r\   r    rt   rU   getstrrS   r)   strs     r+   
_dbg_instrzScreen._dbg_instr  sF    qffmmo
r,   c                     | j                   j                          | j                   j                  |       | j                   j                          | j	                  d       y ry   )r    clrtoeoladdstrrn   r]   r   s     r+   _dbg_outzScreen._dbg_out  s:    cqr,   c                 D    | j                  |       | j                         S rl   )r   r   )r)   questions     r+   
_dbg_queryzScreen._dbg_query  s    h  r,   c                 8    | j                   j                          y rl   )r    rn   ro   s    r+   _dbg_refreshzScreen._dbg_refresh  s    r,   c                 D    | j                   j                         \  }}||fS )z7Return the terminal dimensions (num columns, num rows).)r    getmaxyx)r)   rowscolss      r+   get_cols_rowszScreen.get_cols_rows  s     FFOO%	TDyr,   c                    || j                   j                  d       y t        |t              s,| j                  j                  |t        dd      f      }|d   }| j                  rt|j                  r,|j                  dk\  r|j                  dz
  }n|j                  }nd}|j                  r|j                  }nd}t        j                  |dz  dz   |z
        }nd}|j                  r|t        j                  z  }|j                  r|t        j                   z  }|j"                  r|t        j$                  z  }|j&                  r|t        j(                  z  }| j                   j                  |       y )Nr   r   rH   ra   )r    attrset
isinstancer   _palettegetr   foreground_basicforeground_numberbackground_basicbackground_numberr/   
color_pairboldA_BOLDstandout
A_STANDOUT	underlineA_UNDERLINEblinkA_BLINK)r)   apre   rf   attrs         r+   _setattrzScreen._setattr  s-   9FFNN1Ax(!!!hy)&D%FGA!A>>!!&&!+,,q0B,,B!!(($$R!VaZ"_5DD66FMM!D::F%%%D;;F&&&D77FNN"Dtr,   c           
         | j                   sJ |\  }}|j                         |k(  sJ d       d}|j                         D ],  }|dz  }	 | j                  j	                  |d       d}d}d}	|D ]  \  }
}}|dk7  r'|j                  t              }t        |t              sJ |s||
k7  r| j                  |
       |
}	 |dv rDt        t        |            D ],  }| j                  j                  d	t        ||         z          . nb|J t         r=t        |t              sJ | j                  j#                  |j%                  d
             n| j                  j#                  |       |	dz  }	 / |j&                  >|j&                  \  }}| j)                  d       	 | j                  j	                  ||       n-| j)                  d       | j                  j	                  dd       | j                  j+                          || _        y# t
        j                  $ r Y  yw xY w# t
        j                  $ r! ||dz
  k(  r|	t        |      dz
  k(  rnY   yY w xY w# t
        j                  $ r Y w xY w)z"Paint screen with rendered canvas.z'canvas size and passed size don't matchr   r   r   NTU)0r   i  @ utf-8)r   r   contentr    moverP   rQ   	translater	   r   r
   r   rangelenaddchr   r   r   decodecursorr]   rn   keep_cache_alive_link)r)   sizerr   r   r   rowfirstlastanrr   cssegirj   s                  r+   draw_screenzScreen.draw_screen  sI   }}}
dvvx4J!JJ99; (	CFAQ# EEB! 
2s9--(?@C%c5111EQJMM!$EZ'!&s3x DA FFLL(T#a&\*ACD  "z)z"#-c5#99#9 FFMM#**W*=> FFMM#. a9(	R 88((CAaNN1Aa  NN1FFKK!%&"c ==  6 }}  T!Vc#hqj(8 	 	 == s7   
H	<B*H#I 	H H #-III0/I0c                 8    | j                   j                          y)zh
        Force the screen to be completely repainted on the next
        call to draw_screen().
        N)r    rm   ro   s    r+   rm   zScreen.clear'  s    
 	r,   )T)N皙?r   )F)__name__
__module____qualname__r   rF   rZ   r_   rR   r]   rp   rw   rr   r$   r   r   r   r   r   r   r   r   r   r   rm   __classcell__)r*   s   @r+   r   r   =   s{    ?".8%8$":&(

 ?B<8GT-`;|!
#J>'Br,   r   c                       e Zd Zd Zd Zy)_testc           	      l   t               | _        t        t        j	                               | _        | j
                  j                          | j
                  D ]5  }| j                  j                  |dz   |ddf|dz   |ddf|dz   |dd	fg       7 | j                  j                  | j                         y )
N	 on blackr   r    on dark bluer   r    on light grayr   r   )
r   uilist_curses_coloursr   r   sortregister_paletterun_wrapperr   )r)   cs     r+   r   z_test.__init__2  s    (o**,- 	AGG$$;7K8?"1k6:##AlJ?' 	 	DHH%r,   c                 :    G d d      } |       }dt        | j                  j                        z   dg}g g g}i |_        d |_        | j
                  D ]Y  }d}g }|dz   |dz   |dz   fD ]   }|j                  |df       ||d	z   d d z   }" |j                  |       |j                  |       [ |g d
z  }|g g g gz  }| j                  j                         \  }	}
d }|dgk7  r2|D cg c]  }|j                  |	       c}dg|
z  z   d |
 |_	        |g g|
z  z   d |
 |_
        | j                  j                  |	|
f|       | j                  j                  d      \  }}d|v r| j                  j                         \  }	}
|sd}g }|D ]C  }t        |      t        k(  r|j                  d      }|d|z   dz   z  }|ddt!        |      fdgz  }E |j                  |dz   t        |      z          |j                  |       ||
 d  }||
 d  }|dgk7  r1y y c c}w )Nc                       e Zd Zy)_test.run.<locals>.FakeRenderN)r   r   r    r,   r+   
FakeRenderr  ?  s    r,   r  z  has_color =  r   r   r  r   z                           )r  z)return values from get_input(): (q exits)r  qT)r   r   r   'z' ry   zyellow on dark blue)Nr   z: )reprr  r   coordsr   r   r   r   ljusttextr   r   r   typer   encoder   )r)   r  r   r  r   r  tr   r   r   r   r   r   ks                 r+   r   z	_test.run>  sR   L dgg&7&7!88<2w 	AAA{]1_#4Q7G5GG %!B ah_$% KKKK	 	DDBr
GG))+	TSEk,01qQWWT]12$t);UdCAF"dNUd+AFGGdA.))d)<ID#$&!WW224
dAA 7i'QXXg->SUT\!h!6s1v >  KKD$s)+,KKN<D<D) SEk1s   )HN)r   r   r   r   r   r  r,   r+   r   r   1  s    
&* r,   r   __main__) 
__future__r   r   r/   rP   urwidr   urwid.display_commonr   r   r   r	   urwid.compatr
   r   r   r   r   r   r   rc   	COLOR_REDCOLOR_GREENCOLOR_YELLOW
COLOR_BLUECOLOR_MAGENTA
COLOR_CYANrb   r  r   r   r   r  r,   r+   <module>r$     s  , 0     @ @
	0v))a0 v''a0 v))a0	
 v**a0 v((a0 v++a0 v((a0 v))a0 v))a0 v''a0 v))a0 v**a0 v((a0 v++a0  v((a0!" v))a0#*oZ oh7  7 x x	G r,   