ó
Ò:\c           @   sç   d  Z  d d l m Z m Z d d l 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 m Z m Z m Z m Z d d l m Z d e f d	 „  ƒ  YZ d
 „  Z e d k rã e ƒ  n  d S(   s    About Anaconda Navigator dialog.iÿÿÿÿ(   t   Qtt   Signal(   t   QAbstractItemViewt   QHBoxLayoutt   QProgressBart   QStackedWidgett   QTableWidgett   QTableWidgetItemt	   QTextEditt   QVBoxLayout(   t   AnacondaAPI(   t   load_style_sheet(   t   ButtonNormalt   ButtonPrimaryt	   LabelBaset   SpacerHorizontalt   SpacerVertical(   t
   DialogBaset   PackagesDialogc           B   sJ   e  Z d  Z e ƒ  Z d d d e e d „ Z d „  Z d d d d „ Z	 RS(   s   Package dependencies dialog.c   
      C   sÿ  t  t |  ƒ j d | ƒ t ƒ  |  _ d |  _ | p7 g  |  _ | pF g  |  _ t	 ƒ  |  _
 t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t d ƒ |  _ t d ƒ |  _ |  j j t ƒ |  j
 j |  j ƒ |  j
 j |  j ƒ | r÷ d } n d } |  j j | ƒ |  j j t ƒ |  j j t ƒ |  j j t ƒ |  j j ƒ  j t ƒ |  j j  t! j" ƒ |  j j# t ƒ |  j j$ t! j% ƒ |  j j& t ƒ |  j j' ƒ  |  _( |  j j) ƒ  |  _* |  j( j+ t ƒ |  j( j, t- j. ƒ |  j( j/ |  j( j0 ƒ |  j* j/ |  j* j0 ƒ |  j j1 d ƒ |  j j2 t ƒ | r8d n d |  _3 | rW|  j4 d	 ƒ n# | rm|  j4 d
 ƒ n |  j4 d ƒ |  j1 |  j3 ƒ t5 ƒ  } | j |  j ƒ | j t6 ƒ  ƒ | j |  j ƒ t5 ƒ  } | j7 ƒ  | j |  j ƒ | j t6 ƒ  ƒ | j |  j ƒ t8 ƒ  }	 |	 j |  j ƒ |	 j t9 ƒ  ƒ |	 j |  j
 ƒ |	 j t9 ƒ  ƒ |	 j: | ƒ |	 j t9 ƒ  ƒ |	 j t9 ƒ  ƒ |	 j: | ƒ |  j; |	 ƒ |  j j< j= |  j> ƒ |  j j< j= |  j? ƒ |  j j@ t ƒ |  j j@ t ƒ |  jA d d d d d ƒd S(   s   About dialog.t   parentt   Applyt   Cancels+   The following packages will be removed:<br>s,   The following packages will be modified:<br>iF   i,  i¤  s   Remove Packagess   Update Packagess   Install Packagess   Solving package specificationst   valuei    t	   max_valueN(B   t   superR   t   __init__R
   t   apit   Nonet   actionst   packagest   pip_packagesR   t   stackR   t   tableR   t   textR   t   label_descriptiont   label_statusR   t   progress_barR   t	   button_okR   t   button_cancelt   setReadOnlyt   Truet	   addWidgett   setTextt   setWordWrapt   horizontalScrollBart
   setVisiblet   Falset   setSelectionBehaviorR   t
   SelectRowst   setAlternatingRowColorst   setSelectionModet   NoSelectiont   setSortingEnabledt   horizontalHeadert   _hheadert   verticalHeadert   _vheadert   setStretchLastSectiont   setDefaultAlignmentR    t	   AlignLeftt   setSectionResizeModet   Fixedt   setMinimumWidtht
   setDefaultt   base_minimum_widtht   setWindowTitleR   R   t
   addStretchR	   R   t	   addLayoutt	   setLayoutt   clickedt   connectt   acceptt   rejectt   setDisabledt   update_status(
   t   selfR   R   R   t   remove_onlyt   update_onlyR!   t   layout_progresst   layout_buttonst   layout(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pyR   "   sˆ    					
	c   $         sl  t  | t ƒ s i  } n  t d „  ˆ  j Dƒ ƒ } | j d ƒ } | j d d ƒ } | j d d ƒ } | j d g  ƒ } | j } | rŽ | }	 n | j d d ƒ }	 ˆ  j j | | ƒ }
 ˆ  j j	 ƒ  } | rd	 } ˆ  j
 j d
 ƒ ˆ  j j t ƒ ˆ  j j ƒ  rd } n  ˆ  j	 j | ƒ ni|
 rfd	 } d } ˆ  j	 j | ƒ ˆ  j
 j d
 ƒ d }	 ˆ  j j t ƒ n| r„| r„ˆ  j
 j d ƒ t  | t ƒ rÀ| d j d g  ƒ } | d j d g  ƒ } n$ | j d g  ƒ } | j d g  ƒ } t ƒ  } | j d „  | Dƒ ƒ } | j d „  | Dƒ ƒ } | t | ƒ } t t | ƒ ƒ } t | ƒ t | ƒ } | d
 k rid n d } t | ƒ d
 k r‡d n d } ˆ  j j | ƒ ˆ  j j d ƒ | rèd j | | ƒ } ˆ  j j d ƒ ˆ  j j d ƒ n^ | rF| rFˆ  j j d ƒ ˆ  j j d ƒ ˆ  j j d d d d g ƒ d j | | ƒ } n  x³t | | ƒ D]¡\ } } g  | D] } | d | k rj| ^ qj} | sÇi d j t d ƒ ƒ d  6d j t d! ƒ ƒ d! 6} n
 | d } g  | D] } | d | k rØ| ^ qØ} | si d j t d ƒ ƒ d  6} n
 | d } t | d  ƒ } t | d  ƒ } t | ƒ } t | ƒ } t | d! ƒ } | | k rŒt | ƒ } n t d" | ƒ } | | | | g } xG t | ƒ D]9 \ } } | j  t! j" t! j# Bƒ ˆ  j j$ | | | ƒ q»WqWW| rd# j | ƒ }	 n  ˆ  j j% t ƒ ˆ  j j& ƒ  ˆ  j j' d
 ƒ }  |  d$ k  reˆ  j j( d
 d$ ƒ n  ˆ  j j d% d& d' d( g ƒ n  ˆ  j j% t ƒ ˆ  j) d |	 ƒ ˆ  j j | ƒ ˆ  j j& ƒ  t* ‡  f d) †  t+ ˆ  j j, ƒ  ƒ Dƒ ƒ }! ˆ  j- ƒ  ˆ  j j- ƒ  ˆ  j j. ƒ  j- ƒ  d* }" |! |" }# |# ˆ  j/ k  rAˆ  j/ }# n  ˆ  j0 |# ƒ ˆ  j1 |# ƒ ˆ  j2 j3 ƒ  d+ S(,   s5   Setup the widget to include the list of dependencies.c         s   s"   |  ] } | j  d  ƒ d Vq d S(   s   ==i    N(   t   split(   t   .0t   pkg(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pys	   <genexpr>‡   s    t   successt   errort    t   exception_nameR   t   messaget    s   No packages will be modified.i   sË   Some of the functionality of Anaconda Navigator will be limited in <b>offline mode</b>. <br><br>Installation and upgrade actions will be subject to the packages currently available on your package cache.sP   Downgrading/removing these packages will modify Anaconda Navigator dependencies.t   NavigatorDependenciesErrori    t   LINKt   UNLINKc         S   s   h  |  ] } | d  ’ q S(   t   name(    (   RR   t   p(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pys	   <setcomp>¼   s   	 c         S   s   h  |  ] } | d  ’ q S(   R]   (    (   RR   R^   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pys	   <setcomp>½   s   	 t   si   s    {0} package{1} will be installedi   i   t   Namet   Unlinkt   Linkt   Channels   {0} package{1} will be removedR]   t   -t   linkt   versiont   channelt   *sK   <b>*</b> indicates the package is a dependency of a selected package{0}<br>i<   s   Name  s   Unlink  s   Link  s	   Channel  c         3   s!   |  ] } ˆ  j  j | ƒ Vq d  S(   N(   R    t   columnWidth(   RR   t   i(   RK   (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pys	   <genexpr>  s    i
   N(4   t
   isinstancet   dictt   sortedR   t   gett   prefixR   t   check_navigator_dependenciesR"   R!   R   t   setCurrentIndexR%   RI   R(   t
   is_offlineR*   t   listt   sett   uniont   lenR    t   setRowCountt   setColumnCountt   formatt
   showColumnt
   hideColumnt   setHorizontalHeaderLabelst	   enumeratet   centert   strR   t   setFlagsR    t   ItemIsEnabledt   ItemIsSelectablet   setItemt
   setEnabledt   resizeColumnsToContentsRi   t   setColumnWidthRJ   t   sumt   ranget   columnCountt   widthR7   R@   R>   t   setMaximumWidtht   sig_setup_readyt   emit($   RK   t   workert   outputRU   R   RT   RW   R   Ro   RX   t   navi_deps_errort   descriptiont   actions_linkt   actions_unlinkt   depst   count_total_packagest   plural_totalt   plural_selectedt   rowRS   R^   t	   link_itemt   unlink_itemt   unlink_versiont   link_versiont   item_unlink_vt   item_link_vt   item_link_ct	   item_namet   itemst   columnt   itemt   unlink_widthRŠ   t   deltat	   new_width(    (   RK   sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pyt   setup‚   sÐ    							)
)
	(0
RV   c         C   so   |  j  j | ƒ | d k r; | d k r; |  j j t ƒ n0 |  j j t ƒ |  j j | ƒ |  j j | ƒ d S(   s!   Update status of packages dialog.N(	   R#   R*   R   R$   R-   R.   R(   t
   setMaximumt   setValue(   RK   RX   R   R   (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pyRJ      s    N(
   t   __name__t
   __module__t   __doc__R   RŒ   R   R.   R   R§   RJ   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pyR      s   	Z	žc          C   sP   d d l  m }  |  ƒ  } t d d ƒ } | j t ƒ  ƒ | j ƒ  | j ƒ  d S(   s   Run local test.iÿÿÿÿ(   t   qapplicationR   N(   t"   anaconda_navigator.utils.qthelpersR­   R   R   t   setStyleSheetR   t   showt   exec_(   R­   t   appt   widget(    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pyt
   local_test.  s    	
t   __main__N(   R¬   t   qtpy.QtCoreR    R   t   qtpy.QtWidgetsR   R   R   R   R   R   R   R	   t#   anaconda_navigator.api.anaconda_apiR
   t   anaconda_navigator.utils.stylesR   t   anaconda_navigator.widgetsR   R   R   R   R   t"   anaconda_navigator.widgets.dialogsR   R   R´   Rª   (    (    (    sJ   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/packages.pyt   <module>   s   :(ÿ 	