Ë
    #´˜jé-  ã                   óð   — d Z ddl­ ddlmZmZ ddlmZ  G d„ d«      Z G d„ de«      Zdd
„Zd„ Z	 G d„ de«      Z
 G d„ de
«      Zd„ Z G d„ de
«      Zd„ Z G d„ de
«      Zd„ Zedk(  rd„ Z e«        y	y	)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                   ó8   — e Zd Zdg ddddfd„Zd„ Zd„ Zd„ Zd„ Zy)ÚSimpleDialogÚ Nc                 óÔ  — |rt        ||¬«      | _        nt        |«      | _        |r6| j                  j                  |«       | j                  j                  |«       t	        | j                  «       t        | j                  |d¬«      | _        | j                  j                  dt        ¬«       t        | j                  «      | _
        | j                  j                  «        || _        || _        || _        | j                  j                  d| j                  «       t!        t#        |«      «      D ][  }||   }	t%        | j                  |	| |fd„¬«      }
||k(  r|
j'                  t(        d	¬
«       |
j                  t*        t        d¬«       Œ] | j                  j-                  d| j.                  «       | j                  j1                  |«       t3        | j                  |«       y )N)Úclass_i�  )ÚtextÚaspecté   )ÚexpandÚfillú<Return>c                 ó$   — | j                  |«      S ©N)Údone©ÚselfÚnums     ú&lib/python3.12/tkinter/simpledialog.pyÚ<lambda>z'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   Úbuttonsr.   r-   r$   r   r   ÚsÚbs              r   Ú__init__zSimpleDialog.__init__!   se  € ñ Ü  °Ô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°cÒ IôLˆAà�gŠ~Ø—‘¤°1�Ô5Ø�F‰Fœ¤4°ˆFÕ2ð 'ð 	�	‰	×ÑÐ-¨t×/DÑ/DÔEØ�	‰	×Ñ˜FÔ#Ü�d—i‘i Õ(r   c                 óê   — | j                   j                  «        | j                   j                  «        | j                   j                  «        | j                   j	                  «        | j
                  S r   )r#   Úwait_visibilityÚgrab_setÚmainloopÚdestroyr   ©r   s    r   ÚgozSimpleDialog.goA   sK   € Ø�	‰	×!Ñ!Ô#Ø�	‰	×ÑÔØ�	‰	×ÑÔØ�	‰	×ÑÔØ�x‰xˆr   c                 óˆ   — | j                   €| j                  j                  «        y | j                  | j                   «       y r   )r.   r#   Úbellr   ©r   Úevents     r   r0   zSimpleDialog.return_eventH   s*   € Ø�<‰<ÐØ�I‰I�N‰NÕà�I‰I�d—l‘lÕ#r   c                 óˆ   — | j                   €| j                  j                  «        y | j                  | j                   «       y r   )r-   r#   rH   r   rE   s    r   r8   zSimpleDialog.wm_delete_windowN   s*   € Ø�;‰;ÐØ�I‰I�N‰NÕà�I‰I�d—k‘kÕ"r   c                 óF   — || _         | j                  j                  «        y r   )r   r#   Úquitr   s     r   r   zSimpleDialog.doneT   s   € ØˆŒØ�	‰	�‰Õr   )Ú__name__Ú
__module__Ú__qualname__r?   rF   r0   r8   r   © r   r   r   r      s,   „ ð  "¨d¸4Ø Dó)ò@ò$ò#ór   r   c                   óF   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zdd„Zdd„Z	d	„ Z
d
„ Zy)ÚDialogzZClass to open dialogs.

    This class is intended as a base class for custom dialogs
    Nc                 óž  — |}|€
