ó
Ò:\c           @` s!  d  Z  d d l m Z m Z m Z d d l 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 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 re" ƒ  n  d S(   s   Projects Tab.i    (   t   absolute_importt   divisiont   print_function(   t   Qtt   Signal(   t   QHBoxLayoutt   QMenut   QVBoxLayout(   t   AnacondaAPI(   t	   constants(   t   load_style_sheet(   t   ButtonToolNormalt   FrameEnvironmentsListt   FrameEnvironmentsPackagest   FrameTabHeadert
   WidgetBase(   t   ButtonToggleCollapset   LineEditSearch(   t   ListItemEnvt   ListWidgetEnv(   t   ProjectsWidgett   ProjectsTabc           B` s  e  Z d  Z e e e e ƒ Z e ƒ  Z e ƒ  Z e ƒ  Z e ƒ  Z	 e ƒ  Z
 e ƒ  Z d d „ Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d d
 „ Z d d „ Z d „  Z d e d „ Z d „  Z e d d d d d „ ƒ Z d d „ Z RS(   s   Projects management tab.c         C` s  t  t |  ƒ j | ƒ t ƒ  |  _ d  |  _ d  |  _ d  |  _ t	 |  ƒ |  _
 t |  ƒ |  _ t ƒ  |  _ t ƒ  |  _ t d d ƒ |  _ t d d ƒ |  _ t d d ƒ |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t |  j
 _ |  j j  t! j" ƒ |  j j# d ƒ |  j j$ d ƒ |  j j$ d ƒ |  j j$ d ƒ t% ƒ  } | j& |  j ƒ |  j j' | ƒ t( ƒ  } | 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+ |  j. ƒ |  j j* j+ |  j/ ƒ |  j j0 j+ |  j1 ƒ |  j j2 j+ |  j3 ƒ |  j j4 j+ |  j4 ƒ |  j5 ƒ  d  S(   Nt   textt   Createt   Importt   Removes   Search Projectst   createt   importt   removei
   i   i   (6   t   superR   t   __init__R   t   apit   Nonet   current_projectt   style_sheett   projectsR   t
   frame_listR   t   frame_widgetR   t   frame_header_leftt   frame_header_rightR   t   button_createt   button_importt   button_removeR   t   button_toggle_collapseR   t   listR   t   widgetR   t	   menu_listR   t   text_searcht   Truet   is_expandedt   setContextMenuPolicyR   t   CustomContextMenut   setPlaceholderTextt   setObjectNameR   t	   addWidgett	   setLayoutR   t	   addLayoutt   clickedt   connectt   expand_collapset   sig_create_requestedt   sig_import_requestedt   sig_remove_requestedt   sig_item_selectedt   _item_selectedt   textChangedt   filter_listt   sig_login_requestedt   refresh(   t   selft   parentt   layout_header_leftt   layout_buttonst   layout_list_buttonst   layout_widgett   layout_main(    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyR   :   sf    								c         C` s   |  j  d | ƒ d S(   s5   Setup tab content and populates the list of projects.R#   N(   t   set_projects(   RE   R#   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyt   setup‚   s    c   	      C` sø   | |  _  | d k r< x$ | j ƒ  D] \ } } | } Pq" Wn  |  j j ƒ  | |  _ d } xc t | j ƒ  ƒ D]O \ } \ } } t d | d | ƒ } | |  j k rª | } n  |  j j | ƒ qk Wt	 } |  j j
 | d | ƒ|  j |  j ƒ |  j ƒ  d S(   s   Populate the list of projects.i    t   prefixt   namet   loadingN(   R#   R    t   itemsR,   t   clearR!   t	   enumerateR   t   addItemt   Falset   setCurrentRowt   set_project_widgetRB   (	   RE   R#   R!   t	   proj_patht	   proj_namet   selected_item_rowt   it   itemRP   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyRL   †   s"    		%	c         C` s:   | d k r n |  j j | ƒ |  j ƒ  |  j j ƒ  d S(   s   Set the project widget.N(   R    R-   t   load_projectRD   t	   sig_readyt   emit(   RE   t   project_path(    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyRW      s
    
c         C` s   |  j  j ƒ  d S(   s   Prerpare widget before delete.N(   R-   t   before_delete(   RE   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyRa   §   s    c         C` s   |  j  j | ƒ d S(   s   Update service brand.N(   R-   t   update_brand(   RE   t   brand(    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyRb   «   s    c         C` sB   | j  ƒ  } | |  _ |  j | ƒ |  j j | j | t j ƒ d S(   s>   Callback to emit signal as user selects an item from the list.N(   RN   R!   t   set_loadingR?   R_   RO   t   Ct   TAB_PROJECTS(   RE   R\   RN   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyR@   ±   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   RO   N(   R,   RQ   RO   t   appendt   sortedt   indexR   t
   insertItemRV   t   scrollToItemRd   R0   (   RE   RO   R\   t
   item_namesRi   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.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$   R1   t   hideRU   t   showR0   (   RE   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyR;   Ã   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   t   lowert   rangeR,   t   countR\   t	   setHiddenRO   R-   t	   isVisiblet   repaint(   RE   R   R[   R\   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyRB   Ì   s    c         C` sR   |  j  g } | |  j j ƒ  7} | |  j |  j |  j g 7} | |  j j ƒ  7} | S(   s%   Return a list of the ordered widgets.(   R/   R,   t   ordered_widgetsR(   R)   R*   R-   (   RE   t   next_widgetRv   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyRv   Ö   s    c         C` s_   |  j  } t | ƒ } | s+ |  j j ƒ  n  |  j j | ƒ |  j j | ƒ |  j j | ƒ d S(   sA   Refresh the enabled/disabled status of the widget and subwidgets.N(   R#   t   boolR-   RR   t
   setVisibleR*   t
   setEnabled(   RE   R#   t   active(    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyRD   à   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(   RS   R,   RQ   RN   Rd   RV   (   RE   RN   t   valuet   rowR\   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyRd   ê   s
    "c         C` sg   |  j  j | ƒ |  j j | ƒ |  j j | ƒ |  j j | ƒ |  j j | ƒ | rc |  j ƒ  n  d S(   s4   Change the enabled status of widgets and subwidgets.N(   R,   Rz   R(   R)   R*   t   widget_projectst   set_widgets_enabledRD   (   RE   R|   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyR   ò   s    i    c         C` s   d S(   s   Update status bar.N(    (   t   actiont   messageR|   t	   max_value(    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyt   update_statusü   t    c         C` s8   | d k r t ƒ  |  _ n	 | |  _ |  j |  j ƒ d S(   s   Update custom CSS style sheet.N(   R    R
   R"   t   setStyleSheet(   RE   R"   (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyt   update_style_sheet  s    	N(   t   __name__t
   __module__t   __doc__R   t   objectR?   R<   R=   R>   t   sig_upload_requestedRC   R^   R    R   RM   RL   RW   Ra   Rb   R@   Rm   R;   RB   Rv   RD   R0   Rd   R   t   staticmethodRƒ   R†   (    (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyR   (   s2   						H		
						

	
	
c          C` sD   d d l  m }  |  ƒ  } t ƒ  } | j ƒ  | j ƒ  | j ƒ  d S(   s   Run local test for project tab.i    (   t   qapplicationN(   t"   anaconda_navigator.utils.qthelpersR   R   R†   t   showMaximizedt   exec_(   R   t   appt   w(    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyt
   local_test  s    		

t   __main__N($   R‰   t
   __future__R    R   R   t   qtpy.QtCoreR   R   t   qtpy.QtWidgetsR   R   R   t#   anaconda_navigator.api.anaconda_apiR   t   anaconda_navigator.utilsR	   Re   t   anaconda_navigator.utils.stylesR
   t   anaconda_navigator.widgetsR   R   R   R   R   t(   anaconda_navigator.widgets.helperwidgetsR   R   t)   anaconda_navigator.widgets.lists.projectsR   R   t#   anaconda_navigator.widgets.projectsR   R   R“   R‡   (    (    (    sG   lib/python2.7/site-packages/anaconda_navigator/widgets/tabs/projects.pyt   <module>   s   (	ã	
