
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„júV  ã               @   sŒ  d dl Z d dlZd dlZd dlZd dlZddddddgZG dd„ deƒZi Zg Z	dNd
d„Z
dOdd„ZdPdd„Zdd„ Zdd„ ZdQdd„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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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d*d+„ Ze jjd,ƒ�rheƒ  e jjd-ƒ�rej d.ƒ�r’e
d.ded.ƒƒ ej d/ƒ�r®e
d/ded/ƒƒ ej d0ƒ�rÊe
d0ded0ƒƒ ej d1ƒ�ræe
d1ded1ƒƒ ej d2ƒ�re
d2ded2ƒƒ ej!dd3… d4k�rŠG d5d6„ d6eƒZ"g Z	i Ze
d7e"ƒ e j#j$e jjd8d9ƒd:ƒZ%x8d;d<d=d>d?d@e%fD ]"Z&ej e&ƒ�rde
e&dee&ƒƒ �qdW ej!dAk�rþG dBdC„ dCeƒZ'G dDdE„ dEeƒZ(e
dFde(dFƒdRƒ e
d;de(d;ƒdSƒ e
dGde(dGƒdTƒ e
dCde(dHƒdUƒ dIe jk�rpe jdI j)e j*ƒZ+e+j,ƒ  xBe+D ]:Z-e-dJk�r*ee-dVƒZ.e.d	 dk�r*e
e-dee-ƒdWƒ �q*W dZ-[-[+dKdL„ Z/e0dMk�rˆe/ƒ  dS )Xé    NÚErrorÚopenÚopen_newÚopen_new_tabÚgetÚregisterc               @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú"/usr/lib64/python3.6/webbrowser.pyr      s   é   c             C   s<   ||gt | jƒ < |dkr$tj| ƒ n|dk r8tjd| ƒ d S )Nr   )Ú	_browsersÚlowerÚ	_tryorderÚappendÚinsert)ÚnameÚklassÚinstanceÚupdate_tryorderr   r   r   r      s
    c             C   s¾   | d k	r| g}nt }xœ|D ]”}d|krVtj|ƒ}|d dkrLt|d d… ƒS t|ƒS qyt|jƒ  }W n tk
r‚   t|ƒ}Y nX |d d k	r˜|d S |d d k	r|d ƒ S qW t	dƒ‚d S )Nz%sr   ú&r   z!could not locate runnable browseréÿÿÿÿr   )
r   ÚshlexÚsplitÚBackgroundBrowserÚGenericBrowserr   r   ÚKeyErrorÚ_synthesizer   )ZusingZalternativesÚbrowserÚcommandr   r   r   r      s$    


Tc             C   s,   x&t D ]}t|ƒ}|j| ||ƒrdS qW dS )NTF)r   r   r   )ÚurlÚnewÚ	autoraiser   r   r   r   r   r   9   s
    
c             C   s
   t | dƒS )Nr   )r   )r!   r   r   r   r   @   s    c             C   s
   t | dƒS )Né   )r   )r!   r   r   r   r   C   s    c             C   s²   | j ƒ d }tj|ƒsd d gS tjj|ƒ}yt|jƒ  }W n tk
rR   d d gS X |d }|rª|jƒ |jkrªdd l	}|j	|ƒ}| |_
tjj| ƒ|_t| d ||ƒ d |gS d d gS )Nr   r   )r   ÚshutilÚwhichÚosÚpathÚbasenamer   r   r   Úcopyr   r   )r   r   Úcmdr   r    Z
controllerr*   r   r   r   r   G   s"    


r   c               @   sB   e Zd ZdgZddd„Zddd„Zd	d
„ Zdd„ Zedd„ ƒZ	dS )ÚBaseBrowserz%sÚ c             C   s   || _ || _d S )N)r   r)   )Úselfr   r   r   r   Ú__init__n   s    zBaseBrowser.__init__r   Tc             C   s   t ‚d S )N)ÚNotImplementedError)r.   r!   r"   r#   r   r   r   r   r   s    zBaseBrowser.openc             C   s   | j |dƒS )Nr   )r   )r.   r!   r   r   r   r   u   s    zBaseBrowser.open_newc             C   s   | j |dƒS )Nr$   )r   )r.   r!   r   r   r   r   x   s    zBaseBrowser.open_new_tabc             C   s$   | r | j ƒ jdƒr td| › �ƒ‚d S )Nú-zInvalid URL: )ÚlstripÚ
startswithÚ
ValueError)r!   r   r   r   Ú
_check_url{   s    zBaseBrowser._check_urlN)r-   )r   T)
r   r	   r
   Úargsr/   r   r   r   Ústaticmethodr5   r   r   r   r   r,   i   s   

