<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
 f0                 @   s   d 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 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rddlmZ edddd ddlmZ eee dS )a  
Dialogs that query users and verify the answer before accepting.
Use ttk widgets, limiting use to tcl/tk 8.5+, as in IDLE 3.6+.

Query is the generic base class for a popup dialog.
The user must either enter a valid answer or close the dialog.
Entries are validated when <Return> is entered or [Ok] is clicked.
Entries are ignored when [Cancel] or [X] are clicked.
The 'return value' is .result set to either a valid answer or None.

Subclass SectionName gets a name for a new config file section.
Configdialog uses it for new highlight theme and keybinding set names.
Subclass ModuleName gets a name for File => Open Module.
Subclass HelpSource gets menu item and path for additions to Help menu.
    N)
executableplatform)Toplevel	StringVarWES)FrameButtonEntryLabel)
filedialog)Fontc                   sb   e Zd 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 )QueryzoBase class for getting verified answer from a user.

    For this base class, accept any non-blank string.
     F)text0
used_names_htest_utestc      	      C   sX  t j| | | j  || _| j| || _|| _|| _| j| | j	  | j
jdd}|dkry| j
jdd| jdd W n   Y nX | jd| j | jd	| j | jd
| j | jd| j | jd| j | jddd | j  | j  | jd|j |j d | j d   |j |s2|j d | j d  nd f  |sT| j  | j  dS )a  Create popup, do not return until tk widget destroyed.

        Additional subclass init must be done before calling this
        unless  _utest=True is passed to suppress wait_window().

        title - string, title of popup dialog
        message - string, informational message to display
        text0 - initial value for entry
        used_names - names already in use
        _htest - bool, change box location when running htest
        _utest - bool, leave window hidden and not modal
        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      N)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"   2/opt/alt/python36/lib64/python3.6/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
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    W   s.    

zQuery.create_widgetsNc             C   s   d| |p| j d< d S )NzERROR: r-   )rD   )r!   r   Zwidgetr"   r"   r#   	showerrors   s    zQuery.showerrorc             C   s.   d| j d< | jj j }|s*| jd dS |S )zReturn non-blank entry or None.r   r-   zblank line.N)rD   rA   getstriprE   )r!   rA   r"   r"   r#   entry_okw   s    

zQuery.entry_okc             C   s.   | j  }|dk	r || _| j  n
| jj  dS )zIf entry is valid, bind it to 'result' and destroy tk widget.

        Otherwise leave dialog open for user to correct entry or cancel.
        N)rH   resultdestroyrA   rB   )r!   eventrA   r"   r"   r#   r      s
    
zQuery.okc             C   s   d| _ | j  dS )z0Set dialog result to None and destroy tk widget.N)rI   rJ   )r!   rK   r"   r"   r#   r      s    zQuery.cancelc                s   | j   t j  d S )N)Zgrab_releasesuperrJ   )r!   )	__class__r"   r#   rJ      s    zQuery.destroy)N)N)N)__name__
__module____qualname____doc__r   r    rE   rH   r   r   rJ   __classcell__r"   r"   )rM   r#   r       s   1
	

r   c                   s0   e Zd ZdZddd fdd
Zdd Z  ZS )SectionNamez*Get a name for a config file section name.F)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j j }|s*| jd dS t|dkrD| jd dS || jkr\| jd dS |S )z2Return sensible ConfigParser section name or None.r   r-   zno name specified.Nr.   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   rQ   r   rH   rR   r"   r"   )rM   r#   rS      s   rS   c                   s0   e Zd ZdZddd fdd
Zdd Z  ZS )
ModuleNamez-Get a module name for Open Module menu entry.F)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j j }|s*| jd dS ytjj|}W n2 tt	fk
rl } z| jt
| dS d}~X nX |dkr| jd dS t|jtjjs| jd dS y|jj|}W n" tk
r   | jd| d dS X |S )	z0Return entered module name as file path or None.r   r-   zno name specified.Nz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   rQ   r   rH   rR   r"   r"   )rM   r#   rU      s   rU   c                   s`   e Zd 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 )
HelpSourcez,Get menu name and help source for Help menu.r   F)menuitemfilepathr   r   r   c      	   	      s(   || _ d}t j|||||||d dS )zGet menu entry and url/local file for Additional Help.

        User enters a name for the Help resource and a web url or file
        name. The user can browse for the file.
        zName for item on Help menu:)r   r   r   r   N)rf   rL   r   )	r!   r   r   re   rf   r   r   r   r   )rM   r"   r#   r      s
    zHelpSource.__init__c                s   t  j  | 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   rf   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!   ro   ZinitdirZinitfiler"   r"   r#   askfilename   s    zHelpSource.askfilenamec             C   s   dddddg}| j j }|r.tjj|\}}nHd }td d dkrntjjtjjtd}tjj	|svtj
 }ntj
 }| j|||}|r| j j| d S )N
HTML Files*.htm *.htmlTEXT	PDF Files*.pdfWindows Help Files*.chm
Text Files*.txt	All Files*r9   winZDoc)rq   rr   rs   )rt   ru   rs   )rv   rw   )rx   ry   rs   )rz   r{   )rk   rF   osrl   splitr   joindirnamer   isdirgetcwdrp   set)r!   ro   rl   dirbasefiler"   r"   r#   rm     s"    

zHelpSource.browse_filec             C   s|   | j j j }|s$| jd| j dS |jd
sx|dd dkrJ|dd }tj j|sh| jd| j dS tdkrxd	| }|S )z(Simple validity check for menu file pathzno help file path specified.Nwww.httpr:   zfile:zhelp file path does not exist.darwinzfile://)r   r   )	rl   rF   rG   rE   rn   
startswithr}   r1   r   )r!   rl   r"   r"   r#   path_ok  s    
zHelpSource.path_okc             C   s@   d| j d< d| jd< | j }| j }|dks4|dkr8dS ||fS )z,Return apparently valid (name, path) or Noner   r-   N)rD   rn   item_okr   )r!   r0   rl   r"   r"   r#   rH   *  s
    

zHelpSource.entry_ok)rN   rO   rP   rQ   r   r    rp   rm   rS   rH   r   r   rR   r"   r"   )rM   r#   rd      s   rd   __main__)mainzidlelib.idle_test.test_queryr   F)	verbosityexit)run)rQ   rV   r}   sysr   r   Ztkinterr   r   r   r   r   Ztkinter.ttkr	   r
   r   r   r   Ztkinter.fontr   r   rS   rU   rd   rN   Zunittestr   Zidlelib.idle_test.htestr   r"   r"   r"   r#   <module>   s    w%^