§
    Ètºfl  ã                  óÒ  — d Z ddlmZ ddlZddlmZmZ ddlmZ	  G d„ de
¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ Zd„ Zd„ Z G d„ d e¦  «        Z G d!„ d"e¦  «        Z G d#„ d$e¦  «        Z G d%„ d&e¦  «        Z G d'„ d(e¦  «        Z G d)„ d*e¦  «        Z G d+„ d,e¦  «        Z G d-„ d.e¦  «        Z  G d/„ d0e ¦  «        Z! G d1„ d2e ¦  «        Z" G d3„ d4e¦  «        Z#d5„ Z$ G d6„ d7e¦  «        Z%dS )8z<
Simple insults-based widget library

@author: Jp Calderone
é    )ÚannotationsN)ÚhelperÚinsults)Útextc                  ó   — e Zd ZdZdS )Ú
YieldFocusz,
    Input focus manipulation exception
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú[/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/insults/window.pyr   r      s   € € € € € ðð ð ð r   r   c                  ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚBoundedTerminalWrapperc                óÄ   — || _         || _        || _        || _        || _        |j        | _        |j        | _        |j        | _        |j        | _        |j	        | _	        d S ©N)
ÚwidthÚheightÚxoffÚyoffÚterminalÚcursorForwardÚselectCharacterSetÚselectGraphicRenditionÚ
saveCursorÚrestoreCursor)Úselfr   r   r   r   r   s         r   Ú__init__zBoundedTerminalWrapper.__init__   sa   € ØˆŒ
ØˆŒØˆŒ	ØˆŒ	Ø ˆŒØ%Ô3ˆÔØ"*Ô"=ˆÔØ&.Ô&EˆÔ#Ø"Ô-ˆŒØ%Ô3ˆÔÐÐr   c                ó¤   — | j                              | j        t          | j        |¦  «        z   | j        t          | j        |¦  «        z   ¦  «        S r   )r   ÚcursorPositionr   Úminr   r   r   )r   ÚxÚys      r   r!   z%BoundedTerminalWrapper.cursorPosition$   sG   € ØŒ}×+Ò+ØŒI�˜DœJ¨Ñ*Ô*Ñ*¨D¬I½¸D¼KÈÑ8KÔ8KÑ,Kñ
ô 
ð 	
r   c                óL   — | j                              | j        | j        ¦  «        S r   )r   r!   r   r   ©r   s    r   Ú
cursorHomez!BoundedTerminalWrapper.cursorHome)   s   € ØŒ}×+Ò+¨D¬I°t´yÑAÔAÐAr   c                ó6   — | j                              |¦  «        S r   )r   Úwrite)r   Údatas     r   r)   zBoundedTerminalWrapper.write,   s   € ØŒ}×"Ò" 4Ñ(Ô(Ð(r   N)r	   r
   r   r   r!   r'   r)   r   r   r   r   r      sS   € € € € € ð
4ð 
4ð 
4ð
ð 
ð 
ð
Bð Bð Bð)ð )ð )ð )ð )r   r   c                  ó†   — e Zd ZU dZdZdZdZded<   dZded<   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dS )ÚWidgetFNz
int | Noner   r   c                ó‚   — | j         sd| _         | j        �'| j        j         s| j                             ¦   «          d S d S d S ©NT)ÚdirtyÚparentÚrepaintr&   s    r   r1   zWidget.repaint7   sM   € ØŒzð 	ØˆDŒJØŒ;Ð"¨4¬;Ô+<Ð"ØŒK×ÒÑ!Ô!Ð!Ð!Ð!ð #Ð"Ð"Ð"r   c                ó   — d| _         d S r.   )r/   r&   s    r   ÚfilthyzWidget.filthy=   s   € ØˆŒ
ˆ
ˆ
r   c                ó\   — |                       ¦   «          |                      |||¦  «         d S r   )r3   Údraw©r   r   r   r   s       r   ÚredrawzWidget.redraw@   s+   € Ø�Š‰ŒˆØ�	Š	�%˜ Ñ*Ô*Ð*Ð*Ð*r   c                óœ   — || j         k    s|| j        k    s| j        r.|| _         || _        d| _        |                      |||¦  «         d S d S ©NF)r   r   r/   Úrenderr6   s       r   r5   zWidget.drawD   s[   € Ø�D”JÒÐ &¨D¬KÒ"7Ð"7¸4¼:Ð"7ØˆDŒJØ ˆDŒKØˆDŒJØ�KŠK˜˜v xÑ0Ô0Ð0Ð0Ð0ð	 #8Ð"7r   c                ó   — d S r   r   r6   s       r   r:   zWidget.renderK   ó   € Øˆr   c                ó   — d S r   r   r&   s    r   ÚsizeHintzWidget.sizeHintN   s   € Øˆtr   c                óð   — |dk    r|                       |¦  «         d S |dk    r|                      ¦   «          d S |t          j        v r|                      ||¦  «         d S |                      ||¦  «         d S )Nó   	ó   )ÚtabReceivedÚbackspaceReceivedr   ÚFUNCTION_KEYSÚfunctionKeyReceivedÚcharacterReceived©r   ÚkeyIDÚmodifiers      r   ÚkeystrokeReceivedzWidget.keystrokeReceivedQ   sŽ   € Ø�EŠ>ˆ>Ø×Ò˜XÑ&Ô&Ð&Ð&Ð&Ø�gÒÐØ×"Ò"Ñ$Ô$Ð$Ð$Ð$Ø•gÔ+Ð+Ð+Ø×$Ò$ U¨HÑ5Ô5Ð5Ð5Ð5à×"Ò" 5¨(Ñ3Ô3Ð3Ð3Ð3r   c                ó   — t          ¦   «         ‚r   ©r   ©r   rI   s     r   rB   zWidget.tabReceived[   s   € å‰lŒlÐr   c                ó<   — d| _         |                      ¦   «          dS )z„
        Called when focus is being given to this widget.

        May raise YieldFocus is this widget does not want focus.
        TN©Úfocusedr1   r&   s    r   ÚfocusReceivedzWidget.focusReceived_   s   € ð ˆŒØ�Š‰Œˆˆˆr   c                ó<   — d| _         |                      ¦   «          d S r9   rO   r&   s    r   Ú	focusLostzWidget.focusLosth   s   € ØˆŒØ�Š‰Œˆˆˆr   c                ó   — d S r   r   r&   s    r   rC   zWidget.backspaceReceivedl   r<   r   c                ó¸   — |}t          |t          ¦  «        s|                     d¦  «        }d|dd…         z   }t          | |d ¦  «        }|� ||¦  «         d S d S )Núutf-8Úfunc_é   éÿÿÿÿ)Ú
isinstanceÚstrÚdecodeÚgetattr)r   rH   rI   ÚnameÚ
methodNameÚfuncs         r   rE   zWidget.functionKeyReceivedo   sn   € ØˆÝ˜%¥Ñ%Ô%ð 	(Ø—;’;˜wÑ'Ô'ˆDð ˜t A b DœzÑ)ˆ
å�t˜Z¨Ñ.Ô.ˆØÐØˆD�‰NŒNˆNˆNˆNð Ðr   c                ó   — d S r   r   rG   s      r   rF   zWidget.characterReceived|   r<   r   )r	   r
   r   rP   r0   r/   r   Ú__annotations__r   r1   r3   r7   r5   r:   r>   rJ   rB   rQ   rS   rC   rE   rF   r   r   r   r,   r,   0   s
  € € € € € € Ø€GØ€FØ€EØ€EÐÐÐÑØ€FÐÐÐÑð"ð "ð "ðð ð ð+ð +ð +ð1ð 1ð 1ðð ð ðð ð ð4ð 4ð 4ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð r   r,   c                  óJ   — 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S )ÚContainerWidgetzZ
    @ivar focusedChild: The contained widget which currently has
    focus, or None.
    NFc                óH   — t                                | ¦  «         g | _        d S r   )r,   r   Úchildrenr&   s    r   r   zContainerWidget.__init__‰   s   € Ý�Š˜ÑÔÐØˆŒˆˆr   c                óø   — |j         �J ‚| |_         | j                             |¦  «         | j        €4| j        r-	 |                     ¦   «          || _        n# t          $ r Y nw xY w|                      ¦   «          d S r   )r0   rf   ÚappendÚfocusedChildrP   rQ   r   r1   ©r   Úchilds     r   ÚaddChildzContainerWidget.addChild�   s–   € ØŒ|Ð#Ð#Ð#ØˆŒØŒ×Ò˜UÑ#Ô#Ð#ØÔÐ$¨¬Ð$ð*Ø×#Ò#Ñ%Ô%Ð%ð %*�Ô!Ð!øõ ð ð ð Ø�ðøøøð 	�Š‰Œˆˆˆs   ºA Á
