ó
    ã¾yjå-  ã                   óô   • 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     Ú+/usr/lib/python3.13/tkinter/simpledialog.pyÚ<lambda>Ú'SimpleDialog.__init__.<locals>.<lambda>9   s   € ¸4¿9¹9ÀS¼>ó    ©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  € ö Ü  Ñ7ˆD�Iä  Ó(ˆDŒIÞØ�I‰I�O‰O˜EÔ"Ø�I‰I×Ñ˜uÔ%ä�d—i‘iÔ ä˜tŸy™y¨t¸CÑ@ˆŒØ�‰×Ñ ¬ÐÑ.Ü˜4Ÿ9™9Ó%ˆŒ
Ø�
‰
�‰ÔØŒØŒØŒØ�	‰	�‰�z 4×#4Ñ#4Ô5Üœ˜W›Ö&ˆCØ‘ˆAÜ�t—z‘z¨Ø,0Ó IñLˆAà‹~Ø—‘¤°1�Ñ5Ø�F‰Fœ¤4°ˆFÓ2ñ 'ð 	�	‰	×ÑÐ-¨t×/DÑ/DÔEØ�	‰	×Ñ˜FÔ#Ü�d—i‘i Õ(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   € Ø�	‰	×!Ñ!Ô#Ø�	‰	×ÑÔØ�	‰	×ÑÔØ�	‰	×ÑÔØ�x‰xˆ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*   € Ø�<‰<ÑØ�I‰I�N‰NÕà�I‰I�d—l‘lÕ#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*   € Ø�;‰;ÑØ�I‰I�N‰NÕà�I‰I�d—k‘kÕ"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,   † ð  "¨d¸4Ø 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)ÚDialogéY   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Ø�N‰N˜6Ô"æØ�J‰J�uÔä�dÔàŒàˆŒä�T‹{ˆØ!ŸY™Y t›_ˆÔØ�	‰	�q˜qˆ	Ñ!à�‰Ôà×ÑÑ%Ø!%Ôà�‰Ð(¨$¯+©+Ô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)z‹create 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ˆ   € ô �D‹kˆä�3˜T¨°T·W±WÄfÑMˆØ	�‰”D˜q qˆÑ)Ü�3˜X¨R¸¿¹ÑEˆØ	�‰”D˜q qˆÑ)à�	‰	�*˜dŸg™gÔ&Ø�	‰	�*˜dŸk™kÔ*à�‰�
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   € à�}‰}�‰Ø×Ñ×(Ñ(Ô*Øà�‰ŒØ×ÑÔð	Ø�J‰JŒLà�K‰K�MøˆD�K‰K�Mús   Á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'   € ð �;‰;Ñ"Ø�K‰K×!Ñ!Ô#Ø�‰�r   c                 ó   • g)z�validate 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)z‰process 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  € Ø‡M�M„OØ×ÑÔà×ÑÓ!€HØ×!Ñ!Ó#€IØ×!Ñ!Ó#€HØ×#Ñ#Ó%€IØÑ˜f×3Ñ3×5Ñ5Ø×ÑÓ  F×$6Ñ$6Ó$8¸8Ñ$CÈÑ#IÑIˆØ×ÑÓ  F×$7Ñ$7Ó$9¸IÑ$EÈ!Ñ#KÑKˆØ—‘Ó!ˆØ—‘Ó!ˆÜ�˜HÑ$ xÑ/Ó0ˆÜ�‹NˆÜ�˜IÑ%¨	Ñ1Ó2ˆÜ�‹NˆØ×Ñ Ó'ä�A�r“
ˆAøà× Ñ Ó" XÑ-°!Ñ3ˆØ×!Ñ!Ó# iÑ/°AÑ5ˆà‡L�L�Ô%Ø‡M�M�(˜a˜VÑ#Ô$Ø‡N�NÕ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Ó#Ø	�‰�	‰	Ð5°wØ�_ 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ˆØ	�‰�1˜1¤QˆÑ'ä˜6¨Ñ0ˆŒ
Ø�
‰
�‰˜A A¬a´©cˆÑ2à×ÑÑ(Ø�J‰J×Ñ˜a ×!2Ñ!2Ô3Ø�J‰J×#Ñ# A¤sÔ+à�z‰zÐ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ð �=‰=Ñ$¨·-±-Ó)?Ü×"Ò"Øð$Ø&*§m¡mñ4àò	ð à�=‰=Ñ$¨·-±-Ó)?Ü×"Ò"Øð$Ø&*§m¡mñ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                  $ )z¤get 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Ø�8‰8€Or   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   € Ø�~‰~˜dŸj™jŸn™nÓ.Ó/Ð/r   rZ   NrÕ   rZ   r   r   rÜ   rÜ   g  s   † Ø0€Lõ0r   rÜ   c                 ó2   • [        X40 UD6nUR                  $ )zžget 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Ø�8‰8€Or   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™*ˆDŒKØ�6‘
àˆDŒKÜ×Ò˜dÐ0 TÒ0¨RÓ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   € Ü×!Ñ! $Ó/ˆØ�;‰;Ñ"Ø�O‰O §¡ˆOÑ-Øˆr   c                 ó6   • U R                   R                  5       $ r   )r¹   rÓ   rH   s    r   rÊ   Ú_QueryString.getresultŒ  s   € Ø�z‰z�~‰~ÓÐ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                  $ )z get 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Ø�8‰8€Or   Ú__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 )Nz‘This 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Ø$'ñ)ô *ä”)˜F KÓ0Õ1r   ÚTestr   ÚQuit)ÚTkr5   r+   rS   rF   )r%   rú   ÚtÚqs       r   Útestr  ¡  sN   € Ü‹tˆØô 	2ô  �4˜f¨dÑ3ˆØ	�‰ŒÜ�4˜f¨a¯f©fÑ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 	…Fð5 r   