
    .hh-                         S r SSK7  SSKJrJr  SSKJr   " S S5      r " S S\5      rSS
 jrS r	 " S S\5      r
 " S S\
5      rS r " S S\
5      rS r " S S\
5      rS r\S:X  a  S r\" 5         g	g	)a&  This modules handles dialog boxes.

It contains the following public symbols:

SimpleDialog -- A simple but flexible modal dialog box

Dialog -- a base class for dialogs

askinteger -- get an integer from the user

askfloat -- get a float from the user

askstring -- get a string from the user
    )*)_get_temp_root_destroy_temp_root)
messageboxc                   B    \ rS rSrS/ SSSS4S jrS rS rS rS rS	r	g)
SimpleDialog    Nc                    U(       a  [        XS9U l        O[        U5      U l        U(       a6  U R                  R                  U5        U R                  R                  U5        [	        U R                  5        [        U R                  USS9U l        U R                  R                  S[        S9  [        U R                  5      U l
        U R                  R                  5         X@l        XPl        X@l        U R                  R                  SU R                  5        [!        [#        U5      5       HR  nX8   n	[%        U R                  U	X4S jS9n
X:X  a  U
R'                  [(        S	S
9  U
R                  [*        [        SS9  MT     U R                  R-                  SU R.                  5        U R                  R1                  U5        [3        U R                  U5        g )N)class_i  )textaspect   )expandfill<Return>c                 $    U R                  U5      $ N)doneselfnums     =/opt/python-3.13.8/usr/lib/python3.13/tkinter/simpledialog.py<lambda>'SimpleDialog.__init__.<locals>.<lambda>9   s    499S>    r   command   )reliefborderwidth)sider   r   WM_DELETE_WINDOW)Toplevelroottitleiconname_setup_dialogMessagemessagepackBOTHFrameframer   canceldefaultbindreturn_eventrangelenButtonconfigRIDGELEFTprotocolwm_delete_window	transient_place_window)r   masterr   buttonsr0   r/   r&   r   r   sbs              r   __init__SimpleDialog.__init__!   sW     7DI (DIIIOOE"IIu%dii tyytC@.499%


		z4#4#45W&CAtzz,0 ILA~15FF4F2 ' 			-t/D/DE		F#dii(r   c                     U R                   R                  5         U R                   R                  5         U R                   R                  5         U R                   R	                  5         U R
                  $ r   )r%   wait_visibilitygrab_setmainloopdestroyr   r   s    r   goSimpleDialog.goA   sK    		!!#						xxr   c                     U R                   c  U R                  R                  5         g U R                  U R                   5        g r   )r0   r%   bellr   r   events     r   r2   SimpleDialog.return_eventH   s*    <<IINNIIdll#r   c                     U R                   c  U R                  R                  5         g U R                  U R                   5        g r   )r/   r%   rL   r   rH   s    r   r:   SimpleDialog.wm_delete_windowN   s*    ;;IINNIIdkk"r   c                 D    Xl         U R                  R                  5         g r   )r   r%   quitr   s     r   r   SimpleDialog.doneT   s    		r   )r/   r0   r.   r*   r   r%   )
__name__
__module____qualname____firstlineno__rA   rI   r2   r:   r   __static_attributes__ r   r   r   r      s,     "d4D)@$#r   r   c                   T    \ rS rSrSrSS jrS rS rS rSS jr	SS	 jr
S
 rS rSrg)DialogY   zRClass to open dialogs.

This class is intended as a base class for custom dialogs
Nc                    UnUc
  [        5       n[        R                  X5        U R                  5         Ub&  UR	                  5       (       a  U R                  U5        U(       a  U R                  U5        [        U 5        Xl        SU l	        [        U 5      nU R                  U5      U l        UR                  SSS9  U R                  5         U R                  c  X l        U R                  SU R                   5        [#        X5        U R                  R%                  5         U R'                  5         U R)                  5         U R+                  U 5        g)zxInitialize a dialog.

Arguments:

    parent -- a parent window (the application window)

    title -- the dialog title
N   )padxpadyr#   )r   r$   rA   withdrawwinfo_viewabler;   r&   r(   parentresultr-   bodyinitial_focusr+   	buttonboxr9   r/   r<   	focus_setrD   rE   wait_window)r   rd   r&   r=   rf   s        r   rA   Dialog.__init__`   s	    >#%F$' &"7"7"9"9NN6"JJudT{!YYt_		qq	!%!%($++6d#$$& 	r   c                 f    SU l         [        R                  U 5        [        U R                  5        g)zDestroy the windowN)rg   r$   rG   r   r=   rH   s    r   rG   Dialog.destroy   s$    !4;;'r   c                     g)zcreate dialog body.

return widget that should have initial focus.
This method should be overridden, and is called
by the __init__ method.
NrZ   )r   r=   s     r   rf   Dialog.body        	r   c                 `   [        U 5      n[        USSU R                  [        S9nUR	                  [
        SSS9  [        USSU R                  S9nUR	                  [
        SSS9  U R                  SU R                  5        U R                  S	U R                  5        UR	                  5         g
)zKadd standard button box.

override if you do not want the standard buttons
OK
   )r   widthr   r0   r_   )r"   r`   ra   Cancel)r   rt   r   r   z<Escape>N)r-   r5   okACTIVEr+   r8   r/   r1   )r   boxws      r   rh   Dialog.buttonbox   s     Dk3TTWWfM	Dqq)3XRE	Dqq)		*dgg&		*dkk*
r   c                    U R                  5       (       d  U R                  R                  5         g U R                  5         U R	                  5          U R                  5         U R                  5         g ! U R                  5         f = fr   )validaterg   ri   rb   update_idletasksapplyr/   rM   s     r   rv   	Dialog.ok   sX    }}((*	JJLKKMDKKMs   A3 3Bc                 r    U R                   b  U R                   R                  5         U R                  5         g r   )rd   ri   rG   rM   s     r   r/   Dialog.cancel   s'     ;;"KK!!#r   c                     g)zvalidate the data

This method is called automatically to validate the data before the
dialog is destroyed. By default, it always validates OK.
r   rZ   rH   s    r   r|   Dialog.validate   s     r   c                     g)zprocess the data

This method is called automatically to process the data, *after*
the dialog is destroyed. By default, it does nothing.
NrZ   rH   s    r   r~   Dialog.apply   rp   r   )rg   rd   re   r   )rU   rV   rW   rX   __doc__rA   rG   rf   rh   rv   r/   r|   r~   rY   rZ   r   r   r\   r\   Y   s0    
1f(*r   r\   Nc                 >   U R                  5         U R                  5         U R                  5       nU R                  5       nU R	                  5       nU R                  5       nUb  UR                  5       (       a  UR                  5       UR                  5       U-
  S-  -   nUR                  5       UR                  5       U-
  S-  -   nU R                  5       nU R                  5       n	[        XhU-   U-
  5      n[        Xh5      n[        XyU-   U-
  5      n[        Xy5      nU R                  S:X  a  [        US5      nO,U R!                  5       U-
  S-  nU R#                  5       U-
  S-  nU R%                  XE5        U R'                  SXg4-  5        U R)                  5         g )N   aqua   z+%d+%d)wm_withdrawr}   winfo_reqwidthwinfo_reqheightwinfo_vrootwidthwinfo_vrootheightwinfo_ismappedwinfo_rootxwinfo_widthwinfo_rootywinfo_heightwinfo_vrootxwinfo_vrootyminmax_windowingsystemwinfo_screenwidthwinfo_screenheight
wm_maxsizewm_geometrywm_deiconify)
ry   rd   minwidth	minheightmaxwidth	maxheightxyvrootxvrootys
             r   r<   r<      st   MMO!H!!#I!!#H##%If3355 F$6$6$88$C#II F$7$7$9I$E!#KK!!H$x/0NI%	12N'Ar
A  "X-!3!!#i/A5LL%MM(aV#$NNr   c                     U R                   S:X  a   U R                  R                  SSU SS5        g U R                   S:X  a  U R                  SS9  g g )	Nr   z!::tk::unsupported::MacWindowStylestylemoveableModalr
   x11dialog)type)r   tkcallwm_attributes)ry   s    r   r(   r(     sM    V#			5w_b	*	
		u	$	X& 
%r   c                   6    \ rS rSr   SS jrS rS rS rSrg)	_QueryDialogi  Nc                 `    X l         X@l        XPl        X0l        [        R                  XU5        g r   )promptminvaluemaxvalueinitialvaluer\   rA   )r   r&   r   r   r   r   rd   s          r   rA   _QueryDialog.__init__  s'    
   (e,r   c                 <    S U l         [        R                  U 5        g r   )entryr\   rG   rH   s    r   rG   _QueryDialog.destroy  s    
tr   c                    [        XR                  [        S9nUR                  SS[        S9  [        USS9U l        U R                  R                  SS[        [        -   S9  U R                  bF  U R                  R                  SU R                  5        U R                  R                  S[        5        U R                  $ )N)r   justifyr   r_   )rowr`   stickyr   )namer   )Labelr   r8   gridWEntryr   Er   insertselect_rangeEND)r   r=   ry   s      r   rf   _QueryDialog.body!  s    &{{D9	11Q'60


AAac2(JJa!2!23JJ##As+zzr   c                     U R                  5       nU R
                  b3  XR
                  :  a$  [        R                  " SSU R
                  -  U S9  gU R                  b3  XR                  :  a$  [        R                  " SSU R                  -  U S9  gXl        g	! [         a&    [        R                  " SU R                  S-   U S9   gf = f)
NzIllegal valuez
Please try again)rd   r   z	Too smallz2The allowed minimum value is %s. Please try again.z	Too largez2The allowed maximum value is %s. Please try again.r   )	getresult
ValueErrorr   showwarningerrormessager   r   re   )r   re   s     r   r|   _QueryDialog.validate/  s    	^^%F ==$--)?""$&*mm4	 ==$--)?""$&*mm4	 9  	""!!$88
 	s   B -C	C	)r   r   r   r   r   re   )NNNN)	rU   rV   rW   rX   rA   rG   rf   r|   rY   rZ   r   r   r   r     s!     #-1-r   r   c                       \ rS rSrSrS rSrg)_QueryIntegeriQ  zNot an integer.c                 T    U R                  U R                  R                  5       5      $ r   )getintr   getrH   s    r   r   _QueryInteger.getresultT  s    {{4::>>+,,r   rZ   NrU   rV   rW   rX   r   r   rY   rZ   r   r   r   r   Q  s    $L-r   r   c                 2    [        X40 UD6nUR                  $ )zget an integer from the user