A#Á"A#c                ó†   — |j         | u sJ ‚d |_         | j                             |¦  «         |                      ¦   «          d S r   )r0   rf   Úremover1   rj   s     r   ÚremChildzContainerWidget.remChildš   sC   € ØŒ|˜tÐ#Ð#Ð#Ð#ØˆŒØŒ×Ò˜UÑ#Ô#Ð#Ø�Š‰Œˆˆˆr   c                óv   — | j         D ]}|                     ¦   «          Œt                               | ¦  «         d S r   )rf   r3   r,   )r   Úchs     r   r3   zContainerWidget.filthy    s:   € Ø”-ð 	ð 	ˆBØ�IŠI‰KŒKˆKˆKÝ�Š�dÑÔÐÐÐr   c                óH   — | j         D ]}|                     |||¦  «         Œd S r   )rf   r5   )r   r   r   r   rq   s        r   r:   zContainerWidget.render¥   s6   € Ø”-ð 	-ð 	-ˆBØ�GŠG�E˜6 8Ñ,Ô,Ð,Ð,ð	-ð 	-r   c                ó  — |                       ¦   «          | j        �b| j                             ¦   «          | j        }d | _        	 | j                             |¦  «        dz   }n# t
          $ r t          ¦   «         ‚w xY wd}|t          | j        ¦  «        k     ra	 | j        |                              ¦   «          | j        |         | _        d S # t          $ r |dz  }Y nw xY w|t          | j        ¦  «        k     °at          ¦   «         ‚)NrX   r   )	r1   ri   rS   rf   ÚindexÚ
ValueErrorr   ÚlenrQ   )r   ri   ÚcurFocuss      r   ÚchangeFocuszContainerWidget.changeFocus©   s   € Ø�Š‰ŒˆàÔÐ(ØÔ×'Ò'Ñ)Ô)Ð)ØÔ,ˆLØ $ˆDÔð#Øœ=×.Ò.¨|Ñ<Ô<¸qÑ@��øÝð #ð #ð #Ý ‘l”lÐ"ð#øøøð ˆHØ�˜Tœ]Ñ+Ô+Ò+Ð+ðØ”˜hÔ'×5Ò5Ñ7Ô7Ð7ð %)¤M°(Ô$;�Ô!Ø�øõ	 ð ð ð Ø˜A‘���ðøøøð �˜Tœ]Ñ+Ô+Ò+Ð+õ ‰lŒlÐs   ÁA" Á"A;ÂC ÃCÃCc                ó<   — |                       ¦   «          d| _        d S r.   )rx   rP   r&   s    r   rQ   zContainerWidget.focusReceivedÁ   s   € Ø×ÒÑÔÐØˆŒˆˆr   c                óú   — | j         �W	 | j                              ||¦  «         d S # t          $ r, |                      ¦   «          |                      ¦   «          Y d S w xY wt
                               | ||¦  «         d S r   )ri   rJ   r   rx   r1   r,   rG   s      r   rJ   z!ContainerWidget.keystrokeReceivedÅ   s�   € ØÔÐ(ðØÔ!×3Ò3°E¸8ÑDÔDÐDÐDÐDøÝð ð ð Ø× Ò Ñ"Ô"Ð"Ø—’‘”����ðøøøõ ×$Ò$ T¨5°(Ñ;Ô;Ð;Ð;Ð;s   ‰& ¦2AÁA)r	   r
   r   r   ri   rP   r   rl   ro   r3   r:   rx   rQ   rJ   r   r   r   rd   rd   €   s¢   € € € € € ðð ð
 €LØ€Gðð ð ðð ð ðð ð ðð ð ð
-ð -ð -ðð ð ð0ð ð ð<ð <ð <ð <ð <r   rd   c                  ó8   — e Zd ZdZdZd„ ZdZd„ Zd„ Zd„ Z	d„ Z
dS )	Ú	TopWindowaM  
    A top-level container object which provides focus wrap-around and paint
    scheduling.

    @ivar painter: A no-argument callable which will be invoked when this
    widget needs to be redrawn.

    @ivar scheduler: A one-argument callable which will be invoked with a
    no-argument callable and should arrange for it to invoked at some point in
    the near future.  The no-argument callable will cause this widget and all
    its children to be redrawn.  It is typically beneficial for the no-argument
    callable to be invoked at the end of handling for whatever event is
    currently active; for example, it might make sense to call it at the end of
    L{twisted.conch.insults.insults.ITerminalProtocol.keystrokeReceived}.
    Note, however, that since calls to this may also be made in response to no
    apparent event, arrangements should be made for the function to be called
    even if an event handler such as C{keystrokeReceived} is not on the call
    stack (eg, using
    L{reactor.callLater<twisted.internet.interfaces.IReactorTime.callLater>}
    with a short timeout).
    Tc                óV   — t                                | ¦  «         || _        || _        d S r   )rd   r   ÚpainterÚ	scheduler)r   r~   r   s      r   r   zTopWindow.__init__é   s(   € Ý× Ò  Ñ&Ô&Ð&ØˆŒØ"ˆŒˆˆr   Nc                ó¢   — | j         €-t          ¦   «         | _         |                      | j        ¦  «         t                               | ¦  «         d S r   )Ú
_paintCallÚobjectr   Ú_paintrd   r1   r&   s    r   r1   zTopWindow.repaintð   sC   € ØŒ?Ð"Ý$™hœhˆDŒOØ�NŠN˜4œ;Ñ'Ô'Ð'Ý×Ò Ñ%Ô%Ð%Ð%Ð%r   c                ó<   — d | _         |                      ¦   «          d S r   )r�   r~   r&   s    r   rƒ   zTopWindow._paintö   s   € ØˆŒØ�Š‰Œˆˆˆr   c                ó¸   — 	 t                                | ¦  «         d S # t          $ r1 	 t                                | ¦  «         Y d S # t          $ r Y Y d S w xY ww xY wr   )rd   rx   r   r&   s    r   rx   zTopWindow.changeFocusú   s‚   € ð	Ý×'Ò'¨Ñ-Ô-Ð-Ð-Ð-øÝð 	ð 	ð 	ðÝ×+Ò+¨DÑ1Ô1Ð1Ð1Ð1Ð1øÝð ð ð Ø���ðøøøð	øøøs&   ‚ ž
A©AÁ
AÁAÁAÁAc                óŠ   — 	 t                                | ||¦  «         d S # t          $ r |                      ¦   «          Y d S w xY wr   )rd   rJ   r   rx   rG   s      r   rJ   zTopWindow.keystrokeReceived  s[   € ð	Ý×-Ò-¨d°E¸8ÑDÔDÐDÐDÐDøÝð 	ð 	ð 	Ø×ÒÑÔÐÐÐÐð	øøøs   ‚   AÁA)r	   r
   r   r   rP   r   r�   r1   rƒ   rx   rJ   r   r   r   r|   r|   Ð   sw   € € € € € ðð ð, €Gð#ð #ð #ð
 €Jð&ð &ð &ðð ð ðð ð ðð ð ð ð r   r|   c                  ó   — e Zd Zd„ Zd„ ZdS )ÚAbsoluteBoxc                ó´   — t          t          | j        ¦  «        ¦  «        D ]'}| j        |         d         |u r|||f| j        |<    d S Œ(t          d|¦  «        ‚)Nr   zNo such child)Úrangerv   rf   ru   )r   rk   r#   r$   Úns        r   Ú	moveChildzAbsoluteBox.moveChild  sj   € Ý•s˜4œ=Ñ)Ô)Ñ*Ô*ð 	5ð 	5ˆAØŒ}˜QÔ Ô" eÐ+Ð+Ø$)¨1¨a =�”˜aÑ Ø��ð ,õ ˜_¨eÑ4Ô4Ð4r   c                ó‚   — | j         D ]6\  }}}t          |||z
  ||z
  ||¦  «        }|                     |||¦  «         Œ7d S r   )rf   r   r5   )r   r   r   r   rq   r#   r$   Úwraps           r   r:   zAbsoluteBox.render  sY   € Øœð 	)ð 	)‰HˆB��1Ý)¨(°E¸A±I¸vÈ¹zÈ1ÈaÑPÔPˆDØ�GŠG�E˜6 4Ñ(Ô(Ð(Ð(ð	)ð 	)r   N)r	   r
   r   rŒ   r:   r   r   r   rˆ   rˆ   
  s2   € € € € € ð5ð 5ð 5ð)ð )ð )ð )ð )r   rˆ   c                  óB   — e Zd Z ed¦  «        \  ZZZefd„Zd„ Zd„ Z	dS )Ú_Boxé   c                óH   — t                                | ¦  «         || _        d S r   )rd   r   Úgravity)r   r“   s     r   r   z_Box.__init__  s!   € Ý× Ò  Ñ&Ô&Ð&ØˆŒˆˆr   c                óZ  — d}d}| j         D ]œ}|                     ¦   «         }|€d}| j        dk    r<|d         €d }n|�||d         z  }|d         €d }ŒH|�t          ||d         ¦  «        }Œa|d         €d }n|�t          ||d         ¦  «        }|d         €d }Œ�|�||d         z  }Œ�||fS )Nr   ©NNrX   )rf   r>   ÚvariableDimensionÚmax)r   r   r   rq   Úhints        r   r>   z_Box.sizeHint   sè   € ØˆØˆØ”-ð 	&ð 	&ˆBØ—;’;‘=”=ˆDØˆ|Ø#�àÔ%¨Ò*Ð*Ø˜”7�?Ø �E�EØÐ&Ø˜T !œWÑ$�EØ˜”7�?Ø!�F�FØÐ'Ý  ¨¨a¬Ñ1Ô1�Føà˜”7�?Ø �E�EØÐ&Ý  t¨A¤wÑ/Ô/�EØ˜”7�?Ø!�F�FØÐ'Ø˜d 1œgÑ%�Føà�fˆ}Ðr   c                ó4  — | j         sd S d}g }| j         D ]L}|                     ¦   «         }|€d}|| j                 €|dz  }|                     || j                 ¦  «         ŒM||f| j                 }t	          d„ |D ¦   «         ¦  «        }	|rt          ||	z
  |z  ¦  «        }
