B
    B:\
                 @   s<   d Z ddlmZ dd Zdd Zdd Zd	d
 Zdd ZdS )z3Navigator Exceptions and Exception handling module.    )
format_excc             C   sX   ddl m} dj| d}dj|d}t| t| |d||dd	d
}|d | S )z&Display a Qt styled error message box.r   )MessageBoxErrorz=An unexpected error occurred on Navigator start-up<br>{error})errorz{trace})tracezNavigator Start ErrorFN)titletextr   ZreportZ
learn_moreiX  )Z"anaconda_navigator.widgets.dialogsr   formatprintZsetFixedWidthZexec_)r   	tracebackr   r   r   Zmsg_box r   <lib/python3.7/site-packages/anaconda_navigator/exceptions.pydisplay_qt_error_box   s    
r   c       	   	   C   s   d}yddl m} W n  tk
r4   ddlm} Y nX ddl}|jdd}t|d}||j| |d W dQ R X d	||}ddl	}|
| dS )
z7Display a new browser window with an error description.aE  
    <html>
    <head>
      <title>Navigator Error</title>
    </head>
    <body>
      <div>
        <h1>Navigator Error</h1>
        <p>An unexpected error occurred on Navigator start-up</p>
        <h2>Report</h2>
        <p>Please report this issue in the anaconda
          <a href="https://github.com/continuumio/anaconda-issues">
            issue tracker
          </a>
        </p>
      </div>
      <div>
        <h2>Main Error</h2>
        <p><pre>{error}</pre></p>
        <h2>Traceback</h2>
        <p><pre>{trace}</pre></p>
      </div>
    </body>
    </html>
    r   )pathname2urlNz.html)suffixw)r   r   zfile:{})Zurllibr   	ExceptionZurllib.requesttempfileZmktempopenwriter   
webbrowserZopen_new_tab)	r   r
   templater   r   ZtemppathfZurlr   r   r   r   display_browser_error_box   s    r   c          
   O   sH   y| ||}t |tr|S W n& tk
rB } zt|S d}~X Y nX dS )z=Handle global application exceptions and display information.N)
isinstanceintr   handle_exception)funcargskwargsZreturn_valueer   r   r   exception_handlerH   s    

r    c          
   O   s:   y| ||}|S  t k
r4 } zt|S d }~X Y nX d S )N)r   r   )r   r   r   valuer   r   r   r   try_funcR   s
    
r"   c             C   sZ   t  }yt| | W n@ tk
rT   yt| | W n tk
rN   t| Y nX Y nX dS )z=This will provide a dialog for the user with the error found.N)r   r   r   r   r	   )r   r
   r   r   r   r   Z   s    r   N)__doc__r
   r   r   r   r    r"   r   r   r   r   r   <module>   s   +
