
    JeN7                         d Z ddlZddl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 ddlmZ ddlmZ  G d d	e      Z G d
 de      Z G d de      Zd Zedk(  r e        yy)zLayout dialogs    N)QAbstractTableModelQModelIndexQSizeQt)from_qvariantto_qvariant)	QAbstractItemView	QComboBoxQDialogQDialogButtonBox	QGroupBoxQHBoxLayoutQPushButton
QTableViewQVBoxLayout)_)to_text_stringc                        e Zd ZdZ fdZd Zd Zej                  fdZ	d Z
 e       fdZ e       fdZd	 Zd
 Z xZS )LayoutModel c                     t         t        |   |       || _        || _        || _        || _        || _        || _        g | _	        | j                  |||||       y N)superr   __init___parentnamesui_namesorderactive	read_only_rowsset_data)selfparentr   r   r   r   r    	__class__s          F/usr/lib/python3/dist-packages/spyder/plugins/layout/widgets/dialog.pyr   zLayoutModel.__init__   sY    k4)&1 
 
"
eXufi@    c                     g | _         || _        || _        || _        || _        || _        |D ]C  }|j                  |      }||v r	||   |dg}n||   |dg}| j                   j                  |       E y)r   TFN)r!   r   r   r   r   r    indexappend)	r#   r   r   r   r   r    namer)   rows	            r&   r"   zLayoutModel.set_data'   s    

 
" 	#DKK%Ev~d3e4JJc"	#r'   c                    |j                         }| j                  |      \  }}}|| j                  v rt        j                  S |j	                         st        j
                  S |j                         }|dv r_t        j                  t        t        j
                  t        j                  z  t        j                  z  t        j                  z              S t        j                  t        j
                        S )Override Qt method)r   )r,   r    r   NoItemFlagsisValidItemIsEnabledcolumn	ItemFlagsintItemIsSelectableItemIsUserCheckableItemIsEditable)r#   r)   r,   ui_namer+   stater2   s          r&   flagszLayoutModel.flags7   s    iik#xx}u4>>!>>!}}###S=<<B$4$4r7J7J$J$&$:$:%;$&$5$5%6 !7 8 8 << 0 011r'   c                    |j                         r7d|j                         cxk  r!t        | j                        k  st	               S  t	               S |j                         }|j                         }| j                  |      \  }}}|t        j                  k(  s|t        j                  k(  r|dk(  rt	        |      S t	               S |t        j                  k(  r|dk(  rt	        |      S t	               S |t        j                  k(  r7|dk(  r"|rt        j                  S t        j                  S |dk(  rt	        |      S t	               S )r.   r      )r0   r,   lenr!   r   r2   r   DisplayRoleEditRoleUserRoleCheckStateRoleChecked	Unchecked)r#   r)   roler,   r2   r8   r+   r9   s           r&   datazLayoutModel.dataH   s
   }}a599;&HTZZ&H=  'I= iik#xx}u2>>!TR[[%8{"7++ } R[[ {"4(( } R&&&{::%<<'{"5))}r'   c                    |j                         }| j                  |      \  }}}|t        j                  k(  rh| j                  |||| g       | j                  j                  |       | j                  j                          | j                  j                  ||       y|t        j                  k(  r@| j                  |t        |t              ||g       | j                  j                  ||       yy)r.   T)r,   r   rA   set_rowr   setCurrentIndexsetFocusdataChangedemitr?   r   r   )r#   r)   valuerD   r,   r8   r+   r9   s           r&   setDatazLayoutModel.setDataa   s    iik#xx}u2$$$LLw%i89LL((/LL!!#!!%/R[[ LLmE>:D%HJ!!%/r'   c                 ,    t        | j                        S )r.   )r=   r!   r#   r)   s     r&   rowCountzLayoutModel.rowCounts   s    4::r'   c                      y)r.       rO   s     r&   columnCountzLayoutModel.columnCountw   s    r'   c                 v    | j                   g k(  s|t        | j                         k\  rg dS | j                   |   S )r   )NNN)r!   r=   )r#   rownums     r&   r,   zLayoutModel.row{   s2    ::vTZZ8%%::f%%r'   c                 "    || j                   |<   y)r   N)r!   )r#   rV   rL   s      r&   rG   zLayoutModel.set_row   s    "

6r'   )__name__
__module____qualname____doc__r   r"   r:   r   r>   rE   rM   r   rP   rT   r,   rG   __classcell__r%   s   @r&   r   r      sK    A# 2"  "~~ 2$ )]  !, &#r'   r   c                   (     e Zd ZdZ fdZd Z xZS )LayoutSaveDialogr   c                 :   t         t        |   |       || _        t	        |       | _        | j
                  j                  |       | j
                  j                  d       | j
                  j                          t        t        j                  t        j                  z  t        j                  |       | _        | j                  j                  t        j                        | _        | j                  j                  t        j                        | _        | j                   j%                  d       t'        dd      | _        | j+                  d       | j-                  d       | j/                  | j(                         | j1                  | j(                         t3               | _        | j4                  j7                  | j
                         | j4                  j7                  | j                         | j9                  | j4                         | j                  j:                  j=                  | j>                         | j                  j@                  j=                  | jB                         | j
                  jD                  j=                  | jF                         y )NTF,  d   zSave layout as)$r   r_   r   r   r
   	combo_boxaddItemssetEditableclearEditTextr   OkCancelr   
