ó
Ò:\c           @   s%  d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z m Z 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 d l m Z m Z m Z m Z d d	 l m Z d d
 l m Z d e f d „  ƒ  YZ d „  Z  e! d k r!e  ƒ  n  d S(   s   Logger widget.iÿÿÿÿN(   t   Qt(   t   QApplicationt   QHBoxLayoutt   QHeaderViewt   QLabelt   QTableWidgett   QTableWidgetItemt   QVBoxLayout(   t   LOG_FILENAMEt
   LOG_FOLDER(   t   load_logt	   log_files(   t   load_style_sheet(   t   ButtonPrimaryt   ComboBoxBaset   SpacerHorizontalt   SpacerVertical(   t
   DialogBase(   t   LineEditSearcht   LogViewerDialogc           B   sY   e  Z d  Z d e e d „ Z d d „ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z RS(	   s   Logger widget.c   	      C   s”  t  t |  ƒ j d | ƒ d |  _ d d d d d g |  _ g  |  j D] } | j ƒ  ^ qD |  _ | |  _ | |  _	 t
 d ƒ |  _ t ƒ  |  _ t |  ƒ |  _ t d ƒ |  _ t ƒ  |  _ |  j j t j t ƒ |  j j ƒ  } |  j j ƒ  } | j t ƒ | j t j ƒ | j t j ƒ |  j j t j ƒ |  j j  t j! ƒ |  j" d	 ƒ |  j# d
 ƒ |  j$ d ƒ |  j j% d ƒ t& ƒ  } | j' |  j ƒ | j' t( ƒ  ƒ | j' |  j ƒ | j) ƒ  | j' t( ƒ  ƒ | j' |  j ƒ | j' t( ƒ  ƒ | j' |  j ƒ t* ƒ  } | j+ | ƒ | j' t, ƒ  ƒ | j' |  j ƒ |  j- | ƒ |  j j. j/ |  j0 ƒ |  j j1 j/ |  j2 ƒ |  j j3 j/ |  j4 ƒ |  j5 ƒ  |  j6 ƒ  d S(   sÖ   
        Logger widget.

        Parameters
        ----------
        log_folder: str
            Folder where logs are located
        log_filename: str
            Basic name for the rotating log files.
        t   parentt   levelt   timet   modulet   methodt   messages   Select log file:t   Copys
   Log Vieweri   iô  s	   Search...N(7   t   superR   t   __init__t   Nonet   _datat   _columnst
   capitalizet   _headerst   _log_filenamet   _log_folderR   t   labelR   t   comboboxR   t
   table_logsR   t   button_copyR   t   text_searcht   setAttributeR    t   WA_LayoutUsesWidgetRectt   Truet   horizontalHeadert   verticalHeadert   setStretchLastSectiont   setSectionResizeModeR   t   Fixedt   setSelectionBehaviort
   SelectRowst   setEditTriggerst   NoEditTriggerst   setWindowTitlet   setMinimumWidtht   setMinimumHeightt   setPlaceholderTextR   t	   addWidgetR   t
   addStretchR   t	   addLayoutR   t	   setLayoutt   currentIndexChangedt   connectt   update_textt   clickedt	   copy_itemt   textChangedt   filter_textt   setupt   update_style_sheet(	   t   selfR   t
   log_foldert   log_filenamet   ct   horizontal_headert   vertical_headert
   top_layoutt   layout(    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyR   &   sT    	%			
	
c         C   s)   | d k r t ƒ  } n  |  j | ƒ d S(   s   Update custom CSS stylesheet.N(   R   R   t   setStyleSheet(   RF   t   style_sheet(    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyRE   n   s    c         C   sa   |  j  j ƒ  t d |  j d |  j ƒ } g  | D] } t j j | ƒ ^ q/ } |  j  j | ƒ d S(   s   Setup widget content.RG   RH   N(	   R%   t   clearR   R#   R"   t   ost   patht   basenamet   addItems(   RF   t   pathst   pt   files(    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyRD   t   s    	%c            s~   |  j  j ƒ  j ƒ  ‰  xb t |  j ƒ D]Q \ } } t ‡  f d †  | j ƒ  Dƒ ƒ rf |  j j | ƒ q% |  j j	 | ƒ q% Wd S(   s)   Search for text in the selected log file.c         3   s'   |  ] } ˆ  t  | ƒ j ƒ  k Vq d  S(   N(   t   strt   lower(   t   .0t   d(   t   search(    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pys	   <genexpr>‚   s    N(
   R(   t   textRY   t	   enumerateR   t   anyt   valuesR&   t   showRowt   hideRow(   RF   t   it   data(    (   R\   sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyRC   ~   s
    "c         C   sQ   i  } |  j  rM t |  j  ƒ } d | k o5 | k  n rM |  j  | } qM n  | S(   s3   Give the current row data concatenated with spaces.i    (   R   t   len(   RF   t   rowRd   t   length(    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyt   row_data‡   s    	c   	      C   sŽ  t  j j |  j |  j j ƒ  ƒ } t | ƒ |  _ |  j j	 ƒ  |  j j
 t ƒ |  j j t |  j ƒ ƒ |  j j t |  j ƒ ƒ |  j j |  j ƒ xk t |  j ƒ D]Z \ } } xK t |  j ƒ D]: \ } } t | j | d ƒ ƒ } |  j j | | | ƒ q¾ Wq¢ Wx' d d d g D] } |  j j | ƒ qW|  j j ƒ  |  j j
 t ƒ |  j j ƒ  |  j j ƒ  |  j j d t j ƒ |  j j d d ƒ d S(   s(   Update logs based on combobox selection.t    i    i   i   i   N(   RQ   RR   t   joinR#   R%   t   currentTextR
   R   R&   RP   t   setSortingEnabledt   Falset   setRowCountRe   t   setColumnCountR   t   setHorizontalHeaderLabelsR!   R^   R   t   gett   setItemt   resizeColumnToContentst   resizeRowsToContentsR+   t   scrollToBottomt   scrollToTopt   sortByColumnR    t   AscendingOrdert   setCurrentCell(	   RF   t   indexRR   Rf   Rd   t   colt   col_keyt   itemRI   (    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyR?      s&    !c         C   s¦   t  j ƒ  } |  j j ƒ  } | r¢ t t d „  | Dƒ ƒ ƒ } |  j r¢ g  | D] } |  j | ^ qM } t j | d t	 d d ƒ} | j
 ƒ  j d | d ƒ q¢ n  d S(   s3   Copy selected item to clipboard in markdown format.c         s   s   |  ] } | j  ƒ  Vq d  S(   N(   Rf   (   RZ   Rc   (    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pys	   <genexpr>±   s    t	   sort_keyst   indenti   s   ```json
s   
```N(   R   t   instanceR&   t   selectedIndexest   sett   sortedR   t   jsont   dumpsR+   t	   clipboardt   setText(   RF   t   appt   itemst   rowsRf   t   all_datat   dump(    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyRA   ¬   s    	 N(   t   __name__t
   __module__t   __doc__R   R	   R   R   RE   RD   RC   Rh   R?   RA   (    (    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyR   #   s   D	
					c          C   sC   d d l  m }  |  ƒ  } t ƒ  } | j ƒ  t j | j ƒ  ƒ d S(   s   Run local test.iÿÿÿÿ(   t   qapplicationN(   t"   anaconda_navigator.utils.qthelpersR   R   t   showt   syst   exitt   exec_(   R   Rˆ   t   widget(    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyt
   local_testº   s
    		
t   __main__("   R   R„   RQ   R“   t   qtpy.QtCoreR    t   qtpy.QtWidgetsR   R   R   R   R   R   R   t   anaconda_navigator.configR   R	   t   anaconda_navigator.utils.logsR
   R   t   anaconda_navigator.utils.stylesR   t   anaconda_navigator.widgetsR   R   R   R   t"   anaconda_navigator.widgets.dialogsR   t(   anaconda_navigator.widgets.helperwidgetsR   R   R—   R   (    (    (    sH   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/logger.pyt   <module>   s   4"—	