r,   c               @   s   e Zd Zdd„ Zddd„ZdS )	r   c             C   sF   t |tƒr|| _dg| _n|d | _|dd … | _tjj| jƒ| _d S )Nz%sr   r   )Ú
isinstanceÚstrr   r6   r'   r(   r)   )r.   r   r   r   r   r/   †   s    


zGenericBrowser.__init__r   Tc                sv   | j ˆ ƒ | jg‡ fdd„| jD ƒ }y6tjd d… dkrFtj|ƒ}ntj|dd�}|jƒ  S  tk
rp   dS X d S )Nc                s   g | ]}|j d ˆ ƒ‘qS )z%s)Úreplace)Ú.0Úarg)r!   r   r   ú
<listcomp>’   s   z'GenericBrowser.open.<locals>.<listcomp>é   ÚwinT)Ú	close_fdsF)	r5   r   r6   ÚsysÚplatformÚ
subprocessÚPopenÚwaitÚOSError)r.   r!   r"   r#   ÚcmdlineÚpr   )r!   r   r   �   s    

zGenericBrowser.openN)r   T)r   r	   r
   r/   r   r   r   r   r   r   ‚   s   
r   c               @   s   e Zd Zddd„ZdS )r   r   Tc                sz   | j ˆ ƒ | jg‡ fdd„| jD ƒ }y:tjd d… dkrFtj|ƒ}ntj|ddd�}|jƒ d kS  tk
rt   dS X d S )Nc                s   g | ]}|j d ˆ ƒ‘qS )z%s)r:   )r;   r<   )r!   r   r   r=   ¤   s   z*BackgroundBrowser.open.<locals>.<listcomp>r>   r?   T)r@   Ústart_new_sessionF)	r5   r   r6   rA   rB   rC   rD   ÚpollrF   )r.   r!   r"   r#   rG   rH   r   )r!   r   r   ¢   s    
zBackgroundBrowser.openN)r   T)r   r	   r
   r   r   r   r   r   r   ž   s   r   c               @   s>   e Zd ZdZdZdZddgZdZdZdZ	dd„ Z
dd	d
„ZdS )ÚUnixBrowserNFTz%actionz%sc       
      C   sÈ   g }|r*| j r*t|ƒ}| j | }|r*|g}| jg| | }|sD| jrLtj}nd }tj|d|| jrd|pfd |dd�}|ržy|jdƒ}	|	 S  tj	k
rš   dS X n&| jrº|j
ƒ d kr´dS dS n
|jƒ  S d S )NT)r@   ÚstdinÚstdoutÚstderrrI   é   F)Ú
raise_optsÚintr   Ú
backgroundrC   ÚDEVNULLrD   Úredirect_stdoutrE   ZTimeoutExpiredrJ   )
r.   r6   Zremoter#   Z	raise_optÚoptrG   ZinoutrH   Úrcr   r   r   Ú_invokeÂ   s0    

 



zUnixBrowser._invoker   c                sÄ   |dkr| j ‰ nB|dkr | j‰ n2|dkrB| jd kr:| j‰ qR| j‰ ntdd|  ƒ‚| jˆjdˆ ƒƒ ‡ ‡fdd„| jD ƒ}d	d„ |D ƒ}| j|d
|ƒ}|s¼‡fdd„| jD ƒ}| j|ddƒS d
S d S )Nr   r   r$   zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sz%actionc                s    g | ]}|j d ˆ ƒj dˆƒ‘qS )z%actionz%s)r:   )r;   r<   )Úactionr!   r   r   r=   õ   s   z$UnixBrowser.open.<locals>.<listcomp>c             S   s   g | ]}|r|‘qS r   r   )r;   r<   r   r   r   r=   ÷   s    Tc                s   g | ]}|j d ˆ ƒ‘qS )z%s)r:   )r;   r<   )r!   r   r   r=   û   s    F)	Úremote_actionÚremote_action_newwinÚremote_action_newtabr   r5   r:   Úremote_argsrW   r6   )r.   r!   r"   r#   r6   Zsuccessr   )rX   r!   r   r   å   s&    

zUnixBrowser.open)r   T)r   r	   r
   rP   rR   rT   r\   rY   rZ   r[   rW   r   r   r   r   r   rK   ±   s   #rK   c               @   s$   e Zd ZddgZdZdZdZdZdS )ÚMozillaz%actionz%sr-   z-new-windowz-new-tabTN)r   r	   r
   r\   rY   rZ   r[   rR   r   r   r   r   r]     s
   r]   c               @   s,   e Zd ZddgZddgZdZdZdZdZd	S )