Horizontal
button_boxbutton	button_okbutton_cancel
setEnabledr   dialog_sizesetWindowTitlesetModalsetMinimumSizesetFixedSizer   layout	addWidget	setLayoutacceptedconnectacceptrejectedcloseeditTextChanged
check_text)r#   r$   r   r%   s      r&   r   zLayoutSaveDialog.__init__   s   .v6  #4&""4($$&*+;+>+>+;+B+B,C+-==$@ //0@0C0CD!__334D4K4KL 	!!%( c?,-dD,,-$**+ "mdnn-doo.t{{# 	  ((5  ((4&&..t?r'   c                     t        |      dk(  r| j                  j                  d       y| j                  j                  d       y)z%Disable empty layout name possibility FTN)r   rl   rn   )r#   texts     r&   r}   zLayoutSaveDialog.check_text   s3    $3&NN%%e,NN%%d+r'   )rX   rY   rZ   r[   r   r}   r\   r]   s   @r&   r_   r_      s    "@H,r'   r_   c                   6     e Zd ZdZ fdZd ZddZd Z xZS )LayoutSettingsDialogzLayout settings dialogc           
      0    t         t           |       | _        d  _        | _        | _        | _        | _        | _	        t        t        d             _        t        t        d             _        t        t        d             _        t        t        j                   t        j"                  z  t$        j&                          _        t+        t        d             _        t/                _         j(                  j3                  t        j                          _         j(                  j3                  t        j"                         _         j6                  j9                  d        j6                  j;                  d       t=        dd       _         jA                   j>                          jC                   j>                          jE                  d        j0                  jG                  tI         j0                  |||||              j0                  jK                  tL        jN                          j0                  jQ                  tL        jR                          j0                  jU                         jW                           j0                  jY                         jW                           j0                  j[                  d        j0                  j]                  d	        j0                  j_                  t$        j`                          j0                  jY                         jc                  d        j0                  je                  d
d        j0                  jg                          _        ti               }|jk                   j                         |jk                   j                         |jm                          |jk                   j                         to               }|jk                   j0                         |jq                  |        j,                  js                  |       ti               }	|	jk                   j,                         |	jk                   j(                          js                  |	        j(                  jt                  jw                   jx                          j(                  jz                  jw                   j|                          j                  j~                  jw                   j                          j                  j~                  jw                   fd        j                  j~                  jw                   fd        j0                  j                         j                  jw                   fd        j                  j                  jw                   fd       t        |      t        |      kD  rkt        |      }
 j0                  j                         j                  |
d      } j0                  j                  |        j0                  j                          y  j                  j                  d        j                  j                  d        j                  j                  d       y )NzMove Upz	Move DownzDelete LayoutzLayout Display and OrderTra      zLayout SettingsFr<   c                  &     j                  d      S )NTmove_layoutr#   s   r&   <lambda>z/LayoutSettingsDialog.__init__.<locals>.<lambda>   s    D4D4DT4J r'   c                  &     j                  d      S )NFr   r   s   r&   r   z/LayoutSettingsDialog.__init__.<locals>.<lambda>   s    d6F6Fu6M r'   c                  (     j                  d d       S r   selection_changedr   s   r&   r   z/LayoutSettingsDialog.__init__.<locals>.<lambda>       4))$5 r'   c                  (     j                  d d       S r   r   r   s   r&   r   z/LayoutSettingsDialog.__init__.<locals>.<lambda>   r   r'   r   )Ir   r   r   r   _selection_modelr   r   r   r   r    r   r   button_move_upbutton_move_downbutton_deleter   rg   rh   r   ri   rj   r   	group_boxr   tablerk   	ok_buttoncancel_button
setDefaultsetAutoDefaultr   ro   rr   rs   rp   setModelr   setSelectionBehaviorr	   
SelectRowssetSelectionModeSingleSelectionverticalHeaderhidehorizontalHeadersetAlternatingRowColorssetShowGridsetHorizontalScrollBarPolicyScrollBarAlwaysOffsetStretchLastSectionsetColumnHiddenselectionModelr   ru   
addStretchr   	addLayoutrv   rw   rx   ry   rz   r{   clickeddelete_layoutmodelrJ   selectionChangedr=   r)   rH   rI   setDisabled)r#   r$   r   r   r   r   r    buttons_layoutgroup_layoutrt   r,   r)   r%   s   `           r&   r   zLayoutSettingsDialog.__init__   s   "D26: $
 
" *!I,7 +AkN ;(?);<*+;+>+>+;+B+B,C+-==$@ #1%?#@A%
//0@0C0CD!__334D4K4KL%%d+))$/ !c?D,,-$**+-.