dx}}t          || j         ¦  «        D ]]\  }}|€|
}||}}| j        dk    r|}n|}t          |||||¦  «        }|                     |||¦  «         | j        dk    r||z  }ŒX||z  }Œ^d S )Nr   r•   rX   c              3  ó   K  — | ]}|®|V — Œ	d S r   r   )Ú.0Úws     r   ú	<genexpr>z_Box.render.<locals>.<genexpr>L  s"   è è € Ð:Ð:˜a¨A¨M˜¨M¨M¨M¨MÐ:Ð:r   )	rf   r>   r–   rh   ÚsumÚintÚzipr   r5   )r   r   r   r   ÚgreedyÚwantsrq   r˜   ÚlengthÚ	totalWantÚleftForGreedyÚwidthOffsetÚheightOffsetÚwantÚsubWidthÚ	subHeightrŽ   s                    r   r:   z_Box.render=  s  € ØŒ}ð 	ØˆFàˆØˆØ”-ð 	7ð 	7ˆBØ—;’;‘=”=ˆDØˆ|Ø#�Ø�DÔ*Ô+Ð3Ø˜!‘�Ø�LŠL˜˜dÔ4Ô5Ñ6Ô6Ð6Ð6à˜� Ô!7Ô8ˆÝÐ:Ð: 5Ð:Ñ:Ô:Ñ:Ô:ˆ	Øð 	?Ý ¨)Ñ!3°vÑ =Ñ>Ô>ˆMà%&Ð&ˆ�lå˜E 4¤=Ñ1Ô1ð 	%ð 	%‰HˆD�"Øˆ|Ø$�à"'¨�iˆHØÔ%¨Ò*Ð*Ø��à �	å)ØØØØØñô ˆDð �GŠG�H˜i¨Ñ.Ô.Ð.ØÔ%¨Ò*Ð*Ø˜tÑ#��à Ñ$��ð+	%ð 	%r   N)
r	   r
   r   rŠ   ÚTOPÚCENTERÚBOTTOMr   r>   r:   r   r   r   r�   r�     s]   € € € € € Ø˜% ™(œ(Ñ€Cˆ�à%ð ð ð ð ðð ð ð:*%ð *%ð *%ð *%ð *%r   r�   c                  ó   — e Zd ZdZdS )ÚHBoxr   N©r	   r
   r   r–   r   r   r   r¯   r¯   j  ó   € € € € € ØÐÐÐr   r¯   c                  ó   — e Zd ZdZdS )ÚVBoxrX   Nr°   r   r   r   r³   r³   n  r±   r   r³   c                  ó   — e Zd Zd„ ZdS )ÚPackerc                ó–  — | j         sd S t          t          | j         ¦  «        dz  dz   ¦  «        }d„ t          |¦  «        D ¦   «         }t	          | j         ¦  «        D ]0\  }}||t          |¦  «        z                                |¦  «         Œ1t          ¦   «         }t          |j        |¦  «         |                     |||¦  «         d S )Ng      à?c                ó*   — g | ]}t          ¦   «         ‘ŒS r   )r³   )r›   r‹   s     r   ú
<listcomp>z!Packer.render.<locals>.<listcomp>x  s   € Ð-Ð-Ð-˜A•‘”Ð-Ð-Ð-r   )	rf   rŸ   rv   rŠ   Ú	enumeraterl   r¯   Úmapr:   )	r   r   r   r   ÚrootÚboxesr‹   rq   Úhs	            r   r:   zPacker.renders  sÅ   € ØŒ}ð 	ØˆFå•3�t”}Ñ%Ô%¨Ñ,¨sÑ2Ñ3Ô3ˆØ-Ð-¥ t¡¤Ð-Ñ-Ô-ˆÝ˜tœ}Ñ-Ô-ð 	/ð 	/‰EˆAˆrØ�!•c˜%‘j”j‘.Ô!×*Ò*¨2Ñ.Ô.Ð.Ð.Ý‰FŒFˆÝˆAŒJ˜ÑÔÐØ	�Š�˜ Ñ)Ô)Ð)Ð)Ð)r   N)r	   r
   r   r:   r   r   r   rµ   rµ   r  s#   € € € € € ð
