ó
‹²,]c           @   s9  d  Z  d d l Z d d l m Z d d l m Z m Z m Z d d l m	 Z	 d d l
 m Z m Z m Z m Z m Z m Z m Z m Z m Z d d l m Z d d l m Z d d	 l m Z d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z e  d k r5e ƒ  n  d S(   s+   Module checking Spyder runtime dependenciesiÿÿÿÿN(   t   to_qvariant(   t   Qtt   QModelIndext   QAbstractTableModel(   t   QColor(	   t   QApplicationt   QDialogt   QDialogButtonBoxt   QHBoxLayoutt   QItemDelegatet   QLabelt   QPushButtont
   QTableViewt   QVBoxLayout(   t   __version__(   t   _(   t   icon_managert   DependenciesTableModelc           B   sw   e  Z d  „  Z d „  Z e ƒ  d „ Z e ƒ  d „ Z e j d „ Z	 e j
 d „ Z d „  Z e j
 d „ Z d „  Z RS(	   c         C   s*   t  j |  | ƒ d  |  _ |  j | ƒ d  S(   N(   R   t   __init__t   Nonet   dependenciest   set_data(   t   selft   parentR   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR      s    	c         C   s   | |  _  |  j ƒ  d S(   s   Set model dataN(   R   t   reset(   R   R   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR       s    	c         C   s   t  |  j ƒ S(   s   Array row number(   t   lenR   (   R   t   qindex(    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyt   rowCount%   s    c         C   s   d S(   s   Array column counti   (    (   R   R   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyt   columnCount)   s    c         C   s`   | d k r% |  j  j d d „  ƒ n- | d k r4 n | d k rC n | d k rR n  |  j ƒ  d S(   s   Overriding sort methodi    t   keyc         S   s   t  |  d ƒ S(   Nt   modname(   t   getattr(   t   dep(    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyt   <lambda>0   t    i   i   i   N(   R   t   sortR   (   R   t   columnt   order(    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR#   -   s    c         C   st   | t  j k r t ƒ  St | ƒ } | t  j k ri t d ƒ t d ƒ t d ƒ t d ƒ f } t | | ƒ St ƒ  Sd S(   s   Overriding method headerDatat   Modules
    Required s    Installed s   Provided featuresN(   R   t   DisplayRoleR    t   intt
   HorizontalR   (   R   t   sectiont   orientationt   rolet   i_columnt   headers(    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyt
   headerData9   s    c         C   s<   |  j  | j ƒ  } | j | j | j ƒ  | j f | j ƒ  S(   s   Return current value(   R   t   rowR   t   required_versiont   get_installed_versiont   featuresR$   (   R   t   indexR    (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyt	   get_valueE   s    c         C   s  | j  ƒ  s t ƒ  S|  j | j ƒ  } | t j k r| | j ƒ  d k r` |  j | ƒ } t | ƒ S|  j | ƒ } t | ƒ SnŒ | t j k r¥ t t	 t j
 t j Bƒ ƒ S| t j k rd d l m } | j ƒ  } | | j k rt t j ƒ } | j d ƒ t | ƒ Sn  d S(   s   Return data at table indexi    iÿÿÿÿ(   t
   Dependencyg      Ð?N(   t   isValidR    R   R0   R   R'   R$   R5   t   TextAlignmentRoleR(   t	   AlignLeftt   AlignVCentert   BackgroundColorRolet   spyder.dependenciesR6   t
   get_statust   NOKR   t   redt	   setAlphaF(   R   R4   R,   R    t   valueR6   t   statust   color(    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyt   dataK   s$    
c         C   s   |  j  ƒ  |  j ƒ  d  S(   N(   t   beginResetModelt   endResetModel(   R   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR   a   s    
(   t   __name__t
   __module__R   R   R   R   R   R   t   DescendingOrderR#   R'   R/   R5   RD   R   (    (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR      s   			t   DependenciesDelegatec           B   s   e  Z d d  „ Z RS(   c         C   s   t  j |  | ƒ d  S(   N(   R	   R   (   R   R   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR   g   s    N(   RG   RH   R   R   (    (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyRJ   f   s   t   DependenciesTableViewc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s_   t  j |  | ƒ t |  | ƒ |  _ |  j |  j ƒ t |  ƒ |  _ |  j |  j ƒ |  j ƒ  d  S(   N(	   R   R   R   t   modelt   setModelRJ   t   delegatet   setItemDelegatet   setup_table(   R   R   RD   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR   l   s    c         C   sN   |  j  ƒ  j t ƒ |  j ƒ  |  j d ƒ |  j t ƒ |  j d t j	 ƒ d S(   s   Setup tablei    N(
   t   horizontalHeadert   setStretchLastSectiont   Truet   adjust_columnst   columnAtt   setSortingEnabledt   Falset   sortByColumnR   RI   (   R   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyRP   t   s
    
c         C   s(   x! t  d ƒ D] } |  j | ƒ q Wd S(   s&   Resize three first columns to contentsi   N(   t   ranget   resizeColumnToContents(   R   t   col(    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyRT   }   s    (   RG   RH   R   RP   RT   (    (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyRK   k   s   			t   DependenciesDialogc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s®  t  j |  | ƒ |  j d t t d ƒ f ƒ |  j t j d ƒ ƒ |  j t	 ƒ t
 |  g  ƒ |  _ d d d d d g } t t d	 ƒ d
 j | d  ƒ | d f ƒ |  _ |  j j t	 ƒ |  j j t j ƒ |  j j d d d d ƒ t t d ƒ ƒ } | j j |  j ƒ t t j ƒ } | j j |  j ƒ t ƒ  } | j | ƒ | j ƒ  | j | ƒ t ƒ  } | j |  j ƒ | j |  j ƒ | j  | ƒ |  j! | ƒ |  j" d d ƒ d  S(   Ns   Spyder %s: %st   Dependenciest   tooloptionst   NumPyt
   Matplotlibt   Pandast   SymPyt   Cythonsš  Spyder depends on several Python modules to provide the right functionality for all its panes. The table below shows the required and installed versions (if any) of all of them.<br><br><b>Note</b>: You can safely use Spyder without the following modules installed: <b>%s</b> and <b>%s</b>.<br><br>Please also note that new dependencies or changed ones will be correctly detected only after Spyder is restarted.s   , iÿÿÿÿi   i   i   i
   s   Copy to clipboardiv  i¤  (#   R   R   t   setWindowTitleR   R   t   setWindowIcont   imat   icont   setModalRS   RK   t   viewR
   t   joint   labelt   setWordWrapt   setAlignmentR   t   AlignJustifyt   setContentsMarginsR   t   clickedt   connectt   copy_to_clipboardR   t   Okt   acceptedt   acceptR   t	   addWidgett
   addStretchR   t	   addLayoutt	   setLayoutt   resize(   R   R   t   opt_modst   btnt   bboxt   hlayoutt   vlayout(    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR   ƒ   s4    $	
	c         C   s.   |  j  ƒ  |  j j ƒ  t t |  ƒ j ƒ  d  S(   N(   t   showRi   t   resizeRowsToContentst   superR\   t   exec_(   R   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyRƒ   ®   s    
c         C   s:   |  j  j j | ƒ |  j  j ƒ  |  j  j d t j ƒ d  S(   Ni    (   Ri   RL   R   RT   RX   R   RI   (   R   R   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR   ¶   s    c         C   s*   d d l  m } t j ƒ  j | ƒ  ƒ d  S(   Niÿÿÿÿ(   RB   (   R<   RB   R   t	   clipboardt   setText(   R   RB   (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyRr   »   s    (   RG   RH   R   Rƒ   R   Rr   (    (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyR\   ‚   s   	+		c          C   s²   d d l  m }  |  j d d d ƒ |  j d d d ƒ |  j d	 d
 d ƒ |  j d d d ƒ d d l m } | ƒ  } t d ƒ } | j |  j ƒ | j	 ƒ  t
 j | j ƒ  ƒ d S(   s   Run dependency widget testiÿÿÿÿ(   R   t   IPythons   Enhanced Python interpreters   >=0.13t
   matplotlibs   Interactive data plottings   >=1.0t   sympys   Symbolic Mathematicss   >=10.0t   foos   Non-existent module(   t   qapplicationN(   t   spyderR   t   addt   spyder.utils.qthelpersRŠ   R\   R   R   t   DEPENDENCIESR€   t   syst   exitRƒ   (   R   RŠ   t   appt   dlg(    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyt   testÀ   s    	
t   __main__(!   t   __doc__R   t   qtpy.compatR    t   qtpy.QtCoreR   R   R   t
   qtpy.QtGuiR   t   qtpy.QtWidgetsR   R   R   R   R	   R
   R   R   R   R‹   R   t   spyder.config.baseR   t   spyder.utilsR   Rf   R   RJ   RK   R\   R“   RG   (    (    (    s:   lib/python2.7/site-packages/spyder/widgets/dependencies.pyt   <module>   s   @L>	