
    ;OOf               	       4   d dl mZmZ 	 d dlmZ d dlmZ d dlmZm	Z	 ddj                   edd      D  cg c]
  }  e|        c}       z   Zd	Zd
Z G d de      Z G d de	      Z eee      Zej)                         \  ZZZZZZddZd Zd Zd Zyc c} w )    )divisionprint_function)util)ExitMainLoop)AttrSpec
BaseScreenz ????????????????????????????????        blackz
light grayc                       e Zd Zy)HtmlGeneratorSimulationErrorN)__name__
__module____qualname__     T/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/urwid/html_fragment.pyr   r   '   s    r   r   c                   h     e Zd Zg Zg Zg ZdZ fdZ	 	 ddZddZ	d Z
d Zd Zd Zd	 Zdd
Z xZS )HtmlGeneratorTc                     t         t        |           d| _        d| _        d| _        | j                  d t        t               y )N   FT)	superr   __init__colorsbright_is_boldhas_underlineregister_palette_entry_default_foreground_default_background)self	__class__s    r   r   zHtmlGenerator.__init__1   s=    mT+-#!##D!4	6r   c                     || j                   }|| j                  }|| j                  }|| _         || _        || _        y N)r   r   r   )r!   r   r   r   s       r   set_terminal_propertiesz%HtmlGenerator.set_terminal_properties9   sK     >[[F!!00N  ..M,*r   c                      y)zNot yet implementedNr   )r!   enables     r   set_mouse_trackingz HtmlGenerator.set_mouse_trackingG   s    r   c                      y r$   r   r!   argss     r   set_input_timeoutsz HtmlGenerator.set_input_timeoutsK       r   c                      y r$   r   r*   s     r   reset_default_terminal_palettez,HtmlGenerator.reset_default_terminal_paletteN   r-   r   c           
      :   g }|\  }}|j                         |k(  sJ |j                  |j                  \  }}ndx}}d}|j                         D ]  }	|dz  }d}
|	D ]  \  }}}t        t        ur|j                         }|j                  t              }t        |t              r|}n$| j                  |   ddddd| j                        }||k(  rn|
|k  rit        j                  |dt        |            }|
|z   |kD  r |j                  t!        ||||
z
               n|j                  t!        ||             |
|z  }
|j                  t!        ||              |j                  d        | j"                  j                  d	d
j%                  |      z         y)zkCreate an html fragment from the render object.
        Append it to HtmlGenerator.fragments list.
        N   r         )r2   r   X   r   
z<pre>%s</pre>r	   )rowscursorcontentstrbytesdecode	translate_trans_table
isinstancer   _paletter   r   
calc_widthlenappend	html_span	fragmentsjoin)r!   sizerlcolsr7   cxcyyrowcolacsrunaspec	run_widths                   r   draw_screenzHtmlGenerator.draw_screenQ   s   
 
dvvx488XXFBNB99; 	CFAC! 4
2se|**,CmmL1a*E MM!,124;;?AE 7sby $QC!"I9}r)3!2c6"+ , 3!679$CHHYsE23)4, HHTN5	: 	;=r   c                      y)z
        Force the screen to be completely repainted on the next
        call to draw_screen().

        (does nothing for html_fragment)
        Nr   r!   s    r   clearzHtmlGenerator.clear   s     	r   c                 f    | j                   st        d      | j                   j                  d      S )z3Return the next screen size in HtmlGenerator.sizes.z"Ran out of screen sizes to return!r   )sizesr   poprW   s    r   get_cols_rowszHtmlGenerator.get_cols_rows   s(    zz./STTzz~~a  r   c                     | j                   s
t               |r| j                   j                  d      g fS | j                   j                  d      S )z9Return the next list of keypresses in HtmlGenerator.keys.r   )keysr   r[   )r!   raw_keyss     r   	get_inputzHtmlGenerator.get_input   s?    yy. IIMM!$b))yy}}Qr   )NNN)T)F)r   r   r   rE   rZ   r^   startedr   r%   r(   r,   r/   rU   rX   r\   r`   __classcell__)r"   s   @r   r   r   *   sO    IEDG6 CG+.>`! r   r   c                    |j                         \  }}}}}}|t        t        t        }}}|t        t
        t        }}}d|||fz  }	d|||fz  }
