Ë
    #´˜j˜  ã                   ó  — d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZmZmZ ddlmZ ddlmZ  G d„ de«      Z G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zdd„Z	 	 dd„Zedk(  r ddlmZ  eddd¬«       ddlmZ  ee«       yy)zSimple text browser for IDLE

é    )ÚToplevelÚTextÚTclErrorÚ
HORIZONTALÚVERTICALÚNSÚEWÚNSEWÚNONEÚWORDÚSUNKEN)ÚFrameÚ	ScrollbarÚButton)Ú	showerror)Úcolor_configc                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚAutoHideScrollbarzpA scrollbar that is automatically hidden when not needed.

    Only the grid geometry manager is supported.
    c                 ó    •— t        |«      dkD  st        |«      dk  r| j                  «        n| j                  «        t        ‰| �  ||«       y )Ng        g      ð?)ÚfloatÚgridÚgrid_removeÚsuperÚset)ÚselfÚloÚhiÚ	__class__s      €ú"lib/python3.12/idlelib/textview.pyr   zAutoHideScrollbar.set   s;   ø€ Ü�‹9�sŠ?œe B›i¨#šoØ�I‰I�Kà×ÑÔÜ‰‰�B˜Õó    c                 óF   — t        | j                  j                  › d�«      ‚)Nz does not support "pack"©r   r   Ú__name__©r   Úkwargss     r   ÚpackzAutoHideScrollbar.pack   s    € Ü˜$Ÿ.™.×1Ñ1Ð2Ð2JÐKÓLÐLr    c                 óF   — t        | j                  j                  › d�«      ‚)Nz does not support "place"r"   r$   s     r   ÚplacezAutoHideScrollbar.place   s    € Ü˜$Ÿ.™.×1Ñ1Ð2Ð2KÐLÓMÐMr    )r#   Ú