t        «       }t        j                  | |«       | j                  «        |�!|j	                  «       r| j                  |«       |r| j                  |«       t        | «       || _        d| _	        t        | «      }| j                  |«      | _        |j                  dd¬«       | j                  «        | j                  €| | _        | j                  d| j                   «       t#        | |«       | j                  j%                  «        | j'                  «        | j)                  «        | j+                  | «       y)z˜Initialize a dialog.

        Arguments:

            parent -- a parent window (the application window)

            title -- the dialog title
        Né   )ÚpadxÚpadyr!   )r   r"   r?   ÚwithdrawÚwinfo_viewabler9   r$   r&   ÚparentÚresultr+   ÚbodyÚinitial_focusr)   Ú	buttonboxr7   r-   r:   Ú	focus_setrA   rB   Úwait_window)r   rZ   r$   r;   r\   s        r   r?   zDialog.__init__`   s  € ð ˆØˆ>Ü#Ó%ˆFä×Ñ˜$ Ô'à�‰Œð Ð &×"7Ñ"7Ô"9Ø�N‰N˜6Ô"áØ�J‰J�uÔä�dÔàˆŒàˆŒä�T‹{ˆØ!ŸY™Y t›_ˆÔØ�	‰	�q˜qˆ	Ô!à�‰Ôà×ÑÐ%Ø!%ˆDÔà�‰Ð(¨$¯+©+Ô6ä�d˜FÔ#à×Ñ×$Ñ$Ô&ð 	×ÑÔØ�‰ŒØ×Ñ˜Õr   c                 óf   — d| _         t        j                  | «       t        | j                  «       y)zDestroy the windowN)r]   r"   rD   r   r;   rE   s    r   rD   zDialog.destroy“   s$   € à!ˆÔÜ×Ñ˜ÔÜ˜4Ÿ;™;Õ'r   c                  ó   — y)z«create dialog body.

        return widget that should have initial focus.
        This method should be overridden, and is called
        by the __init__ method.
        NrQ   )r   r;   s     r   r\   zDialog.bodyœ   ó   € ð 	r   c                 óx  — t        | «      }t        |dd| j                  t        ¬«      }|j	                  t
        dd¬«       t        |dd| j                  ¬«      }|j	                  t
        dd¬«       | j                  d| j                  «       | j                  d	| j                  «       |j	                  «        y
)z[add standard button box.

        override if you do not want the standard buttons
        ÚOKé
   )r   Úwidthr   r.   rU   )r    rV   rW   ÚCancel)r   rg   r   r   z<Escape>N)r+   r3   ÚokÚACTIVEr)   r6   r-   r/   )r   ÚboxÚws      r   r^   z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                 ó  — | j                  «       s| j                  j                  «        y | j                  «        | j	                  «        	 | j                  «        | j                  «        y # | j                  «        w xY wr   )Úvalidater]   r_   rX   Úupdate_idletasksÚapplyr-   rI   s     r   ri   z	Dialog.okº   sV   € à�}‰}ŒØ×Ñ×(Ñ(Ô*Øà�‰ŒØ×ÑÔð	Ø�J‰JŒLà�K‰K�MøˆD�K‰K�Mús   ÁA. Á.B c                 óp   — | j                   �| j                   j                  «        | j                  «        y r   )rZ   r_   rD   rI   s     r   r-   zDialog.cancelÈ   s'   € ð �;‰;Ð"Ø�K‰K×!Ñ!Ô#Ø�‰�r   c                  ó   — y)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   rQ   rE   s    r   rn   zDialog.validateÒ   s   € ð r   c                  ó   — y)z¡process the data

        This method is called automatically to process the data, *after*
        the dialog is destroyed. By default, it does nothing.
        NrQ   rE   s    r   rp   zDialog.applyÛ   rc   r   r   )rN   rO   rP   Ú__doc__r?   rD   r\   r^   ri   r-   rn   rp   rQ   r   r   rS   rS   Y   s0   „ ñó
1òf(òòó*óòór   rS   Nc                 ó<  — | j                  «        | j                  «        | j                  «       }| j                  «       }| j	                  «       }| j                  «       }|�Ö|j                  «       rÆ|j                  «       |j                  «       |z
  dz  z   }|j                  «       |j                  «       |z
  dz  z   }| j                  «       }| j                  «       }	t        |||z   |z
  «      }t        ||«      }t        ||	|z   |z
  «      }t        ||	«      }| j                  dk(  r9t        |d«      }n,| j!                  «       |z
  dz  }| j#                  «       |z
  dz  }| j%                  ||«       | j'                  d||fz  «       | j)                  «        y )Né   Úaquaé   z+%d+%d)Úwm_withdrawro   Ú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)