*ð 
*ð 
*ð 
*ð 
*r   rµ   c                  ó:   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dS )	ÚCanvasFNc                óf   — t                                | ¦  «         |                      dd¦  «         d S ©NrX   )r,   r   Úresizer&   s    r   r   zCanvas.__init__…  s.   € Ý�Š˜ÑÔÐØ�Š�A�qÑÔÐÐÐr   c                ó†  — t          j         dd|z  |z  ¦  «        }| j        �]t          t          || j        ¦  «        ¦  «        D ]:}t          t          || j        ¦  «        ¦  «        D ]}| ||f         |||z  |z   <   ŒŒ;|| _        || _        || _        | j        |k    r
|dz
  | _        | j        |k    r|dz
  | _        d S d S )NÚBó    rX   )ÚarrayÚcontentsrŠ   r"   Ú_widthÚ_heightr#   r$   )r   r   r   rÇ   r#   r$   s         r   rÂ   zCanvas.resize‰  sÛ   € Ý”;˜s D¨5¡L°6Ñ$9Ñ:Ô:ˆØŒ=Ð$Ý�3˜u d¤kÑ2Ô2Ñ3Ô3ð 9ð 9�Ý�s 6¨4¬<Ñ8Ô8Ñ9Ô9ð 9ð 9�AØ.2°1°a°4¬j�H˜U Q™Y¨™]Ñ+Ð+ð9à ˆŒØˆŒØˆŒØŒ6�UŠ?ˆ?Ø˜Q‘YˆDŒFØŒ6�VÒÐØ˜a‘ZˆDŒFˆFˆFð Ðr   c                ó<   — |\  }}| j         | j        |z  |z            S r   ©rÇ   rÈ   )r   rt   r#   r$   s       r   Ú__getitem__zCanvas.__getitem__—  s#   € Ø‰ˆˆAØŒ}˜dœk¨A™o°Ñ2Ô3Ð3r   c                ó:   — |\  }}|| j         | j        |z  |z   <   d S r   rË   )r   rt   Úvaluer#   r$   s        r   Ú__setitem__zCanvas.__setitem__›  s(   € Ø‰ˆˆAØ/4ˆŒ�t”{ Q‘¨!Ñ+Ñ,Ð,Ð,r   c                ód   — t          j         ddt          | j        ¦  «        z  ¦  «        | _        d S )NrÄ   rÅ   )rÆ   rv   rÇ   r&   s    r   ÚclearzCanvas.clearŸ  s(   € Ýœ C¨µ°D´MÑ0BÔ0BÑ)BÑCÔCˆŒˆˆr   c                ój  — |r|sd S || j         k    s|| j        k    r|                      ||¦  «         t          |¦  «        D ]p}|                     d|¦  «         | j        | j         |z  | j         |z  | j         z   …                              ¦   «         }|d |…         }|                     |¦  «         Œqd S ©Nr   )rÈ   rÉ   rÂ   rŠ   r!   rÇ   Útobytesr)   )r   r   r   r   Úir   s         r   r:   zCanvas.render¢  sÏ   € Øð 	˜Fð 	ØˆFà�D”KÒÐ 6¨T¬\Ò#9Ð#9Ø�KŠK˜˜vÑ&Ô&Ð&Ý�v‘”ð 	!ð 	!ˆAØ×#Ò# A qÑ)Ô)Ð)Ø”=Ø”˜a‘ $¤+°¡/°D´KÑ"?Ð?ôçŠg‰iŒið ð ˜˜˜”<ˆDØ�NŠN˜4Ñ Ô Ð Ð ð	!ð 	!r   )r	   r
   r   rP   rÇ   r   rÂ   rÌ   rÏ   rÑ   r:   r   r   r   r¿   r¿   €  s{   € € € € € Ø€Gà€Hðð ð ð ð  ð  ð4ð 4ð 4ð5ð 5ð 5ðDð Dð Dð!ð !ð !ð !ð !r   r¿   c                ó  — |                       t          j        t          j        ¦  «         |                      ||¦  «         |                      d||z
  z  ¦  «         |                       t          j        t          j        ¦  «         d S )Nó   q)r   r   Ú
CS_DRAWINGÚG0r!   r)   ÚCS_US)r   r$   ÚleftÚrights       r   ÚhorizontalLinerÝ   ±  sn   € Ø×Ò¥Ô 2µG´JÑ?Ô?Ð?Ø×Ò˜D !Ñ$Ô$Ð$Ø‡N‚N�7˜e d™lÑ+Ñ,Ô,Ð,Ø×Ò¥¤­w¬zÑ:Ô:Ð:Ð:Ð:r   c                ó*  — |                       t          j        t          j        ¦  «         t	          ||¦  «        D ]-}|                      ||¦  «         |                      d¦  «         Œ.|                       t          j        t          j        ¦  «         d S )Nó   x)r   r   rØ   rÙ   rŠ   r!   r)   rÚ   )r   r#   ÚtopÚbottomr‹   s        r   ÚverticalLinerâ   ¸  s�   € Ø×Ò¥Ô 2µG´JÑ?Ô?Ð?Ý�3˜ÑÔð  ð  ˆØ×Ò  1Ñ%Ô%Ð%Ø�Š�wÑÔÐÐØ×Ò¥¤­w¬zÑ:Ô:Ð:Ð:Ð:r   c                ó   — |\  }}|\  }}|                       t          j        t          j        ¦  «         |                      ||¦  «         |                      d¦  «         |                      d|dz
  z  ¦  «         |                      d¦  «         t          |dz
  ¦  «        D ]`}|                      |||z   dz   ¦  «         |                      d¦  «         |                      |dz
  ¦  «         |                      d¦  «         Œa|                      d||z   dz
  ¦  «         |                      d¦  «         |                      d|dz
  z  ¦  «         |                      d	¦  «         |                       t          j        t          j        ¦  «         d
S )zð
    Draw a rectangle

    @type position: L{tuple}
    @param position: A tuple of the (top, left) coordinates of the rectangle.
    @type dimension: L{tuple}
    @param dimension: A tuple of the (width, height) size of the rectangle.
    ó   lr×   é   ó   krX   rß   r   ó   mó   jN)	r   r   rØ   rÙ   r!   r)   rŠ   r   rÚ   )r   ÚpositionÚ	dimensionrà   rÛ   r   r   r‹   s           r   Ú	rectanglerë   À  s|  € ð �K€Sˆ$Ø�O€UˆFØ×Ò¥Ô 2µG´JÑ?Ô?Ð?à×Ò˜C Ñ&Ô&Ð&Ø‡N‚N�7ÑÔÐØ‡N‚N�7˜e a™iÑ(Ñ)Ô)Ð)Ø‡N‚N�7ÑÔÐÝ�6˜A‘:ÑÔð  ð  ˆØ×Ò  c¨A¡g°¡kÑ2Ô2Ð2Ø�Š�wÑÔÐØ×Ò˜u q™yÑ)Ô)Ð)Ø�Š�wÑÔÐÐØ×Ò˜A˜s V™|¨aÑ/Ñ0Ô0Ð0Ø‡N‚N�7ÑÔÐØ‡N‚N�7˜e a™iÑ(Ñ)Ô)Ð)Ø‡N‚N�7ÑÔÐà×Ò¥¤­w¬zÑ:Ô:Ð:Ð:Ð:r   c                  ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚBorderc                ó`   — t                                | ¦  «         || _        | | j        _        d S r   )r,   r   Ú	containeer0   ©r   rï   s     r   r   zBorder.__init__ß  s+   € Ý�Š˜ÑÔÐØ"ˆŒØ $ˆŒÔÐÐr   c                ó4   — | j                              ¦   «         S r   )rï   rQ   r&   s    r   rQ   zBorder.focusReceivedä  s   € ØŒ~×+Ò+Ñ-Ô-Ð-r   c                ó4   — | j                              ¦   «         S r   )rï   rS   r&   s    r   rS   zBorder.focusLostç  s   € ØŒ~×'Ò'Ñ)Ô)Ð)r   c                ó8   — | j                              ||¦  «        S r   )rï   rJ   rG   s      r   rJ   zBorder.keystrokeReceivedê  s   € ØŒ~×/Ò/°°xÑ@Ô@Ð@r   c                óœ   — | j                              ¦   «         }|€d}|d         €d }n|d         dz   }|d         €d }n|d         dz   }||fS )Nr•   r   rå   rX   )rï   r>   )r   r˜   r#   r$   s       r   r>   zBorder.sizeHintí  sb   € ØŒ~×&Ò&Ñ(Ô(ˆØˆ<ØˆDØ�Œ7ˆ?ØˆAˆAà�Q”˜!‘ˆAØ�Œ7ˆ?ØˆAˆAà�Q”˜!‘ˆAØ�!ˆtˆr   c                ól   — | j                              ¦   «          t                               | ¦  «         d S r   ©rï   r3   r,   r&   s    r   r3   zBorder.filthyû  ó.   € ØŒ×ÒÑÔÐÝ�Š�dÑÔÐÐÐr   c                ó  — | j         j        r|                     d¦  «         t          |d||f¦  «         |                     d¦  «         t	          ||dz
  |dz
  dd¦  «        }| j                              |dz
  |dz
  |¦  «         d S )Nó   [31m)r   r   ó   [0mrå   rX   )rï   rP   r)   rë   r   r5   )r   r   r   r   rŽ   s        r   r:   zBorder.renderÿ  sŽ   € ØŒ>Ô!ð 	(Ø�NŠN˜;Ñ'Ô'Ð'Ý�(˜F U¨F OÑ4Ô4Ð4Ø�Š�zÑ"Ô"Ð"Ý% h°¸±	¸6ÀA¹:ÀqÈ!ÑLÔLˆØŒ×Ò˜E A™I v°¡z°4Ñ8Ô8Ð8Ð8Ð8r   N)
r	   r
   r   r   rQ   rS   rJ   r>   r3   r:   r   r   r   rí   rí   Þ  s€   € € € € € ð%ð %ð %ð
.ð .ð .ð*ð *ð *ðAð Að Aðð ð ðð ð ð9ð 9ð 9ð 9ð 9r   rí   c                  ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚButtonc                óV   — t                                | ¦  «         || _        || _        d S r   )r,   r   ÚlabelÚonPress)r   rþ   rÿ   s      r   r   zButton.__init__	  s&   € Ý�Š˜ÑÔÐØˆŒ
ØˆŒˆˆr   c                ó.   — t          | j        ¦  «        dfS rÁ   )rv   rþ   r&   s    r   r>   zButton.sizeHint  s   € Ý�4”:‰Œ Ð!Ð!r   c                ó>   — |dk    r|                       ¦   «          d S d S ©Nó   )rÿ   rG   s      r   rF   zButton.characterReceived  s#   € Ø�EŠ>ˆ>Ø�LŠL‰NŒNˆNˆNˆNð ˆ>r   c                ó¸   — |                      dd¦  «         | j        r"|                     d| j        z   dz   ¦  «         d S |                     | j        ¦  «         d S )Nr   s   [1mrú   )r!   rP   r)   rþ   r6   s       r   r:   zButton.render  s`   € Ø×Ò  1Ñ%Ô%Ð%ØŒ<ð 	'Ø�NŠN˜:¨¬
Ñ2°ZÑ?Ñ@Ô@Ð@Ð@Ð@à�NŠN˜4œ:Ñ&Ô&Ð&Ð&Ð&r   N)r	   r
   r   r   r>   rF   r:   r   r   r   rü   rü     sP   € € € € € ðð ð ð