ÚNetscapez-noraisez-raisez-remotezopenURL(%s%action)r-   z,new-windowz,new-tabTN)	r   r	   r
   rP   r\   rY   rZ   r[   rR   r   r   r   r   r^     s   r^   c               @   s(   e Zd ZddgZddgZdZdZdZdS )	ÚGaleonz-noraiser-   z%actionz%sz-nz-wTN)r   r	   r
   rP   r\   rY   rZ   rR   r   r   r   r   r_     s
   r_   c               @   s$   e Zd ZddgZdZdZdZdZdS )ÚChromez%actionz%sr-   z--new-windowTN)r   r	   r
   r\   rY   rZ   r[   rR   r   r   r   r   r`      s
   r`   c               @   s$   e Zd ZddgZdZdZdZdZdS )ÚOperaz%actionz%sr-   z--new-windowTN)r   r	   r
   r\   rY   rZ   r[   rR   r   r   r   r   ra   ,  s
   ra   c               @   s(   e Zd ZddgZdZdZdZdZdZdS )ÚElinksz-remotezopenURL(%s%action)r-   z,new-windowz,new-tabFN)	r   r	   r
   r\   rY   rZ   r[   rR   rT   r   r   r   r   rb   6  s   rb   c               @   s   e Zd Zddd„ZdS )Ú	Konquerorr   Tc             C   sî   | j |ƒ |dkrd}nd}tj}ytjd||gd|||d�}W n tk
rT   Y nX |jƒ  dS y tjdd|gd|||dd	�}W n tk
r–   Y nX |jƒ d kr¨dS y tjd
d|gd|||dd	�}W n tk
rÜ   dS X |jƒ d kS d S )Nr$   ZnewTabZopenURLÚ	kfmclientT)r@   rL   rM   rN   Ú	konquerorz--silent)r@   rL   rM   rN   rI   Úkfmz-dF)r5   rC   rS   rD   rF   rE   rJ   )r.   r!   r"   r#   rX   ÚdevnullrH   r   r   r   r   K  s<    
zKonqueror.openN)r   T)r   r	   r
   r   r   r   r   r   rc   D  s   rc   c               @   s&   e Zd Zdd„ Zdd„ Zd
dd„Zd	S )ÚGrailc             C   sÖ   dd l }dd l}dd l}dd l}tjj|jƒ dƒ}|jtj	ƒ ƒd }tjj||d ƒ}|j |ƒ}|shd S |j|j
|jƒ}	xX|D ]P}
y|	j|
ƒ W n8 tk
rÈ   ytj|
ƒ W n tk
rÂ   Y nX Y q~X |	S q~W d S )Nr   z.grail-unixz-*)ÚglobÚpwdÚsocketÚtempfiler'   r(   ÚjoinZ
gettempdirÚgetpwuidÚgetuidZAF_UNIXZSOCK_STREAMZconnectrF   Úunlink)r.   ri   rj   rk   rl   ZtempdirÚuserÚfilenameZmaybesÚsÚfnr   r   r   Ú_find_grail_rc}  s*    

zGrail._find_grail_rcc             C   s&   | j ƒ }|sdS |j|ƒ |jƒ  dS )Nr   r   )ru   ÚsendÚclose)r.   rX   rs   r   r   r   Ú_remote—  s    
zGrail._remoter   Tc             C   s0   | j |ƒ |r| jd| ƒ}n| jd| ƒ}|S )NzLOADNEW zLOAD )r5   rx   )r.   r!   r"   r#   Úokr   r   r   r   Ÿ  s
    
z
Grail.openN)r   T)r   r	   r
   ru   rx   r   r   r   r   r   rh   y  s   rh   c              C   sò  t jdƒrtdd tdƒƒ dtjkr>t jdƒr>tdd tdƒƒ dtjkrbt jdƒrbtdd tdƒƒ dtjkr†t jdƒr†tdttdƒƒ t jdƒr tdd tdƒƒ x&dD ]} t j| ƒr¦t| d t| ƒƒ q¦W x&dD ]} t j| ƒrÎt| d t| ƒƒ qÎW t jdƒ�rtdttdƒƒ nt jdƒ�r*tdttdƒƒ x*dD ]"} t j| ƒ�r0t| d t	| ƒƒ �q0W t jdƒ�rrtdd tdƒƒ x*d D ]"} t j| ƒ�rxt| d t
