B
    2*™\Š1  ã               @   sè   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
 d dlmZmZmZmZ d dlmZ d dlmZ G dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZedkräd dlmZ edddd d dlmZ eeeƒ dS )é    N)Ú
executableÚplatform)ÚToplevelÚ	StringVarÚWÚEÚS)ÚFrameÚButtonÚEntryÚLabel)Ú
filedialog)ÚFontc                   s^   e Zd Zdi dddœdd„Zdd„ Zdd	d
„Zdd„ Zddd„Zddd„Z‡ fdd„Z	‡  Z
S )ÚQueryÚ F)Útext0Ú
used_namesÚ_htestÚ_utestc      	      C   sX  t  | |¡ |  ¡  || _|  |¡ || _|| _|| _|  |¡ |  	¡  | j
 dd¡}|dkr”y| j
 dd| jdd¡ W n   Y nX |  d| j¡ |  d	| j¡ |  d
| j¡ |  d| j¡ |  d| j¡ | jddd |  ¡  |  ¡  |  d| ¡ | ¡ d |  ¡ d   | ¡ |s2| ¡ d |  ¡ d  nd f ¡ |sT|  ¡  |  ¡  d S )NÚtkÚwindowingsystemZaquaz!::tk::unsupported::MacWindowStyleZstyleZmoveableModalr   z<Command-.>z<Key-Escape>ZWM_DELETE_WINDOWz<Key-Return>z
<KP_Enter>F)ZheightÚwidthz+%d+%dé   é–   )r   Ú__init__ZwithdrawÚparentÚtitleÚmessager   r   Z	transientZgrab_setr   ZcallZ_wZbindÚcancelZprotocolÚokZ	resizableÚcreate_widgetsZupdate_idletasksZgeometryZwinfo_rootxZwinfo_widthZwinfo_reqwidthZwinfo_rootyZwinfo_heightZwinfo_reqheightZ	deiconifyZwait_window)	Úselfr   r   r   r   r   r   r   r   © r"   ú8C:\ALexclude\prg\programme\Python37\Lib\idlelib\query.pyr   $   sB    


*zQuery.__init__c             C   s.  t | dd | _}|jdddd |jddd t|dd	| jd
}t| | jƒ| _t	|d| jd| _
| j
 ¡  tdd| jd| _t|dd| jd| _t|dd| jd| _t|d| jd| _|jddddtd | j
jddddtt ddgd | jjddddtt d | jjdddd | jjdddd d S )Né
   )Zpaddingr   Znews)ÚcolumnÚrowÚstickyé   )ZweightÚwÚleft)ÚanchorÚjustifyÚtexté   )r   ÚtextvariableZTkCaptionFontT)ÚnameÚexistsÚrootú Úred)r-   Ú
foregroundÚfontZOKZactive)r-   ÚdefaultÚcommandZCancel)r-   r8   é   é   )r%   r&   Ú
columnspanÚpadxr'   )r%   r&   r;   r<   r'   Úpadyr   éc   )r%   r&   r<   )r	   ÚframeÚgridZgrid_columnconfigurer   r   r   r   Zentryvarr   ÚentryÚ	focus_setr   r   Ú
error_fontÚentry_errorr
   r   Z	button_okr   Zbutton_cancelr   r   )r!   r?   Z
entrylabelr"   r"   r#   r    V   s.    

zQuery.create_widgetsNc             C   s   d| |p| j d< d S )NzERROR: r-   )rD   )r!   r   Zwidgetr"   r"   r#   Ú	showerrorr   s    zQuery.showerrorc             C   s.   d| j d< | j ¡  ¡ }|s*|  d¡ d S |S )Nr   r-   zblank line.)rD   rA   ÚgetÚstriprE   )r!   rA   r"   r"   r#   Úentry_okv   s    

zQuery.entry_okc             C   s.   |   ¡ }|d k	r || _|  ¡  n
| j ¡  d S )N)rH   ÚresultÚdestroyrA   rB   )r!   ÚeventrA   r"   r"   r#   r      s
    
zQuery.okc             C   s   d | _ |  ¡  d S )N)rI   rJ   )r!   rK   r"   r"   r#   r   Œ   s    zQuery.cancelc                s   |   ¡  tƒ  ¡  d S )N)Zgrab_releaseÚsuperrJ   )r!   )Ú	__class__r"   r#   rJ   ‘   s    zQuery.destroy)N)N)N)Ú__name__Ú
__module__Ú__qualname__r   r    rE   rH   r   r   rJ   Ú__classcell__r"   r"   )rM   r#   r      s   1
	

r   c                   s,   e Zd Zdddœ‡ fdd„
Zdd„ Z‡  ZS )ÚSectionNameF)r   r   c               s   t ƒ j||||||d d S )N)r   r   r   )rL   r   )r!   r   r   r   r   r   r   )rM   r"   r#   r   š   s    zSectionName.__init__c             C   s`   d| j d< | j ¡  ¡ }|s*|  d¡ d S t|ƒdkrD|  d¡ d S || jkr\|  d¡ d S |S )Nr   r-   zno name specified.r.   z"name is longer than 30 characters.zname is already in use.)rD   rA   rF   rG   rE   Úlenr   )r!   r0   r"   r"   r#   rH   Ÿ   s    




