
    z%i:                     h   	 d dl Zd dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZmZmZmZ d dlmZmZmZmZmZ d dl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 G d de      Z G d de      Ze dk(  r"d dl!m"Z"  e"ddd       d dl#m$Z$  e$eee       yy)    N)
executableplatform)Toplevel	StringVar
BooleanVarWES)FrameButtonEntryLabelCheckbutton)
filedialog)Font)_setup_dialogc                   ^     e Zd Z	 di ddddZddZd ZddZd Zdd	Zdd
Z	 fdZ
 xZS )Query Ftext0
used_names_htest_utestc                *   	 || _         || _        || _        || _        t	        j
                  | |       | j                          | j                  |       | j                  |       |s| j                          t        |        | j                  dk(  r| j                  d| j                         | j                  d| j                         | j                  d| j                         | j                  d| j                         | j                  d| j                         | j!                          | j#                          | j%                  d|j'                         |j)                         dz  | j+                         dz  z
  z   |j-                         |s'|j/                         dz  | j1                         dz  z
  nd	z   fz         | j3                  d
d
       |s;| j5                          | j6                  j9                          | j;                          y y )Naquaz<Command-.>z<Key-Escape>WM_DELETE_WINDOWz<Key-Return>z
<KP_Enter>z+%d+%d      F)heightwidth)parentmessager   r   r   __init__withdrawtitle	transientgrab_setr   _windowingsystembindcancelprotocolokcreate_widgetsupdate_idletasksgeometrywinfo_rootxwinfo_widthwinfo_reqwidthwinfo_rootywinfo_heightwinfo_reqheight	resizable	deiconifyentry	focus_setwait_window)selfr"   r&   r#   r   r   r   r   s           A/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/query.pyr$   zQuery.__init__&   s   	 
$$'

5vMMOd  F*IImT[[1		.$++.($++6		.$''*		,(&&('')!+d.A.A.CA.EEG&&(! ))+A-0D0D0Fq0HH'*, 	 	e51NNJJ  "     c           	         	 t        | d      x| _        }|j                  ddd       |j                  dd       t	        |dd	| j
                  
      }t        | | j                        | _        t        |d| j                        | _
        t        dd| j                        | _        t	        |dd| j                        | _        |j                  ddddt               | j                  j                  ddddt        t         z   ddg       | j                  j                  ddddt        t         z          | j#                          t%        ||d| j&                        | _        t%        |d| j*                        | _        | j(                  j                  ddd       | j,                  j                  ddd       y )N
   )paddingr   news)columnrowsticky   )weightwleftanchorjustifytext   )r!   textvariableTkCaptionFontT)nameexistsroot redrM   
foregroundfont      rC   rD   
columnspanpadxrE   rC   rD   r\   r]   rE   padyr   active)rM   defaultcommandCancel)rM   rb   c   )rC   rD   r]   )r   framegridgrid_columnconfigurer   r#   r   r   entryvarr   r9   r   r"   
error_fontentry_errorr   r	   create_extrar   r-   	button_okr+   button_cancel)r<   ok_textre   
entrylabels       r=   r.   zQuery.create_widgetsY   s   	 #444
U

!6
2""1Q"/5f $.
!$

35G
O&*> SU&*oo7 	qaAAaH

qaAAac V 	 	%QA!!%&qS 	 	* 	GXtwwH#Hdkk; 	1"15qbq9r>   c                      y N )r<   s    r=   rk   zQuery.create_extra}   s    r>   c                 0    d|z   |xs | j                   d<   y )NzERROR: rM   )rj   )r<   r#   widgets      r=   	showerrorzQuery.showerror   s    /87/B	#4##V,r>   c                     	 | j                   j                         j                         }|s| j                  d       y |S )Nzblank line.)r9   getstripru   )r<   r9   s     r=   entry_okzQuery.entry_ok   s5    )

 &&(NN=)r>   c                     	 d| j                   d<   | j                         }||| _        | j                          y | j                  j                          y Nr   rM   )rj   ry   resultdestroyr9   r:   )r<   eventr9   s      r=   r-   zQuery.ok   sL    	 $& DKLLN JJ  "r>   c                 4    	 d | _         | j                          y rq   )r|   r}   )r<   r~   s     r=   r+   zQuery.cancel   s    :r>   c                 B    | j                          t        | 	          y rq   )grab_releasesuperr}   )r<   	__class__s    r=   r}   zQuery.destroy   s    r>   )OKrq   )__name__