| ƒƒ �qxW t jdƒ�rºtdd tdƒƒ t jdƒ�rÖtdd tdƒƒ t jdƒ�rîtdtd ƒ d S )!Nzxdg-openZGNOME_DESKTOP_SESSION_IDz	gvfs-openz
gnome-openZKDE_FULL_SESSIONrd   zx-www-browserÚfirefoxÚ	iceweaselÚiceapeÚ	seamonkeyúmozilla-firefoxúmozilla-firebirdÚfirebirdÚmozillaÚnetscaperf   re   ÚgaleonÚepiphanyZ	skipstoneúgoogle-chromeÚchromeÚchromiumúchromium-browserÚoperaZmosaicZgrail)rz   r{   r|   r}   )r~   r   r€   r�   r‚   )rƒ   r„   )r…   r†   r‡   rˆ   )r%   r&   r   r   r'   Úenvironrc   r]   r^   r_   r`   ra   rh   )r   r   r   r   Úregister_X_browsers¯  sH    



 


r‹   ZDISPLAYZTERMzwww-browserZlinksZelinksZlynxZw3mr>   r?   c               @   s   e Zd Zddd„ZdS )ÚWindowsDefaultr   Tc             C   s6   | j |ƒ ytj|ƒ W n tk
r,   dS X dS d S )NFT)r5   r'   Z	startfilerF   )r.   r!   r"   r#   r   r   r   r   
  s    
zWindowsDefault.openN)r   T)r   r	   r
   r   r   r   r   r   rŒ   	  s   rŒ   zwindows-defaultZPROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXErz   r€   r}   r�   r‚   r‰   Údarwinc               @   s   e Zd Zdd„ Zddd„ZdS )	ÚMacOSXc             C   s
   || _ d S )N)r   )r.   r   r   r   r   r/   3  s    zMacOSX.__init__r   Tc       	      C   s®   | j |ƒ d|krd| }tt|ƒƒ}| jdkrBd|jddƒ }n<| jdkrRd}nd	|d
  }d|jddƒ }d| j||f }tjddƒ}|d kr–dS |j|ƒ |jƒ }| S )Nú:zfile:Údefaultzopen location "%s"ú"z%22ZOmniWebr-   ztoWindow %dr   zOpenURL "%s"z‰tell application "%s"
                                activate
                                %s %s
                            end tellÚ	osascriptÚwF)	r5   rQ   Úboolr   r:   r'   ÚpopenÚwriterw   )	r.   r!   r"   r#   ÚscriptZtoWindowr+   ÚosapiperV   r   r   r   r   6  s"    



zMacOSX.openN)r   T)r   r	   r
   r/   r   r   r   r   r   rŽ   )  s   
rŽ   c               @   s   e Zd Zdd„ Zddd„ZdS )	ÚMacOSXOSAScriptc             C   s
   || _ d S )N)Ú_name)r.   r   r   r   r   r/   Y  s    zMacOSXOSAScript.__init__r   Tc             C   sl   | j |ƒ | jdkr&d|jddƒ }nd| j|jddƒf }tjddƒ}|d krTdS |j|ƒ |jƒ }| S )	Nr�   zopen location "%s"r‘   z%22zž
                   tell application "%s"
                       activate
                       open location "%s"
                   end
                   r’   r“   F)r5   rš   r:   r'   r•   r–   rw   )r.   r!   r"   r#   r—   r˜   rV   r   r   r   r   \  s    


zMacOSXOSAScript.openN)r   T)r   r	   r
   r/   r   r   r   r   r   r™   X  s   r™   Zsafarir†   r�   ZBROWSERr-   c        	      C   sò   dd l } dtjd  }y| j tjdd … dƒ\}}W nJ | jk
r~ } z,t|tjd� t|tjd� tjdƒ W Y d d }~X nX d}x*|D ]"\}}|dkr d}qŠ|dkrŠd}qŠW t|ƒdkrÔt|tjd� tjdƒ |d }t||ƒ td	ƒ d S )
Nr   zDUsage: %s [-n | -t] url
    -n: open new window
    -t: open new tabr   Zntd)Úfilez-nz-tr$   ú)	ÚgetoptrA   ÚargvÚerrorÚprintrN   ÚexitÚlenr   )	r�   ZusageZoptsr6   ÚmsgZnew_winÚoÚar!   r   r   r   Úmain�  s(      

r¦   Ú__main__)Nr   )N)r   T)r   r   r   r   r   r   r   )1r'   r   r%   rA   rC   Ú__all__Ú	Exceptionr   r   r   r   r   r   r   r   r   Úobjectr,   r   r   rK   r]   r^   r_   r`   ZChromiumra   rb   rc   rh   r‹   rŠ   r&   rB   rŒ   r(   rm   Ziexplorer   rŽ   r™   r   ÚpathsepZ_userchoicesÚreverserG   r+   r¦   r   r   r   r   r   Ú<module>   s’   



"P

	
56B

/



