3
tY]\                 @   s   d dl mZ d dlmZ d dlmZ dd Zdd Zdd	 Zd
d Z	G dd deZ
dd Zedkrd dlmZ edddd d dlmZ ee dS )    )TclError)searchengine)SearchDialogBasec             C   s.   | j  }tj|}t|ds(t|||_|jS )z3Create or find the singleton SearchDialog instance._searchdialog)Z_rootr   gethasattrSearchDialogr   )textrootengine r   lib/python3.6/idlelib/search.py_setup   s
    

r   c             C   s   | j dd}t| j| |S )z9Handle the editor edit menu item and corresponding event.z	sel.firstzsel.last)r   r   open)r	   patr   r   r   find   s    r   c             C   s   t | j| S )z9Handle the editor edit menu item and corresponding event.)r   
find_again)r	   r   r   r   r      s    r   c             C   s   t | j| S )z9Handle the editor edit menu item and corresponding event.)r   find_selection)r	   r   r   r   r      s    r   c               @   s.   e Zd Zdd Zd
ddZdd Zdd	 ZdS )r   c             C   s   t j|  | jd| jd d S )Nz	Find Next   )r   create_widgetsZmake_buttondefault_command)selfr   r   r   r      s    
zSearchDialog.create_widgetsNc             C   s   | j j sd S | j| j d S )N)r   getprogr   r	   )r   Zeventr   r   r   r   "   s    
zSearchDialog.default_commandc             C   s   | j j s| j| dS | j j s&dS | j j|}|r|\}}|j \}}d||f }d||f }y4|jd}	|jd}
|	|kr|
|kr| j  dS W n tk
r   Y nX |j	ddd |j
d|| |jd| j j r|p| |jd d	S | j  dS d S )
NFz%d.%dz	sel.firstzsel.lastselz1.0endinsertT)r   Zgetpatr   r   Zsearch_textspanindexZbellr   
tag_removetag_addZmark_setZisbackZsee)r   r	   reslinemijfirstZlastZselfirstZsellastr   r   r   r   '   s4    





zSearchDialog.find_againc             C   s&   |j dd}|r| jj| | j|S )Nz	sel.firstzsel.last)r   r   Zsetcookedpatr   )r   r	   r   r   r   r   r   D   s    zSearchDialog.find_selection)N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r      s   
r   c       	         s   ddl m}m} ddlm} || }|jd tt| j j	ddd \}}|jd||d	 f  ||d
d  j
   jddd   fdd}||d|d}|j
  dS )zDisplay search test box.r   )ToplevelText)ButtonzTest SearchDialog+r   Nz+%d+%d   Zgray)Zinactiveselectbackgroundr   zThis is a sample string.
   c                  s.    j ddd t j   jddd d S )Nr   z1.0r   )r   r   r   r   r   )r	   r   r   	show_findX   s    z!_search_dialog.<locals>.show_findzSearch (selection ignored))r	   Zcommand)tkinterr)   r*   Ztkinter.ttkr+   titlemapintZgeometrysplitZpackr   )	parentr)   r*   r+   Zboxxyr/   Zbuttonr   )r	   r   _search_dialogK   s    
 r8   __main__)mainzidlelib.idle_test.test_search   F)	verbosityexit)runN)r0   r   Zidlelibr   Zidlelib.searchbaser   r   r   r   r   r   r8   r&   Zunittestr:   Zidlelib.idle_test.htestr>   r   r   r   r   <module>   s   /