__module____qualname__r$   r.   rk   ru   ry   r-   r+   r}   __classcell__r   s   @r=   r   r   !   sD     9;re1f":H !C#
 r>   r   c                   .     e Zd Z	 ddd fd
Zd Z xZS )SectionNameFr   r   c                0    t         |   ||||||       y )N)r   r   r   r   r$   )r<   r"   r&   r#   r   r   r   r   s          r=   r$   zSectionName.__init__   s"    J &v 	 	7r>   c                     	 | j                   j                         j                         }|s| j                  d       y t	        |      dkD  r| j                  d       y || j
                  v r| j                  d       y |S )Nno name specified.rN   z"name is longer than 30 characters.zname is already in use.)r9   rw   rx   ru   lenr   )r<   rQ   s     r=   ry   zSectionName.entry_ok   sm    <zz~~%%'NN/0Yr\NN?@T__$NN45r>   r   r   r   r$   ry   r   r   s   @r=   r   r      s    0 !7
r>   r   c                   .     e Zd Z	 ddd fd
Zd Z xZS )
ModuleNameFr   c                0    t         |   ||||||       y )Nr   r   r   r   )r<   r"   r&   r#   r   r   r   r   s          r=   r$   zModuleName.__init__   s"    u$V 	 	5r>   c                    	 | j                   j                         j                         }|s| j                  d       y 	 t        j
                  j                  |      }|| j                  d       y t        |j                  t        j                  j                        s| j                  d       y 	 |j                  j                  |      }|S # t        t        f$ r$}| j                  t        |             Y d }~y d }~ww xY w# t        $ r | j                  d       Y y t        $ r@ 	 |j                  j                         }Y |S # t         $ r | j                  d       Y Y y w xY ww xY w)Nr   zmodule not found.znot a source-based module.z%loader does not support get_filename.zloader failed to get filename.)r9   rw   rx   ru   	importlibutil	find_spec
ValueErrorImportErrorstr
isinstanceloaderabcSourceLoaderget_filenameAttributeError	TypeError)r<   rQ   specmsg	file_paths        r=   ry   zModuleName.entry_ok   s<   :zz~~%%'NN/0	>>++D1D <NN./$++y}}'A'ABNN78	006I + K( 	NN3s8$	  	NNBC 	 KK446	   ?@		sG   C 3D DC>>DE*"E*+EE&"E*%E&&E*r   r   s   @r=   r   r      s    3 !5
r>   r   c                       e Zd Z	 d Zy)Gotoc                     	 t        | j                  j                               }|dk  r| j	                  d       y |S # t        $ r | j	                  d       Y y w xY w)Nznot a base 10 integer.r   znot a positive integer.)intr9   rw   r   ru   )r<   linenos     r=   ry   zGoto.entry_ok   s[    	)*F Q;NN45  	NN34	s   #> AAN)r   r   r   ry   rr   r>   r=   r   r      s
    7	r>   r   c                   d     e Zd Z	 ddi ddd fd
Zd Zd Zd Zej                  Z	d Z
d	 Z xZS )

HelpSourcer   F)menuitemfilepathr   r   r   c          	      F    	 || _         d}t        	| 	  |||||||       y )NzName for item on Help menu:r   )r   r   r$   )
r<   r"   r&   r   r   r   r   r   r#   r   s
            r=   r$   zHelpSource.__init__   s9    	
 !/wh%fV 	 	Er>   c           	      F   	 | j                   }t        |ddd      }t        | | j                        | _        t        || j                  d      | _        t        |dd| j                  	      }t        |d
d| j                        | _
        |j                  ddddddgt               | j                  j                  ddddt        t        z   ddg       |j                  dddt        t        z          | j                  j                  ddddt        t        z          y )NrH   rI   z,Help File Path: Enter URL or browse for filerJ   (   )rO   r!   Browse   )rM   r!   rb   rT   rU   rV   r   r@   rY   rZ   )rC   rD   r\   r]   r_   rE      r   r^   )rC   rD   r]   rE      r[   )re   r   r   r   pathvarr   pathr   browse_fileri   
path_errorrf   r   r	   r
   )r<   re   	pathlabelbrowses       r=   rk   zHelpSource.create_extra  s   )

