
,]c           @  s  d  Z  d d l m Z d d l Z d d l Z d d l Z d d l Z d d l m Z m	 Z	 d d l
 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 m Z m Z m Z m Z m Z 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' m( Z( m) Z) m* Z* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 m1 Z1 m2 Z2 m3 Z3 m4 Z4 m5 Z5 m6 Z6 m7 Z7 m8 Z8 m9 Z9 m: Z: m; Z; d d
 l< m= Z= d d l> m? Z? d d l@ mA ZA d d lB mC ZC mD ZD mE ZE mF ZF mG ZG d d lH mI ZJ d d lK mL ZL d d lM mN ZN mO ZO mP ZP d d lQ mR ZR d d lS mT ZT e3 e+ k	 rod d lU mV ZV n  e( e+ k	 rd d lW mX ZX n  d ZY d ZZ 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"     YZa d# e# f d$     YZb d% e f d&     YZc d' ec f d(     YZd d) e_ f d*     YZe d+ e` f d,     YZf d-   Zg d.   Zh d/   Zi ej d0 k reh   ei   n  d S(1   sI   
Collections (i.e. dictionary, list and tuple) editor widget and dialog.
i(   t   print_functionN(   t   getsavefilenamet   to_qvariant(   t   QAbstractTableModelt	   QDateTimet   QModelIndext   Qtt   Signalt   Slot(   t   QColort   QKeySequence(   t   QAbstractItemDelegatet   QApplicationt	   QDateEditt   QDateTimeEditt   QDialogt   QHBoxLayoutt   QInputDialogt   QItemDelegatet	   QLineEditt   QMenut   QMessageBoxt   QPushButtont
   QTableViewt   QVBoxLayoutt   QWidget(   t   fix_reference_name(   t   arrayt	   DataFramet   DatetimeIndext   display_to_valuet
   FakeObjectt   get_color_namet   get_human_readable_typet   get_sizet   Imaget   is_editable_typet   is_known_typet   MaskedArrayt   ndarrayt
   np_savetxtt   Seriest   sort_againstt   try_to_evalt   unsorted_uniquet   value_to_displayt   get_object_attrst   get_type_string(   t   _(   t   DEFAULT_SMALL_DELTA(   t   get_font(   t   iot   is_binary_stringt   is_text_stringt   PY3t   to_text_string(   t   icon_manager(   t   getcwd_or_home(   t   add_actionst   create_actiont   mimedata2url(   t   ImportWizard(   t
   TextEditor(   t   ArrayEditor(   t   DataFrameEditorid   i2   t   ProxyObjectc           B  s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   s&   Dictionary proxy to an unknown object.c         C  s   | |  _  d S(   s   Constructor.N(   t   __obj__(   t   selft   obj(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   __init__I   s    c         C  s   t  t |  j   S(   s)   Get len according to detected attributes.(   t   lenR.   RB   (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   __len__M   s    c         C  s@   y t  |  j |  } Wn# t t t t f k
 r; d } n X| S(   s1   Get the attribute corresponding to the given key.N(   t   getattrRB   t   NotImplementedErrort   AttributeErrort	   TypeErrort
   ValueErrort   None(   RC   t   keyt   attribute_toreturn(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   __getitem__Q   s
    

c         C  sb   y t  |  j | |  WnD t t t f k
 r3 n+ t k
 r] } d t |  k r^   q^ n Xd S(   s.   Set attribute corresponding to key with value.s   cannot set values forN(   t   setattrRB   RK   RJ   RI   t	   Exceptiont   str(   RC   RN   t   valuet   e(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   __setitem__a   s    (   t   __name__t
   __module__t   __doc__RE   RG   RP   RV   (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRA   F   s
   			t   ReadOnlyCollectionsModelc           B  s   e  Z d  Z e   Z d e e d e d  Z d   Z d d  Z	 d d d  Z
 e j d  Z e   d  Z e   d  Z e   d	  Z e   d
  Z d   Z d   Z d   Z d   Z e j d  Z e j d  Z d   Z d   Z RS(   s'   CollectionsEditor Read-Only Table Modelt    c         C  s   t  j |  |  | d  k r% i  } n  | |  _ | |  _ | |  _ | |  _ d  |  _ d  |  _ d  |  _	 d  |  _
 d  |  _ t |  |  _ |  j r |  j d |  _ n  g  |  _ g  |  _ |  j |  d  S(   Ns    - (   R   RE   RM   t   namest   minmaxt   dataframe_formatt   remotet   header0t   _datat
   total_rowst	   showndatat   keysR7   t   titlet   sizest   typest   set_data(   RC   t   parentt   dataRe   R\   R]   R^   R_   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE   t   s$    													c         C  s   |  j  S(   s   Return model data(   Ra   (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   get_data   s    c         C  sZ  | |  _  t |  } | d k	 rR |  j rR t | t t t f  rR | |  } n  | |  _ t	 d  |  _
 |  j r t	 d  |  _
 n  t | t  r t t t |    |  _ |  j t	 d  7_ n t | t  r	t t t |    |  _ |  j t	 d  7_ n t | t  r`t | j    |  _ |  j t	 d  7_ |  j st	 d  |  _
 qnD t |  |  _ t |  |  _  } |  _ |  j st	 d  |  _
 n  t |  j  t  s|  j d t t |  j   d	 t	 d
  d 7_ n |  j | 7_ t |  j  |  _ |  j t k r)t |  _ n |  j |  _ |  j j   |  j   |  j   d S(   s   Set model datat   Indext   Namet   Tuplet   Listt
   Dictionaryt   Keyt	   Attributes    (t    t   elementst   )N(   Ra   R/   RM   R_   t
   isinstancet   tuplet   listt   dictRc   R0   R`   R\   t   rangeRF   Rd   Re   R.   RA   RS   Rb   t   LARGE_NROWSt   ROWS_TO_LOADt   rows_loadedt   sig_setting_datat   emitt   set_size_and_typet   reset(   RC   Rj   t   coll_filtert	   data_type(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRh      sF    					0
c      
   C  sx  |  j  } | d  k r9 | d  k r9 d } |  j } t } n t } t j    t j d d d |  j r g  t	 | |  D] } | |  j
 | d ^ qx } g  t	 | |  D] } | |  j
 | d ^ q } nf g  t	 | |  D] } t | |  j
 |  ^ q } g  t	 | |  D] } t | |  j
 |  ^ q} Wd  QX| rb|  j | |  _ |  j | |  _ n | |  _ | |  _ d  S(   Ni    t   ignoret   messages?   ^\w+\.\w+ is deprecated and will be removed in a future versiont   sizet   type(   Ra   RM   R}   t   Falset   Truet   warningst   catch_warningst   filterwarningsR_   Rz   Rd   R"   R!   Rf   Rg   (   RC   t   startt   stopRj   t
   fetch_moret   indexRf   Rg   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR      s.    				.106	c         C  s  | t  j k } | d k ru t |  j |  j |  |  _ t |  j |  j |  |  _ y |  j j d |  WqqXnT| d k r t |  j |  j |  |  j |  j *t |  j |  j |  |  _ y |  j j d |  WqqXn | d k rOt |  j |  j |  |  j |  j *t |  j |  j |  |  _ y |  j j d |  WqqXnz | d k rg  |  j D] } |  j | ^ qe} t |  j | |  |  _ t |  j | |  |  _ t |  j | |  |  _ n  |  j	   |  j
   d S(   s   Overriding sort methodi    t   reversei   i   i   N(   R   t   DescendingOrderR*   Rf   Rd   Rg   t   sortR}   Ra   t   beginResetModelt   endResetModel(   RC   t   columnt   orderR   RN   t   values(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR      s>    #
c         C  s   d S(   s   Array column numberi   (    (   RC   t   qindex(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   columnCount   s    c         C  s$   |  j  |  j k r |  j  S|  j Sd S(   s   Array row numberN(   Rb   R}   (   RC   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   rowCount  s    c         C  s   |  j  |  j k r t St Sd  S(   N(   Rb   R}   R   R   (   RC   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   canFetchMore	  s    c         C  sz   |  j  |  j } t | t  } |  j |  j |  j |  |  j t   |  j |  j | d  |  j | 7_ |  j   d  S(   Ni   (   Rb   R}   t   minR|   R   t   beginInsertRowsR   t   endInsertRows(   RC   R   t   remindert   items_to_fetch(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt	   fetchMore  s    c         C  sB   y  |  j  |  j j |  d  SWn t t f k
 r= t   SXd  S(   Ni    (   t   createIndexRd   R   t   RuntimeErrorRL   R   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   get_index_from_key  s     c         C  s   |  j  | j   S(   s   Return current key(   Rd   t   row(   RC   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   get_key  s    c         C  s   | j    d k r# |  j | j   S| j    d k rF |  j | j   S| j    d k ri |  j | j   S|  j |  j | j   Sd S(   s   Return current valuei    i   i   N(   R   Rd   R   Rg   Rf   Ra   (   RC   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt	   get_value#  s    c         C  s   | j    d k r1 t t j  } | j d  nM | j    d k  rb t t j  } | j d  n t t j  } | j d  | S(   s#   Background color depending on valuei    g?i   g?g333333?(   R   R	   R   t	   lightGrayt	   setAlphaF(   RC   R   t   color(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   get_bgcolor.  s    c         C  s  | j    s t   S|  j |  } | j   d k rJ |  j rJ | d } n  | j   d k rt t | d |  j } n t |  } | t j	 k r t |  S| t j
 k r t t |   S| t j k rE| j   d k r(t | j    d k  rt t t j t j B  St t t j t j B  Sqt t t j t j B  SnD | t j k rgt |  j |   S| t j k rt t d t   St   S(   s   Cell contenti   t   viewR]   t   font_size_delta(   t   isValidR   R   R   R_   R-   R]   R7   R   t   DisplayRolet   EditRolet   TextAlignmentRoleRF   t
   splitlinest   intt	   AlignLeftt   AlignVCentert   AlignTopt   BackgroundColorRoleR   t   FontRoleR2   R1   (   RC   R   t   roleRT   t   display(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRj   ;  s.    
c         C  sq   | t  j k r t   St |  } | t  j k rf |  j t d  t d  t d  f } t | |  St   Sd S(   s   Overriding method headerDatat   Typet   Sizet   ValueN(   R   R   R   R   t
   HorizontalR`   R0   (   RC   t   sectiont   orientationR   t   i_columnt   headers(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt
   headerDataX  s    'c         C  s3   | j    s t j St j t j |  |  t j B S(   s   Overriding method flags(   R   R   t   ItemIsEnabledt	   ItemFlagsR   t   flagst   ItemIsEditable(   RC   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   c  s    c         C  s   |  j    |  j   d  S(   N(   R   R   (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   k  s    
N(   RW   RX   RY   R   R~   R   RM   RE   Rk   Rh   R   R   t   AscendingOrderR   R   R   R   R   R   R   R   R   R   R   Rj   R   R   R   (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRZ   o   s(   		-""
					t   CollectionsModelc           B  s/   e  Z d  Z d   Z d   Z e j d  Z RS(   s   Collections Table Modelc         C  sw   | |  j  |  j | j   <| |  j |  j | j   <t |  |  j | j   <t |  |  j | j   <|  j j	   d S(   s	   Set valueN(
   Ra   Rd   R   Rc   R"   Rf   R!   Rg   R~   R   (   RC   R   RT   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt	   set_values  s
    c         C  su   |  j  |  } | j   d k  r6 t j |  |  } n; |  j rL | d } n t |  } t |  } | j d  | S(   s#   Background color depending on valuei   R   g?(   R   R   RZ   R   R_   R    R	   R   (   RC   R   RT   R   t
   color_name(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   {  s    	c         C  sk   | j    s t S| j   d k  r& t St | |  j |  d t } |  j | |  |  j j | |  t S(   s   Cell content changei   t   ignore_errors(	   R   R   R   R   R   R   R   t   dataChangedR   (   RC   R   RT   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   setData  s    	(   RW   RX   RY   R   R   R   R   R   (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   p  s   		t   CollectionsDelegatec           B  s   e  Z d  Z e   Z d d  Z d   Z d   Z d   Z	 d   Z
 d   Z e e e  d    Z d   Z d	   Z d
   Z d   Z d   Z d   Z RS(   s   CollectionsEditor Item Delegatec         C  s   t  j |  |  i  |  _ d  S(   N(   R   RE   t   _editors(   RC   Ri   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE     s    c         C  s#   | j    r | j   j |  Sd  S(   N(   R   t   modelR   (   RC   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     s    c         C  s)   | j    r% | j   j | |  n  d  S(   N(   R   R   R   (   RC   R   RT   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     s    c         C  sk   y6 | j    j | j   } | j    j | j   } Wn t SX| d k rc t |  d k rc t St Sd S(   s  
        Decide if showing a warning when the user is trying to view
        a big variable associated to a Tablemodel index

        This avoids getting the variables' value to know its
        size and type, using instead those already computed by
        the TableModel.
        
        The problem is when a variable is too big, it can take a
        lot of time just to get its value
        Rx   Rw   Ry   g     j@N(   Rx   Rw   Ry   (   R   Rf   R   Rg   R   R   R   (   RC   R   t   val_sizet   val_type(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   show_warning  s    c           sK  | j    d k  r d S|  j |  ro t j |  j   t d  t d  t j t j B } | t j k ro d Sn  y# |  j	 |      d k r d SWnC t
 k
 r } t j |  j   t d  t d  t |   d SX| j   j |  } t   t  p|  j   j pt    } t   t t t f  rt d |  } | j   | d |  j   j   d	 | |  j | t d
 | j   d | d | d	 |   d St   t t f  r t t k	 r t d |  } | j   d | d	 | sd S|  j | t d
 | j   d | d | d	 |   d St   t  rt t k	 rt t k	 rt    }	 t d |  } | j |	 d | d	 | sd S  f d   }
 |  j | t d
 | j   d | d | d	 | d |
   d St   t  t! t" f  rxt  t k	 rxt# d |  } | j   d | sd S| j$ j% | j   j&  | j' j( |  j)  |  j | t d
 | j   d | d | d	 |   d St   t* j+  r| rd St   t* j*  rt,   d | } n t-   d | } | j. t/  | j0 t1 d t2   | SnPt3    rt4    d k rt5 d d | } | j    rt5   | d	 | d | } |  j | t d
 | j   d | d | d	 |   n  d St6    r| rd St7 d |  } | j0 t1 d t2   | j8 t9 j:  | Snl t d |  } | j   | d |  j   j   d	 | |  j | t d
 | j   d | d | d	 |   d Sd S(   s   Overriding method createEditori   t   WarningsB   Opening this variable can be slow

Do you want to continue anyway?t   Errorst   Spyder was unable to retrieve the value of this variable from the console.<br><br>The error mesage was:<br><i>%s</i>NRi   t   icont   readonlyR   t   editorRN   Re   c           s   t  j |  d   j S(   Nt   mode(   R#   t	   fromarrayR   (   t   arr(   RT   (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   <lambda>  R[   t   convR   i(   (;   R   RM   R   R   t   warningRi   R0   t   Yest   NoR   RR   t   criticalR7   R   R   Rv   Rw   R   R%   Rx   Ry   t   CollectionsEditort   setupt
   windowIcont   create_dialogR'   R&   R   R?   t   setup_and_checkR#   R   R   R   R)   R@   t	   dataModelt
   set_formatR^   t   sig_option_changedt   connectt   change_optiont   datetimet   dateR   R   t   setCalendarPopupR   t   setFontR2   R1   R5   RF   R>   R$   R   t   setAlignmentR   R   (   RC   Ri   t   optionR   t   answert   msgRN   R   R   R   t	   conv_funct   te(    (   RT   sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   createEditor  s    		!!!!
!!!c           se   |   j  t |  <| j j t |    f d   | j j t |    f d   | j   d  S(   Nc           s     j  |   S(   N(   t   editor_accepted(   t   eid(   RC   (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   .  R[   c           s     j  |   S(   N(   t   editor_rejected(   R   (   RC   (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   0  R[   (   R   t   idt   acceptedR   t   rejectedt   show(   RC   R   Rj   (    (   RC   sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   +  s    		c         C  s&   | d k r" |  j    j |  n  d S(   s   
        Change configuration option.

        This function is called when a `sig_option_changed` signal is received.
        At the moment, this signal can only come from a DataFrameEditor.
        R^   N(   Ri   t   set_dataframe_format(   RC   t   option_namet	   new_value(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   3  s    c         C  s   |  j  | } | d sl | d j | d  } | d j   } | j d d    } |  j | | |   n  y |  j  j |  Wn t k
 r n X|  j   d  S(   NR   R   RN   R   R   c         S  s   |  S(   N(    (   t   v(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   C  R[   (   R   R   R   t   getR   t   popt   KeyErrort   free_memory(   RC   t	   editor_idRj   R   RT   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   >  s    
c         C  s6   y |  j  j |  Wn t k
 r' n X|  j   d  S(   N(   R   R  R  R  (   RC   R  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   M  s
    c         C  s)   y |  j  j   Wn t k
 r$ n Xd S(   s$   Free memory after closing an editor.N(   t   sig_free_memoryR   R   (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR  V  s    c         C  sN   |  j    } y |  j j |  Wn t k
 r3 n X|  j j | t j  d S(   s&   Overriding method commitAndCloseEditorN(   t   sendert
   commitDataR   RJ   t   closeEditorR   t   NoHint(   RC   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   commitAndCloseEditor]  s    c         C  s   |  j  |  } t | t  ru t |  rJ y t | d  } WqJ qJ Xn  t |  se t |  } n  | j |  nS t | t  r | j	 |  n4 t | t
  r | j t | j   | j     n  d S(   sJ   
        Overriding method setEditorData
        Model --> Editor
        t   utf8N(   R   Rv   R   R4   R7   R5   t   reprt   setTextR   t   setDateR   t   setDateTimeR   R   t   time(   RC   R   R   RT   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   setEditorDatah  s    c   	      C  sy  t  | d  s d St | t  r | j   } y( t t |  |  j |  d t } Wqet k
 r }   t	 j
 | t d  t d  t |   d SXn t | t  r | j   } t j | j   | j   | j    } n t | t  rY| j   } | j   } | j   } t j | j   | j   | j   | j   | j   | j    } n t d   |  j | |  d S(   sI   
        Overriding method setModelData
        Editor --> Model
        R   NR   s	   Edit itemsA   <b>Unable to assign data to item.</b><br><br>Error message:<br>%ss   Unsupported editor widget(   t   hasattrRv   R   t   textR   R   R   R   RR   R   R   R0   RS   R   R   R   t   yeart   montht   dayR   t   dateTimeR  t   hourt   minutet   secondR   R   (	   RC   R   R   R   RT   R   t   qdatet	   qdatetimet   qtime(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   setModelData|  s4    	*N(   RW   RX   RY   R   R	  RM   RE   R   R   R   R   R   R   RS   t   objectR   R   R   R  R  R  R"  (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     s   					o							t   BaseTableViewc           B  s0  e  Z d  Z e e e  Z e 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 d   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$ d   Z% d   Z& d   Z' e( e	  d    Z) e( e  d    Z* e(   d    Z+ e(   d     Z, e- d!  Z. e(   d"    Z/ e(   d#    Z0 e(   d$    Z1 d%   Z2 d&   Z3 e(   d'    Z4 e(   d(    Z5 e(   d)    Z6 d, d*  Z8 e(   d+    Z9 RS(-   s!   Base collection editor table viewc         C  s   t  j |  |  d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _	 d  |  _
 d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ |  j t  d  S(   N(   R   RE   RM   t   array_filenamet   menut   empty_ws_menut   paste_actiont   copy_actiont   edit_actiont   plot_actiont   hist_actiont   imshow_actiont   save_array_actiont   insert_actiont   remove_actiont   minmax_actiont   rename_actiont   duplicate_actiont   delegatet   setAcceptDropsR   (   RC   Ri   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE     s$    																c         C  sA   |  j    j t  |  j   |  j t  |  j d t j  d S(   s   Setup tablei    N(   t   horizontalHeadert   setStretchLastSectionR   t   adjust_columnst   setSortingEnabledt   sortByColumnR   R   (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   setup_table  s    
c           s    j  d k	 r#   j  j |  d St   t d  d   j } t   t d  d t j d  d   j   _	 t   t d  d t j d  d   j
   _ t   t d	  d t j d
  d   j   _ t   t d  d t j d  d   f d     _   j j t  t   t d  d t j d  d   f d     _   j j t  t   t d  d t j d  d   j   _   j j t  t   t d  d t j d  d   j   _   j j t  t   t d  d t j d  d   j   _ t   t d  d t j d  d   j   _ t   t d  d   j   _    j  j |    j |  t   t d  d t j d  d   j   _ t   t d  d t j d  d   j   _ t    }   j   j   j   j   j   j   j   j   j	 d   j   j d | g } t  t! k	 rW| j"   j   n  t# | |  t      _$ t#   j$   j   j	 d | g  | S(   s   Setup context menuNs   Resize rows to contentst	   triggeredt   PasteR   t	   editpastet   Copyt   editcopyt   Editt   editt   Plott   plotc             s     j  d  S(   NRD  (   t	   plot_item(    (   RC   (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     R[   t	   Histogramt   histc             s     j  d  S(   NRG  (   RE  (    (   RC   (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     R[   s
   Show imaget   imshows
   Save arrayt   filesavet   Insertt   insertt   Removet
   editdeletes   Show arrays min/maxt   toggledt   Renamet   renamet	   Duplicatet   edit_add(%   R1  RM   t
   setCheckedR;   R0   t   resizeRowsToContentst   imaR   t   pasteR(  t   copyR)  t	   edit_itemR*  R+  t
   setVisibleR   R,  t   imshow_itemR-  t
   save_arrayR.  t   insert_itemR/  t   remove_itemR0  t   toggle_minmaxt   rename_itemR2  t   duplicate_itemR3  R   R'   R   t   appendR:   R'  (   RC   R]   t   resize_actionR&  t   menu_actions(    (   RC   sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt
   setup_menu  sz    	c         C  s
   t   d S(   s   Remove values from dataN(   RI   (   RC   Rd   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   remove_values  s    c         C  s
   t   d S(   s
   Copy valueN(   RI   (   RC   t   orig_keyt   new_key(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt
   copy_value  s    c         C  s
   t   d S(   s   Create new value in dataN(   RI   (   RC   RN   RT   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR    s    c         C  s
   t   d S(   s,   Return True if variable is a list or a tupleN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   is_list  s    c         C  s
   t   d S(   s   Return sequence lengthN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   get_len  s    c         C  s
   t   d S(   s(   Return True if variable is a numpy arrayN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   is_array  s    c         C  s
   t   d S(   s,   Return True if variable is a PIL.Image imageN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   is_image  s    c         C  s
   t   d S(   s'   Return True if variable is a dictionaryN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   is_dict#  s    c         C  s
   t   d S(   s   Return array's shapeN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   get_array_shape'  s    c         C  s
   t   d S(   s   Return array's ndimN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   get_array_ndim+  s    c         C  s
   t   d S(   s	   Edit itemN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   oedit/  s    c         C  s
   t   d S(   s	   Plot itemN(   RI   (   RC   RN   t   funcname(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRD  3  s    c         C  s
   t   d S(   s   Show item's imageN(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRH  7  s    c         C  s
   t   d S(   s    Show image (item is a PIL image)N(   RI   (   RC   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt
   show_image;  s    c         C  sI   |  j    } | j   } |  j j |  |  j j |  |  j |  d S(   s   Refresh context menuN(   t   currentIndexR   R*  t
   setEnabledR0  t   refresh_plot_entries(   RC   R   t	   condition(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   refresh_menu@  s
    c         C  s&  | j    r |  j j |  } |  j |  } |  j |  oN |  j |  d k } | oo t |  j |   d k } | o |  j |  d k } | o |  j |  d k } | p |  j	 |  } n t
 } } } } } |  j j | p |  |  j j | p |  |  j j |  |  j j |  d  S(   Ni    i   i   (   R   R   R   Ri  Rk  Rj  RF   Rn  Ro  Rl  R   R+  RY  R,  R-  R.  (   RC   R   RN   Ri  Rk  t   condition_plott   condition_histt   condition_imshow(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRu  H  s    $!c         C  s(   x! t  d  D] } |  j |  q Wd S(   s$   Resize two first columns to contentsi   N(   Rz   t   resizeColumnToContents(   RC   t   col(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR8  Y  s    c         C  s<   | d k	 r8 |  j j | |  j  |  j d t j  n  d S(   s   Set table datai    N(   RM   R   Rh   t
   dictfilterR:  R   R   (   RC   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRh   ^  s    c         C  s   | j    t j k r) t j |  |  d S|  j | j    } | j   r | |  j   k r{ | |  j	   k r{ |  j
   q t j |  |  n |  j
   | j   d S(   s   Reimplement Qt methodN(   t   buttonR   t
   LeftButtonR   t   mousePressEventt   indexAtt   posR   Rs  t   selectedIndexest   clearSelectiont   accept(   RC   t   eventt   index_clicked(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR  d  s    
c         C  s]   |  j  | j    } | j   rO | j   } | j | d  } |  j |  n
 | j   d S(   s   Reimplement Qt methodi   N(   R  R  R   R   t   childRB  R  (   RC   R  R  R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   mouseDoubleClickEventt  s    c         C  s   | j    t j k r" |  j   nj | j    t j k rD |  j   nH | t j k r` |  j   n, | t j	 k r| |  j
   n t j |  |  d S(   s   Reimplement Qt methodsN(   RN   R   t
   Key_DeleteR]  t   Key_F2R_  R
   R?  RW  R=  RV  R   t   keyPressEvent(   RC   R  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR    s    c         C  s]   |  j  j r9 |  j   |  j j | j    | j   n  |  j j | j    | j   d S(   s   Reimplement Qt methodN(   R   Rc   Rw  R&  t   popupt	   globalPosR  R'  (   RC   R  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   contextMenuEvent  s    
c         C  s-   t  | j    r | j   n
 | j   d S(   s   Allow user to drag filesN(   R<   t   mimeDataR  R   (   RC   R  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   dragEnterEvent  s    c         C  s=   t  | j    r/ | j t j  | j   n
 | j   d S(   s   Allow user to move filesN(   R<   R  t   setDropActionR   t
   CopyActionR  R   (   RC   R  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   dragMoveEvent  s    c         C  sS   t  | j    } | rE | j t j  | j   |  j j |  n
 | j   d S(   s"   Allow user to drop supported filesN(	   R<   R  R  R   R  R  t   sig_files_droppedR   R   (   RC   R  t   urls(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt	   dropEvent  s    
c         C  s#   |  j  j d |  | |  j _ d S(   s'   Toggle min/max display for numpy arraysR]   N(   R   R   R   R]   (   RC   t   state(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR^    s    c         C  s#   |  j  j d |  | |  j _ d S(   ss   
        Set format to use in DataframeEditor.

        Args:
            new_format (string): e.g. "%.3f"
        R^   N(   R   R   R   R^   (   RC   t
   new_format(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     s    c         C  s?   |  j    } | j   s d S|  j | j | j   d   d S(   s	   Edit itemNi   (   Rs  R   RB  R  R   (   RC   R   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRX    s    c   
      C  s   |  j    } | s d Sx | D] } | j   s d Sq Wt d  } t d  } t j |  t d  t |  d k ry | n | t j t j B } | t j k r t g  | D] } | j	   ^ q  } g  | D] } |  j
 j | ^ q }	 |  j |	  n  d S(   s   Remove itemNs(   Do you want to remove the selected item?s)   Do you want to remove all selected items?RL  i   (   R  R   R0   R   t   questionRF   R   R   R,   R   R   Rd   Re  (
   RC   t   indexesR   t   onet   moreR   t   idxt   idx_rowst   idx_rowRd   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR]    s    %#c         C  sq  |  j    } | s d St g  | D] } | j   ^ q   } t |  d k s^ | d j   rb d S|  j j | d } | r t d  } t d  } n t d  } t d  } |  j j   } t	 | t
 t f  r t |  t }	 }
 n$ t j |  | | t j |  \ }	 }
 |
 rmt |	  rmt t |	   }	 |	 | k rAd S|  j | |	  | rm|  j | g  qmn  d S(   s	   Copy itemNi   i    RO  s   New variable name:RQ  s   Variable name:(   R  R,   R   RF   R   R   Rd   R0   Rk   Rv   Rx   t   setR   R   t   getTextR   t   NormalR7   R+   Rh  Re  (   RC   t   erase_originalR  R  R  Rf  Re   t
   field_textRj   Rg  t   valid(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt	   copy_item  s0    %#c         C  s   |  j    d S(   s   Duplicate itemN(   R  (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR`    s    c         C  s   |  j  t  d S(   s   Rename itemN(   R  R   (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR_    s    c         C  s=  |  j    } | j   s* |  j j   } n | j   } |  j j   } t | t  rm | } | j | d  nn t | t	  r t
 j |  t d  t d  t j  \ } } | r t |  r t t |   } q d Sn d St
 j |  t d  t d  t j  \ } } | r9t |  r9|  j | t t |    n  d S(   s   Insert itemR[   RJ  s   Key:Ns   Value:(   Rs  R   R   R   R   Rk   Rv   Rx   RK  Ry   R   R  R0   R   R  R7   R+   R  (   RC   R   R   Rj   RN   R  RT   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR\    s&    c         C  s~   y d d  l  } t SWnc y3 d t j k rH d d  l } | j d  n  t SWqz t j |  t d  t d   qz Xn Xd  S(   Nit
   matplotlibt   Qt4Aggs   Import errors2   Please install <b>matplotlib</b> or <b>guiqwt</b>.(	   t   guiqwt.pyplotR   t   syst   modulesR  t   useR   R   R0   (   RC   t   guiqwtR  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   __prepare_plot  s    c         C  s   |  j    } |  j   r |  j j |  } y |  j | |  Wq t t f k
 r } t j |  t	 d  t	 d  t
 |   q Xn  d S(   s	   Plot itemRC  s7   <b>Unable to plot data.</b><br><br>Error message:<br>%sN(   Rs  t   _BaseTableView__prepare_plotR   R   RD  RL   RK   R   R   R0   RS   (   RC   Rq  R   RN   t   error(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE  ,  s    	c         C  s   |  j    } |  j   r |  j j |  } y0 |  j |  rL |  j |  n |  j |  Wq t t f k
 r } t	 j
 |  t d  t d  t |   q Xn  d S(   s   Imshow itemRC  s8   <b>Unable to show image.</b><br><br>Error message:<br>%sN(   Rs  R  R   R   Rl  Rr  RH  RL   RK   R   R   R0   RS   (   RC   R   RN   R  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRZ  9  s    	c         C  s   t  d   } |  j d k r* t   |  _ n  |  j j t  t |  | |  j t  d  d  \ } } |  j j t  | r | |  _ |  j	 j
 |  j    } y# d d l } | j |  j |  Wq t k
 r } t j |  | t  d  t |   q Xn  d S(   s
   Save arrays   NumPy arrayss    (*.npy)iNs7   <b>Unable to save array</b><br><br>Error message:<br>%s(   R0   R%  RM   R9   t   redirect_stdioR   R   R   R   R4  R   Rs  t   numpyt   saveRR   R   R   RS   (   RC   Re   t   filenamet
   _selfilterRj   t   npR  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR[  J  s$    			c      	   C  s  t  j   } g  } x|  j   D]} | j   s7 q n  |  j j |  } t | t t f  r t t	 k	 r t
 r t j   } n t j   } y t | | d d Wn' t j |  t d  t d   d SX| j   j d  } | j   n t | t t f  rt t	 k	 rt j   } y# | j | d d d t d	 t Wn1 t k
 rqt j |  t d  t d
   d SXt
 r| j   } n | j   j d  } | j   n* t |  rt | d  } n t |  } | j |  q W| j d j |   d S(   s   Copy text to clipboardt	   delimiters   	R   s&   It was not possible to copy this arrayNs   utf-8t   sepR   t   headers*   It was not possible to copy this dataframeR  s   
(   R   t	   clipboardR  R   R4  R   Rv   R'   R&   R   R6   R3   t   BytesIOt   StringIOR(   R   R   R0   t   getvaluet   decodet   closeR   R)   t   to_csvR   RR   R4   R7   Ra  R  t   join(   RC   R  t   cliplR  RD   t   output(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRW  a  sJ    #c         C  s   |  j  j   } t | d  s" d St |  | d | d t d  d t d d t | j    } | j   r | j   \ } } |  j	 | |  n  d S(	   s   Import data from stringRd   NRe   t   contents_titles   Clipboard contentst   varnameRj   t	   blacklist(
   R   Rk   R  R=   R0   R   Rx   Rd   t   exec_R  (   RC   R  Re   Rj   R   t   var_namet	   clip_data(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   import_from_string  s    	c         C  s   t  j   } d } | j   j   r9 t | j    } n  | j   ra |  j | d t d  n t	 j
 |  t d  t d   d S(   s$   Import text/data/code from clipboardR[   Re   s   Import from clipboards   Empty clipboards&   Nothing to be imported from clipboard.N(   R   R  R  t   hasTextR7   R  t   stripR  R0   R   R   (   RC   R  t   cliptext(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRV    s    N(:   RW   RX   RY   R   RS   R#  R   Rx   R  t   boolR  R	  RE   R;  Rd  Re  Rh  R  Ri  Rj  Rk  Rl  Rm  Rn  Ro  Rp  RD  RH  Rr  Rw  Ru  R8  Rh   R  R  R  R  R  R  R  R   R^  R   RX  R]  R   R  R`  R_  R\  R  RE  RZ  R[  RW  RM   R  RV  (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR$    s`   				B																						
			
			0t   CollectionsEditorTableViewc           B  s   e  Z d  Z e d e 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 d   Z d   Z d   Z d   Z d d  Z RS(   s   CollectionsEditor table viewR[   c         C  s   t  j |  |  d  |  _ | p+ t | t  |  _ |  j r@ t n t } | |  | | d | d | |  _	 |  j
 |  j	  t |   |  _ |  j |  j  |  j   |  j |  |  _ d  S(   NR\   R]   (   R$  RE   RM   R}  Rv   Rw   R   RZ   R   R   t   setModelR   R4  t   setItemDelegateR;  Rd  R&  (   RC   Ri   Rj   R   Re   R\   R]   t   CollectionsModelClass(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE     s    	
c         C  sJ   |  j  j   } x4 t | d t D]  } | j |  |  j |  q" Wd S(   s   Remove values from dataR   N(   R   Rk   t   sortedR   R  Rh   (   RC   Rd   Rj   RN   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRe    s    c         C  st   |  j  j   } t | t  r2 | j | |  n  t | t  rU | j | |  n | | | | <|  j |  d S(   s
   Copy valueN(   R   Rk   Rv   Rx   Ra  R  t   addRh   (   RC   Rf  Rg  Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRh    s    c         C  s*   |  j  j   } | | | <|  j |  d S(   s   Create new value in dataN(   R   Rk   Rh   (   RC   RN   RT   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR    s    
c         C  s&   |  j  j   } t | | t t f  S(   s,   Return True if variable is a list or a tuple(   R   Rk   Rv   Rw   Rx   (   RC   RN   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRi    s    c         C  s   |  j  j   } t | |  S(   s   Return sequence length(   R   Rk   RF   (   RC   RN   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRj    s    c         C  s&   |  j  j   } t | | t t f  S(   s(   Return True if variable is a numpy array(   R   Rk   Rv   R'   R&   (   RC   RN   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRk    s    c         C  s    |  j  j   } t | | t  S(   s,   Return True if variable is a PIL.Image image(   R   Rk   Rv   R#   (   RC   RN   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRl    s    c         C  s    |  j  j   } t | | t  S(   s'   Return True if variable is a dictionary(   R   Rk   Rv   Ry   (   RC   RN   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRm    s    c         C  s   |  j  j   } | | j S(   s   Return array's shape(   R   Rk   t   shape(   RC   RN   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRn    s    c         C  s   |  j  j   } | | j S(   s   Return array's ndim(   R   Rk   t   ndim(   RC   RN   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRo    s    c         C  s1   |  j  j   } d d l m } | | |  d S(   s	   Edit itemi(   Rp  N(   R   Rk   t,   spyder.widgets.variableexplorer.objecteditorRp  (   RC   RN   Rj   Rp  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRp    s    c         C  sM   |  j  j   } d d l j } | j   t | |  | |  | j   d S(   s	   Plot itemiN(   R   Rk   t   spyder.pyplott   pyplott   figureRH   R   (   RC   RN   Rq  Rj   t   plt(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRD    s
    
c         C  sG   |  j  j   } d d l j } | j   | j | |  | j   d S(   s   Show item's imageiN(   R   Rk   R  R  R  RH  R   (   RC   RN   Rj   R  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRH  	  s
    
c         C  s!   |  j  j   } | | j   d S(   s    Show image (item is a PIL image)N(   R   Rk   R   (   RC   RN   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRr    s    c         C  s   |  j  j   } |  j   } t | t  o> | j   o> |  j } |  j j |  |  j	 j |  |  j
 j |  j  |  j j |  t | t t t f  } |  j j |  |  j |  d S(   s   Refresh context menuN(   R   Rk   Rs  Rv   Rw   R   R   R*  Rt  R0  R/  R3  Rx   R  R2  Ru  (   RC   Rj   R   Rv  t   condition_rename(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRw    s    
c         C  s   | |  _  d S(   s   Set table dict filterN(   R}  (   RC   R}  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt
   set_filter%  s    N(   RW   RX   RY   R   RE   Re  Rh  R  Ri  Rj  Rk  Rl  Rm  Rn  Ro  Rp  RD  RH  Rr  Rw  RM   R  (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR    s&   															t   CollectionsEditorWidgetc           B  s2   e  Z d  Z e d e d  Z d   Z d   Z RS(   s   Dictionary Editor WidgetR[   c         C  sp   t  j |  |  | r. t |  | |  |  _ n t |  | | |  |  _ t   } | j |  j  |  j |  d  S(   N(   R   RE   t    RemoteCollectionsEditorTableViewR   R  R   t	   addWidgett	   setLayout(   RC   Ri   Rj   R   Re   R_   t   layout(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE   ,  s    	c         C  s   |  j  j |  d S(   s   Set DictEditor dataN(   R   Rh   (   RC   Rj   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRh   7  s    c         C  s   |  j  j j S(   s   Get model title(   R   R   Re   (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt	   get_title;  s    (   RW   RX   RY   R   RE   Rh   R  (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR  *  s   	R   c           B  sP   e  Z d  Z d d  Z d e d e d d d  Z e   d    Z d   Z	 RS(   s   Collections Editor Dialogc         C  sH   t  j |  |  |  j t j  d  |  _ d  |  _ d  |  _ d  |  _	 d  S(   N(
   R   RE   t   setAttributeR   t   WA_DeleteOnCloseRM   t	   data_copyt   widgett   btn_save_and_closet	   btn_close(   RC   Ri   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE   B  s    			R[   i  c      	   C  s  t  | t  r- | j   |  _ t |  } n t  | t t f  r[ | |  _ t |  } n d d l }	 y |	 j |  |  _ WnH t k
 r |	 j |  |  _ n& t	 t
 f k
 r t } | |  _ n Xt t |   } t |  j  t |  k r t } n  t |  |  j d | d | d | |  _ |  j j j j j |  j  t   }
 |
 j |  j  |  j |
  t   } | j   | st t d   |  _ |  j j t  |  j j j |  j  | j |  j  n  t t d   |  _  |  j  j! t  |  j  j" t  |  j  j j |  j#  | j |  j   |
 j$ |  d } d	 } d
 } | | t% d
 | g  | } |  j& | |  |  j' |  j j(    | d k r|  j* t+ j, d   n  t- j. d k r|  j/ t0 j1  n |  j/ t0 j2  d S(   s   Setup editor.iNRe   R   R_   s   Save and Closet   Closeiy   i   i
   t   dicteditt   darwin(3   Rv   Ry   RW  R  RF   Rw   Rx   t   deepcopyRI   RK   RJ   R   R.   R   R  R  R   R   R~   R   t   save_and_close_enableR   R  R  R   t
   addStretchR   R0   R  t   setDisabledt   clickedR  R  t   setAutoDefaultt
   setDefaultt   rejectt	   addLayoutR   t   resizet   setWindowTitleR  RM   t   setWindowIconRU  R   R  t   platformt   setWindowFlagsR   t   Toolt   Window(   RC   Rj   Re   R   t   widthR_   R   Ri   t   datalenRW  R  t
   btn_layoutt   constantt
   row_heightt   error_margint   height(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   P  sb    
	
		
c         C  s@   |  j  r< |  j  j t  |  j  j t  |  j  j t  n  d S(   sA   Handle the data change event to enable the save and close button.N(   R  Rt  R   R  R  (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR    s    	c         C  s   |  j  S(   s*   Return modified copy of dictionary or list(   R  (   RC   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     s    N(
   RW   RX   RY   RM   RE   R   R   R   R  R   (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR   @  s   Gt
   DictEditorc           B  s   e  Z d d   Z RS(   c         C  s$   t  j d t  t j |  |  d  S(   Nsh   `DictEditor` has been renamed to `CollectionsEditor` in Spyder 3. Please use `CollectionsEditor` instead(   R   t   warnt   RuntimeWarningR   RE   (   RC   Ri   (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE     s    	N(   RW   RX   RM   RE   (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR    s   t   RemoteCollectionsDelegatec           B  s2   e  Z d  Z d d d d  Z d   Z d   Z RS(   s   CollectionsEditor Item Delegatec         C  s&   t  j |  |  | |  _ | |  _ d  S(   N(   R   RE   t   get_value_funct   set_value_func(   RC   Ri   R	  R
  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE     s    	c         C  s6   | j    r2 | j   j | j   } |  j |  Sd  S(   N(   R   R   Rd   R   R	  (   RC   R   t   name(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     s    c         C  s<   | j    r8 | j   j | j   } |  j | |  n  d  S(   N(   R   R   Rd   R   R
  (   RC   R   RT   R  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR     s    N(   RW   RX   RY   RM   RE   R   R   (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR    s   	R  c           B  sY   e  Z d  Z e d d d d d d d d d d d d d d d d d d d  Z d   Z RS(   s   DictEditor table viewc         C  sS  t  j |  |  | |  _ |	 |  _ | |  _ | |  _ | |  _ |
 |  _ | |  _ | |  _	 | |  _
 | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ d  |  _ d  |  _ d  |  _ t |  _ t |  | d t d | d | d t |  _ |  j |  j  t |  | |  |  _ |  j j j |  j j  |  j |  j  |  j   |  j  |  |  _! d  S(   NR\   R]   R^   R_   ("   R$  RE   Re  Rh  R  t   is_data_framet	   is_seriesRi  Rj  Rk  Rl  Rm  Rn  Ro  RD  RH  Rr  RM   R}  R   R4  R   R   R   R   R  R  R	  R   R   R  R;  Rd  R&  (   RC   Ri   Rj   R]   R^   R	  R
  t   new_value_funct   remove_values_funct   copy_value_funct   is_list_funct   get_len_funct   is_array_funct   is_image_funct   is_dict_funct   get_array_shape_funct   get_array_ndim_funct	   plot_funct   imshow_funct   is_data_frame_funct   is_series_funct   show_image_func(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE     s>    
																				
c         C  s   t  j |  |  } | S(   s   Setup context menu(   R$  Rd  (   RC   R]   R&  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRd    s    N(   RW   RX   RY   R   RM   RE   Rd  (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR    s   		%c       
     sV  d d l  }  d d l m } | j |  j j d d dn d d } i d	 d
 6|  j j d d  d 6d	 d g d 6 t j d d d    t j	 d d d d d d  } y d d l
 } Wn, t t f k
 r d \ } } } } }	 n X| j d  } | j d d d d  } | j d d d d d d   } | j i d! d	 d d" d# d g d$ 6 } | j i d d d% d
 g d& 6d! d	 d d" g d' 6d( d) d* d+ g d, 6t t t t g d- 6 }	 d. t f    f d/     Y}
 |
   } i( | d0 6|  d1 6d2 d3 6t d4 d5  d6 6d	 d" t d d7 g d8 d g d9 6d	    | g d8 d f d: 6 d; 6d< d= 6d> d? 6t d@ 6|  j j d d  j |  j  dA 6|  j j d	 d! g d	 d! g g dB t t g t t g g dC 6|  j dD d  j |  j  dE 6|  j j d d do j |  j  dF 6|  j g   dG 6| dH 6  dI 6t j d d d dJ d	 d! t dK   dL 6| dM 6dp dO 6|  j  dq  dP 6|  j! dQ  dR 6|  j" d  dS 6|  j# dT  dU 6|  j$ dV  dW 6|  j dX  dY 6|  j dT  dZ 6|  j% dV  d[ 6|  j& dX  d\ 6|  j' d  d] 6|  j d  d^ 6| d_ 6| d` 6| da 6| db 6|	 dc 6d dd 6|  j( de 6|  j) df 6|  j* dg dh dr ds g dm 6S(t   s   Create test data.iN(   R#   i   R   id   R   t   Pi   t   di
   t   ai   t   bi  i   i   t   dayst   minutesi*   t   secondsi   s   1945-05-08T23:01:00.12345i  t   hoursi   R   s   1939-09-01Tt   ends
   1939-10-06t   freqt   12Hi    i   i   t   series_namet   ct
   string_colt   int_colg?g@gffffff
@g@t	   float_colt   bool_colt   Foobarc             s   e  Z    f d    Z RS(   c           s   d |  _   |  _   |  _ d  S(   Nt   toto(   R  t   testdictt   testdate(   RC   (   R1  R0  (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyRE     s    		(   RW   RX   RE   (    (   R1  R0  (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyR.    s   R#  t   modules   kjkj kj k j j kj k jkjRS   s   éùs   utf-8t   unicodei   t   kjkjRx   Rw   Ry   g&S?t   floati   R   R  R   t   maskt   masked_arrayis   1D-arrays   3D-arrayt   empty_arrayt   imageR   i   g    OAR   t	   timedeltay              ?t   complext	   complex64y              "@t
   complex128t   int8_scalari   t   int16_scalari    t   int32_scalari@   t   int64_scalart   float16_scalart   float32_scalart   float64_scalart   bool_scalart   bool__scalart	   timestampt   timedelta_pdt   datetimeindext   seriest
   ddataframeRM   t   unsupported1t   unsupported2i  t   dtypet   IDt   f8t   param1i  t   big_struct_array(   id   id   (   i   i   i   y       @      ?y       @      ?(   RO  RP  (   RQ  RP  i  (+   R  t   spyder.pil_patchR#   R   t   randomt   randintt   randR   R   R:  t   pandast   ModuleNotFoundErrort   ImportErrorRM   t	   Timestampt	   TimedeltaR   R)   R   R   R   R#  R7   R  t   astypet   int64t   maR   t   linspacet   float16t   bool_R   R<  R=  t   int8t   int16t   int32t   float32t   float64R  t   arccost   castt   zeros(   R  R#   R9  t   test_timedeltat   pdt   test_timestampt
   test_pd_tdt   test_dtindext   test_seriest   test_dfR.  t   foobar(    (   R1  R0  sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   get_test_data  s    	0	(	
"!%(

c          C  sJ   d d l  m }  |    } t   } | j t    | j   | j   d S(   s   Test Collections editor.i(   t   qapplicationN(   t   spyder.utils.qthelpersRs  R   R   Rr  R   R  (   Rs  t   appt   dialog(    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   editor_testK  s    		
c          C  s   d d l  m }  |    } d d l m } d d l m } | t   | d  j    } t	   } | j
 | d t | j   | j   d S(   s   Test remote collections editor.i(   Rs  (   t   VariableExplorer(   t   make_remote_viewR_   N(   Rt  Rs  t   spyder.plugins.variableexplorerRx  t   spyder_kernels.utils.nsviewRy  Rr  RM   t   get_settingsR   R   R   R   R  (   Rs  Ru  Rx  Ry  R_   Rv  (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   remote_editor_testV  s    			
t   __main__(k   RY   t
   __future__R    R   t   gcR  R   t   qtpy.compatR   R   t   qtpy.QtCoreR   R   R   R   R   R   t
   qtpy.QtGuiR	   R
   t   qtpy.QtWidgetsR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   spyder_kernels.utils.miscR   R{  R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   t   spyder.config.baseR0   t   spyder.config.fontsR1   t   spyder.config.guiR2   t   spyder.py3compatR3   R4   R5   R6   R7   t   spyder.utilsR8   RU  t   spyder.utils.miscR9   Rt  R:   R;   R<   t,   spyder.widgets.variableexplorer.importwizardR=   t*   spyder.widgets.variableexplorer.texteditorR>   t+   spyder.widgets.variableexplorer.arrayeditorR?   t/   spyder.widgets.variableexplorer.dataframeeditorR@   R{   R|   R#  RA   RZ   R   R   R$  R  R  R   R  R  R  Rr  Rw  R}  RW   (    (    (    sP   lib/python2.7/site-packages/spyder/widgets/variableexplorer/collectionseditor.pyt   <module>   s^   .d() &   }g	9	P		