Arguments:

    title -- the dialog title
    prompt -- the label text
    **kw -- see SimpleDialog class

Return value is an integer
)r   re   r&   r   kwds       r   
askintegerr   X  s     	e*r*A88Or   c                       \ rS rSrSrS rSrg)_QueryFloatig  zNot a floating-point value.c                 T    U R                  U R                  R                  5       5      $ r   )	getdoubler   r   rH   s    r   r   _QueryFloat.getresultj  s    ~~djjnn.//r   rZ   Nr   rZ   r   r   r   r   g  s    0L0r   r   c                 2    [        X40 UD6nUR                  $ )zget a float from the user

Arguments:

    title -- the dialog title
    prompt -- the label text
    **kw -- see SimpleDialog class

Return value is a float
)r   re   r   s       r   askfloatr   n  s     	E(R(A88Or   c                   &    \ rS rSrS rS rS rSrg)_QueryStringi}  c                 n    SU;   a  US   U l         US	 OS U l         [        R                  " U /UQ70 UD6  g )Nshow)_QueryString__showr   rA   )r   argsr   s      r   rA   _QueryString.__init__~  s:    R<V*DK6
DKd0T0R0r   c                 |    [         R                  X5      nU R                  b  UR                  U R                  S9  U$ )N)r   )r   rf   r   	configure)r   r=   r   s      r   rf   _QueryString.body  s3    !!$/;;"OOO-r   c                 6    U R                   R                  5       $ r   )r   r   rH   s    r   r   _QueryString.getresult  s    zz~~r   )__showN)rU   rV   rW   rX   rA   rf   r   rY   rZ   r   r   r   r   }  s    1 r   r   c                 2    [        X40 UD6nUR                  $ )zget a string from the user

