ó
‹²,]c           @  s6  d  Z  d d l m Z d d l j Z d d l Z d d l m Z m	 Z	 m
 Z
 d d l 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 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 „  Z  e! d k r2e  ƒ  n  d S(   s   Project Exploreriÿÿÿÿ(   t   print_functionN(   t   Qtt   Signalt   Slot(   t   QAbstractItemViewt   QHBoxLayoutt   QHeaderViewt   QLabelt   QMessageBoxt   QVBoxLayoutt   QWidget(   t   _(   t   to_text_string(   t   misc(   t   create_action(   t   FilteredDirViewt   ExplorerTreeWidgetc           B  sh   e  Z d  Z e ƒ  Z e d „ Z d „  Z e e	 ƒ d „  ƒ Z
 d „  Z d „  Z e ƒ  d d „ ƒ Z RS(   s   Explorer tree widgetc         C  sS   t  j |  | ƒ d  |  _ |  j t  j ƒ | |  _ |  j t ƒ |  j	 t  j
 ƒ d  S(   N(   R   t   __init__t   Nonet   last_foldert   setSelectionModet   ExtendedSelectiont   show_hscrollbart   setDragEnabledt   Truet   setDragDropModet   DragDrop(   t   selft   parentR   (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyR   #   s    		c         C  sX   t  j |  ƒ } t |  t d ƒ d |  j ƒ} | j |  j ƒ |  j |  j ƒ | | g S(   s!   Setup context menu common actionss   Show horizontal scrollbart   toggled(   R   t   setup_common_actionsR   R   t   toggle_hscrollbart
   setCheckedR   (   R   t   actionst   hscrollbar_action(    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyR   .   s    c         C  s‡   |  j  j j d | ƒ | |  _ |  j ƒ  j | ƒ |  j ƒ  j t j ƒ y |  j ƒ  j	 t
 j ƒ Wn |  j ƒ  j t
 j ƒ n Xd S(   s   Toggle horizontal scrollbarR   N(   t   parent_widgett   sig_option_changedt   emitR   t   headert   setStretchLastSectiont   setHorizontalScrollModeR   t   ScrollPerPixelt   setSectionResizeModeR   t   ResizeToContentst   setResizeMode(   R   t   checked(    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyR   ;   s    	c         C  sa   |  j  | j ƒ  ƒ } | rS |  j | ƒ } t j | ƒ rF | j ƒ  q] | j ƒ  n
 | j ƒ  d S(   s   Reimplement Qt methodN(   t   indexAtt   post   get_filenamet   ospt   isdirt   acceptProposedActiont   ignore(   R   t   eventt   indext   dst(    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt   dragMoveEventH   s    c      	   C  s#  | j  ƒ  | j ƒ  } | t j t j f k r2 d S|  j |  j | j ƒ  ƒ ƒ } d
 \ } } g  | j	 ƒ  j
 ƒ  D] } t | j ƒ  ƒ ^ qo } t | ƒ d k rÇ t j t j Bt j Bt j Bt j B} n t j t j B} xE| D]=}	 |	 | k rö qÞ n  t j | t j |	 ƒ ƒ }
 t j |
 ƒ r| d k	 s8| d k	 rG| rqÞ qqt j |
 ƒ rÜt j |  t d ƒ t d ƒ |
 | ƒ } | t j k r“qÞ q| t j k r¦Pq| t j k r¾t } q| t j k rt } qÞ qqt j |  t d ƒ t d ƒ |
 t j ƒ | j t j ƒ d Sn  y | t j k rct j |	 ƒ rPt j  |	 | ƒ q¨t j! |	 | ƒ nE t j |	 ƒ r…t" j# |	 | ƒ n t j$ |	 | ƒ |  j% j& j' |	 ƒ WqÞ t( k
 r} | t j k rÙt d ƒ } n t d ƒ } t j |  t d ƒ t d	 ƒ | |	 t | ƒ f ƒ qÞ XqÞ Wd S(   s   Reimplement Qt methodNi   s   Project explorers>   File <b>%s</b> already exists.<br>Do you want to overwrite it?s    Folder <b>%s</b> already exists.t   copyt   moves   Project Explorers9   <b>Unable to %s <i>%s</i></b><br><br>Error message:<br>%s(   NN()   R4   t
   dropActionR   t
   MoveActiont
   CopyActionR0   R.   R/   R   t   mimeDatat   urlsR   t   toStringt   lenR   t   Yest   YesAllt   Not   NoAllt   CancelR1   t   joint   basenamet   existst   isfilet   warningR   R   t   criticalt   Okt   setDropActiont   shutilR9   t   copytreeR   t	   move_fileR:   R#   t   removedR%   t   EnvironmentError(   R   R5   t   actionR7   t
   yes_to_allt	   no_to_allt   urlt   src_listt   buttonst   srct	   dst_fnamet   answert   errort
   action_str(    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt	   dropEventT   sn    
.(							c         C  sš   | d k r |  j ƒ  } n  t | ƒ d k } d } x` | D]X } | |  j j d k rf |  j j ƒ  q: |  j | | | ƒ } | d k	 r: | r: Pq: q: Wd S(   s   Delete filesi   i    N(   R   t   get_selected_filenamesRA   t
   proxymodelt	   path_listt   sig_delete_projectR%   t   delete_file(   R   t   fnamest   multipleRU   t   fname(    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt   delete™   s    N(   t   __name__t
   __module__t   __doc__R   Rc   R   R   R   R   t   boolR   R8   R_   R   Rh   (    (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyR      s   				Et   ProjectExplorerWidgetc           B  s}   e  Z d  Z e e ƒ Z e e e ƒ Z e e ƒ Z	 g  e
 e
 d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   Project Explorerc         C  sK   t  j |  | ƒ d  |  _ d  |  _ | |  _ | |  _ | |  _ |  j ƒ  d  S(   N(	   R
   R   R   t
   treewidgett   emptywidgett   name_filterst   show_allR   t   setup_layout(   R   R   Rp   Rq   R   (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyR   °   s    					c         C  sO   t  |  ƒ |  _ t ƒ  } | j d d d d ƒ | j |  j ƒ |  j | ƒ d S(   s$   Setup project explorer widget layouti    N(   R   Ro   R	   t   setContentsMarginst	   addWidgett	   setLayout(   R   t   layout(    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyRr   º   s
    	c         C  s   d S(   s'   Perform actions before widget is closedN(    (   R   (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt   closing_widgetÄ   s    c         C  s™   | d k	 rQ | j t j ƒ d } |  j j t j | ƒ ƒ |  j j | g ƒ n  |  j j ƒ  y# |  j j	 |  j j
 | ƒ t ƒ Wn t k
 r” n Xd S(   s   Set the project directoryiÿÿÿÿN(   R   t   splitR1   t   sepRn   t   set_root_patht   dirnamet   set_folder_namest   setup_project_viewt   setExpandedt	   get_indexR   t	   TypeError(   R   t	   directoryt   project(    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt   set_project_dirÈ   s    c         C  s   |  j  j ƒ  |  j j ƒ  d S(   s   Show an empty viewN(   Rn   t   hideRo   t   show(   R   (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt   clearÕ   s    c         C  s·   |  j  d k	 r |  j  j ƒ  n  t |  |  j ƒ |  _  |  j  j d |  j d |  j ƒ |  j  j ƒ  |  j	 j ƒ  |  j  j
 ƒ  |  j ƒ  j |  j  ƒ |  j | ƒ |  j  j j |  j ƒ d S(   s   Setup projectRp   Rq   N(   Rn   R   R„   R   R   t   setupRp   Rq   t
   setup_viewRo   R…   Rv   Rt   Rƒ   Rc   t   connectt   delete_project(   R   R   (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt   setup_projectÚ   s    
c      	   C  së   |  j  rç |  j  j } t j t j B} t j |  t d ƒ t d ƒ j d t j	 | ƒ ƒ | ƒ } | t j k rç y' |  j
 ƒ  t j t j | d ƒ ƒ Wqä t k
 rà } t j |  t d ƒ t d ƒ j d | d t | ƒ ƒ ƒ qä Xqç n  d	 S(
   sC   Delete current project without deleting the files in the directory.t   Deletesš   Do you really want to delete <b>{filename}</b>?<br><br><b>Note:</b> This action will only delete the project. Its files are going to be preserved on disk.t   filenames   .spyprojects   Project ExplorersQ   <b>Unable to delete <i>{varpath}</i></b><br><br>The error message was:<br>{error}t   varpathR]   N(   t   current_active_projectt	   root_pathR   RB   RD   RK   R   t   formatR1   RH   t   close_projectRO   t   rmtreeRG   RS   RL   R   (   R   t   pathRY   R\   R]   (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyRŠ   î   s    		
(   Ri   Rj   Rk   R   Rl   t   redirect_stdiot   strt   objectR$   t   sig_open_fileR   R   Rr   Rw   Rƒ   R†   R‹   RŠ   (    (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyRm   ª   s   		
				t   ProjectExplorerTestc           B  s   e  Z d d  „ Z RS(   c           s}  t  j ˆ  ƒ t ƒ  } ˆ  j | ƒ t ˆ  d t ƒˆ  _ | d  k	 rP | ˆ  _ n t	 j
 t	 j t ƒ ƒ ˆ  _ ˆ  j j ˆ  j ƒ | j ˆ  j ƒ t ƒ  } | j | ƒ t d ƒ } | j t j ƒ | j | ƒ t ƒ  ˆ  _ | j ˆ  j ƒ ˆ  j j j ˆ  j j ƒ t ƒ  } | j | ƒ t d ƒ } | j t j ƒ | j | ƒ t ƒ  ˆ  _ | j ˆ  j ƒ ˆ  j j j ‡  f d †  ƒ d  S(   NRq   s   <b>Open file:</b>s   <b>Option changed:</b>c           s   ˆ  j  j d |  | f ƒ S(   Ns   option_changed: %r, %r(   t   label3t   setText(   t   xt   y(   R   (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt   <lambda>'  t    (   R
   R   R	   Ru   Rm   R   t   explorerR   R   R1   R{   t   abspatht   __file__R‹   Rt   R   t	   addLayoutR   t   setAlignmentR   t
   AlignRightt   label1R˜   R‰   R›   Rš   R$   (   R   R   t   vlayoutt   hlayout1t   labelt   hlayout3(    (   R   s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyR   	  s4    			N(   Ri   Rj   R   R   (    (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyR™     s   c          C  sJ   d d l  m }  |  ƒ  } t ƒ  } | j d d ƒ | j ƒ  | j ƒ  d  S(   Niÿÿÿÿ(   t   qapplicationiú   ià  (   t   spyder.utils.qthelpersR«   R™   t   resizeR…   t   exec_(   R«   t   appt   test(    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyR°   *  s    		
t   __main__("   Rk   t
   __future__R    t   os.pathR”   R1   RO   t   qtpy.QtCoreR   R   R   t   qtpy.QtWidgetsR   R   R   R   R   R	   R
   t   spyder.config.baseR   t   spyder.py3compatR   t   spyder.utilsR   R¬   R   t   spyder.widgets.explorerR   R   Rm   R™   R°   Ri   (    (    (    s?   lib/python2.7/site-packages/spyder/widgets/projects/explorer.pyt   <module>   s    4Œ^"		