ó
‹²,]c           @   s|   d  d l  m Z d  d l m Z m Z d  d l m Z d  d l m Z	 d  d l
 m Z m Z m Z d e f d „  ƒ  YZ d S(	   iÿÿÿÿ(   t   Slot(   t   QTreeWidgett   QMenu(   t   _(   t   icon_manager(   t   add_actionst   create_actiont   get_item_user_textt   OneColumnTreec           B   s  e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 ƒ  d „  ƒ Z d	 „  Z d
 „  Z e
 ƒ  d „  ƒ Z d „  Z e
 ƒ  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(   s-   One-column tree widget with context menu, ...c         C   s¼   t  j |  | ƒ |  j t ƒ |  j d ƒ |  j j |  j ƒ |  j j |  j	 ƒ t
 |  ƒ |  _ d  |  _ d  |  _ d  |  _ d  |  _ |  j ƒ  |  _ d  |  _ |  j j |  j ƒ |  j ƒ  d  S(   Ni   (   R   t   __init__t   setItemsExpandablet   Truet   setColumnCountt   itemActivatedt   connectt	   activatedt   itemClickedt   clickedR   t   menut   Nonet   collapse_all_actiont   collapse_selection_actiont   expand_all_actiont   expand_selection_actiont   setup_common_actionst   common_actionst   _OneColumnTree__expanded_statet   itemSelectionChangedt   item_selection_changed(   t   selft   parent(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR	      s    					c         C   s
   t  ‚ d S(   s   Double-click eventN(   t   NotImplementedError(   R   t   item(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR   '   s    c         C   s   d  S(   N(    (   R   R    (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR   +   s    c         C   s   |  j  | g ƒ d  S(   N(   t   setHeaderLabels(   R   t   title(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt	   set_title.   s    c      
   C   s0  t  |  d t d ƒ d t j d ƒ d |  j ƒ|  _ t  |  d t d ƒ d t j d ƒ d |  j ƒ|  _ t  |  d t d ƒ d	 t d
 ƒ d t j d ƒ d |  j ƒ|  _	 t  |  d t d ƒ d t j d ƒ d |  j
 ƒ|  _ t  |  d t d ƒ d t j d ƒ d |  j ƒ|  _ |  j |  j |  j	 d |  j |  j g S(   s!   Setup context menu common actionst   texts   Collapse allt   icont   collapset	   triggereds
   Expand allt   expandt   Restoret   tips   Restore original tree layoutt   restores   Collapse selectiont   collapse_selections   Expand selectiont   expand_selectionN(   R   R   t   imaR%   t   collapseAllR   t	   expandAllR   R+   t   restore_actionR,   R   R-   R   R   (   R   (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR   1   s0    						c         C   s_   |  j  j ƒ  |  j ƒ  } |  j | ƒ } | r> | j d  ƒ n  | |  j 7} t |  j  | ƒ d  S(   N(   R   t   cleart   selectedItemst   get_actions_from_itemst   appendR   R   R   (   R   t   itemst   actions(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   update_menuL   s    c         C   s   g  S(   N(    (   R   R6   (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR4   U   s    c         C   s2   |  j  ƒ  x! |  j ƒ  D] } |  j | ƒ q Wd  S(   N(   R/   t   get_top_level_itemst
   expandItem(   R   R    (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR+   Z   s    
c         C   s   t  S(   sQ   To be reimplemented in child class
        See example in project explorer widget(   R   (   R   R    (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   is_item_expandable`   s    c         C   s\   |  j  | ƒ rX |  j | ƒ x9 t | j ƒ  ƒ D]" } | j | ƒ } |  j | ƒ q/ Wn  d  S(   N(   R;   R:   t   ranget
   childCountt   childt   _OneColumnTree__expand_item(   R   R    t   indexR>   (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   __expand_iteme   s
    c         C   s]   |  j  ƒ  } | s! |  j ƒ  } n  x | D] } |  j | ƒ q( W| rY |  j | d ƒ n  d  S(   Ni    (   R3   R9   R?   t   scrollToItem(   R   R6   R    (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR-   l   s    c         C   sJ   |  j  | ƒ x6 t | j ƒ  ƒ D]" } | j | ƒ } |  j | ƒ q  Wd  S(   N(   t   collapseItemR<   R=   R>   t   _OneColumnTree__collapse_item(   R   R    R@   R>   (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   __collapse_itemv   s    c         C   s]   |  j  ƒ  } | s! |  j ƒ  } n  x | D] } |  j | ƒ q( W| rY |  j | d ƒ n  d  S(   Ni    (   R3   R9   RD   RB   (   R   R6   R    (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR,   |   s    c         C   s<   t  |  j ƒ  ƒ d k } |  j j | ƒ |  j j | ƒ d S(   s   Item selection has changedi    N(   t   lenR3   R   t
   setEnabledR   (   R   t   is_selection(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR   †   s    c         C   s,   g  t  |  j ƒ  ƒ D] } |  j | ƒ ^ q S(   s   Iterate over top level items(   R<   t   topLevelItemCountt   topLevelItem(   R   t   _i(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR9   Œ   s    c            s=   g  ‰ ‡  ‡ f d †  ‰  x |  j  ƒ  D] } ˆ  | ƒ q% Wˆ S(   s(   Return items (excluding top level items)c            sG   x@ t  |  j ƒ  ƒ D], } |  j | ƒ } ˆ j | ƒ ˆ  | ƒ q Wd  S(   N(   R<   R=   R>   R5   (   R    R@   t   citem(   t   add_to_itemlistt   itemlist(    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyRM   “   s    (   R9   (   R   t   tlitem(    (   RM   RN   s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt	   get_items   s
    c         C   s"   |  j  ƒ  j ƒ  |  j ƒ  j ƒ  f S(   N(   t   horizontalScrollBart   valuet   verticalScrollBar(   R   (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   get_scrollbar_positionœ   s    c         C   s6   | \ } } |  j  ƒ  j | ƒ |  j ƒ  j | ƒ d  S(   N(   RQ   t   setValueRS   (   R   t   positiont   hort   ver(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   set_scrollbar_position    s    c         C   s   |  j  ƒ  |  j S(   N(   t   save_expanded_stateR   (   R   (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   get_expanded_state¥   s    
c         C   s   | |  _  |  j ƒ  d  S(   N(   R   t   restore_expanded_state(   R   t   state(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   set_expanded_state©   s    	c            sR   i  ˆ _  ‡ f d †  ‰  ‡  ‡ ‡ f d †  ‰ x ˆ j ƒ  D] } ˆ | ƒ q: Wd S(   s   Save all items expanded statec            s)   t  |  ƒ } |  j ƒ  ˆ  j t | ƒ <d  S(   N(   R   t
   isExpandedR   t   hash(   R    t	   user_text(   R   (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   add_to_state°   s    c            si   ˆ  |  ƒ xX t  |  j ƒ  ƒ D]D } |  j | ƒ } t | ƒ } | j ƒ  ˆ j t | ƒ <ˆ | ƒ q Wd  S(   N(   R<   R=   R>   R   R_   R   R`   (   R    R@   RL   Ra   (   Rb   t   browse_childrenR   (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyRc   ³   s    
N(   R   R9   (   R   RO   (    (   Rb   Rc   R   s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyRZ   ­   s
    	c         C   sx   |  j  d k r d Sx^ |  j ƒ  |  j ƒ  D]F } t | ƒ } |  j  j t | ƒ ƒ } | d k	 r* | j | ƒ q* q* Wd S(   s    Restore all items expanded stateN(   R   R   RP   R9   R   t   getR`   t   setExpanded(   R   R    Ra   t   is_expanded(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR\   ½   s    c         C   s   |  j  ƒ  t g  t |  j ƒ  ƒ D] } |  j d ƒ ^ q  d | ƒ} x* t | ƒ D] \ } } |  j | | ƒ qQ W|  j ƒ  d S(   s    Sorting tree wrt top level itemsi    t   keyN(   RZ   t   sortedR<   RI   t   takeTopLevelItemt	   enumeratet   insertTopLevelItemR\   (   R   Rg   R@   R6   R    (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   sort_top_level_itemsÇ   s    
4c         C   s$   |  j  ƒ  |  j j | j ƒ  ƒ d S(   s   Override Qt methodN(   R8   R   t   popupt	   globalPos(   R   t   event(    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   contextMenuEventÐ   s    
(   t   __name__t
   __module__t   __doc__R	   R   R   R#   R   R8   R4   R    R+   R;   R?   R-   RD   R,   R   R9   RP   RT   RY   R[   R^   RZ   R\   Rl   Rp   (    (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyR      s2   										
	
									
		N(   t   qtpy.QtCoreR    t   qtpy.QtWidgetsR   R   t   spyder.config.baseR   t   spyder.utilsR   R.   t   spyder.utils.qthelpersR   R   R   R   (    (    (    s;   lib/python2.7/site-packages/spyder/widgets/onecolumntree.pyt   <module>   s
   