zSectionName.entry_ok)rN   rO   rP   r   rH   rQ   r"   r"   )rM   r#   rR   –   s   rR   c                   s,   e Zd Zdddœ‡ fdd„
Zdd„ Z‡  ZS )Ú
ModuleNameF)r   r   c               s   t ƒ j||||||d d S )N)r   r   r   )rL   r   )r!   r   r   r   r   r   r   )rM   r"   r#   r   ³   s    zModuleName.__init__c          
   C   sÜ   d| j d< | j ¡  ¡ }|s*|  d¡ d S ytj |¡}W n4 tt	fk
rn } z|  t
|ƒ¡ d S d }~X Y nX |d kr†|  d¡ d S t|jtjjƒs¤|  d¡ d S y|j |¡}W n" tk
rÖ   | jd| d d S X |S )Nr   r-   zno name specified.zmodule not foundznot a source-based modulez$loader does not support get_filename)r   )rD   rA   rF   rG   rE   Ú	importlibÚutilÚ	find_specÚ
ValueErrorÚImportErrorÚstrÚ
isinstanceÚloaderÚabcÚSourceLoaderÚget_filenameÚAttributeError)r!   r0   ÚspecÚmsgZ	file_pathr"   r"   r#   rH   ¸   s.    



zModuleName.entry_ok)rN   rO   rP   r   rH   rQ   r"   r"   )rM   r#   rT   ¯   s   rT   c                   s\   e Zd Zddi dddœ‡ fdd„
Z‡ fdd„Zdd	„ Zd
d„ ZejZ	dd„ Z
dd„ Z‡  ZS )Ú
HelpSourcer   F)ÚmenuitemÚfilepathr   r   r   c      	   	      s(   || _ d}tƒ j|||||||d d S )NzName for item on Help menu:)r   r   r   r   )re   rL   r   )	r!   r   r   rd   re   r   r   r   r   )rM   r"   r#   r   Ø   s
    zHelpSource.__init__c                sÔ   t ƒ  ¡  | j}t|dddd}t| | jƒ| _t|| jdd| _t	|dd| j
d	}t|d
d| jd| _|jddddddgtd | jjddddtt ddgd |jdddtt d | jjddddtt d d S )Nr)   r*   z,Help File Path: Enter URL or browse for file)r+   r,   r-   é(   )r/   r   ZBrowseé   )r-   r   r8   r3   r4   )r-   r5   r6   r   r$   r9   r:   )r%   r&   r;   r<   r=   r'   é   r   )r%   r&   r;   r<   r'   r=   )r%   r&   r<   r'   é   )r%   r&   r;   r<   r'   )rL   r    r?   r   r   re   Úpathvarr   Úpathr
   Úbrowse_filerC   Ú
path_errorr@   r   r   r   )r!   r?   Z	pathlabelZbrowse)rM   r"   r#   r    å   s"    

zHelpSource.create_widgetsc             C   s   t j| |dj||dS )N)r   Ú	filetypes)Z
initialdirZinitialfile)r   ZOpenZshow)r!   rn   ZinitdirZinitfiler"   r"   r#   Úaskfilenameù   s    zHelpSource.askfilenamec             C   s˜   dddddg}| j  ¡ }|r.tj |¡\}}nHd }td d… dkrntj tj t¡d¡}tj 	|¡svt 
¡ }nt 
¡ }|  |||¡}|r”| j  |¡ d S )	N)z
HTML Filesz*.htm *.htmlÚTEXT)z	PDF Filesz*.pdfrp   )zWindows Help Filesz*.chm)z
Text Filesz*.txtrp   )z	All FilesÚ*r9   ÚwinZDoc)rj   rF   Úosrk   Úsplitr   ÚjoinÚdirnamer   ÚisdirÚgetcwdro   Úset)r!   rn   rk   ÚdirÚbaseÚfiler"   r"   r#   rl      s"    

zHelpSource.browse_filec             C   s|   | j  ¡  ¡ }|s$|  d| j¡ d S | d¡sx|d d… dkrJ|dd … }tj  |¡sh|  d| j¡ d S tdkrxd| }|S )Nzno help file path specified.)zwww.Zhttpr:   zfile:zhelp file path does not exist.Údarwinzfile://)	rk   rF   rG   rE   rm   Ú
startswithrs   r1   r   )r!   rk   r"   r"   r#   Úpath_ok  s    
zHelpSource.path_okc             C   s@   d| j d< d| jd< |  ¡ }|  ¡ }|d ks4|d kr8d S ||fS )Nr   r-   )rD   rm   Úitem_okr   )r!   r0   rk   r"   r"   r#   rH   )  s
    

zHelpSource.entry_ok)rN   rO   rP   r   r    ro   rl   rR   rH   r€   r   rQ   r"   r"   )rM   r#   rc   Ô   s   rc   Ú__main__)Úmainzidlelib.idle_test.test_queryr   F)Ú	verbosityÚexit)Úrun)rU   rs   Úsysr   r   Ztkinterr   r   r   r   r   Ztkinter.ttkr	   r
   r   r   r   Ztkinter.fontr   r   rR   rT   rc   rN   Zunittestr‚   Zidlelib.idle_test.htestr…   r"   r"   r"   r#   Ú<module>   s   w%^