ó
Ò:\c           @   s³  d  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 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 d d
 l  m! Z! m" Z" m# Z# i d d 6d d 6d d 6d d 6d d 6e d 6Z$ e d g Z% 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   License Manager Dialog.iÿÿÿÿ(   t   getopenfilename(   t   QAbstractTableModelt   QModelIndext   QSortFilterProxyModelt   Qtt   Signal(   t   QColor(   t   QAbstractItemViewt   QHBoxLayoutt   QStylet   QStyledItemDelegatet
   QTableViewt   QVBoxLayout(   t   AnacondaAPI(   t   LICENSE_PATHt   get_home_dir(   t   qapplication(   t
   ButtonLinkt   ButtonNormalt   ButtonPrimaryt	   LabelBaset   SpacerHorizontalt   SpacerVertical(   t
   DialogBaset   MessageBoxInformationt   MessageBoxRemovet   __type__i    t   producti   t   end_datei   t
   __status__i   t   sigi   i   t   LicenseModelc           B   s‰   e  Z d  Z d	 d	 d „ Z e d „  ƒ Z e j d „ Z	 e e j d „ ƒ Z
 e ƒ  d „ Z e e ƒ  d „ ƒ Z d „  Z d	 d „ Z RS(
   s!   Table model for the license view.c         C   s;   t  t |  ƒ j d | ƒ | |  _ | r. | n g  |  _ d S(   s!   Table model for the license view.t   parentN(   t   superR   t   __init__t   _parentt   _rows(   t   selfR    t   licenses(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR"   4   s    	c         C   s'   |  j  ƒ  r# t j t j t j Bƒ Sd S(   s   Override Qt method.N(   t   isValidR   t	   ItemFlagst   ItemIsEnabledt   ItemIsSelectable(   t   index(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   flags:   s    c         C   sÀ   | d k r d S| j ƒ  sI d | j ƒ  k oC t |  j ƒ k  n rM d S| j ƒ  } | j ƒ  } |  j | } | t j k r¦ t j	 | ƒ } | r¼ | j	 | ƒ Sn | t j
 k r¼ t j Sd S(   s   Override Qt method.i    N(   t   NoneR'   t   rowt   lenR$   t   columnR   t   DisplayRolet   COL_MAPt   gett   TextAlignmentRolet   AlignCenter(   R%   R+   t   roleR.   R0   t   license_datat   data_key(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   data@   s    9c         C   s…   t  j |  ƒ } | j d d ƒ } | j d d ƒ j ƒ  } | t j k r | t j k rk t t j t j	 Bƒ S| t j
 k r | Sn  d S(   s   Override Qt method.t   __t    t   _t    N(   R2   R3   t   replacet
   capitalizeR   t
   HorizontalR4   t   intt   AlignHCentert   AlignVCenterR1   (   t   sectiont   orientationR6   t   title(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt
   headerDataU   s    c         C   s   t  |  j ƒ S(   s   Override Qt method.(   R/   R$   (   R%   R+   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   rowCountb   s    c         C   s
   t  t ƒ S(   s   Override Qt method.(   R/   R2   (   R+   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   columnCountf   s    c         C   s$   | t  |  j ƒ k  r  |  j | Sd S(   s   Return the row data.N(   R/   R$   R-   (   R%   t   rownum(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR.   m   s    c         C   s   | r | n g  |  _  d S(   s   (Re)Load license data.N(   R$   (   R%   R&   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   load_licensesq   s    N(   t   __name__t
   __module__t   __doc__R-   R"   t   staticmethodR,   R   R1   R9   RG   R   RH   RI   R.   RK   (    (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR   1   s   	t   BackgroundDelegatec           B   s#   e  Z d  Z d d „ Z d „  Z RS(   sË   
    Delegate for handling background color in table.

    QTableView CSS styling rules are too limited so in order to get an even
    styling that matches the overall look, this delegate is needed.
    c         C   s&   t  t |  ƒ j d | ƒ | |  _ d S(   s0   Delegate for handling background color in table.R    N(   R!   RP   R"   R#   (   R%   R    (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR"   ~   s    c         C   s–   | j  t j @rv |  j j ƒ  r. t d ƒ } n t d ƒ } | j ƒ  | j | j | ƒ | j	 ƒ  | j  t j N_  n  t
 t |  ƒ j | | | ƒ d S(   s   Override Qt method.s   #43B02As   #cececeN(   t   stateR	   t   State_SelectedR#   t   hasFocusR   t   savet   fillRectt   rectt   restoreR!   RP   t   paint(   R%   t   paintert   optionR+   t   color(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyRX   ƒ   s    

N(   RL   RM   RN   R-   R"   RX   (    (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyRP   v   s   t   LicenseTableViewc           B   s}   e  Z d  Z e e ƒ Z e ƒ  Z e ƒ  Z d	 d „ Z	 d „  Z
 d „  Z d „  Z d „  Z e d „  ƒ Z d „  Z d „  Z RS(
   s   License table manager view.c         C   s®   t  t |  ƒ j d | ƒ |  j d ƒ |  j d ƒ |  j t ƒ |  j t ƒ |  j	 t ƒ |  j
 t j ƒ |  j t ƒ |  j t j ƒ |  j ƒ  j ƒ  |  j ƒ  j t ƒ d S(   s   License table manager view.R    iô  iÈ   N(   R!   R\   R"   t   setMinimumWidtht   setMinimumHeightt   setAcceptDropst   Truet   setShowGridt   Falset   setSortingEnabledt   setSelectionBehaviorR   t
   SelectRowst   setAlternatingRowColorst   setSelectionModet   SingleSelectiont   verticalHeadert   hidet   horizontalHeadert   setStretchLastSection(   R%   R    (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR"      s    c         C   s'   t  t |  ƒ j | ƒ |  j j ƒ  d S(   s   Override Qt Method.N(   R!   R\   t   focusInEventt   sig_enteredt   emit(   R%   t   event(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyRm   «   s    c         C   s'   t  t |  ƒ j | ƒ |  j j ƒ  d S(   s   Override Qt Method.N(   R!   R\   Rm   t   sig_leftRo   (   R%   Rp   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   focusOutEvent°   s    c         C   s=   |  j  d t ƒ | j ƒ  j ƒ  r/ | j ƒ  n
 | j ƒ  d S(   s   Override Qt Method.t   draginN(   t   setPropertyR`   t   mimeDatat   hasUrlst   acceptt   ignore(   R%   Rp   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   dragEnterEventµ   s    c         C   s   |  j  d t ƒ d S(   s   Override Qt Method.Rs   N(   Rt   Rb   (   R%   Rp   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   dragLeaveEvent½   s    c         C   s=   |  j  ƒ  j ƒ  r/ |  j t j ƒ |  j ƒ  n
 |  j ƒ  d S(   s   Override Qt Method.N(   Ru   Rv   t   setDropActionR   t
   CopyActionRw   Rx   (   Rp   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   dragMoveEventÁ   s    c         C   sŸ   |  j  d t ƒ | j ƒ  } | j ƒ  r‘ | j t j ƒ | j ƒ  g  } x- | j ƒ  D] } | j	 t
 | j ƒ  ƒ ƒ qU W|  j j t | ƒ ƒ n
 | j ƒ  d S(   s   Override Qt Method.Rs   N(   Rt   Rb   Ru   Rv   R{   R   R|   Rw   t   urlst   appendt   strt   toLocalFilet   sig_droppedRo   t   tupleRx   (   R%   Rp   t   mimedatat   linkst   url(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt	   dropEventÊ   s    
c         C   sG   t  j |  | | ƒ |  j ƒ  j |  ƒ |  j ƒ  j |  ƒ |  j ƒ  d S(   s   Override Qt method.N(   R   Rt   t   stylet   unpolisht   polisht   update(   R%   t   namet   value(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyRt   Ø   s    N(   RL   RM   RN   R   t   objectR‚   Rn   Rq   R-   R"   Rm   Rr   Ry   Rz   RO   R}   R‡   Rt   (    (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR\   –   s   								t   LicenseManagerDialogc           B   sw   e  Z d  Z d Z e e e ƒ Z d
 d „ Z d „  Z	 d „  Z
 d
 d
 d „ Z d
 d „ Z d „  Z d „  Z d	 „  Z RS(   s   License Manager main dialog.s   https://support.continuum.io/c            sÄ  t  t ˆ  ƒ j d | ƒ t ƒ  ˆ  _ d ˆ  _ t d ƒ ˆ  _ t	 d ƒ ˆ  _
 t	 d ƒ ˆ  _ t d ƒ ˆ  _ t d ƒ ˆ  _ t d ƒ ˆ  _ t d ˆ  ƒ ˆ  _ t d ˆ  ƒ ˆ  _ t d ˆ  ƒ ˆ  _ t ˆ  j ƒ ˆ  _ ˆ  j j ˆ  j ƒ ˆ  j j ˆ  j ƒ ˆ  j j ˆ  j ƒ ˆ  j d ƒ t ƒ  } | j ˆ  j ƒ | j t ƒ  ƒ | j  ƒ  | j ˆ  j ƒ | j t ƒ  ƒ | j ˆ  j ƒ t ƒ  } | j ˆ  j ƒ | j ˆ  j ƒ | j  ƒ  | j ˆ  j
 ƒ t! ƒ  } | j" | ƒ | j t# ƒ  ƒ | j ˆ  j ƒ | j t# ƒ  ƒ | j t# ƒ  ƒ | j" | ƒ ˆ  j$ | ƒ ˆ  j j% j& ‡  f d	 †  ƒ ˆ  j j% j& ˆ  j' ƒ ˆ  j
 j% j& ˆ  j( ƒ ˆ  j j% j& d ‡  f d
 † ƒ ˆ  j j) j& ˆ  j* ƒ ˆ  j j+ ƒ  ˆ  j, ƒ  d S(   s   License Manager main dialog.R    s   Add licenset   Closes   Remove licenses   Please contact us.s-   Manage your Continuum Analytics license keys.s!   Got a problem with your license? s   License Managerc              s
   ˆ  j  ƒ  S(   N(   t   add_license(    (   R%   (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   <lambda>  R;   c            s   ˆ  j  j ˆ  j d ƒ S(   Ns   License Manager(   t   sig_url_clickedRo   t   CONTACT_LINK(   t   v(   R%   (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR’   !  s   	N(-   R!   R   R"   R   t   apiR-   t   message_boxR   t
   button_addR   t	   button_okt   button_removeR   t   button_contactR   t
   label_infot   label_contactR   t   proxy_modelR   t   modelR\   t   tableRP   t   delegatet   setSourceModelt   setItemDelegatet   setModelt   setWindowTitleR   t	   addWidgetR   t
   addStretchR   t	   addLayoutR   t	   setLayoutt   clickedt   connectt   remove_licenseRw   R‚   t   handle_dropt   setFocusRK   (   R%   R    t   layout_buttonst   layout_buttons_bottomt   layout(    (   R%   sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR"   è   s\    		
	
	c         C   s   |  j  j | ƒ |  j ƒ  d S(   s   Handle a drag and drop event.N(   R–   R‘   RK   (   R%   R…   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR­   *  s    c         C   sC   x< t  j ƒ  D]. \ } } | t k r |  j j | t ƒ q q Wd S(   s   Hide columns.N(   R2   t   itemst   HIDDEN_COLUMNSR    t   setColumnHiddenR`   (   R%   t   keyt   val(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   _hide_columns/  s    c   	      C   sÈ   | d	 k rK t |  d d d d t ƒ  ƒ\ } } | rB | g } qT g  } n	 | g } |  j j | ƒ \ } } xB | D]: } d j | ƒ } t d | d d ƒ |  _ |  j j ƒ  qs W| rÄ |  j	 ƒ  n  d	 S(
   s   Add license file.s   Select license filet   filterss   License files (*.txt)t   basedirs2   File: <b>"{0}"</b><br>is not a valid license file.t   textRF   s   Invalid license fileN(
   R-   R    R   R–   R‘   t   formatR   R—   t   exec_RK   (	   R%   R•   t   patht   filenamet   selected_filtert   pathst   valid_licensest   invalid_licensesRº   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR‘   5  s&    			c         C   sí   | d	 k r |  j j ƒ  } n |  j j | d ƒ } |  j j | ƒ } |  j j | j ƒ  ƒ } | ré d } | j d | j	 d ƒ d | j	 d ƒ d | j	 d ƒ ƒ } t
 d d d | ƒ |  _ |  j j ƒ  ré |  j j | ƒ |  j ƒ  qé n  d	 S(
   s   Remove license from file.i    sZ   Do you want to remove license for product:<br><br><b>{product}</b> ({issued} - {end_date})R   R   t   issuedRF   s   Remove licenseRº   N(   R-   R    t   currentIndexRž   R+   t   mapToSourceRŸ   R.   R»   R3   R   R—   R¼   R–   R¬   RK   (   R%   R.   R+   t   model_indext   row_dataRº   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR¬   S  s     	c         C   sW   |  j  j ƒ  } |  j j | ƒ |  j j |  j ƒ |  j j ƒ  |  j ƒ  |  j ƒ  d S(   s   Load license files.N(	   R–   RK   RŸ   Rž   R¢   R    t   resizeColumnsToContentsR·   t   update_status(   R%   t   res(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyRK   n  s    
c         C   s   |  j  j ƒ  j ƒ  S(   s(   Return the number of items in the table.(   R    RŸ   RH   (   R%   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   countw  s    c         C   s    |  j  j t |  j ƒ  ƒ ƒ d S(   s?   Update visible and enabled status for widgets based on actions.N(   Rš   t
   setEnabledt   boolRË   (   R%   (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyRÉ   {  s    N(   RL   RM   RN   R”   R   RŽ   R“   R-   R"   R­   R·   R‘   R¬   RK   RË   RÉ   (    (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyR   à   s   B					c          C   s4   t  ƒ  }  t ƒ  } | j ƒ  | j ƒ  |  j ƒ  d S(   s   Run local test.N(   R   R   t   update_style_sheett   showR¼   (   t   appt   w(    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt
   local_test€  s
    		

t   __main__N(,   RN   t   qtpy.compatR    t   qtpy.QtCoreR   R   R   R   R   t
   qtpy.QtGuiR   t   qtpy.QtWidgetsR   R   R	   R
   R   R   t#   anaconda_navigator.api.anaconda_apiR   t   anaconda_navigator.configR   R   t"   anaconda_navigator.utils.qthelpersR   t   anaconda_navigator.widgetsR   R   R   R   R   R   t"   anaconda_navigator.widgets.dialogsR   R   R   R2   R³   R   RP   R\   R   RÒ   RL   (    (    (    sI   lib/python2.7/site-packages/anaconda_navigator/widgets/dialogs/license.pyt   <module>   s0   (..

E J 		