"ð "ð "ðð ð ð'ð 'ð 'ð 'ð 'r   rü   c                  óD   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )Ú	TextInputc                ór   — t                                | ¦  «         || _        || _        d| _        d| _        d S )Nr   r   )r,   r   ÚonSubmitÚmaxwidthÚbufferÚcursor)r   r	  r  s      r   r   zTextInput.__init__  s4   € Ý�Š˜ÑÔÐØ ˆŒØ ˆŒØˆŒØˆŒˆˆr   c                óˆ   — |d | j         …         | _        t          | j        ¦  «        | _        |                      ¦   «          d S r   )r	  r
  rv   r  r1   ©r   r   s     r   ÚsetTextzTextInput.setText%  s6   € Ø˜?˜Tœ]˜?Ô+ˆŒÝ˜$œ+Ñ&Ô&ˆŒØ�Š‰Œˆˆˆr   c                óh   — | j         dk    r&| xj         dz  c_         |                      ¦   «          d S d S ©Nr   rX   )r  r1   rM   s     r   Úfunc_LEFT_ARROWzTextInput.func_LEFT_ARROW*  s5   € ØŒ;˜Š?ˆ?ØˆKŒK˜1ÑˆKŒKØ�LŠL‰NŒNˆNˆNˆNð ˆ?r   c                óŒ   — | j         t          | j        ¦  «        k     r&| xj         dz  c_         |                      ¦   «          d S d S rÁ   )r  rv   r
  r1   rM   s     r   Úfunc_RIGHT_ARROWzTextInput.func_RIGHT_ARROW/  sB   € ØŒ;�˜Tœ[Ñ)Ô)Ò)Ð)ØˆKŒK˜1ÑˆKŒKØ�LŠL‰NŒNˆNˆNˆNð *Ð)r   c                óÊ   — | j         dk    rW| j        d | j         dz
  …         | j        | j         d …         z   | _        | xj         dz  c_         |                      ¦   «          d S d S r  )r  r
  r1   r&   s    r   rC   zTextInput.backspaceReceived4  sa   € ØŒ;˜Š?ˆ?Øœ+Ð&7¨¬°a©Ð&7Ô8¸4¼;ÀtÄ{À}À}Ô;UÑUˆDŒKØˆKŒK˜1ÑˆKŒKØ�LŠL‰NŒNˆNˆNˆNð ˆ?r   c                ó2  — |dk    r|                       | j        ¦  «         d S t          | j        ¦  «        | j        k     rW| j        d | j        …         |z   | j        | j        d …         z   | _        | xj        dz  c_        |                      ¦   «          d S d S )Nr  rX   )r  r
  rv   r	  r  r1   rG   s      r   rF   zTextInput.characterReceived:  s•   € Ø�EŠ>ˆ>Ø�MŠM˜$œ+Ñ&Ô&Ð&Ð&Ð&å�4”;ÑÔ $¤-Ò/Ð/à”K  $¤+ Ô.°Ñ6¸¼ÀTÄ[À]À]Ô9SÑSð ”ð �”˜qÑ �”Ø—’‘”���ð 0Ð/r   c                ó   — | j         dz   dfS rÁ   )r	  r&   s    r   r>   zTextInput.sizeHintE  s   € ØŒ}˜qÑ  !Ð#Ð#r   c                ó  — |                       ¦   «         }|                     dd¦  «         | j        r |                     |d | j        …         ¦  «         t	          ||| j        | j        dz   …         pd¦  «         |                     || j        dz   d …         ¦  «         |                     d| j        t          |¦  «        z
  dz   z  ¦  «         d S | j        t          |¦  «        z
  }|                     |d|z  z   ¦  «         d S )Nr   rX   rÅ   ó   _)Ú_renderTextr!   rP   r)   r  r	  rv   )r   r   r   r   ÚcurrentTextÚmores         r   r:   zTextInput.renderH  s   € Ø×&Ò&Ñ(Ô(ˆØ×Ò  1Ñ%Ô%Ð%ØŒ<ð 	6Ø�NŠN˜; }¨¬ }Ô5Ñ6Ô6Ð6Ý�8˜[¨¬°t´{ÀQ±Ð)FÔGÐOÈ4ÑPÔPÐPØ�NŠN˜; t¤{°Q¡Ð'8Ð'8Ô9Ñ:Ô:Ð:Ø�NŠN˜4 4¤=µ3°{Ñ3CÔ3CÑ#CÀaÑ#GÑHÑIÔIÐIÐIÐIà”=¥3 {Ñ#3Ô#3Ñ3ˆDØ�NŠN˜;¨°©Ñ4Ñ5Ô5Ð5Ð5Ð5r   c                ó   — | j         S r   )r
  r&   s    r   r  zTextInput._renderTextT  s
   € ØŒ{Ðr   N)r	   r
   r   r   r  r  r  rC   rF   r>   r:   r  r   r   r   r  r    s›   € € € € € ðð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ð	ð 	ð 	ð$ð $ð $ð
6ð 
6ð 
6ðð ð ð ð r   r  c                  ó   — e Zd Zd„ ZdS )ÚPasswordInputc                ó0   — dt          | j        ¦  «        z  S )NÚ*)rv   r
  r&   s    r   r  zPasswordInput._renderTextY  s   € Ø•S˜œÑ%Ô%Ñ%Ð%r   N)r	   r
   r   r  r   r   r   r  r  X  s#   € € € € € ð&ð &ð &ð &ð &r   r  c                  ó2   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ ZdS )	Ú
