ó
Ò:\c           @   së  d  Z  d d l Z d d l 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 d d l m Z d d l 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 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 e f d „  ƒ  YZ' 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 rçe, ƒ  n  d S(    s   Projects Tab.iÿÿÿÿN(   t   Qtt   QTimert   Signal(   t   QIcon(   t   QHBoxLayoutt   QPlainTextEditt
   QTabWidgett   QVBoxLayoutt   QWidget(   t   AnacondaAPI(   t   CONFt	   HOME_PATH(   t   WARNING_ICON(   t   ButtonDangert   ButtonNormalt   ButtonPrimaryt	   FrameBaset	   LabelBaset   SpacerHorizontalt   SpacerVerticalt
   WidgetBase(   t   DialogProblems(   t   ExplorerWidgett   FrameProjectDetailsHeaderc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR   %   s   t   FrameProjectDetailsFooterc           B   s   e  Z RS(    (   R   R   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR   )   s   t   LabelProjectLocationc           B   s   e  Z RS(    (   R   R   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR   -   s   t   TextProjectLocationc           B   s   e  Z RS(    (   R   R   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR   1   s   t   ButtonProjectProblemsc           B   s   e  Z RS(    (   R   R   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR   5   s   t   ButtonProjectSuggestionsc           B   s   e  Z RS(    (   R   R   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR   9   s   t
   EditorBasec           B   s   e  Z e ƒ  Z d  „  Z RS(   c         C   s   t  t |  ƒ j | ƒ d  S(   N(   t   superR   t   keyPressEvent(   t   selft   event(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR!   @   s    (   R   R   R   t	   sig_savedR!   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR   =   s   	t   ProjectEditorc           B   s‰   e  Z e e ƒ Z e ƒ  Z d  „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z RS(   c         O   sR  t  t |  ƒ j | | Ž  t |  ƒ |  _ t d ƒ |  _ t d ƒ |  _ t	 d ƒ |  _
 d  |  _ d  |  _ d  |  _ t ƒ  } | j |  j ƒ | j ƒ  | j |  j ƒ | j t ƒ  ƒ | j |  j
 ƒ t ƒ  } | j | ƒ | j |  j ƒ |  j | ƒ |  j j j |  j ƒ |  j j j |  j ƒ |  j j j |  j ƒ |  j
 j j |  j ƒ d  S(   Nt   Savet   Problemst   Suggestions(   R    R%   t   __init__R   t   editorR   t   button_saveR   t   button_problemsR   t   button_suggestionst   Nonet   original_textt   problemst   suggestionsR   t	   addWidgett
   addStretchR   R   t	   addLayoutt	   setLayoutt   textChangedt   connectt   text_changedt   clickedt   savet   show_problemst   show_suggestions(   R"   t   argst   kwargst   layout_buttonst   layout(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR)   H   s,    				
	c         C   s’   t  d |  d |  j ƒ } |  j j ƒ  j ƒ  } |  j j ƒ  j | ƒ } | j ƒ  | j ƒ  } | j	 ƒ  |  j j
 ƒ  } | j | | ƒ | j ƒ  d S(   s   Display problems in a dialog.t   parentR0   N(   R   R0   R,   t   geometryt   topRightt   parentWidgett   mapToGlobalt   xt   widtht   yt   heightt   movet   show(   R"   t   dlgt   geo_tlt   tlRF   RH   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR;   h   s    c         C   s’   t  d |  d |  j ƒ } |  j j ƒ  j ƒ  } |  j j ƒ  j | ƒ } | j ƒ  | j ƒ  } | j	 ƒ  |  j j
 ƒ  } | j | | ƒ | j ƒ  d S(   s    Display suggestions in a dialog.RA   R0   N(   R   R1   R-   RB   RC   RD   RE   RF   RG   RH   RI   RJ   RK   (   R"   RL   RM   RN   RF   RH   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR<   r   s    c         C   s9   |  j  j ƒ  } | |  _ |  j j t ƒ |  j j ƒ  d S(   s   Save test to editor.N(   R*   t   toPlainTextR/   R+   t   setDisabledt   TrueR$   t   emit(   R"   t   text(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR:   |   s    	c         C   s0   |  j  ƒ  } |  j j | ƒ |  j j | ƒ d S(   s   Callback on text change.N(   t   is_dirtyt   sig_dirty_stateRR   R+   t
   setEnabled(   R"   t   dirty(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR8   ƒ   s    c         C   s   |  j  j ƒ  } | |  j k S(   s    Return if the document is dirty.(   R*   RO   R/   (   R"   t   current_text(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyRT   ‰   s    c         C   s   |  j  j ƒ  S(   s&   Return current plain text from editor.(   R*   RO   (   R"   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyRS   Ž   s    c         C   sz   |  j  j t ƒ |  j j t ƒ d |  _ d |  _ | rT | |  _ |  j  j t ƒ n  | rv | |  _ |  j j t ƒ n  d S(   s+   Store problems and suggestions for display.N(	   R,   t
   setVisiblet   FalseR-   R.   R0   t   suggetsionsRQ   R1   (   R"   R0   R1   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   set_info’   s    				c         C   s-   |  j  j | ƒ | |  _ |  j j t ƒ d S(   s   Set editor text.N(   R*   t   setPlainTextR/   R+   RP   RQ   (   R"   RS   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   set_text¡   s    	c         C   s   |  j  j ƒ  j ƒ  S(   s"   Get scroll value for vertical bar.(   R*   t   verticalScrollBart   value(   R"   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   scroll_value§   s    c         C   s   |  j  j ƒ  j | ƒ S(   s"   Set scroll value for vertical bar.(   R*   R_   t   setValue(   R"   R`   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   set_scroll_value«   s    c         C   s"   |  j  |  j |  j |  j g } | S(   s%   Return a list of the ordered widgets.(   R+   R,   R-   R*   (   R"   t   ordered_widgets(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyRd   ¯   s    (   R   R   R   t   boolRU   R$   R)   R;   R<   R:   R8   RT   RS   R\   R^   Ra   Rc   Rd   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR%   D   s   		 	
	
								t   ProjectsWidgetc           B   sª   e  Z d  Z e ƒ  Z e ƒ  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z e d „ Z d „  Z d „  Z RS(   s   Main projects widget.c         O   s  t  t |  ƒ j | | Ž  t ƒ  |  _ d  |  _ t ƒ  |  _ d  |  _	 d  |  _
 t |  _ d  |  _ t ƒ  |  _ t ƒ  |  _ t d ƒ |  _ t d ƒ |  _ t d ƒ |  _ t d ƒ |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t d |  ƒ |  _  |  j j! ƒ  } | j" t# j$ ƒ |  j j% |  j d ƒ |  j j% |  j  d ƒ |  j j& d ƒ |  j j' j( |  j) ƒ |  j j* ƒ  t+ ƒ  } | j, t- ƒ  ƒ | j, t- ƒ  ƒ | j, |  j ƒ | j. ƒ  | j, |  j ƒ | j, t- ƒ  ƒ | j, |  j ƒ | j, t- ƒ  ƒ | j, t- ƒ  ƒ t/ ƒ  } | j, t0 ƒ  ƒ | j, |  j ƒ | j1 | ƒ | j, t0 ƒ  ƒ | j, t0 ƒ  ƒ |  j j2 | ƒ t/ ƒ  } | j, |  j ƒ |  j2 | ƒ |  j  j3 j( |  j4 ƒ |  j  j5 j( |  j6 ƒ |  j j7 j( |  j8 ƒ |  j j7 j( |  j9 ƒ |  j j: j( |  j; ƒ |  j j< t= ƒ |  j j> t? ƒ d  S(	   Ns   Upload to Anaconda Cloudt   Cancels   <b>Project location</b>t    RA   t   Filest   EditiÐ  (@   R    Rf   R)   R	   t   apiR.   t   timerR   t   timer_content_changedt   project_patht   original_contentR
   t   configR   t   frame_projects_headerR   t   frame_projects_footerR   t   button_uploadR   t   button_cancelR   t   label_project_locationR   t   label_status_messageR   t   text_project_locationR   t   tab_detailsR   t   file_explorerR%   R*   t   tabBart   setFocusPolicyR    t   StrongFocust   addTabt   setIntervalt   timeoutR7   t   check_content_changet   startR   R2   R   R3   R   R   R4   R5   RU   t	   set_dirtyR$   R:   R9   t   uploadt   cancelt   sig_add_to_projectt   add_to_projectRY   RZ   t   set_current_folderR   (   R"   R=   R>   t   tabbart   layout_uploadt   layout_footerR@   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR)   ¾   sj    						
		c         C   s   |  j  j d j | ƒ ƒ d S(   s   Update brand.s   Upload to {0}N(   Rs   t   setTextt   format(   R"   t   brand(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   update_brand  s    c         C   sP   t  j j |  j t  j j | ƒ ƒ } y t j | | ƒ Wn t k
 rK n Xd S(   s   Add selected file to project.N(   t   ost   patht   joinRn   t   basenamet   shutilt   copyfilet	   Exception(   R"   t   fnamet	   file_path(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR†     s    	c         C   sž   |  j  rš t j j |  j  d ƒ } t j j | ƒ rš |  j j ƒ  } t | d ƒ  } | j ƒ  } Wd QX| | k r— | |  j	 k r— |  j
 |  j  ƒ q— qš n  d S(   s5   Check if content of anaconda-project changed outside.s   anaconda-project.ymlt   rN(   Rn   R   R   R‘   t   isfileR*   RS   t   opent   readRo   t   load_project(   R"   t   project_config_patht   current_contentt   ft   data(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR€     s    		c         C   s)   | r d n d } |  j  j d | ƒ d S(   s   Set dirty state editor tab.s   Edit*Rj   i   N(   Rx   t
   setTabText(   R"   t   stateRS   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR‚      s    c         C   s   |  j  j t ƒ d S(   s?   Before deleting a folder, ensure it is not the same as the cwd.N(   Ry   R‡   R   (   R"   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   before_delete%  s    c         C   s$   |  j  j d ƒ |  j j d ƒ d S(   s   Reset view for proect details.Rh   N(   Rw   R‹   R*   R^   (   R"   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   clear)  s    c         C   s$   |  j  j t ƒ |  j j t ƒ d S(   s   Cancel ongoing project process.N(   Rt   RY   RZ   Rs   RV   RQ   (   R"   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR„   .  s    c            s  | r | n d } g  } | d k	 r0 | j } n  | s< | ry | rZ | pT d j | ƒ } n | ri d } n  ˆ  j | ƒ n ˆ  j d j | j ƒ ƒ t ƒ  ˆ  _ ˆ  j j t	 ƒ ˆ  j j
 d ƒ ˆ  j j j ‡  f d †  ƒ ˆ  j j ƒ  ˆ  j j t	 ƒ ˆ  j j t ƒ d S(   s   Upload callback.Rh   s   
s   Upload failed!s$   Project <b>{0}</b> upload successfuli'  c              s   ˆ  j  d ƒ S(   NRh   (   t   update_status(    (   R"   (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   <lambda>K  Rh   N(   R.   t   errorsR‘   R¥   RŒ   t   nameR   Rl   t   setSingleShotRQ   R~   R   R7   R   Rs   RV   Rt   RY   RZ   (   R"   t   workert   outputt   errorR§   t	   error_msg(    (   R"   sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   _upload4  s&    	c         C   s   |  j  j | ƒ d S(   s   Update Status Bar message.N(   Rv   R‹   (   R"   t   message(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR¥   P  s    c         C   sq  |  j  j ƒ  s: |  j d ƒ |  j j ƒ  |  j d ƒ d S|  j  j |  j ƒ } | j pj t j	 j
 |  j ƒ } |  j j ƒ  r¥ |  j d j | j ƒ ƒ |  j j ƒ  n  |  j  j |  j ƒ } | j sW|  j  j ƒ  \ } } |  j j t ƒ |  j  j | d | d | ƒ} | j j |  j ƒ | j | _ |  j j t ƒ d j | j ƒ } |  j | ƒ n |  j d j | ƒ ƒ d S(	   s!   Upload project to Anaconda Cloud.s$   You need to log in to Anaconda CloudRh   Ns   Saving project <b>{0}</b>t   usernamet   tokens/   Uploading project <b>{0}</b> to Anaconda Cloud.s2   Problems must be fixed before uploading <b>{0}</b>(   Rk   t   is_logged_inR¥   t   sig_login_requestedRR   t   project_loadRn   R¨   R   R   R’   R*   RT   RŒ   R:   R0   t   get_username_tokenRt   RY   RQ   t   project_uploadt   sig_finishedR7   R®   Rs   RV   RZ   (   R"   t   projectR¨   R°   R±   Rª   t   msg(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyRƒ   T  s8    			c         C   sŠ   t  j j |  j d ƒ } |  j j ƒ  } t  j j | ƒ rc t | d ƒ  } | j | ƒ } Wd QXn  |  j	 |  j d t
 ƒ|  j j ƒ  d S(   s   Save current edited project.s   anaconda-project.ymlt   wNt	   overwrite(   R   R   R‘   Rn   R*   RS   R™   Rš   t   writeRœ   RZ   R$   RR   (   R"   R   R    RŸ   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR:   ~  s    	c         C   sõ   | |  _  |  j j | ƒ } | |  _ |  j j | ƒ |  j j | ƒ t j	 j
 | d ƒ } d } t j	 j | ƒ r˜ t | d ƒ  } | j ƒ  } Wd QXn  | |  _ | rº |  j j | ƒ n  |  j t ƒ |  j j | ƒ |  j | ƒ |  j d ƒ d S(   s%   Load a conda project located at path.s   anaconda-project.ymlRh   R˜   N(   Rn   Rk   R´   R¸   Rw   R‹   Ry   R‡   R   R   R‘   R™   Rš   R›   Ro   R*   R^   R‚   RZ   t   set_homet   update_error_statusR¥   (   R"   Rn   R»   R¸   R   R    RŸ   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyRœ   Š  s$    				c         C   sR   |  j  j ƒ  } | g } | |  j j ƒ  7} | |  j j ƒ  7} | |  j g 7} | S(   s%   Return a list of the ordered widgets.(   Rx   Rz   Ry   Rd   R*   Rs   (   R"   Rˆ   Rd   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyRd   £  s    	c         C   sv   | rr | j  } | j } | s$ | rF t t ƒ } |  j j d | ƒ n |  j j d t ƒ  ƒ |  j j | | ƒ n  d S(   s    Update problems and suggestions.i   N(   R0   R1   R   R   Rx   t
   setTabIconR*   R\   (   R"   R¸   R0   R1   t   icon(    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyR¾   ¬  s    		(   R   R   t   __doc__R   R$   R³   R)   RŽ   R†   R€   R‚   R£   R¤   R„   R®   R¥   Rƒ   R:   RQ   Rœ   Rd   R¾   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyRf   ¸   s$   			E										*			c          C   sD   d d l  m }  |  ƒ  } t ƒ  } | j ƒ  | j ƒ  | j ƒ  d S(   s"   Run local test for project widget.iÿÿÿÿ(   t   qapplicationN(   t"   anaconda_navigator.utils.qthelpersRÂ   Rf   t   showMaximizedRd   t   exec_(   RÂ   t   appRº   (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt
   local_test¹  s    		

t   __main__(.   RÁ   R   R“   t   qtpy.QtCoreR    R   R   t
   qtpy.QtGuiR   t   qtpy.QtWidgetsR   R   R   R   R   t#   anaconda_navigator.api.anaconda_apiR	   t   anaconda_navigator.configR
   R   t    anaconda_navigator.static.imagesR   t   anaconda_navigator.widgetsR   R   R   R   R   R   R   R   t+   anaconda_navigator.widgets.dialogs.projectsR   t#   anaconda_navigator.widgets.explorerR   R   R   R   R   R   R   R   R%   Rf   RÇ   R   (    (    (    sB   lib/python2.7/site-packages/anaconda_navigator/widgets/projects.pyt   <module>   s0   (:tÿ 	