rl   rZ   ÚminwidthÚ	minheightÚmaxwidthÚ	maxheightÚxÚyÚvrootxÚvrootys
             r   r:   r:   ç   s|  € Ø‡M�M„OØ×ÑÔà×ÑÓ!€HØ×!Ñ!Ó#€IØ×!Ñ!Ó#€HØ×#Ñ#Ó%€IØÐ˜f×3Ñ3Ô5Ø×ÑÓ  F×$6Ñ$6Ó$8¸8Ñ$CÈÑ#IÑIˆØ×ÑÓ  F×$7Ñ$7Ó$9¸IÑ$EÈ!Ñ#KÑKˆØ—‘Ó!ˆØ—‘Ó!ˆÜ��6˜HÑ$ xÑ/Ó0ˆÜ��6‹NˆÜ��6˜IÑ%¨	Ñ1Ó2ˆÜ��6‹NˆØ×Ñ Ò'ä�A�r“
‰Aà× Ñ Ó" XÑ-°!Ñ3ˆØ×!Ñ!Ó# iÑ/°AÑ5ˆà‡L�L�˜9Ô%Ø‡M�M�(˜a ˜VÑ#Ô$Ø‡N�NÕr   c                 ó¦   — | j                   dk(  r | j                  j                  dd| dd«       y | j                   dk(  r| j                  dd«       y y )	Nrw   z!::tk::unsupported::MacWindowStyleÚstyleÚmoveableModalr	   Úx11z-typeÚdialog)r‡   ÚtkÚcallÚwm_attributes)rl   s    r   r&   r&     sM   € Ø×Ñ˜VÒ#Ø	�‰�	‰	Ð5°wØ�_ bõ	*à	
×	Ñ	˜uÒ	$Ø	�‰˜ Õ*ð 
%r   c                   ó,   — e Zd Z	 	 	 dd„Zd„ Zd„ Zd„ Zy)Ú_QueryDialogNc                 ój   — || _         || _        || _        || _        t        j                  | ||«       y r   )ÚpromptÚminvalueÚmaxvalueÚinitialvaluerS   r?   )r   r$   r    r£   r¡   r¢   rZ   s          r   r?   z_QueryDialog.__init__  s1   € ð
 ˆŒØ ˆŒØ ˆŒà(ˆÔä�‰˜˜f eÕ,r   c                 ó<   — d | _         t        j                  | «       y r   )ÚentryrS   rD   rE   s    r   rD   z_QueryDialog.destroy  s   € ØˆŒ
Ü�‰�tÕr   c                 óœ  — t        || j                  t        ¬«      }|j                  ddt        ¬«       t        |d¬«      | _        | j                  j                  ddt        t        z   ¬«       | j                  �F| j                  j                  d| j                  «       | j                  j                  dt        «       | j                  S )N)r   Újustifyr   rU   )ÚrowrV   Ústickyr¥   )Únamer   )ÚLabelr    r6   ÚgridÚWÚEntryr¥   ÚEr£   ÚinsertÚselect_rangeÚEND)r   r;   rl   s      r   r\   z_QueryDialog.body!  s’   € ä�&˜tŸ{™{´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                 ó   — 	 | j                  «       }| j
                  �5|| j
                  k  r&t        j                  dd| j
                  z  | ¬«       y| j                  �5|| j                  kD  r&t        j                  dd| j                  z  | ¬«       y|| _        y	# t        $ r( t        j                  d| j                  dz   | ¬«       Y yw xY w)
NzIllegal valuez
Please try again)rZ   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¢   r[   )r   r[   s     r   rn   z_QueryDialog.validate/  sÖ   € ð	Ø—^‘^Ó%ˆFð �=‰=Ð$¨°$·-±-Ò)?Ü×"Ñ"Øð$Ø&*§m¡mñ4àõ	ð à�=‰=Ð$¨°$·-±-Ò)?Ü×"Ñ"Øð$Ø&*§m¡mñ4àõ	ð àˆŒàøô9 ò 	Ü×"Ñ"ØØ×!Ñ!Ð$8Ñ8Øõñ
 ð	ús   ‚B Â.CÃC)NNNN)rN   rO   rP   r?   rD   r\   rn   rQ   r   r   rž   rž     s!   „ ð #Ø-1Øó-òòór   rž   c                   ó   — e Zd ZdZd„ Zy)Ú_QueryIntegerzNot an integer.c                 óT   — | j                  | j                  j                  «       «      S r   )Úgetintr¥   ÚgetrE   s    r   r´   z_QueryInteger.getresultT  s   € Ø�{‰{˜4Ÿ:™:Ÿ>™>Ó+Ó,Ð,r   N©rN   rO   rP   r·   r´   rQ   r   r   r¹   r¹   Q  s   „ Ø$€Ló-r   r¹   c                 ó4   — t        | |fi |¤Ž}|j                  S )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¹   r[   ©r$   r    ÚkwÚds       r   Ú