TextOutputr   Nc                óH   — t                                | ¦  «         || _        d S r   )r,   r   Úsize)r   r$  s     r   r   zTextOutput.__init__`  s   € Ý�Š˜ÑÔÐØˆŒ	ˆ	ˆ	r   c                ó   — | j         S r   )r$  r&   s    r   r>   zTextOutput.sizeHintd  s
   € ØŒyÐr   c                ó¦   — |                      dd¦  «         | j        d |…         }|                     |d|t          |¦  «        z
  z  z   ¦  «         d S ©Nr   rÅ   )r!   r   r)   rv   )r   r   r   r   r   s        r   r:   zTextOutput.renderg  sU   € Ø×Ò  1Ñ%Ô%Ð%ØŒy˜˜%˜Ô ˆØ�Š�t˜d e­c°$©i¬iÑ&7Ñ8Ñ8Ñ9Ô9Ð9Ð9Ð9r   c                ó<   — || _         |                      ¦   «          d S r   )r   r1   r  s     r   r  zTextOutput.setTextl  s   € ØˆŒ	Ø�Š‰Œˆˆˆr   c                ó   — t          ¦   «         ‚r   rL   r&   s    r   rQ   zTextOutput.focusReceivedp  s   € Ý‰lŒlÐr   r   )	r	   r
   r   r   r   r>   r:   r  rQ   r   r   r   r"  r"  ]  si   € € € € € Ø€Dðð ð ð ðð ð ð:ð :ð :ð
ð ð ðð ð ð ð r   r"  c                  ó<   — e Zd Z ed¦  «        \  ZZdefd„Zd„ ZdS )ÚTextOutputArearå   Nc                óJ   — t                                | |¦  «         || _        d S r   )r"  r   Ú	longLines)r   r$  r-  s      r   r   zTextOutputArea.__init__w  s#   € Ý×Ò˜D $Ñ'Ô'Ð'Ø"ˆŒˆˆr   c                óæ  — d}| j                              ¦   «         }g }|�r| j        | j        k    r±|                     d¦  «        }t          |t          ¦  «        s|                     d¦  «        }g }t          j	        ||¦  «        D ]A}	t          |	t          ¦  «        s|	                     d¦  «        }	|                     |	¦  «         ŒB|                     |pdg¦  «         n0|                     |                     d¦  «        d |…         ¦  «         t          |¦  «        |k    rn|�°t          |d |…         ¦  «        D ]0\  }}
|                     d|¦  «         |                     |
¦  «         Œ1d S )Nr   rV   r   )r   Ú
splitlinesr-  ÚWRAPÚpoprZ   r[   r\   ÚtptextÚ
greedyWrapÚbytesÚencoderh   Úextendrv   r¹   r!   r)   )r   r   r   r   r‹   Ú
inputLinesÚoutputLinesÚlineÚwrappedLinesÚwrappedLineÚLs              r   r:   zTextOutputArea.render{  sŠ  € ØˆØ”Y×)Ò)Ñ+Ô+ˆ
ØˆØñ 	ØŒ~ ¤Ò*Ð*Ø!—~’~ aÑ(Ô(�Ý! $­Ñ,Ô,ð 0ØŸ;š; wÑ/Ô/�DØ!�Ý#)Ô#4°T¸5Ñ#AÔ#Að 5ð 5�KÝ% kµ5Ñ9Ô9ð BØ&1×&8Ò&8¸Ñ&AÔ&A˜Ø ×'Ò'¨Ñ4Ô4Ð4Ð4Ø×"Ò" <Ð#8°C°5Ñ9Ô9Ð9Ð9à×"Ò" :§>¢>°!Ñ#4Ô#4°V°e°VÔ#<Ñ=Ô=Ð=Ý�;ÑÔ 6Ò)Ð)Øð ñ 	õ ˜k¨'¨6¨'Ô2Ñ3Ô3ð 	ð 	‰DˆAˆqØ×#Ò# A qÑ)Ô)Ð)Ø�NŠN˜1ÑÔÐÐð	ð 	r   )r	   r
   r   rŠ   r0  ÚTRUNCATEr   r:   r   r   r   r+  r+  t  sM   € € € € € Ø�U˜1‘X”X�N€Dˆ(à ¨Dð #ð #ð #ð #ðð ð ð ð r   r+  c                  óœ   — e Zd ZdZdZed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         ZdZ	dZ
d„ Zd	„ Zd
„ ZdS )ÚViewportr   c                ó   — | j         S r   )Ú_xOffsetr&   s    r   ÚxOffsetzViewport.xOffset—  ó
   € àŒ}Ðr   c                óV   — | j         |k    r|| _         |                      ¦   «          d S d S r   )rA  r1   ©r   rÎ   s     r   rB  zViewport.xOffset›  ó/   € àŒ=˜EÒ!Ð!Ø!ˆDŒMØ�LŠL‰NŒNˆNˆNˆNð "Ð!r   c                ó   — | j         S r   )Ú_yOffsetr&   s    r   ÚyOffsetzViewport.yOffset¡  rC  r   c                óV   — | j         |k    r|| _         |                      ¦   «          d S d S r   )rH  r1   rE  s     r   rI  zViewport.yOffset¥  rF  r   é    é   c                ó  — t                                | ¦  «         || _        | | j        _        t	          j        ¦   «         | _        | j        | j        _        | j	        | j        _
        | j                             ¦   «          d S r   )r,   r   rï   r0   r   ÚTerminalBufferÚ_bufrÈ   r   rÉ   r   ÚconnectionMaderð   s     r   r   zViewport.__init__®  sf   € Ý�Š˜ÑÔÐØ"ˆŒØ $ˆŒÔåÔ)Ñ+Ô+ˆŒ	Øœ+ˆŒ	ŒØœ<ˆŒ	ÔØŒ	× Ò Ñ"Ô"Ð"Ð"Ð"r   c                ól   — | j                              ¦   «          t                               | ¦  «         d S r   rö   r&   s    r   r3   zViewport.filthy¸  r÷   r   c                óà  — | j                              | j        | j        | j        ¦  «         t          | j        j        | j        | j        |z   …         ¦  «        D ]“\  }}|                     d|¦  «         d}t          || j	        | j	        |z   …         ¦  «        D ]-\  }\  }}|| j        j
        u rd}|                     |¦  «         Œ.||k     r|                     d||z
  dz
  z  ¦  «         Œ”d S )Nr   rÅ   rX   )rï   r5   rÈ   rÉ   rO  r¹   ÚlinesrH  r!   rA  Úvoidr)   )	r   r   r   r   r$   r9  r‹   rq   Úattrs	            r   r:   zViewport.render¼  s  € ØŒ×Ò˜DœK¨¬°t´yÑAÔAÐAõ !ØŒIŒO˜DœM¨D¬M¸FÑ,BÐBÔCñ
ô 
ð 
	7ð 
	7‰GˆAˆtð ×#Ò# A qÑ)Ô)Ð)ØˆAÝ!*¨4°´ÀÄÐPUÑ@UÐ0UÔ+VÑ!WÔ!Wð #ð #‘�‘:�B˜Ø˜œœÐ'Ð'Ø�BØ—’˜rÑ"Ô"Ð"Ð"Ø�5ŠyˆyØ—’˜t u¨q¡y°1¡}Ñ5Ñ6Ô6Ð6øð
	7ð 
	7r   N)r	   r
   r   rA  rH  ÚpropertyrB  ÚsetterrI  rÈ   rÉ   r   r3   r:   r   r   r   r?  r?  “  sÅ   € € € € € Ø€HØ€Hàðð ñ „Xðð „^ðð ñ „^ðð
 ðð ñ „Xðð „^ðð ñ „^ðð
 €FØ€Gð#ð #ð #ðð ð ð7ð 7ð 7ð 7ð 7r   r?  c                  ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú
_Scrollbarc                óV   — t                                | ¦  «         || _        d| _        d S )Nç        )r,   r   ÚonScrollÚpercent)r   r\  s     r   r   z_Scrollbar.__init__Î  s&   € Ý�Š˜ÑÔÐØ ˆŒØˆŒˆˆr   c           	     óš   — t          dt          d|                      d¦  «        ¦  «        ¦  «        | _        |                      ¦   «          d S )Nç      ð?r[  rY   ©r"   r—   r\  r]  r1   r&   s    r   Úsmallerz_Scrollbar.smallerÓ  ó:   € Ý˜3¥ C¨¯ª°rÑ):Ô):Ñ ;Ô ;Ñ<Ô<ˆŒØ�Š‰Œˆˆˆr   c           	     óš   — t          dt          d|                      d¦  «        ¦  «        ¦  «        | _        |                      ¦   «          d S )Nr_  r[  rX   r`  r&   s    r   Úbiggerz_Scrollbar.bigger×  rb  r   N)r	   r
   r   r   ra  rd  r   r   r   rY  rY  Í  sA   € € € € € ðð ð ð
ð ð ðð ð ð ð r   rY  c                  ó6   — e Zd Zd„ Zd„ Zd„ ZdZdZdZdZ	d„ Z
d	S )
ÚHorizontalScrollbarc                ó   — dS )NrÁ   r   r&   s    r   r>   zHorizontalScrollbar.sizeHintÝ  ó   € Øˆyr   c                ó.   — |                       ¦   «          d S r   ©ra  rM   s     r   r  z#HorizontalScrollbar.func_LEFT_ARROWà  ó   € Ø�Š‰Œˆˆˆr   c                ó.   — |                       ¦   «          d S r   ©rd  rM   s     r   r  z$HorizontalScrollbar.func_RIGHT_ARROWã  ó   € Ø�Š‰Œˆˆˆr   u   â—€u   â–¶õ   â–‘õ   â–“c                ó  — |                      dd¦  «         |dz
  }t          || j        z  ¦  «        }||z
  }| j        | j        |z  z   | j        z   | j        |z  z   | j        z   }|                     |                     d¦  «        ¦  «         d S )Nr   r‘   rV   )	r!   rŸ   r]  Ú_leftÚ_barÚ_sliderÚ_rightr)   r5  )r   r   r   r   r‹   ÚbeforeÚafterÚmes           r   r:   zHorizontalScrollbar.renderë  s¤   € Ø×Ò  1Ñ%Ô%Ð%Ø�A‰IˆÝ�Q˜œÑ%Ñ&Ô&ˆØ�F‘