|j                  r|
|	}
}	d|j                  z  d|j                  z  z   fd}|dk\  rmt        j                  | dt        |       |      \  }}t        j                  | |t        |             } ||	|
| d |        ||
|	| ||       z    ||	|
| |d        z   S  ||	|
|       S )Nz#%02x%02x%02xz;text-decoration:underlinez;font-weight:boldc           	      8    |syd| d|dt        |      dS )Nr	   z<span style="color:z;background:z">z</span>)html_escape)fgbgsextras      r   rD   zhtml_span.<locals>.html_span   s#    q UKN, 	-r   r   )get_rgb_values_d_fg_r_d_fg_g_d_fg_b_d_bg_r_d_bg_g_d_bg_bstandout	underlineboldr   calc_text_posrB   move_next_char)rh   rS   r8   fg_rfg_gfg_bbg_rbg_gbg_bhtml_fghtml_bgrD   c_off_ignc2_offri   s                  @r   rD   rD      s-   ).)=)=)?&D$dD$|"GWDd|"GWDdtT 22GtT 22G~~"G)EOO;ejj()E- {((As1vv>t$$Qs1v6'7AfuI6gw%89gw&'
34 	5 '1--r   c                 r    | j                  dd      } | j                  dd      } | j                  dd      } | S )z;Escape text so that it will be displayed safely within HTML&z&amp;<z&lt;>z&gt;)replace)texts    r   re   re      s7    <<G$D<<F#D<<F#DKr   c                    	 | D ]%  \  }}t        |      t        k(  sJ |dkD  r|dkD  r%J  	 	 |D ]1  }t        |      t
        k(  sJ |D ]  }t        |      t        k(  rJ  3 	 ddlm} t        |_
        ddlm} t        |_
        | t        _        |t        _        y# t        t        f$ r t	        d      w xY w# t        t        f$ r t	        d      w xY w)a  
    Replace curses_display.Screen and raw_display.Screen class with
    HtmlGenerator.

    Call this function before executing an application that uses
    curses_display.Screen to have that code use HtmlGenerator instead.

    sizes -- list of ( columns, rows ) tuples to be returned by each call
             to HtmlGenerator.get_cols_rows()
    keys -- list of lists of keys to be returned by each call to
            HtmlGenerator.get_input()

    Lists of keys may include "window resize" to force the application to
    call get_cols_rows and read a new screen size.

    For example, the following call will prepare an application to:
     1. start in 80x25 with its first call to get_cols_rows()
     2. take a screenshot when it calls draw_screen(..)
     3. simulate 5 "down" keys from get_input()
     4. take a screenshot when it calls draw_screen(..)
     5. simulate keys "a", "b", "c" and a "window resize"
     6. resize to 20x10 on its second call to get_cols_rows()
     7. take a screenshot when it calls draw_screen(..)
     8. simulate a "Q" keypress to quit the application

    screenshot_init( [ (80,25), (20,10) ],
        [ ["down"]*5, ["a","b","c","window resize"], ["Q"] ] )
    r   z:sizes must be in the form [ (col1,row1), (col2,row2), ...]z@keys must be in the form [ [keyA1, keyA2, ..], [keyB1, ..], ...]r2   )curses_display)raw_displayN)typeintAssertionError
ValueError	Exceptionlistr:   r	   r   r   Screenr   rZ   r^   )rZ   r^   rN   rO   rI   kr   r   s           r   screenshot_initr      s    :V 	#IS9###q5SU"?	#\ 	&A7d?"? &Aw#~%~&	& !)N&KMM# J' VTUUV J' \Z[[\s!   &B B 0B< B< B9<Cc                  <    t         j                  } g t         _        | S )z/Return screenshots as a list of HTML fragments.)r   rE   )rI   s    r   screenshot_collectr      s    A MHr   N)r1   )
__future__r   r   urwidr   urwid.main_loopr   urwid.display_commonr   r   rF   rangechrr>   r   r    r   r   r   _default_aspecrj   rk   rl   rm   rn   ro   rp   rD   re   r   r   )xs   0r   <module>r      s   , 0  ( 5 "''5S>"Ba3q6"BCC " 	9 	l J l \ -/BC!!# 7'7GWg.:2jg #Cs   B
