B
    nôb\Ò  ã               @   s¶   d Z ddlmZ ddlZddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZ ddl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dd„ Zedkr²eƒ  dS )zpydoc widgeté    N)ÚQtÚQThreadÚQUrlÚSignal)ÚQCursor)ÚQApplication)Ú_)ÚPY3Úto_text_string)Úselect_port)Ú
WebBrowserc               @   s@   e Zd ZdZeƒ Zddd„Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dS )ÚPydocServerzPydoc serveré(  c             C   s    t  | ¡ || _d | _d| _d S )NF)r   Ú__init__ÚportÚserverÚcomplete)Úselfr   © r   ú6lib/python3.7/site-packages/spyder/widgets/pydocgui.pyr      s    
zPydocServer.__init__c          
   C   sr   dd l }trZy|  |j|j| jd¡ W qn tk
rV   |  |j|jd| jd¡ Y qnX n| | j| j| j¡ d S )Nr   )r   Z	localhost)Zhostnamer   )	Úpydocr	   ÚcallbackZ_start_serverZ_url_handlerr   Ú	TypeErrorZserveÚ	completer)r   r   r   r   r   Úrun#   s    zPydocServer.runc             C   s   || _ | j ¡  d S )N)r   Úserver_startedÚemit)r   r   r   r   r   r   3   s    zPydocServer.callbackc             C   s
   d| _ d S )NT)r   )r   r   r   r   r   7   s    zPydocServer.completerc             C   s4   t r |  ¡ r0| jjr0| j ¡  n|  ¡ r0d| j_d S )Né   )r	   Úis_server_runningr   ZservingÚstopÚquit)r   r   r   r   Úquit_server:   s
    zPydocServer.quit_serverN)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r!   r   r   r   r   r      s   
r   c               @   sd   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚPydocBrowserz
    pydoc widget
    i°u  c             C   s   t  | |¡ d | _d | _d S )N)r   r   r   r   )r   Úparentr   r   r   r   K   s    zPydocBrowser.__init__c             C   s$   t  ttjƒ¡ t  ¡  |  ¡  dS )zStart pydoc serverN)r   ZsetOverrideCursorr   r   Z
WaitCursorZprocessEventsÚstart_server)r   r   r   r   Ú
initializeP   s    zPydocBrowser.initializec             C   s   |   ¡  t ¡  dS )zLoad home pageN)Zgo_homer   ZrestoreOverrideCursor)r   r   r   r   Úinitialize_continuedW   s    z!PydocBrowser.initialize_continuedc             C   s
   | j dk	S )z.Return True if pydoc server is already runningN)r   )r   r   r   r   r   \   s    zPydocBrowser.is_server_runningc             C   s   |   ¡ r| j ¡  | ¡  d S )N)r   r   r!   Zaccept)r   Zeventr   r   r   Ú
closeEvent`   s    
zPydocBrowser.closeEventc             C   sz   | j dkr*t| jd| _|  d| j ¡ n$| j  ¡ rN| j j | j¡ | j  	¡  t
| jd| _ | j j | j¡ | j  ¡  dS )zStart pydoc serverN)Zdefault_portzhttp://localhost:%d/)r   )r   r   ÚDEFAULT_PORTr   Zset_home_urlZ	isRunningr   Z
disconnectr*   r    r   ZconnectÚstart)r   r   r   r   r(   h   s    


zPydocBrowser.start_serverc             C   s   t dƒS )zReturn address label textzModule or package:)r   )r   r   r   r   Ú	get_labelu   s    zPydocBrowser.get_labelc             C   s   |   ¡  t | ¡ dS )zReload pageN)r(   r   Úreload)r   r   r   r   r/   y   s    zPydocBrowser.reloadc             C   s,   |  d¡r|dd… }t| j ¡ | d ƒS )z%Convert text address into QUrl objectú/r   Nz.html)Ú
startswithr   Zhome_urlZtoString)r   Útextr   r   r   Útext_to_url~   s    
zPydocBrowser.text_to_urlc             C   s   t  t| ¡ ƒ¡d dd… S )z2Convert QUrl object to displayed text in combo boxr   r   N)ÚospÚsplitextr
   Úpath)r   Zurlr   r   r   Úurl_to_text„   s    zPydocBrowser.url_to_textN)r"   r#   r$   r%   r,   r   r)   r*   r   r+   r(   r.   r/   r3   r7   r   r   r   r   r&   E   s   r&   c              C   s@   ddl m}  | dd}tdƒ}| ¡  | ¡  t | ¡ ¡ dS )zRun web browserr   )Úqapplicationé   )Z	test_timeN)Zspyder.utils.qthelpersr8   r&   Zshowr)   ÚsysÚexitZexec_)r8   ZappZwidgetr   r   r   Útest‰   s    
r<   Ú__main__)r%   Úos.pathr6   r4   r:   Zqtpy.QtCorer   r   r   r   Z
qtpy.QtGuir   Zqtpy.QtWidgetsr   Zspyder.config.baser   Zspyder.py3compatr	   r
   Zspyder.utils.miscr   Zspyder.widgets.browserr   r   r&   r<   r"   r   r   r   r   Ú<module>   s   ,D