ˆàŒJØŒy˜6Ñ!ñ#àŒlñð Œy˜5Ñ ñ"ð Œkñ	ð 	ð 	�Š�r—y’y Ñ)Ô)Ñ*Ô*Ð*Ð*Ð*r   N)r	   r
   r   r>   r  r  rr  ru  rs  rt  r:   r   r   r   rf  rf  Ü  sf   € € € € € ðð ð ðð ð ðð ð ð /€EØ0€FØ€DØ€Gð+ð +ð +ð +ð +r   rf  c                  ó6   — e Zd Zd„ Zd„ Zd„ ZdZdZdZdZ	d„ Z
d	S )
ÚVerticalScrollbarc                ó   — dS )N)rX   Nr   r&   s    r   r>   zVerticalScrollbar.sizeHintû  rh  r   c                ó.   — |                       ¦   «          d S r   rj  rM   s     r   Úfunc_UP_ARROWzVerticalScrollbar.func_UP_ARROWþ  rk  r   c                ó.   — |                       ¦   «          d S r   rm  rM   s     r   Úfunc_DOWN_ARROWz!VerticalScrollbar.func_DOWN_ARROW  rn  r   u   â–²u   â–¼ro  rp  c                ól  — |                      dd¦  «         t          | j        |dz
  z  ¦  «        }|                     | j                             d¦  «        ¦  «         t          d|dz
  ¦  «        D ]|}|                      d|¦  «         ||dz   k    r.|                     | j                             d¦  «        ¦  «         ŒO|                     | j                             d¦  «        ¦  «         Œ}|                      d|dz
  ¦  «         |                     | j	                             d¦  «        ¦  «         d S )Nr   rå   rV   rX   )
r!   rŸ   r]  r)   Ú_upr5  rŠ   rs  rt  Ú_down)r   r   r   r   ÚknobrÕ   s         r   r:   zVerticalScrollbar.render	  s  € Ø×Ò  1Ñ%Ô%Ð%Ý�4”< 6¨A¡:Ñ.Ñ/Ô/ˆØ�Š�t”x—’ wÑ/Ô/Ñ0Ô0Ð0Ý�q˜& 1™*Ñ%Ô%ð 	=ð 	=ˆAØ×#Ò# A qÑ)Ô)Ð)Ø�T˜A‘XŠˆØ—’˜tœy×/Ò/°Ñ8Ô8Ñ9Ô9Ð9Ð9à—’˜tœ|×2Ò2°7Ñ;Ô;Ñ<Ô<Ð<Ð<Ø×Ò  6¨A¡:Ñ.Ô.Ð.Ø�Š�t”z×(Ò(¨Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r   N)r	   r
   r   r>   r}  r  r�  r‚  rs  rt  r:   r   r   r   rz  rz  ú  sf   € € € € € ðð ð ðð ð ðð ð ð +€CØ.€EØ€DØ€Gð3ð 3ð 3ð 3ð 3r   rz  c                  óH   — 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S )ÚScrolledAreaz”
    A L{ScrolledArea} contains another widget wrapped in a viewport and
    vertical and horizontal scrollbars for moving the viewport around.
    c                ó  — t                                | ¦  «         t          |¦  «        | _        t	          | j        ¦  «        | _        t          | j        ¦  «        | _	        | j        | j        | j	        fD ]	}| |_
        Œ
d S r   )r,   r   r?  Ú	_viewportrf  Ú_horizScrollÚ_horizrz  Ú_vertScrollÚ_vertr0   )r   rï   rœ   s      r   r   zScrolledArea.__init__  sv   € Ý�Š˜ÑÔÐÝ! )Ñ,Ô,ˆŒÝ)¨$Ô*;Ñ<Ô<ˆŒÝ& tÔ'7Ñ8Ô8ˆŒ
à” ¤¨d¬jÐ8ð 	ð 	ˆAØˆAŒHˆHð	ð 	r   c                ó’   — | j         xj        |z  c_        t          d| j         j        ¦  «        | j         _        | j         j        dz  S ©Nr   g      9@)r‡  rB  r—   ©r   r‹   s     r   rˆ  zScrolledArea._horizScroll&  óA   € ØŒÐÔ !Ñ#ÐÔÝ!$ Q¨¬Ô(>Ñ!?Ô!?ˆŒÔØŒ~Ô%¨Ñ,Ð,r   c                ó’   — | j         xj        |z  c_        t          d| j         j        ¦  «        | j         _        | j         j        dz  S r�  )r‡  rI  r—   rŽ  s     r   rŠ  zScrolledArea._vertScroll+  r�  r   c                ó8   — | j                              ¦   «          d S r   )r‹  ra  rM   s     r   r}  zScrolledArea.func_UP_ARROW0  s   € ØŒ
×ÒÑÔÐÐÐr   c                ó8   — | j                              ¦   «          d S r   )r‹  rd  rM   s     r   r  zScrolledArea.func_DOWN_ARROW3  s   € ØŒ
×ÒÑÔÐÐÐr   c                ó8   — | j                              ¦   «          d S r   )r‰  ra  rM   s     r   r  zScrolledArea.func_LEFT_ARROW6  s   € ØŒ×ÒÑÔÐÐÐr   c                ó8   — | j                              ¦   «          d S r   )r‰  rd  rM   s     r   r  zScrolledArea.func_RIGHT_ARROW9  s   € ØŒ×ÒÑÔÐÐÐr   c                óÐ   — | j                              ¦   «          | j                             ¦   «          | j                             ¦   «          t                               | ¦  «         d S r   )r‡  r3   r‰  r‹  r,   r&   s    r   r3   zScrolledArea.filthy<  sV   € ØŒ×ÒÑÔÐØŒ×ÒÑÔÐØŒ
×ÒÑÔÐÝ�Š�dÑÔÐÐÐr   c                óþ  — t          ||dz
  |dz
  dd¦  «        }| j                             |dz
  |dz
  |¦  «         | j        r|                     d¦  «         t          |dd|dz
  ¦  «         t          |dd|dz
  ¦  «         | j                             d|dz
  t          |d|dz
  |dz
  d¦  «        ¦  «         | j                             |dt          ||dd|dz
  ¦  «        ¦  «         |                     d¦  «         d S )Nrå   rX   rù   r   rú   )	r   r‡  r5   rP   r)   rÝ   râ   r‹  r‰  )r   r   r   r   Úwrappers        r   r:   zScrolledArea.renderB  s  € Ý(¨°5¸1±9¸fÀq¹jÈ!ÈQÑOÔOˆØŒ×Ò˜E A™I v°¡z°7Ñ;Ô;Ð;ØŒ<ð 	(Ø�NŠN˜;Ñ'Ô'Ð'Ý�x  A u¨q¡yÑ1Ô1Ð1Ý�X˜q ! V¨a¡ZÑ0Ô0Ð0ØŒ
�ŠØˆv˜‰zÕ1°(¸A¸vÈ¹zÈ5ÐSTÉ9ÐVWÑXÔXñ	
ô 	
ð 	
ð 	Œ×ÒØ�1Õ,¨X°u¸aÀÀFÈQÁJÑOÔOñ	
ô 	
ð 	
ð 	�Š�zÑ"Ô"Ð"Ð"Ð"r   N)r	   r
   r   r   r   rˆ  rŠ  r}  r  r  r  r3   r:   r   r   r   r…  r…    s¥   € € € € € ðð ð
ð ð ð-ð -ð -ð
-ð -ð -ð
ð ð ðð ð ðð ð ðð ð ðð ð ð#ð #ð #ð #ð #r   r…  c                ó   — |                       ¦   «          |                      t          t          j        ¦  «        ¦  «         |                      |¦  «         |                      ¦   «          |                      ¦   «          d S r   )r   r   r[   r   ÚREVERSE_VIDEOr)   r   r   )r   rq   s     r   r  r  R  so   € Ø×ÒÑÔÐØ×#Ò#¥C­Ô(=Ñ$>Ô$>Ñ?Ô?Ð?Ø‡N‚N�2ÑÔÐØ×ÒÑÔÐØ×ÒÑÔÐÐÐr   c                  óH   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )Ú	Selectionr   Nc                óÄ   — t                                | ¦  «         || _        || _        || _        |�.t          t          t          | j        ¦  «        ¦  «        | _        d S d S r   )	r,   r   ÚsequenceÚonSelectÚ
minVisibler—   rº   rv   rÈ   )r   r�  rž  rŸ  s       r   r   zSelection.__init__a  sV   € Ý�Š˜ÑÔÐØ ˆŒØ ˆŒØ$ˆŒØÐ!Ý�c¥# t¤}Ñ5Ô5Ñ6Ô6ˆDŒKˆKˆKð "Ð!r   c                ó0   — | j         �| j        | j         fS d S r   )rŸ  rÈ   r&   s    r   r>   zSelection.sizeHinti  s!   € ØŒ?Ð&Ø”; ¤Ð/Ð/ð 'Ð&r   c                óž   — | j         dk    rA| xj         dz  c_         | j        dk    r| xj        dz  c_        |                      ¦   «          d S d S r  )ÚfocusedIndexÚrenderOffsetr1   rM   s     r   r}  zSelection.func_UP_ARROWm  s_   € ØÔ˜qÒ Ð ØÐÔ Ñ"ÐÔØÔ  1Ò$Ð$ØÐ!Ô! QÑ&Ð!Ô!Ø�LŠL‰NŒNˆNˆNˆNð	 !Ð r   c                óÂ   — | j         dk    r| xj        | j         z  c_        d| _         n"t          d| j        | j        z
  ¦  «        | _        |                      ¦   «          d S rÓ   )r£  r¢  r—   r   r1   rM   s     r   Ú	func_PGUPzSelection.func_PGUPt  s_   € ØÔ Ò!Ð!ØÐÔ Ô!2Ñ2ÐÔØ !ˆDÔÐå # A tÔ'8¸4¼;Ñ'FÑ GÔ GˆDÔØ�Š‰Œˆˆˆr   c                óØ   — | j         t          | j        ¦  «        dz
  k     rI| xj         dz  c_         | j        | j        dz
  k     r| xj        dz  c_        |                      ¦   «          d S d S rÁ   )r¢  rv   r�  r£  r   r1   rM   s     r   r  zSelection.func_DOWN_ARROW|  st   € ØÔ�s 4¤=Ñ1Ô1°AÑ5Ò5Ð5ØÐÔ Ñ"ÐÔØÔ  4¤;°¡?Ò2Ð2ØÐ!Ô! QÑ&Ð!Ô!Ø�LŠL‰NŒNˆNˆNˆNð	 6Ð5r   c                ó¤  — | j         | j        dz
  k    rq| j        | j         z
  dz
  }|| j        z   t          | j        ¦  «        k    rt          | j        ¦  «        | j        z
  dz
  }| xj        |z  c_        | j        dz
  | _         n7t          t          | j        ¦  «        dz
  | j        | j        z   ¦  «        | _        |                      ¦   «          d S rÁ   )r£  r   r¢  rv   r�  r"   r1   )r   rI   Úchanges      r   Ú	func_PGDNzSelection.func_PGDNƒ  sË   € ØÔ ¤¨a¡Ò/Ð/Ø”[ 4Ô#4Ñ4°qÑ8ˆFØ˜Ô)Ñ)­S°´Ñ-?Ô-?Ò?Ð?Ý˜Tœ]Ñ+Ô+¨dÔ.?Ñ?À!ÑC�ØÐÔ Ñ'ÐÔØ $¤¨a¡ˆDÔÐå #Ý�D”MÑ"Ô" QÑ&¨Ô(9¸D¼KÑ(Gñ!ô !ˆDÔð 	�Š‰Œˆˆˆr   c                ó`   — |dk    r'|                       | j        | j                 ¦  «         d S d S r  )rž  r�  r¢  rG   s      r   rF   zSelection.characterReceived�  s4   € Ø�EŠ>ˆ>Ø�MŠM˜$œ-¨Ô(9Ô:Ñ;Ô;Ð;Ð;Ð;ð ˆ>r   c           	     óÎ  — || _         | j        | j        z
  }|t          | j        ¦  «        |z
  k    r%t          dt          | j        ¦  «        |z
  ¦  «        }| j        |||z   …         }t          |¦  «        D ]ì\  }}|                     d|¦  «         || j        k    rr|                     ¦   «          | j	        r3t          t          j        ¦  «        t          t          j        ¦  «        f}nt          t          j        ¦  «        f} |j        |Ž  |d |…         }	|                     |	d|t          |	¦  «        z
  z  z   ¦  «         || j        k    r|                     ¦   «          Œíd S r'  )r   r¢  r£  rv   r�  r—   r¹   r!   r   rP   r[   r   r™  ÚBOLDr   r)   r   )