__module__Ú__qualname__Ú__doc__r   r&   r(   Ú__classcell__©r   s   @r   r   r      s   ø„ ñôòMöNr    r   c                   ó&   ‡ — e Zd ZdZefˆ fd„	Zˆ xZS )ÚScrollableTextFramezDisplay text with scrollbar(s).c                 ó`  •— t        ‰| �  |fi |¤Ž t        | |¬«      x}| _        |j	                  ddt
        ¬«       | j                  dd¬«       | j                  dd¬«       t        | t        d|j                  ¬«      | _        | j                  j	                  ddt        ¬«       | j                  j                  |d<   |t        k(  r^t        | t        d|j                   ¬«      | _        | j"                  j	                  ddt$        ¬«       | j"                  j                  |d	<   y
d
| _        y
)a‘  Create a frame for Textview.

        master - master widget for this frame
        wrap - type of text wrapping to use ('word', 'char' or 'none')

        All parameters except for 'wrap' are passed to Frame.__init__().

        The Text widget is accessible via the 'text' attribute.

        Note: Changing the wrapping mode of the text widget after
        instantiation is not supported.
        ©Úwrapr   )ÚrowÚcolumnÚstickyé   )ÚweightF)ÚorientÚ	takefocusÚcommandÚyscrollcommandÚxscrollcommandN)r   Ú__init__r   Útextr   r
   Úgrid_rowconfigureÚgrid_columnconfigurer   r   ÚyviewÚyscrollr   r   r   r   ÚxviewÚxscrollr	   )r   Úmasterr2   r%   r>   r   s        €r   r=   zScrollableTextFrame.__init__"   s	  ø€ ô 	‰Ñ˜Ñ* 6Ò*ä ¨4Ô0Ð0ˆˆtŒyØ�	‰	�a ¬$ˆ	Ô/Ø×Ñ˜q¨ÐÔ+Ø×!Ñ! !¨AÐ!Ô.ô )¨´hØ38Ø15·±ô=ˆŒð 	�‰×Ñ˜a¨´"ÐÔ5Ø!%§¡×!1Ñ!1ˆÐÑð ”4Š<Ü,¨T¼*Ø7<Ø59·Z±ZôAˆDŒLð �L‰L×Ñ !¨A´bÐÔ9Ø%)§\¡\×%5Ñ%5ˆDÐ!Ò"àˆD�Lr    )r#   r)   r*   r+   r   r=   r,   r-   s   @r   r/   r/      s   ø„ Ù)à$(÷ # ñ # r    r/   c                   ó,   ‡ — e Zd ZdZdˆ fd„	Zdd„Zˆ xZS )Ú	ViewFramez#Display TextFrame and Close button.c                 ó,  •— t         ‰| �  |«       || _        | j                  d| j                  «       | j                  d| j                  «       t        | t        d¬«      | _        | j                  j                  x}| _        |j                  d|«       |j                  |dd¬«       t        |«       |j                  «        t        | d	| j                  d
¬«      x| _        }| j                  j                  ddd¬«       |j                  d¬«       y)a  Create a frame for viewing text with a "Close" button.

        parent - parent widget for this frame
        contents - text to display
        wrap - type of text wrapping to use ('word', 'char' or 'none')

        The Text widget is accessible via the 'text' attribute.
        z<Return>z<Escape>i¼  )ÚreliefÚheightz1.0r   Údisabled)r2   ÚhighlightthicknessÚstateÚCloseF©r>   r:   r9   ÚtopTÚboth©ÚsideÚexpandÚfillÚbottom)rS   N)r   r=   ÚparentÚbindÚokr/   r   Ú	textframer>   ÚinsertÚ	configurer   Ú	focus_setr   Ú	button_okr&   )r   rW   Úcontentsr2   r>   r^   r   s         €r   r=   zViewFrame.__init__J   sÞ   ø€ ô 	‰Ñ˜Ô ØˆŒØ�	‰	�*˜dŸg™gÔ&Ø�	‰	�*˜dŸg™gÔ&Ü,¨T¼&ÈÔMˆŒàŸ>™>×.Ñ.Ð.ˆˆtŒyØ�‰�E˜8Ô$Ø�‰˜D°Q¸jˆÔIÜ�TÔØ�‰Ôä%+Ø˜7¨D¯G©G¸uô&Fð 	FˆŒ˜à�‰×Ñ ¨t¸&ÐÔAØ�‰˜HˆÕ%r    c                 ó8   — | j                   j                  «        y©zDismiss text viewer dialog.N)rW   Údestroy©r   Úevents     r   rY   zViewFrame.okd   s   € à�‰×ÑÕr    )Úword©N)r#   r)   r*   r+   r=   rY   r,   r-   s   @r   rG   rG   H   s   ø„ Ù)õ&÷4r    rG   c                   ó8   ‡ — e Zd ZdZdefdddœˆ fd„Zdd„Zˆ xZS )Ú
ViewWindowz%A simple text viewer dialog for IDLE.TF)Ú_htestÚ_utestc                ó<  •— t         ‰| �  |«       d| d<   |j                  «       dz   }|j                  «       |sdndz   }	| j	                  d|› d|	› �«       | j                  |«       t        | ||¬«      | _        | j                  d| j                  «       t        | d	| j                  d
¬«      x| _        }
| j                  j                  ddd¬«       || _        | j                  r5| j                  |«       | j                  «        |s| j!                  «        yyy)a  Show the given text in a scrollable window with a 'close' button.

        If modal is left True, users cannot interact with other windows
        until the textview window is closed.

        parent - parent of this dialog
        title - string which is title of popup dialog
        contents - text to display in dialog
        wrap - type of text wrapping to use ('word', 'char' or 'none')
        _htest - bool; change box location when running htest.
        _utest - bool; don't wait_window when running unittest.
        é   Úborderwidthé
   éd   z	=750x500+Ú+r1   ÚWM_DELETE_WINDOWrN   FrO   rP   TrQ   rR   N)r   r=   Úwinfo_rootxÚwinfo_rootyÚgeometryÚtitlerG   Ú	viewframeÚprotocolrY   r   r^   r&   Úis_modalÚ	transientÚgrab_setÚwait_window)r   rW   ru   r_   Úmodalr2   ri   rj   ÚxÚyr^   r   s              €r   r=   zViewWindow.__init__l   s  ø€ ô 	‰Ñ˜Ô Øˆˆ]Ñà×ÑÓ  2Ñ%ˆØ×ÑÓ ©f¡B¸#Ñ>ˆØ�‰˜	 !  A a SÐ)Ô*à�
‰
�5ÔÜ" 4¨¸Ô=ˆŒØ�‰Ð(¨$¯'©'Ô2Ü%+¨D°wØ48·G±GÀuô&Nð 	NˆŒ˜à�‰×Ñ ¨t¸&ÐÔAàˆŒØ�=Š=Ø�N‰N˜6Ô"Ø�M‰MŒOÙØ× Ñ Õ"ð ð r    c                 ó\   — | j                   r| j                  «        | j                  «        yra   )rx   Úgrab_releaserb   rc   s     r   rY   zViewWindow.ok�   s   € à�=Š=Ø×ÑÔØ�‰�r    rf   )r#   r)   r*   r+   r   r=   rY   r,   r-   s   @r   rh   rh   i   s    ø„ Ù+à6:Àð !#Ø ¨ö!#÷Fr    rh   Fc                 ó$   — t        | |||||¬«      S )a�  Create text viewer for given text.

    parent - parent of this dialog
    title - string which is the title of popup dialog
    contents - text to display in this dialog
    wrap - type of text wrapping to use ('word', 'char' or 'none')
    modal - controls if users can interact with other windows while this
            dialog is displayed
    _utest - bool; controls wait_window on unittest
    ©r2   rj   )rh   )rW   ru   r_   r|   r2   rj   s         r   Ú	view_textrƒ   –   s   € ô �f˜e X¨u¸4ÈÔOÐOr    c                 ó  — 	 t        ||¬«      5 }|j                  «       }ddd«       t        | ||||¬«      S # 1 sw Y   ŒxY w# t        $ r t	        dd|›d�| ¬«       Y yt
        $ r!}	t	        dt        |	«      | ¬«       Y d}	~	yd}	~	ww xY w)	z™Create text viewer for text in filename.

    Return error message if file cannot be read.  Otherwise calls view_text
    with contents of the file.
    )ÚencodingNr‚   zFile Load ErrorzUnable to load file z .)ru   ÚmessagerW   zUnicode Decode Error)ÚopenÚreadrƒ   ÚOSErrorr   ÚUnicodeDecodeErrorÚstr)
rW   ru   Úfilenamer…   r|   r2   rj   Úfiler_   Úerrs
             r   Ú	view_filer�   ¤   sŸ   € ð(Ü�( XÕ.°$Ø—y‘y“{ˆH÷ /ô ˜ ¨°%¸dØ &ô(ð 	(÷ /Ð.ûäò !ÜÐ)Ø0°°¸BÐ?Øö	!ð ô ò !ÜÐ.Ü˜c›(Ø÷	!ñ 	!ð ûð!ús0   ‚A �9 A ¹A¾A ÁBÁ"BÁ*BÂBÚ__main__)Úmainzidlelib.idle_test.test_textviewé   )Ú	verbosityÚexit)ÚrunN)Tre   F) r+   Útkinterr   r   r   r   r   r   r	   r
   r   r   r   Útkinter.ttkr   r   r   Útkinter.messageboxr   Úidlelib.colorizerr   r   r/   rG   rh   rƒ   r�   r#   Úunittestr‘   Úidlelib.idle_test.htestr•   © r    r   Ú<module>r�      s�   ðñ÷;÷ ;÷ ;ñ ;ç 0Ñ 0Ý (å *ôN˜	ô Nô&& ˜%ô & ôR�ô ôB*�ô *óZPð CIØóð0 ˆzÒÝÙÐ	*°a¸eÕDå+Ùˆ
…Oð r    