%VMO	 t}}5%dll"E	HA $ 0 02CE%)__6 	aRAARF 	 	!		aRAAacF 	 	$1"1QqS9A2!!$%aC 	 	)r>   c                 R    t        j                  | |      j                  ||      S )N)r"   	filetypes)
initialdirinitialfile)r   Openshow)r<   r   initdirinitfiles       r=   askfilenamezHelpSource.askfilename  s%     di@X>	?r>   c                    g d}| j                   j                         }|r#t        j                  j	                  |      \  }}nd }t
        d d dk(  rut        j                  j                  t        j                  j                  t              d      }t        j                  j                  |      s)t        j                         }nt        j                         }| j                  |||      }|r| j                   j                  |       y y )N))z
HTML Filesz*.htm *.htmlTEXT)z	PDF Filesz*.pdfr   )zWindows Help Filesz*.chm)z
Text Filesz*.txtr   )z	All Files*rY   winDoc)r   rw   osr   splitr   joindirnamer   isdirgetcwdr   set)r<   r   r   dirbasefiles         r=   r   zHelpSource.browse_file!  s     	 ||!d+ICD|u$ggll277??:#>Fww}}S)))+Ciik	35LLT" r>   c                 f   	 | j                   j                         j                         }|s| j                  d| j                         y |j                  d      sW|d d dk(  r|dd  }t        j                   j                  |      s| j                  d| j                         y t        dk(  rd|z   }|S )Nzno help file path specified.)zwww.httprZ   zfile:zhelp file path does not exist.darwinzfile://)	r   rw   rx   ru   r   
startswithr   rR   r   )r<   r   s     r=   path_okzHelpSource.path_ok9  s    2yy}}$$&NN94??K!12BQx7"ABx77>>$'?#08#!D(r>   c                 v    	 d| j                   d<   | j                         }| j                         }||d S ||fS r{   )r   item_okr   )r<   rQ   r   s      r=   ry   zHelpSource.entry_okJ  s@    6"$||~||~|t|tE$Er>   )r   r   r   r$   rk   r   r   r   ry   r   r   r   r   s   @r=   r   r      sA    2 35ruUE)(?#, ""G"Fr>   r   c                   <     e Zd Z	 g ddd fd
Zd Zd Zd Z xZS )	CustomRunF)cli_argsr   r   c                6    	 d}t         |   ||||||       y )Nz$Command Line Arguments for sys.argv:r   r   )r<   r"   r&   r   r   r   r#   r   s          r=   r$   zCustomRun.__init__Y  s/    	
 9whf 	 	.r>   c                    	 | j                   }t        | d      | _        t        || j                  ddd      }t	        |dd| j
                        | _        |j                  d	d
ddd       | j                  j                  d	dddd       y )NT)valueFzRestart shell)variableonvalueoffvaluerM   rT   rU   rV   r   r@   rY   rZ   rH   r[   r   we)re   r   
restartvarr   r   ri   
args_errorrf   )r<   re   restarts      r=   rk   zCustomRun.create_extrae  s    %

$T6edoot',?DCE%)__6 	A2!!CHA2!!$( 	 	*r>   c                     	 | j                   j                         j                         }	 t        j                  |d      }|S # t
        $ r$}| j                  t        |             Y d }~y d }~ww xY w)NT)posix)r9   rw   rx   shlexr   r   ru   r   )r<   
cli_stringr   errs       r=   cli_args_okzCustomRun.cli_args_okr  s_    @ZZ^^%++-
	{{:T:H   	NN3s8$	s   A 	A1A,,A1c                 h    	 | j                         }| j                  j                         }|d S ||fS rq   )r   r   rw   )r<   r   r   s      r=   ry   zCustomRun.entry_ok|  s:    >##%//%%''t@h-@@r>   )r   r   r   r$   rk   r   ry   r   r   s   @r=   r   r   Q  s'     35e
.*Ar>   r   __main__)mainzidlelib.idle_test.test_queryr   F)	verbosityexit)run)%importlib.utilr   importlib.abcr   r   sysr   r   tkinterr   r   r   r   r	   r
   tkinter.ttkr   r   r   r   r   r   tkinter.fontr   tkinter.simpledialogr   r   r   r   r   r   r   r   unittestr   idlelib.idle_test.htestr   rr   r>   r=   <module>r      s   * % 	  $ < < @ @   .H D% 0' 'T5  ZF ZFx/A /Ad z	'15A+z9% r>   