ó
Ò:\c           @` sG  d  Z  d d l m Z m Z m Z d d l m Z m Z m Z d d l	 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 d d	 l m Z d d
 l m Z m Z m Z m Z m Z d d l m Z m Z d d l  m! Z! m" Z" d d l# m$ Z$ d e f d „  ƒ  YZ% d „  Z& e' d k rCe& ƒ  n  d S(   s   Environments Tab.i    (   t   absolute_importt   divisiont   print_function(   t   QPointt   Qtt   Signal(   t   QHBoxLayoutt   QMenut   QVBoxLayout(   t   AnacondaAPI(   t	   constants(   t   launch(   t   logger(   t   load_style_sheet(   t   ButtonToolNormalt   FrameEnvironmentsListt   FrameEnvironmentsPackagest   FrameTabHeadert
   WidgetBase(   t   ButtonToggleCollapset   LineEditSearch(   t   ListItemEnvt   ListWidgetEnv(   t   CondaPackagesWidgett   EnvironmentsTabc           B` sL  e  Z d  Z d d g Z e ƒ  Z e e e e ƒ Z e ƒ  Z e ƒ  Z	 e ƒ  Z
 e ƒ  Z e e e ƒ Z e e ƒ Z e e ƒ Z e e e ƒ Z d d „ Z d „  Z d „  Z d „  Z d „  Z d d d „ Z d	 „  Z d
 „  Z d „  Z d „  Z d d „ Z d d „ Z d „  Z d e d „ Z d „  Z  d d d d d „ Z! d d „ Z" RS(   s   Conda environments tab.s   anaconda-navigatort   _licensec         C` s¦  t  t |  ƒ j | ƒ t ƒ  |  _ d |  _ d |  _ t ƒ  |  _	 t
 |  ƒ |  _ t |  ƒ |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t d d ƒ |  _ t d d ƒ |  _ t d d ƒ |  _ t d d ƒ |  _ t ƒ  |  _ t d |  ƒ |  _ t |  j _ |  j j d ƒ |  j j  t! j" ƒ |  j j# d ƒ |  j j# d	 ƒ |  j j# d
 ƒ |  j j# d ƒ |  j j$ j% t& ƒ t' ƒ  } | j( |  j ƒ |  j	 j) | ƒ t* ƒ  } | j( |  j ƒ | j( |  j ƒ | j( |  j ƒ | j( |  j ƒ t' ƒ  } | j( |  j	 ƒ | j( |  j ƒ | j+ | ƒ |  j j) | ƒ t* ƒ  } | j( |  j ƒ |  j j) | ƒ t* ƒ  } | j( |  j d ƒ | j( |  j d ƒ | j( |  j d ƒ |  j) | ƒ |  j j, j- |  j. ƒ |  j j, j- |  j/ ƒ |  j j, j- |  j0 ƒ |  j j, j- |  j1 ƒ |  j j, j- |  j2 ƒ |  j j3 j- |  j4 ƒ |  j j5 j- |  j6 ƒ |  j j7 j- |  j7 ƒ |  j j8 j- |  j8 ƒ |  j j9 j- |  j9 ƒ |  j j: j- |  j: ƒ |  j j; j- |  j; ƒ d S(   s   Conda environments tab.t   textt   Createt   Clonet   Importt   Removet   parents   Search Environmentst   createt   clonet   importt   removei
   i   i   N(<   t   superR   t   __init__R	   t   apit   Nonet   current_prefixt   style_sheetR   t   frame_header_leftR   t
   frame_listR   t   frame_widgetR   t   text_searchR   t   listR   t	   menu_listR   t   button_createt   button_clonet   button_importt   button_removeR   t   button_toggle_collapseR   t   widgett   Truet   is_expandedt   setPlaceholderTextt   setContextMenuPolicyR   t   CustomContextMenut   setObjectNamet   textbox_searcht   set_icon_visibilityt   FalseR   t	   addWidgett	   setLayoutR   t	   addLayoutt   clickedt   connectt   expand_collapset   sig_create_requestedt   sig_clone_requestedt   sig_import_requestedt   sig_remove_requestedt   textChangedt   filter_listt   sig_item_selectedt   _item_selectedt	   sig_readyt   sig_channels_requestedt   sig_update_index_requestedt   sig_cancel_requestedt   sig_packages_action_requested(   t   selfR   t   layout_header_leftt   layout_buttonst   layout_list_buttonst   layout_widgett   layout_main(    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyR%   A   sv    							
c         C` sj   |  j  t ƒ | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ |  _ |  j | ƒ |  j | ƒ d S(   s9   Setup tab content and populates the list of environments.t   processed_infot   __environmentst   packagest   default_prefixN(   t   set_widgets_enabledR>   t   getR(   t   set_environmentst   set_packages(   RR   t
   conda_datat   conda_processed_infot   environmentsRZ   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyt   setup–   s    c         C` sÏ   |  j  j ƒ  d } xy t | j ƒ  ƒ D]e \ } \ } } t d | d | ƒ } | j j j |  j ƒ | |  j	 k r{ | } n  |  j  j
 | ƒ q& W|  j  j | d t ƒ|  j ƒ  |  j  j |  j  j | ƒ ƒ d S(   s"   Populate the list of environments.i    t   prefixt   namet   loadingN(   R.   t   cleart	   enumeratet   itemsR   t   button_optionsRB   RC   t   show_environment_menuR(   t   addItemt   setCurrentRowR6   RJ   t   scrollToItemt   item(   RR   Rb   t   selected_item_rowt   it
   env_prefixt   env_nameRo   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyR^       s    %	
c         C` sI   | \ } } |  j  j | | ƒ |  j t ƒ |  j d |  j d t ƒ d S(   s   Set packages callback.Rd   t   valueN(   R5   Rc   R\   R6   t   set_loadingR(   R>   (   RR   t   workert   outputt   errorRZ   t
   model_data(    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyt   _set_packages¯   s    c         C` s;   |  j  j | d |  j d |  j ƒ} | j j |  j ƒ d S(   s   Set packages widget content.Rd   t	   blacklistN(   R&   t   process_packagesR(   t	   BLACKLISTt   sig_chain_finishedRC   Rz   (   RR   RZ   Rv   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyR_   ¶   s    	c         ` sg  ˆ  j  j ƒ  ˆ  j  j d ƒ } | j j ‡  f d †  ƒ xI d d d g D]8 } ˆ  j  j d | ƒ } | j j | ‡  f d † ƒ qH Wˆ  j j ƒ  } | j } t | t	 ƒ s· | d k rØ | j j ƒ  } t | d ƒ } n  t d d ƒ } | j j | ƒ }	 ˆ  j  j |	 | ƒ ˆ  j  j ƒ  }
 |
 d	 j t j d
 | ƒ ƒ |
 d j t j d | ƒ ƒ ˆ  j  j ƒ  d S(   s"   Show the environment actions menu.s   Open Terminalc           ` s   ˆ  j  d ƒ S(   Nt   terminal(   t   open_environment_in(    (   RR   (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyt   <lambda>Â   t    t   Pythont   IPythons   Jupyter Notebooks
   Open with c         ` s   ˆ  j  | j ƒ  ƒ S(   N(   R€   t   lower(   t   xt   w(   RR   (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyR   È   R‚   i    i   t   ipythoni   t   notebookN(   R/   Rg   t	   addActiont	   triggeredRC   R.   t   currentItemRd   t
   isinstancet   boolR'   Rj   t   widthR   t   mapToGlobalt   movet   actionst
   setEnabledR   t
   check_progt   exec_(   RR   Rt   t   positiont	   menu_itemt   wordt   current_itemRd   R   t   pointt   parent_positionR’   (    (   RR   sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyRk   ½   s(    			c         C` sU   |  j  j ƒ  j } t j d | | ƒ | d k rA t j | ƒ n t j | | ƒ d S(   s.   Open selected environment in console terminal.s   %s, %sR   N(   R.   RŒ   Rd   R   t   debugR   t   consolet   py_in_console(   RR   t   whichRd   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyR€   Ý   s
    c         C` s6   |  j  d | j ƒ |  j j | j | j t j ƒ d S(   s>   Callback to emit signal as user selects an item from the list.Rd   N(   Ru   Rd   RK   t   emitRe   t   Ct   TAB_ENVIRONMENT(   RR   Ro   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyRL   é   s    c         C` s¤   g  |  j  j ƒ  D] } | j ^ q } | j | ƒ t  t | ƒ ƒ j | ƒ d } t d | ƒ } |  j  j | | ƒ |  j  j | ƒ |  j  j	 | ƒ | j
 t ƒ d S(   sA   Creates a temporal item on list while creation becomes effective.i   Re   N(   R.   Ri   Re   t   appendt   sortedt   indexR   t
   insertItemRm   Rn   Ru   R6   (   RR   Re   Ro   t
   item_namesR¥   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyt   add_temporal_itemî   s    %c         C` sE   |  j  j r( |  j  j ƒ  t |  j  _ n |  j  j ƒ  t |  j  _ d S(   s%   Expand or collapse the list selector.N(   R+   R7   t   hideR>   t   showR6   (   RR   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyRD   ù   s
    c         C` s†   |  j  j ƒ  j ƒ  } xj t |  j j ƒ  ƒ D]S } |  j j | ƒ } | j | | j j ƒ  k ƒ | j	 j
 ƒ  s+ | j	 j ƒ  q+ q+ Wd S(   s   Filter items in list by name.N(   R-   R   R…   t   rangeR.   t   countRo   t	   setHiddenRe   R5   t	   isVisiblet   repaint(   RR   R   Rq   Ro   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyRJ     s    c         C` s¸   | d k	 r" |  j j j | ƒ n  |  j g } | |  j j ƒ  7} | |  j |  j |  j	 |  j
 |  j j |  j j |  j j |  j j |  j j |  j j |  j j |  j j |  j j g 7} | S(   s%   Return a list of the ordered widgets.N(   R'   R5   t   table_last_rowt   add_focus_widgetR-   R.   t   ordered_widgetsR0   R1   R2   R3   t   combobox_filtert   button_channelst   button_updateR<   t   tablet   button_applyt   button_cleart   button_cancel(   RR   t   next_widgetR²   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyR²     s&    								c         C` s9   |  j  |  j j k } |  j j | ƒ |  j j | ƒ d S(   sA   Refresh the enabled/disabled status of the widget and subwidgets.N(   R(   R&   t   ROOT_PREFIXR1   t   setDisabledR3   (   RR   t   is_root(    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyt   refresh%  s    c         C` sZ   xS t  |  j j ƒ  ƒ D]< \ } } | j | k r | j | ƒ |  j j | ƒ Pq q Wd S(   s0   Set the item given by `prefix` to loading state.N(   Rh   R.   Ri   Rd   Ru   Rm   (   RR   Rd   Rt   t   rowRo   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyRu   +  s
    "c         C` sw   |  j  j | ƒ |  j j | ƒ |  j j | ƒ |  j j | ƒ |  j j | ƒ |  j j | ƒ | rs |  j ƒ  n  d S(   s4   Change the enabled status of widgets and subwidgets.N(	   R.   R“   R0   R1   R2   R3   R5   R\   R¾   (   RR   Rt   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyR\   3  s    R‚   c      	   C` s)   |  j  j d | d | d | d | ƒ d S(   s&   Update widget status and progress bar.t   actiont   messageRt   t	   max_valueN(   R5   t   update_status(   RR   RÀ   RÁ   Rt   RÂ   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyRÃ   >  s    c         C` s^   | d k r t ƒ  |  _ n	 | |  _ |  j |  j ƒ |  j j |  j ƒ |  j j |  j ƒ d S(   s   Update custom CSS stylesheet.N(   R'   R   R)   t   setStyleSheetR.   t   update_style_sheetR/   (   RR   R)   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyRÅ   D  s    	N(#   t   __name__t
   __module__t   __doc__R}   R   RM   t   objectRK   RE   RF   RG   RH   RN   RO   RP   RQ   R'   R%   Rc   R^   Rz   R_   Rk   R€   RL   R¨   RD   RJ   R²   R¾   R6   Ru   R\   RÃ   RÅ   (    (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyR   &   s:   					U	
			 					
		c          C` sZ   d d l  m }  d d l m } |  ƒ  } t ƒ  } | j | ƒ  ƒ | j ƒ  | j ƒ  d S(   s   Run local test.i    (   t   qapplication(   R   N(   t"   anaconda_navigator.utils.qthelpersRÊ   t   anaconda_navigator.utils.stylesR   R   RÄ   Rª   R•   (   RÊ   R   t   appR5   (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyt
   local_testR  s    		
t   __main__N((   RÈ   t
   __future__R    R   R   t   qtpy.QtCoreR   R   R   t   qtpy.QtWidgetsR   R   R   t#   anaconda_navigator.api.anaconda_apiR	   t   anaconda_navigator.utilsR
   R¡   R   t   anaconda_navigator.utils.logsR   RÌ   R   t   anaconda_navigator.widgetsR   R   R   R   R   t(   anaconda_navigator.widgets.helperwidgetsR   R   t-   anaconda_navigator.widgets.lists.environmentsR   R   t+   anaconda_navigator.widgets.manager.packagesR   R   RÎ   RÆ   (    (    (    sK   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/environments.pyt   <module>   s"   (ÿ -	