E8UFIN	P

''(9(D(DE

##$5$E$EF

!!#((*

##%**,

**40

u%

//0E0EF

##%;;DA

""1d+ !%

 9 9 ; %  !4!45  !6!67!!#  !3!34"}tzz*~.  .()v 	  ((5  ((4""**4+=+=>##++,JK%%--.MN

&&..5	7..665	7 u:I&i.CJJ$$&,,S!4EJJ&&u-JJ! ++D1!!--d3**40r'   c                    | j                   | j                  | j                  | j                  | j                  f\  }}}}}| j
                  j                         j                         j                         }| j
                  j                         j                  |      \  }}}	||vrt        | j
                  j                         j                         j                         t              }||v r|j                  |      }
ny|
dk7  r}|j                  |       |j                  |       |j                  |       ||v r|j                  |       ||||f\  | _         | _        | _        | _        | j
                  j                         j                  |||||       | j
                  j                         j                  dd      }
| j
                  j!                  |
       | j
                  j#                          | j%                  dd       t'        |      dk(  st'        |      t'        |      k(  rR| j(                  j+                  d       | j,                  j+                  d       | j.                  j+                  d       yyyy)zDelete layout from the config.Nr   T)r   r   r   r   r    r   r   currentIndexr,   r   r   rE   r   r)   remover"   rH   rI   r   r=   r   r   r   r   )r#   r   r   r   r   r    r,   r8   r+   r9   r)   s              r&   r   z"LayoutSettingsDialog.delete_layout  s    JJtzz4;;5P1x	jj'')668<<>#zz//155c:uy  

))+88:??A D (" w/ {W%W%(6>MM'*8UFF4B
DM4:t{

  "++8UFI?

((*00A6

**51

##%&&tT2u:?c%jC	N&B''33D9))55d;&&2248 'C  !r'   c                    | j                   | j                  | j                  | j                  | j                  f\  }}}}}| j
                  j                         j                         j                         }|}| j
                  j                         j                  |      \  }	}
}|
|vr|r|dz  }n|dz  }||   |vr||   ||   c||<   ||<   || _        | j
                  j                         j                  |||||       | j
                  j                         j                  |d      }| j
                  j                  |       | j
                  j                          | j                  dd       yyy)r   r<   r   N)r   r   r   r   r    r   r   r   r,   r   r"   r)   rH   rI   r   )r#   upr   r   r   r   r    r,   row_new_ui_namer+   _stater)   s                r&   r   z LayoutSettingsDialog.move_layout2  sP    JJtzz4;;5P1x	jj'')668<<>!%!1!1!3!7!7!<$y 11W~Y.-27^U3Z*c
E'N"


  "++8UFI?

((*00!<

**51

##%&&tT2 / !r'   c                 *   | j                   j                         }| j                   j                         }|j                         }| j                  | j
                  | j                  | j                  | j                  f\  }}}}	}
|j                  |      d   }|j                  |      d   }||vrT|dk7  rOt        |      t        |
      kD  r8||   }|||<   |||j                  |      <   |}||	v r||	|	j                  |      <   |r||	vr'|	j                  |       n||	v r|	j                  |       |	| _        || _        || _        || _        | j                  j                  d       | j                  j                  d       |dk(  r| j                  j                  d       |t        |      dz
  k(  r| j                  j                  d       t        |      dk(  r7| j                  j                  d       | j                  j                  d       yy)r   rR   r   r   FTr<   N)r   r   r   r,   r   r   r   r   r    r=   r)   r*   r   r   r   r   )r#   	selectiondeselectionr   r)   r,   r   r   r   r   r    r9   r8   old_names                 r&   r   z&LayoutSettingsDialog.selection_changedK  s   

  "

'')iikJJ

DMM4;;5P1uh	 		#q!))C.# ("bySZ#i.8 :$c
/6ekk(+, v%5<F6<<12 f$g&& g&

 ''.))%0!8++D1#e*q. !!--d3u:?++D1!!--d3 r'   )T)	rX   rY   rZ   r[   r   r   r   r   r\   r]   s   @r&   r   r      s     V1p!9F32+4r'   r   c                     ddl m}   |        }g d}g d}g d}ddg}ddg}t        d|||||      }t        d|      }|j	                          |j	                          t        j                  |j                                y)zRun layout test widget testr   )qapplication)testtester203040)L1L2r   r   r   r   r   N)spyder.utils.qthelpersr   r   r_   showsysexitexec_)	r   appr   r   r   r    r   widget_1widget_2s	            r&   r   r   y  sv    3
.C0E-H0E"IhF#eXufi9He,HMMOMMOHHSYY[r'   __main__)r[   r   qtpy.QtCorer   r   r   r   qtpy.compatr   r   qtpy.QtWidgetsr	   r
   r   r   r   r   r   r   r   spyder.config.baser   spyder.py3compatr   r   r_   r   r   rX   rS   r'   r&   <module>r      sz      D C 2B B B
 ! +l#% l#^+,w +,\A47 A4H" zF r'   