
,]c           @  sc  d  Z  d d l 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 d d l m Z m Z 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" m# Z# m$ Z$ m% Z% m& Z& m' Z' d d l( Z) d d l* m+ Z+ d d	 l, m- Z- d d
 l. m/ Z/ m0 Z0 d d l1 m2 Z2 m3 Z3 m4 Z4 m5 Z5 m6 Z6 m7 Z7 m8 Z8 d d l9 m: Z; d d l< m= Z= m> Z> m? Z? i( d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d  d! 6d" d# 6d  d$ 6d  d% 6d  d& 6d  d' 6d  d( 6d  d) 6d  d* 6d  d+ 6d  d, 6d  d- 6d  d. 6d  d/ 6d  d0 6d  d1 6d  d2 6d  d3 6d  d4 6d  d5 6d  d6 6d d7 6d d8 6d d9 6Z@ d: ZA d; ZB d< ZC d=   ZD d>   ZE d?   ZF d@ e f dA     YZG dB e f dC     YZH dD e% f dE     YZI dF e' f dG     YZJ dH e f dI     YZK d S(J   s'   
NumPy Array Editor Dialog based on Qt
i(   t   print_function(   t   from_qvariantt   to_qvariant(   t   QAbstractTableModelt   QItemSelectiont   QLocalet   QItemSelectionRanget   QModelIndext   Qtt   Slot(   t   QColort   QCursort   QDoubleValidatort   QKeySequence(   t   QAbstractItemDelegatet   QApplicationt	   QCheckBoxt	   QComboBoxt   QDialogt   QDialogButtonBoxt   QGridLayoutt   QHBoxLayoutt   QInputDialogt   QItemDelegatet   QLabelt	   QLineEditt   QMenut   QMessageBoxt   QPushButtont   QSpinBoxt   QStackedWidgett
   QTableViewt   QVBoxLayoutt   QWidgetN(   t   _(   t   DEFAULT_SMALL_DELTA(   t   get_fontt   config_shortcut(   t   iot   is_binary_stringt	   is_stringt   is_text_stringt   PY3t   to_binary_stringt   to_text_string(   t   icon_manager(   t   add_actionst   create_actiont
   keybindings   %.6gt   singlet   doublet   float_t	   longfloatt   float16t   float32t   float64t   float96t   float128s   %rt   csinglet   complex_t
   clongfloatt	   complex64t
   complex128t
   complex192t
   complex256s   %dt   bytes   %st   bytes8t   shortt   intct   int_t   longlongt   intpt   int8t   int16t   int32t   int64t   ubytet   ushortt   uintct   uintt	   ulonglongt   uintpt   uint8t   uint16t   uint32t   uint64t   bool_t   bool8t   boolg    Ag     j@i<   c         C  s   d |  j  k p |  j  d k S(   s-   Return True if datatype dtype is a float kindt   floatR1   R2   (   R1   R2   (   t   name(   t   dtype(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   is_float`   s    c         C  s7   t  |   p6 d |  j k p6 d |  j k p6 d |  j k S(   s.   Return True is datatype dtype is a number kindt   intt   longRC   (   R\   RZ   (   R[   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt	   is_numbere   s    *c         C  se   t  t g  |  D] } | j   | j   f ^ q    \ } } t |  t |  t |  t |  f S(   s-   Extract the boundaries from a list of indexes(   t   listt   zipt   rowt   columnt   mint   max(   t
   index_listt   it   rowst   cols(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   get_idx_rectk   s    =t
   ArrayModelc           B  s   e  Z d  Z d Z d Z d d d e d d  Z d   Z d   Z	 d   Z
 e   d  Z e   d	  Z e e d
  Z e e d  Z d   Z d   Z e j d  Z e j d  Z d   Z e j d  Z d   Z RS(   s   Array Editor Table Modeli  i(   s   %.6gc   	      C  sL  t  j |   | |  _ i  |  _ | |  _ | |  _ | |  _ t j d g d | j	 |  _
 | j	 t j t j f k r t j |  _ n t j |  _ d d g } d |  _ d |  _ d |  _ | |  _ | |  _ |  j j d |  _ |  j j d |  _ |  j |  j } y t j |  j |   |  _ t j |  j |   |  _ |  j |  j k rZ|  j d 8_ n  | d |  _ | d | d |  _ t |  _ WnD t  t! f k
 rd  |  _ d  |  _ d  |  _ d  |  _ t# |  _ n X| t$ k r|  j% |  _& |  j' |  _( nT |  j t) k r|  j% |  _& n |  j |  _& |  j t* k r<|  j' |  _( n |  j |  _( d  S(	   Ni    R[   gQ?gGz?gffffff?g      ?g333333?i   (+   R   t   __init__t   dialogt   changest   xlabelst   ylabelst   readonlyt   npt   arrayR[   t
   test_arrayR=   R>   t   abst
   color_funct   realt   satt   valt   alpt   _datat   _formatt   shapet
   total_rowst
   total_colst   nanmint   vmint   nanmaxt   vmaxt   hue0t   dhuet   Truet   bgcolor_enabledt	   TypeErrort
   ValueErrort   Nonet   Falset
   LARGE_SIZEt   ROWS_TO_LOADt   rows_loadedt   COLS_TO_LOADt   cols_loadedt   LARGE_NROWSt
   LARGE_COLS(	   t   selft   datat   formatRo   Rp   Rq   t   parentt   hueranget   size(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRl   z   sT    														c         C  s   |  j  S(   s   Return current format(   R|   (   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt
   get_format   s    c         C  s   |  j  S(   s   Return data(   R{   (   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   get_data   s    c         C  s   | |  _  |  j   d S(   s   Change display formatN(   R|   t   reset(   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt
   set_format   s    	c         C  s$   |  j  |  j k r |  j  S|  j Sd S(   s   Array column numberN(   R   R   (   R   t   qindex(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   columnCount   s    c         C  s$   |  j  |  j k r |  j  S|  j Sd S(   s   Array row numberN(   R~   R   (   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   rowCount   s    c         C  sJ   | r# |  j  |  j k r t St Sn  | rF |  j |  j k r? t St Sn  d  S(   N(   R~   R   R   R   R   R   (   R   Rh   t   columns(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   can_fetch_more   s    c         C  s   |  j  d |  rt |  j |  j } t | |  j  } |  j t   |  j |  j | d  |  j | 7_ |  j   n  |  j  d |  r |  j |  j	 } t | |  j
  } |  j t   |  j	 |  j	 | d  |  j	 | 7_	 |  j   n  d  S(   NRh   i   R   (   R   R~   R   Rd   R   t   beginInsertRowsR   t   endInsertRowsR   R   R   t   beginInsertColumnst   endInsertColumns(   R   Rh   R   t   remindert   items_to_fetch(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt
   fetch_more   s    c         C  s   | d k |  _  |  j   d S(   s   Toggle backgroundcolori    N(   R   R   (   R   t   state(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   bgcolor   s    c         C  sl   | j    } | j   } t |  j j  d k r@ |  j | } n |  j | | f } |  j j | | f |  S(   Ni   (   Rb   Rc   t   lenR{   R}   Rn   t   get(   R   t   indexRg   t   jt   value(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt	   get_value   s    c         C  s  | j    s t   S|  j |  } t |  rN y t | d  } WqN qN Xn  | t j k r | t j j	 k rs d Sy t |  j
 |  SWqt k
 r t |  _ t |  SXn| t j k r t t t j t j B  S| t j k r|  j r| t j j	 k	 ry |  j |  j t |  j  |  j |  t |  j  |  j } t t j |   } t j | |  j |  j |  j   } t |  SWqt k
 rt   SXn" | t j! k rt t" d t#   St   S(   s   Cell contentt   utf8t    t   font_size_delta($   t   isValidR   R   R'   R,   R   t   DisplayRoleRr   t   mat   maskedR|   R   R   Rq   t   reprt   TextAlignmentRoleR]   t   AlignCentert   AlignVCentert   BackgroundColorRoleR   R   R   RY   R   Rv   R   Ru   R
   t   fromHsvFRx   Ry   Rz   t   FontRoleR$   R#   (   R   R   t   roleR   t   huet   color(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR      s>    	8!c   	      C  sM  | j    s |  j r t S| j   } | j   } t | t  } |  j j j	 } | d k r y t
 t |   } Wqt k
 r | j   d k } qXn | j d  s | j d  r t | d  } n | j d  s | j d  r t |  } n | j   j d  s"| j   j d  r&t Sy% t |  } | j sJ| j } n  Wn4 t k
 r} t j |  j d	 d
 t |   t SXy | |  j d <WnH t k
 r} t d t |   t j |  j d	 d t |   t SX| |  j | | f <|  j j | |  t |  sI| |  j k r+| |  _ n  | |  j  k  rI| |  _  qIn  t! S(   s   Cell content changeRX   t   truet   stringt   bytesR   t   unicodet   strt   et   Errors   Value error: %si    s   OverflowError: s   Overflow error: %s("   R   Rq   R   Rb   Rc   R   R   R{   R[   RZ   RX   RY   R   t   lowert
   startswithR+   R,   t   endswitht   complext   imagRw   R   t   criticalRm   Rt   t   OverflowErrort   printRn   t   dataChangedt   emitR(   R   R   R   (	   R   R   R   R   Rg   R   R[   Ry   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   setData!  sP    *	c         C  s3   | j    s t j St j t j |  |  t j B S(   s   Set editable flag(   R   R   t   ItemIsEnabledt	   ItemFlagsR   t   flagst   ItemIsEditable(   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR   O  s    c         C  se   | t  j k r t   S| t  j k r. |  j n |  j } | d k rS t t |   St | |  Sd S(   s   Set header dataN(   R   R   R   t
   HorizontalRo   Rp   R   R]   (   R   t   sectiont   orientationR   t   labels(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt
   headerDataV  s    !c         C  s   |  j    |  j   d  S(   N(   t   beginResetModelt   endResetModel(   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR   `  s    
N(   t   __name__t
   __module__t   __doc__R   R   R   R   Rl   R   R   R   R   R   R   R   R   R   R   R   R   R   t   EditRoleR   R   R   R   (    (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRk   t   s&   	<						$.	
t   ArrayDelegatec           B  s5   e  Z d  Z d d  Z d   Z d   Z d   Z RS(   s   Array Editor Item Delegatec         C  s   t  j |  |  | |  _ d  S(   N(   R   Rl   R[   (   R   R[   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRl   g  s    c         C  s   | j    } | j |  } | j j j d k rQ | } | j | t |   d S| t j j	 k	 r t
 |  } | j t d t   | j t j  t |  j  r t |  } | j t d   | j |  n  | j j |  j  | Sd S(   s   Create editor widgetRX   NR   t   C(   t   modelR   R{   R[   RZ   R   R   Rr   R   R   R   t   setFontR$   R#   t   setAlignmentR   R   R_   R   t	   setLocaleR   t   setValidatort   returnPressedt   connectt   commitAndCloseEditor(   R   R   t   optionR   R   R   t   editort	   validator(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   createEditork  s     c         C  sN   |  j    } y |  j j |  Wn t k
 r3 n X|  j j | t j  d S(   s   Commit and close editorN(   t   sendert
   commitDataR   t   AttributeErrort   closeEditorR   t   NoHint(   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR   ~  s    c         C  s5   t  | j   j | t j  t  } | j |  d S(   s   Set editor widget's dataN(   R   R   R   R   R   R   t   setText(   R   R   R   t   text(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   setEditorData  s    $N(   R   R   R   R   Rl   R   R   R   (    (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR   e  s
   		t	   ArrayViewc           B  se   e  Z d  Z d   Z e e d  Z d   Z d   Z d   Z d   Z	 d   Z
 e   d    Z RS(	   s   Array view classc           s  t  j   |    j |    j t |     d } x+ t | d  D] } |   j |  7} qJ W  j   j t	 | d    j
    |   _   j     _ t   j d d d d d     j   j j   f d	      j   j j   f d
    d  S(   Ni    i   i   t   contextt   variable_explorerRZ   t   copyR   c           s     j  |  d t S(   NR   (   t   load_more_dataR   (   Ry   (   R   (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   <lambda>  R   c           s     j  |  d t S(   NRh   (   R   R   (   Ry   (   R   (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR     R   (   R   Rl   t   setModelt   setItemDelegateR   t   ranget   columnWidtht   viewportt   resizeRd   t   heightR}   t
   setup_menut   menuR%   R   t   horizontalScrollBart   valueChangedR   t   verticalScrollBar(   R   R   R   R[   R}   t   total_widtht   k(    (   R   sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRl     s    %	c         C  s  |  j    j   } d  } } | rb | |  j   j   k rb |  j   j } |  j   j d |  n  | r | |  j   j   k r |  j   j	 } |  j   j d |  n  | d  k	 s | d  k	 rt
   } x| D] } | j   }	 | j   }
 | d  k	 r,|	 d k r,|
 | d k r,|  j   j d }
 n  | j   } | j   } | d  k	 r| d k r| | d k r|  j   j	 d } n  |  j   j |	 |  } |  j   j |
 |  } t | |  } | j |  q W|  j    j | |  j    j  n  d  S(   NRh   R   i    i   (   t   selectionModelt	   selectionR   R
  t   maximumR   R   R   R  R   R   t   topt   bottomt   leftt   rightR   R   t   appendt   selectt   ClearAndSelect(   R   R   Rh   R   t   old_selectiont   old_rows_loadedt   old_cols_loadedt   new_selectiont   partR  R  R  R  t   top_leftt   bottom_right(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR     s4    
	c         C  sN   t  j t t j   |  j   |  j   j d t  |  j   t  j	   d S(   s   Resize cells to contentsR   N(
   R   t   setOverrideCursorR   R   t
   WaitCursort   resizeColumnsToContentsR   R   R   t   restoreOverrideCursor(   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   resize_to_contents  s
    

c         C  sh   t  |  t d  d t d  d t j d  d |  j d t j |  _ t	 |   } t
 | |  j g  | S(   s   Setup context menut   Copyt   shortcutt   icont   editcopyt	   triggeredR   (   R/   R"   R0   t   imaR%  R   R   t   WidgetShortcutt   copy_actionR   R.   (   R   R  (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR    s    	c         C  s$   |  j  j | j    | j   d S(   s   Reimplement Qt methodN(   R  t   popupt	   globalPost   accept(   R   t   event(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   contextMenuEvent  s    c         C  s0   | t  j k r |  j   n t j |  |  d S(   s   Reimplement Qt methodN(   R   R#  R   R   t   keyPressEvent(   R   R.  (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR0    s    c   	      C  sb  | s
 d St  |  \ } } } } | d k r] | |  j   j d k r] |  j   j d } n  | d k r | |  j   j d k r |  j   j d } n  |  j   j   } t r t j	   } n t j
   } yJ t j | | | | d  | | d  f d d d |  j   j   Wn' t j |  t d  t d   d SX| j   j d	  } | j   | S(
   s)   Copy an array portion to a unicode stringNi    i   t	   delimiters   	t   fmtt   Warnings1   It was not possible to copy values for this arrays   utf-8(   Rj   R   R   R   R   R~   R   R*   R&   t   BytesIOt   StringIORr   t   savetxtR   R   t   warningR"   t   getvaluet   decodet   close(	   R   t
   cell_ranget   row_mint   row_maxt   col_mint   col_maxR{   t   outputt   contents(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   _sel_to_text  s*    %%-
c         C  s2   |  j  |  j    } t j   } | j |  d S(   s   Copy text to clipboardN(   RB  t   selectedIndexesR   t	   clipboardR   (   R   t   cliptxtRD  (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR     s    (   R   R   R   Rl   R   R   R"  R  R/  R0  RB  R	   R   (    (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR     s   	#					t   ArrayEditorWidgetc           B  s5   e  Z e d d d   Z d   Z d   Z d   Z RS(   c         C  s/  t  j |  |  | |  _ d  |  _ t |  j j  d k rh |  j j |  _ |  j j d d f |  j _ n6 t |  j j  d k r |  j j |  _ d |  j _ n  t j | j	 j
 d  } t |  j d | d | d | d | d |  |  _ t |  |  j | j	 | j  |  _ t   } | j t j  t t d	   } | j t | j	   | j |  | j j |  j  t t d
   } | j |  | j j |  j j  t t d   }	 |	 j |  j j  |	 j |  j j  |	 j j |  j j   | j |	  t!   }
 |
 j |  j  |
 j" |  |  j# |
  d  S(   Ni   i    s   %sR   Ro   Rp   Rq   R   t   Formatt   Resizes   Background color(   i   i   ($   R!   Rl   R   R   t   old_data_shapeR   R}   t   SUPPORTED_FORMATSR   R[   RZ   Rk   R   R   t   viewR   R   R   t	   AlignLeftR   R"   t
   setEnabledR\   t	   addWidgett   clickedR   t   change_formatR"  R   t
   setCheckedR   t   stateChangedR   R    t	   addLayoutt	   setLayout(   R   R   R   Rq   Ro   Rp   R   t
   btn_layoutt   btnR   t   layout(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRl     s>    		!		c         C  sg   x? t  |  j j j    D]% \ \ } } } | |  j | | f <q W|  j d k	 rc |  j |  j _ n  d S(   s   Accept changesN(   R`   R   Rn   t   itemsR   RI  R   R}   (   R   Rg   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   accept_changes4  s    +c         C  s%   |  j  d k	 r! |  j  |  j _ n  d S(   s   Reject changesN(   RI  R   R   R}   (   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   reject_changes;  s    c         C  s   t  j |  t d  t d  t j |  j j    \ } } | r t |  } y | d Wn+ t j	 |  t d  t d  |  d SX|  j j
 |  n  d S(   s   Change display formatRG  s   Float formattingg?R   s   Format (%s) is incorrectN(   R   t   getTextR"   R   t   NormalR   R   R   R   R   R   (   R   R   t   valid(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRP  @  s    	N(   R   R   R   R   Rl   RY  RZ  RP  (    (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRF    s
   %		t   ArrayEditorc           B  s   e  Z d  Z d d  Z d e d d d  Z e e e  d    Z	 d   Z
 d   Z d   Z e   d    Z d	   Z d
   Z e   d    Z RS(   s   Array Editor Dialogc         C  su   t  j |  |  |  j t j  d  |  _ d  |  _ d  |  _ d  |  _	 d  |  _
 d  |  _ i  i  i  g |  _ d |  _ d  S(   Ni    (   R   Rl   t   setAttributeR   t   WA_DeleteOnCloseR   R   t   arraywidgett   stackRW  t   btn_save_and_closet	   btn_closet   dim_indexest   last_dim(   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRl   R  s    						R   c         C  s  | |  _  | p |  j  j j } | j j d" k	 } t | t j j	  } | j
 d k rl |  j t d   t S| d" k	 r t |  |  j  j d k r |  j t d   t S| d" k	 r t |  |  j  j d k r |  j t d   t S| s\| j j } | t k r\| j d  r\| j d  r\t d	  | j j }	 |  j t d
  |	  t Sn  t   |  _ |  j |  j  |  j t j d   | rt |  d t d  } n t d  } | r| d t d  d 7} n  |  j |  |  j d d  t |   |  _ | rPx | j j D], }
 |  j j t |  | |
 | | |   qWn | r|  j j t |  | | | |   |  j j t |  | j  | | |   |  j j t |  | j  | | |   n4 | j
 d k rn" |  j j t |  | | | |   |  j j!   |  _" |  j" r0|  j" j# j$ j% |  j&  n  |  j j' j% |  j(  |  j j |  j d d  t)   } | s| s| j
 d k r| r-| j t* t d    g  } x | j j D]q }
 | j j+ |
 } |
 } t |  d k r| d } t, |  st- |  } n  | d | 7} n  | j. |  qWn! t d  t d  t d  g } | j
 d k rt/ |  d t |  _0 |  j0 j1 j% |  j2  g  t3 d  D] } t4 |  ^ q} t5 |   } | j6 |  | j7 j% |  j8  t* t d   } | j |  | j |  t*   |  _9 | j |  j9  t* t d   } | j |  | j |  j0  t*   |  _: | j |  j:  |  j8 |  j;  n< t5 |   } | j7 j% |  j j<  | j6 |  | j |  | rt* t d   } | j= t d   | j |  qn  | j>   | sWt? t d   |  _@ |  j@ jA tB  |  j@ jC j% |  jD  | j |  j@  n  t? t d   |  _E |  jE jF tB  |  jE jG tB  |  jE jC j% |  jH  | j |  jE  |  j jI | d d  |  jJ d  d!  |  jK tL jM  tB S(#   sb   
        Setup ArrayEditor:
        return False if data is not supported, True otherwise
        i   s4   Arrays with more than 3 dimensions are not supportedi   s=   The 'xlabels' argument length do no match array column numberi    s:   The 'ylabels' argument length do no match array row numberR   R   s	   %s arrayss   %s are currently not supportedt   arredits    - s   NumPy arrays   Array editors    (s	   read onlyt   )iX  i  s   Record array fields:i   s   Masked datat   Datat   Maskt   keyboardTrackings   Axis:s   Index:s.   <u>Warning</u>: changes are applied separatelysm   For performance reasons, changes applied to masked array won't be reflected in array's data (and vice-versa).s   Save and Closet   Closei  i,  N(N   R   R   t	   writeableR[   t   namesR   t
   isinstanceRr   R   t   MaskedArrayt   ndimt   errorR"   R   R   R}   RZ   RJ  R   R   RW  RT  t   setWindowIconR(  R%  R,   t   setWindowTitleR  R   Rb  RN  RF  t   maskt   currentWidgetRa  R   R   R   t   save_and_close_enablet   currentChangedt   current_widget_changedR   R   t   fieldsR)   R   R  R   t
   index_spinR	  t   change_active_widgetR  R   R   t   addItemst   currentIndexChangedt   current_dim_changedt   shape_labelt   slicing_labelRf  t   setCurrentIndext
   setToolTipt
   addStretchR   Rc  t   setDisabledR   RO  R-  Rd  t   setAutoDefaultt
   setDefaultt   rejectRS  t   setMinimumSizet   setWindowFlagsR   t   Window(   R   R   t   titleRq   Ro   Rp   t   is_record_arrayt   is_masked_arrayt   dtnt   arrRZ   RU  Rn  t   fieldR   Rg   t   ra_combot   label(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   setup_and_checke  s    	((		
!%
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(   Rc  RM  R   R  R  (   R   t   left_topR  (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRw    s    	c         C  s2   |  j  j |  |  _ |  j j j j |  j  d  S(   N(   Rb  t   widgetRa  R   R   R   Rw  (   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRy    s    c         C  sQ  d g d } d | |  j  <|  j j d d j |  d |  | d k  re |  j j |  j  | } n | } t d  g d } | | |  j  <|  j |  j  j	 |  } | d k r=|  j
 j   } y* |  j
 j t |  |  j t |    Wn- t k
 r|  j
 j t |  |  j   n X| |  j |  j  | <|  j
 j   n  |  j
 j |  d S(	   s   
        This is implemented for handling negative values in index for
        3d arrays, to give the same behavior as slicing
        t   :i   s   <font color=red>%i</font>s
   Slicing: [s   , t   ]i    N(   Rf  R  R   t   joinR   R}   t   sliceR   Re  R   Rb  t   countRN  RF  t   tuplet
   IndexErrort   updateR  (   R   R   t   string_indext
   data_indext   slice_indext   stack_index(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR|    s(     c         C  s   | |  _  d g d } d | | <|  j j d d j |  d |  j j  |  j j   d k rs |  j j d  n |  j	 d  |  j j
 |  j j | |  j j | d  d	 S(
   s]   
        This change the active axis the array editor is plotting over
        in 3D
        s   %ii   s   <font color=red>%i</font>s   Shape: (s   , s   )    i    i   N(   Rf  R  R   R  R   R}   R{  R   t   setValueR|  t   setRange(   R   R   t   string_size(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR    s    	
c         C  sG   x3 t  |  j j    D] } |  j j |  j   q Wt j |   d S(   s   Reimplement Qt methodN(   R  Rb  R  R  RY  R   R-  (   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR-  -  s    c         C  s   |  j  S(   s-   Return modified array -- this is *not* a copy(   R   (   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR   4  s    c         C  s7   t  j |  t d  |  |  j t j  |  j   d S(   s(   An error occured, closing the dialog boxs   Array editorN(   R   R   R"   R_  R   R`  R  (   R   t   message(    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyRr  :  s    c         C  sY   |  j  d k	 rH x6 t |  j j    D] } |  j j |  j   q% Wn  t j |   d S(   s   Reimplement Qt methodN(	   Ra  R   R  Rb  R  R  RZ  R   R  (   R   R   (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR  @  s    N(   R   R   R   R   Rl   R   R  R	   R   Rw  Ry  R|  R  R-  R   Rr  R  (    (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyR^  P  s   					(L   R   t
   __future__R    t   qtpy.compatR   R   t   qtpy.QtCoreR   R   R   R   R   R   R	   t
   qtpy.QtGuiR
   R   R   R   t   qtpy.QtWidgetsR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   t   numpyRr   t   spyder.config.baseR"   t   spyder.config.fontsR#   t   spyder.config.guiR$   R%   t   spyder.py3compatR&   R'   R(   R)   R*   R+   R,   t   spyder.utilsR-   R(  t   spyder.utils.qthelpersR.   R/   R0   RJ  R   R   R   R\   R_   Rj   Rk   R   R   RF  R^  (    (    (    sJ   lib/python2.7/site-packages/spyder/widgets/variableexplorer/arrayeditor.pyt   <module>	   s   4"4
				+|D