
    G@dN7                         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             dS dS )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 | _	        | 
                    |||||           d S N)superr   __init___parentnamesui_namesorderactive	read_only_rowsset_data)selfparentr   r   r   r   r    	__class__s          Dlib/python3.11/site-packages/spyder/plugins/layout/widgets/dialog.pyr   zLayoutModel.__init__   st    k4  ))&111 
 
"
eXufi@@@@@    c                     g | _         || _        || _        || _        || _        || _        |D ]L}|                    |          }||v r||         |dg}n||         |dg}| j                             |           MdS )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Jc""""	# 	#r'   c                    |                                 }|                      |          \  }}}|| j        v rt          j        S |                                st          j        S |                                }|dv rRt          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    iikk#xx}}u4>!!>!}} 	$##S==<B$4r7J$J$&$:%;$&$5%6 !7 !7 8 8 8 < 0111r'   c                    |                                 r3d|                                cxk    rt          | j                  k     sn t	                      S |                                }|                                }|                     |          \  }}}|t          j        k    s|t          j        k    r|dk    rt	          |          S nk|t          j	        k    r|dk    rt	          |          S nE|t          j
        k    r5|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&H&H&HTZ&H&H&H&H== iikk#xx}}u2>!!TR[%8%8{{"7+++ R[  {{"4((( R&&&{{ (:%<'{{"5)))}}r'   c                    |                                 }|                      |          \  }}}|t          j        k    rj|                     |||| g           | j                            |           | j                                         | j                            ||           dS |t          j	        k    rI|                     |t          |t                    ||g           | j                            ||           dS dS )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    iikk#xx}}u2$$$LLw%i8999L((///L!!###!!%///4R[  LLmE>::D%HJ J J!!%///4tr'   c                 *    t          | j                  S )r.   )r=   r!   r#   r)   s     r&   rowCountzLayoutModel.rowCounts   s    4:r'   c                     dS )r.       rO   s     r&   columnCountzLayoutModel.columnCountw   s    qr'   c                 j    | j         g k    s|t          | j                   k    rg dS | j         |         S )r   )NNN)r!   r=   )r#   rownums     r&   r,   zLayoutModel.row{   s:    :vTZ88%%%%:f%%r'   c                     || j         |<   dS )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      s        GA A A A A# # # 2 2 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                            d           | j                                         t          t          j
        t          j        z  t          j        |           | _        | j                            t          j
                  | _        | j                            t          j                  | _        | j                            d           t'          dd          | _        |                     d           |                     d           |                     | j                   |                     | j                   t3                      | _        | j                            | j                   | j                            | j                   |                     | j                   | j        j                            | j                   | j        j                             | j!                   | j        j"                            | j#                   d S )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66  #4&&&""4((($$&&&*+;+>+;+B,C+-=$@ @ //0@0CDD!_334D4KLL 	!!%((( c??,---dD,---$*+++ "mmdn---do...t{### 	 ((555 ((444&..t?????r'   c                     t          |          dk    r| j                            d           dS | j                            d           dS )z%Disable empty layout name possibility FTN)r   rl   rn   )r#   texts     r&   r}   zLayoutSaveDialog.check_text   sM    $3&&N%%e,,,,,N%%d+++++r'   )rX   rY   rZ   r[   r   r}   r\   r]   s   @r&   r_   r_      sR        G"@ "@ "@ "@ "@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           
      @    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                            t          j                   _         j                            t          j                   _         j                            d            j                            d           t=          dd           _                               j                    !                     j                    "                    d            j        #                    tI           j        |||||                      j        %                    tL          j'                    j        (                    tL          j)                    j        *                                +                                  j        ,                                +                                  j        -                    d            j        .                    d	            j        /                    t$          j0                    j        ,                                1                    d            j        2                    d
d            j        3                                 _        ti                      }|5                     j                   |5                     j                   |6                                 |5                     j                   to                      }|5                     j                   |8                    |            j        9                    |           ti                      }	|	5                     j                   |	5                     j                    9                    |	            j        j:        ;                     j<                    j        j=        ;                     j>                    j        j?        ;                     j@                    j        j?        ;                     fd            j        j?        ;                     fd            j        A                                jB        ;                     fd            j        jC        ;                     fd           t          |          t          |          k    rqt          |          }
 j        A                                E                    |
d          } j        F                    |            j        G                                 d S  j        H                    d            j        H                    d            j        H                    d           d S )NzMove Upz	Move DownzDelete LayoutzLayout Display and OrderTra      zLayout SettingsFr<   c                  .                          d          S )NTmove_layoutr#   s   r&   <lambda>z/LayoutSettingsDialog.__init__.<locals>.<lambda>   s    D4D4DT4J4J r'   c                  .                          d          S )NFr   r   s   r&   r   z/LayoutSettingsDialog.__init__.<locals>.<lambda>   s    d6F6Fu6M6M r'   c                  0                          d d           S r   selection_changedr   s   r&   r   z/LayoutSettingsDialog.__init__.<locals>.<lambda>       4))$55 r'   c                  0                          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))226::: $
 
" *!I,,77 +AkNN ; ;(?););<<*+;+>+;+B,C+-=$@ @ #1%?#@#@AA%%
//0@0CDD!_334D4KLL%%d+++))$/// !c??D,---$*+++-...

E8UFINN	P 	P 	P
''(9(DEEE
##$5$EFFF
!!##((***
##%%**,,,
**4000
u%%%
//0EFFF
##%%;;DAAA
""1d+++ !%
 9 9 ; ; %  !4555  !6777!!###  !3444"}}tz***~...  ...((()))v 	 ((555 ((444"**4+=>>>#++,J,J,J,JKKK%--.M.M.M.MNNN
&..5555	7 	7 	7.665555	7 	7 	7 u::I&&i..CJ$$&&,,S!44EJ&&u---J!!!!! ++D111!--d333**400000r'   c                 d   | j         | j        | j        | j        | j        f\  }}}}}| j                                                                                                        }| j        	                                                    |          \  }}}	||vrt          | j                                                                                                        t                    }||v r|                    |          }
ndS |
dk    r|                    |           |                    |           |                    |           ||v r|                    |           ||||f\  | _         | _        | _        | _        | j        	                                                    |||||           | j        	                                                    dd          }
| j                            |
           | j                                         |                     dd           t'          |          dk    s t'          |          t'          |          k    rT| j                            d           | j                            d           | j                            d           dS dS dS dS )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    Jtz4;5P1x	j''))6688<<>>#z//1155c::uy   
))++88::??AA   D ("" w// {{W%%%W%%%(((6>>MM'***8UFF4B
DM4:t{
  ""++8UFI? ? ?
((**00A66
**5111
##%%%&&tT222u::??c%jjC	NN&B&B'33D999)55d;;;&224888885 !  { 'C&Br'   Tc                    | j         | j        | j        | j        | j        f\  }}}}}| j                                                                                                        }|}| j        	                                                    |          \  }	}
}|
|vr|r|dz  }n|dz  }||         |vr||         ||         c||<   ||<   || _        | j        	                                
                    |||||           | j        	                                                    |d          }| j                            |           | j                                         |                     dd           dS dS dS )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  s    Jtz4;5P1x	j''))6688<<>>!%!1!1!3!3!7!7!<!<$y   11W~Y..-27^U3Z*c
E'N"

  ""++8UFI? ? ?
((**00!<<
**5111
##%%%&&tT22222 !  /.r'   c                 `   | j                                         }| j                                         }|                                }| j        | j        | j        | j        | j        f\  }}}}	}
|                    |          d         }|                    |          d         }||vri|dk    rct          |          t          |
          k    rC||         }|||<   |||
                    |          <   |}||	v r||	|	
                    |          <   |r||	vr|	                    |           n||	v r|	                    |           |	| _        || _        || _        || _        | j                            d           | j                            d           |dk    r| j                            d           |t          |          dz
  k    r| j                            d           t          |          dk    r6| j                            d           | j                            d           dS dS )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&   
  ""
''))iikkJ
DM4;5P1uh	 		#q!))C..# (""byySZZ#i..88 :$c
/6ekk(++, v%%5<F6<<112  	'f$$g&&&&  g&&&

 ''...))%000!88++D111#e**q.  !--d333u::??++D111!--d33333 ?r'   )T)	rX   rY   rZ   r[   r   r   r   r   r\   r]   s   @r&   r   r      sw          V1 V1 V1 V1 V1p!9 !9 !9F3 3 3 32+4 +4 +4 +4 +4 +4 +4r'   r   c                  2   ddl m}   |             }g d}g d}g d}ddg}ddg}t          d|||||          }t          d|          }|                                 |                                 t          j        |                                           dS )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  s    333333
,..C000E---H000E"IhF#eXufi9 9He,,HMMOOOMMOOOHSYY[[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      s     


 D C C C C C C C C C C C 2 2 2 2 2 2 2 2B B B B B B B B B B B B B B B B B B B B B B
 !           + + + + + +l# l# l# l# l#% l# l# l#^+, +, +, +, +,w +, +, +,\A4 A4 A4 A4 A47 A4 A4 A4H  " zDFFFFF r'   