r   r   r   r   ÚstartÚelementsr‹   ÚeleÚmodesr   s
             r   r:   zSelection.render”  sd  € ØˆŒØÔ! DÔ$5Ñ5ˆØ•3�t”}Ñ%Ô%¨Ñ.Ò.Ð.Ý˜�3˜tœ}Ñ-Ô-°Ñ6Ñ7Ô7ˆEà”= ¨°©Ð!7Ô8ˆå Ñ)Ô)ð 	)ð 	)‰FˆAˆsØ×#Ò# A qÑ)Ô)Ð)Ø�DÔ%Ò%Ð%Ø×#Ò#Ñ%Ô%Ð%Ø”<ð :Ý¥Ô 5Ñ6Ô6½½G¼LÑ8IÔ8IÐI�E�Eå ¥Ô!6Ñ7Ô7Ð9�EØ/�Ô/°Ð7Ð7Ø�v˜�v”;ˆDØ�NŠN˜4 4¨5µ3°t±9´9Ñ+<Ñ#=Ñ>Ñ?Ô?Ð?Ø�DÔ%Ò%Ð%Ø×&Ò&Ñ(Ô(Ð(øð	)ð 	)r   r   )r	   r
   r   r¢  r£  r   r>   r}  r¥  r  r©  rF   r:   r   r   r   r›  r›  Z  s�   € € € € € à€Lð €Lð7ð 7ð 7ð 7ð0ð 0ð 0ðð ð ðð ð ðð ð ðð ð ð<ð <ð <ð)ð )ð )ð )ð )r   r›  )&r   Ú
__future__r   rÆ   Útwisted.conch.insultsr   r   Útwisted.pythonr   r2  Ú	Exceptionr   r   r,   rd   r|   rˆ   r�   r¯   r³   rµ   r¿   rÝ   râ   rë   rí   rü   r  r  r"  r+  r?  rY  rf  rz  r…  r  r›  r   r   r   ú<module>rµ     s‰  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð �ñ ô ð ð)ð )ð )ð )ð )ñ )ô )ð )ð2Mð Mð Mð Mð Mñ Mô Mð Mð`M<ð M<ð M<ð M<ð M<�fñ M<ô M<ð M<ð`7ð 7ð 7ð 7ð 7�ñ 7ô 7ð 7ðt)ð )ð )ð )ð )�/ñ )ô )ð )ðN%ð N%ð N%ð N%ð N%ˆ?ñ N%ô N%ð N%ðbð ð ð ð ˆ4ñ ô ð ðð ð ð ð ˆ4ñ ô ð ð*ð *ð *ð *ð *ˆ_ñ *ô *ð *ð.!ð .!ð .!ð .!ð .!ˆVñ .!ô .!ð .!ðb;ð ;ð ;ð;ð ;ð ;ð;ð ;ð ;ð<'9ð '9ð '9ð '9ð '9ˆVñ '9ô '9ð '9ðT'ð 'ð 'ð 'ð 'ˆVñ 'ô 'ð 'ð*8ð 8ð 8ð 8ð 8�ñ 8ô 8ð 8ðv&ð &ð &ð &ð &�Iñ &ô &ð &ð
ð ð ð ð �ñ ô ð ð.ð ð ð ð �Zñ ô ð ð>77ð 77ð 77ð 77ð 77ˆvñ 77ô 77ð 77ðtð ð ð ð �ñ ô ð ð+ð +ð +ð +ð +˜*ñ +ô +ð +ð<3ð 3ð 3ð 3ð 3˜
ñ 3ô 3ð 3ð:8#ð 8#ð 8#ð 8#ð 8#�6ñ 8#ô 8#ð 8#ðvð ð ðN)ð N)ð N)ð N)ð N)�ñ N)ô N)ð N)ð N)ð N)r   