askintegerrÂ   X  s   € ô 	�e˜VÑ* rÑ*€AØ�8‰8€Or   c                   ó   — e Zd ZdZd„ Zy)Ú_QueryFloatzNot a floating-point value.c                 óT   — | j                  | j                  j                  «       «      S r   )Ú	getdoubler¥   r¼   rE   s    r   r´   z_QueryFloat.getresultj  s   € Ø�~‰~˜dŸj™jŸn™nÓ.Ó/Ð/r   Nr½   rQ   r   r   rÄ   rÄ   g  s   „ Ø0€Ló0r   rÄ   c                 ó4   — t        | |fi |¤Ž}|j                  S )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Ä   r[   r¿   s       r   ÚaskfloatrÈ   n  s   € ô 	�E˜6Ñ( RÑ(€AØ�8‰8€Or   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú_QueryStringc                 óh   — d|v r|d   | _         |d= nd | _         t        j                  | g|¢­i |¤Ž y )NÚshow)Ú_QueryString__showrž   r?   )r   ÚargsrÀ   s      r   r?   z_QueryString.__init__~  s:   € Ø�R‰<Ø˜V™*ˆDŒKØ�6‘
àˆDŒKÜ×Ñ˜dÐ0 TÒ0¨RÓ0r   c                 ó‚   — t         j                  | |«      }| j                  �|j                  | j                  ¬«       |S )N)rÌ   )rž   r\   rÍ   Ú	configure)r   r;   r¥   s      r   r\   z_QueryString.body†  s5   € Ü×!Ñ! $¨Ó/ˆØ�;‰;Ð"Ø�O‰O §¡ˆOÔ-Øˆr   c                 ó6   — | j                   j                  «       S r   )r¥   r¼   rE   s    r   r´   z_QueryString.getresultŒ  s   € Ø�z‰z�~‰~ÓÐr   N)rN   rO   rP   r?   r\   r´   rQ   r   r   rÊ   rÊ   }  s   „ ò1òó r   rÊ   c                 ó4   — t        | |fi |¤Ž}|j                  S )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Ê   r[   r¿   s       r   Ú	askstringrÓ   �  s   € ô 	�U˜FÑ) bÑ)€AØ�8‰8€Or   Ú__main__c                  óÎ   — t        «       } | fd„}t        | d|¬«      }|j                  «        t        | d|j                  ¬«      }|j                  «        |j	                  «        y )Nc                 óä   — t        | dg d¢ddd¬«      }t        |j                  «       «       t        t        ddd	¬
«      «       t        t	        dddd¬«      «       t        t        dd«      «       y )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ÚNorh   r   rv   zTest Dialog)r   r<   r.   r-   r$   ÚSpamz	Egg counté�   )r£   zEgg weight
(in tons)r   éd   )r¡   r¢   z	Egg label)r   ÚprintrF   rÂ   rÈ   rÓ   )r#   rÁ   s     r   Údoitztest.<locals>.doit£  si   € Ü˜Tð5ò
 "9Ø!"Ø !Ø,ô	.ˆAô �!—$‘$“&ŒMÜ”*˜V [¸uÔEÔFÜ”(˜6Ð#:ÀQØ$'ô)ô *ä”)˜F KÓ0Õ1r   ÚTestr   ÚQuit)ÚTkr3   r)   rM   rC   )r#   rÝ   ÚtÚqs       r   Útestrã   ¡  sN   € Ü‹tˆØó 	2ô  �4˜f¨dÔ3ˆØ	�‰ŒÜ�4˜f¨a¯f©fÔ5ˆØ	�‰ŒØ	�
‰
�r   r   )rt   Útkinterr   r   r   r   r"   rS   r:   r&   rž   r¹   rÂ   rÄ   rÈ   rÊ   rÓ   rN   rã   rQ   r   r   Ú<module>rå      s–   ðñô ß 6Ý ÷7ñ 7ôtIˆXô Ió\ò:+ô@�6ô @ôF-�Lô -òô0�,ô 0òô �<ô  ò&ð ˆzÒòñ0 	…Fð5 r   