Arguments:

    title -- the dialog title
    prompt -- the label text
    **kw -- see SimpleDialog class

Return value is a string
)r   re   r   s       r   	askstringr     s     	U)b)A88Or   __main__c                      [        5       n U 4S jn[        U SUS9nUR                  5         [        U SUR                  S9nUR                  5         UR	                  5         g )Nc           	          [        U S/ SQSSSS9n[        UR                  5       5        [        [        SSS	S
95        [        [	        SSSSS95        [        [        SS5      5        g )NzThis is a test dialog.  Would this have been an actual dialog, the buttons below would have been glowing in soft pink light.
Do you believe this?)YesNoru   r   r   zTest Dialog)r   r>   r0   r/   r&   Spamz	Egg count   )r   zEgg weight
(in tons)r   d   )r   r   z	Egg label)r   printrI   r   r   r   )r%   r   s     r   doittest.<locals>.doit  si    T5
 "9!" !,	.A !$$&M*V[uEF(6#:Q$') *)FK01r   Testr   Quit)Tkr5   r+   rS   rF   )r%   r   tqs       r   testr    sN    t 	2  4fd3	4faff5		

r   r   )r   tkinterr   r   r   r   r$   r\   r<   r(   r   r   r   r   r   r   r   rU   r  rZ   r   r   <module>r     s     6 7 7tIX I\:'@6 @F-L -0, 0 <  & z0 	F5 r   