
    G@d^O                        d Z ddlmZ ddl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 ddlmZ ddl m!Z! ddl"m#Z# dd	l$m%Z% dd
l&m'Z'  ed          Z( ed          Z) ed          Z* ed          Z+ ed          Z,dZ-dZ.dZ/dZ0dZ1dZ2dZ3 ed          Z4dZ5 ed          Z6 ed          Z7 ed          Z8 ed          Z9 ed          Z: ed          Z; ed          Z< G d  d!e=          Z>d" Z?d# Z@d$ ZA G d% d&e          ZB G d' d(e          ZC G d) d*eC          ZD G d+ d,eC          ZEdS )-z(Run dialogs and widgets and data models.    N)getexistingdirectory)QSizeQtSignalSlot)	QCheckBox	QComboBoxQDialogQDialogButtonBoxQFrameQGridLayout	QGroupBoxQHBoxLayoutQLabel	QLineEditQMessageBoxQPushButtonQRadioButtonQSizePolicyQScrollAreaQStackedWidgetQVBoxLayoutQWidget)_)CONF)ima)getcwd_or_home)create_toolbuttonz#Run file with default configurationz"Run file with custom configurationzExecute in current consolezExecute in a dedicated consolez&Execute in an external system terminalzdefault/interpreter/currentzdefault/interpreter/dedicatedzdefault/interpreter/systermz!default/wdir/use_script_directoryzdefault/wdir/use_cwd_directoryz default/wdir/use_fixed_directoryzdefault/wdir/fixed_directoryz"Always show %s on a first file runopen_on_firstrunz%Remove all variables before executionz2Run in console's namespace instead of an empty onez+Directly enter debugging when errors appearz0Interact with the Python console after executionz(The directory of the file being executedzThe current working directoryzThe following directory:c                   8    e Zd ZdZd	dZd Zd Zd Zd Zd Z	dS )
RunConfigurationRun configurationNc                 H   d | _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        |                     t%          j        ddi                      d S )Nrundefaultconfiguration)default)r&   argsargs_enabledwdirwdir_enabledcurrentsysterminteractpost_mortempython_argspython_args_enabledclear_namespaceconsole_namespacefile_dircw_dir	fixed_dirdirsetr   getselffnames     :lib/python3.11/site-packages/spyder/plugins/run/widgets.py__init__zRunConfiguration.__init__<   s    	 	 #' #!%%!7DDDEEEEE    c                    |                     dd          | _        |                     dd          | _        |                     dd          | _        |                     dt	          j         dt
          d                    | _        |                     d	t	          j         dt          d                    | _        |                     d
t	          j         dd
d                    | _	        |                     dt	          j         ddd                    | _
        |                     dd          | _        |                     dd          | _        |                     dt	          j         ddd                    | _        |                     dt	          j         ddd                    | _        |                     dt	          j         dt          d                    | _        |                     dt	          j         dt"          d                    | _        |                     dt	          j         dt&          d                    | _        |                     dd          | _        d S )Nr&   Tr'    args/enabledFr+   r$   r,   r-   r.   r/   python_args/enabledr1   r2   r3   r4   r5   r6   )r8   r&   r'   r(   r   CURRENT_INTERPRETER_OPTIONr+   SYSTERM_INTERPRETER_OPTIONr,   r-   r.   r/   r0   r1   r2   WDIR_USE_SCRIPT_DIR_OPTIONr3   WDIR_USE_CWD_DIR_OPTIONr4   WDIR_USE_FIXED_DIR_OPTIONr5   r6   r:   optionss     r<   r7   zRunConfiguration.setQ   s   {{9d33KK++	#KK>>{{98E+EtLLN N{{98E+EuMMO OJ8E:u==? ?";;}8E=%@@B B";;}b99#*;;/De#L#L &{{+<$(HU4Eu$M$M O  O!(-@#'8E3F#N#N"P "PJ8E+EtLLN Nkk(8E+BEJJL L [8E+DeLLN N;;ub))r>   c                    i d| j         d| j        d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
| j	        d| j
        d| j        d| j        d| j        d| j        d| j        d| j        S )Nr&   rA   r'   zworkdir/enabledworkdirr+   r,   r-   r.   rB   r/   r1   r2   r3   r4   r5   r6   )r&   r(   r'   r*   r)   r+   r,   r-   r.   r0   r/   r1   r2   r3   r4   r5   r6   r:   s    r<   r8   zRunConfiguration.getk   s    4< 1 	 "4#4	
 49 4< 4< DM t/ &t'? t/ "4#7 $T%; DM $+  T^!" tx# 	r>   c                     | j         S N)r6   rL   s    r<   get_working_directoryz&RunConfiguration.get_working_directory   s	    hr>   c                 "    | j         r| j        S dS Nr@   )r(   r'   rL   s    r<   get_argumentszRunConfiguration.get_arguments   s     	92r>   c                 "    | j         r| j        S dS rQ   )r0   r/   rL   s    r<   get_python_argumentsz%RunConfiguration.get_python_arguments   s    # 	##2r>   rN   )
__name__
__module____qualname____doc__r=   r7   r8   rO   rR   rT    r>   r<   r!   r!   9   s}        F F F F** * *4  *        r>   r!   c                      t          j        ddd          } 	 d t          j        ddg           D             d |          S # t          $ r t          j        ddg            g cY S w xY w)Nr$   history   c                 D    g | ]\  }}t          j        |          ||fS rY   )ospisfile).0filenamerI   s      r<   
<listcomp>z+_get_run_configurations.<locals>.<listcomp>   s@     ) ) )%Hg:h'')7# ) ) )r>   configurations)r   r8   
ValueErrorr7   )history_counts    r<   _get_run_configurationsrf      s    HUIr22M) ))-%9I2)N)N) ) ))7-9 	9    ("---			s   'A   "A%$A%c                 n    t          j        ddd          }t          j        dd| d |                    d S )Nr$   r[   r\   rc   )r   r8   r7   )rc   re   s     r<   _set_run_configurationsrh      s9    HUIr22MHU$n^m^&DEEEEEr>   c                     t                      }|D ]2\  }}| |k    r't                      }|                    |           |c S 3dS )z'Return script *fname* run configurationN)rf   r!   r7   )r;   rc   ra   rI   runconfs        r<   get_run_configurationrk      sa    ,..N+  'H&((GKK   NNN  r>   c                   8    e Zd ZdZd	dZd Zd Zd Zd Zd Z	dS )
RunConfigOptionszRun configuration optionsNc                 \   t          j        | |           d | _        t                      | _        t          j        dt          d          }t          t                    | _
        t          t                    | _        t          t          d                    }|                    d           | j        j                            |j                   t'          |          }t          t(                    | _        |                    | j                   t          t.                    | _        |                    | j                   t          t2                    | _        |                    | j                   t                      }|                    d           | j        j                            |j                   t7                      }|                    |           t;          t<                    | _        |                    | j        dddd           t;          t          d                    | _         |                    | j         d	d           tC                      | _"        | j         j                            | j"        j                   | j"                            d           | j"        #                    t          d
                     |                    | j"        d	d           |                    |           t          t          d                    }|                    d           | j        j                            |j                   t7          |          }t;          tH                    | _%        |                    | j%        dd           t;          tL                    | _'        |                    | j'        dd           t;          tP                    | _)        |                    | j)        dd           t;          t          d                    | _*        |                    | j*        d	d           tC                      | _+        | j*        j                            | j+        j                   | j+                            d           |                    | j+        d	d           t          t          d                    }	|	                    d           | j        j                            |	j                   t'          |	          }
t          tX                    | _-        |
                    | j-                   t          t\                    | _/        |
                    | j/                   ta                      }t          tb                    | _2        |                    | j2                   tC                      | _3        | j2        j                            | j3        j                   | j3                            d           |                    | j3                   ti          | | j5        tm          j7        d          t          d                    }|                    |           |
8                    |           t;          tr          t          d          z            | _:        | j:        j;                            | j<                   | j:        =                    |           t'          |           }|                    | j
                   |                    | j                   |                    |           |                    |           |                    |	           |                    | j:                   |>                    d           d S )Nr$   FConsoleT   r   zCommand line options:   z4<b>-u</b> is added to the other options you set herezGeneral settings   zWorking directory settingsDirOpenIconSelect directory)	triggeredicontipzthis dialogd   )?r   r=   r6   r!   rj   r   r8   ALWAYS_OPEN_FIRST_RUN_OPTIONr   RUN_DEFAULT_CONFIGrun_default_config_radioRUN_CUSTOM_CONFIGrun_custom_config_radior   r   setDisabledtoggledconnect
setEnabledr   CURRENT_INTERPRETERcurrent_radio	addWidgetDEDICATED_INTERPRETERdedicated_radioSYSTERM_INTERPRETERsysterm_radior   	setLayoutr   INTERACTinteract_cbpclo_cbr   	pclo_edit
setToolTipCLEAR_ALL_VARIABLESclear_var_cbCONSOLE_NAMESPACEconsole_ns_cbPOST_MORTEMpost_mortem_cbclo_cbclo_editFILE_DIRfile_dir_radioCW_DIR	cwd_radior   	FIXED_DIRfixed_dir_radiowd_editr   select_directoryr   rw   	addLayoutALWAYS_OPEN_FIRST_RUNfirstrun_cbclickedset_firstrun_o
setChecked
addStretch)r:   parent
firstrun_ointerpreter_groupinterpreter_layoutexternal_groupexternal_layoutcommon_groupcommon_layout
wdir_groupwdir_layoutfixed_dir_layout
browse_btnlayouts                 r<   r=   zRunConfigOptions.__init__   s{   v&&&'))Xe%A5II
 )55G(H(H%'34E'F'F$ &a	ll33%%d+++$,44(	* 	* 	* )):;;)*=>>$$T%7888+,ABB$$T%9:::)*=>>$$T%7888 !""4((("**>+DEEE%--  111$X..!!$"2Aq!R@@@ #:!;!;<<!!$,1555"$$T^%>???!!%(((!!! %A #B #B 	C 	C 	C!!$.!Q777$$^444 !#5!6!677  &&&$,44\5LMMM#L11%&9:: 11a888&'899 2Aq999'44 3Q:::"9 : :;;Q222!##DM$<===  '''q!444 q!=>>??
t$$$$,44Z5JKKK!*--*844d1222%f--dn---&==+I66""4#7888 {{$,,T\-DEEE&&&""4<000&+-(($%%	  
 	"":..../// %%:Q}=M=M%MNN (()<===##J///T""67775666*+++&&&$$$)***#r>   c                    t          | j                                                  }t          j        |          st                      }t          | t          d           |          }|r#| j                            |           || _	        dS dS )ru   N)
strr   textr^   isdirr   r   r   setTextr6   )r:   basedir	directorys      r<   r   z!RunConfigOptions.select_directory#  s    dl''))**y!! 	'$&&G(q1C/D/DgNN	 	!L  +++ DHHH	! 	!r>   c                    | j                             |           | j         j        r| j                            d           n| j                            d           | j                            | j         j                   | j        	                    | j         j
                   | j         j        r| j                            d           nA| j         j        r| j                            d           n| j                            d           | j                            | j         j                   | j                            | j         j                   | j                            | j         j                   | j        	                    | j         j                   | j                            | j         j                   | j                            | j         j                   | j                            | j         j                   | j                            | j         j                   | j                             | j         j!                   | j         j"        | _"        | j#        	                    | j"                   d S )NT)$rj   r7   r&   r|   r   r~   r   r(   r   r   r'   r+   r   r,   r   r   r   r-   r   r.   r   r0   r   r/   r   r1   r   r2   r   r3   r   r4   r   r5   r6   r   rH   s     r<   r7   zRunConfigOptions.set-  s   !!!< 	:)44T::::(33D999t|8999dl/000< 	2))$////\! 	2))$//// ++D111##DL$9:::&&t|'?@@@ @AAAt|7888$$T\%ABBB%%dl&DEEE&&t|'<===!!$,"5666''(>???<#TX&&&&&r>   c                    | j                                         | j        _        | j                                        | j        _        t          | j                                                  | j        _	        | j
                                        | j        _        | j                                        | j        _        | j                                        | j        _        | j                                        | j        _        | j                                        | j        _        t          | j                                                  | j        _        | j                                        | j        _        | j                                        | j        _        | j                                        | j        _        | j                                        | j        _        | j                                        | j        _        | j                                         | j        _!        | j        "                                S rN   )#r|   	isCheckedrj   r&   r   r(   r   r   r   r'   r   r+   r   r,   r   r-   r   r.   r   r0   r   r/   r   r1   r   r2   r   r3   r   r4   r   r5   r   r6   r8   rL   s    r<   r8   zRunConfigOptions.getG  s   #<FFHH$(K$9$9$;$;! 2 2 4 455#1;;==#1;;== $ 0 : : < <#'#6#@#@#B#B +/<+A+A+C+C(#&t~':':'<'<#=#= '+'8'B'B'D'D$)-);)E)E)G)G& $ 3 = = ? ?"n6688!%!5!?!?!A!A<,,..|!!!r>   c                    t          | j                                                  }| j                                        rt          j        |          rdS t          j        | t          d          t          d          |z             dS )NTr"   z:The following working directory is not valid:<br><b>%s</b>F)
r   r   r   r   r   r^   r   r   criticalr   )r:   r)   s     r<   is_validzRunConfigOptions.is_validY  s    4<$$&&''#--// 	39T?? 	4 q)<'='=!" $= "> ">@D"EF F F 5r>   c                 j    t          j        dt          | j                                                   d S )Nr$   )r   r7   rz   r   r   rL   s    r<   r   zRunConfigOptions.set_firstrun_oc  s7    4!++--	/ 	/ 	/ 	/ 	/r>   rN   )
rU   rV   rW   rX   r=   r   r7   r8   r   r   rY   r>   r<   rm   rm      s~        ##u u u un! ! !' ' '4" " "$  / / / / /r>   rm   c                   N    e Zd ZdZ ee          Zd	dZd Zd Z	d Z
d Zd ZdS )
BaseRunConfigDialogz)Run configuration dialog box, base widgetNc                 l   t          j        | |           |                     |                                 t          j         z             |                     t          j                   |                     t          j
        d                     t                      }|                     |           d S )Nrun_settings)r
   r=   setWindowFlagswindowFlagsr   WindowContextHelpButtonHintsetAttributeWA_DeleteOnClosesetWindowIconr   rw   r   r   )r:   r   r   s      r<   r=   zBaseRunConfigDialog.__init__l  s    v&&&""@!@@	B 	B 	B 	"-...38N33444vr>   c                     |                                  }|D ]B}t          |t                    r|                    |           -|                    |           C|S )z-Add widgets/spacing to dialog vertical layout)r   
isinstanceint
addSpacingr   )r:   widgets_or_spacingsr   widget_or_spacings       r<   add_widgetszBaseRunConfigDialog.add_widgets{  sg    !4 	4 	4+S11 4!!"34444  !23333r>   c                    t          |          }|                    t          d          t           j                  }|j                            | j                   |j                            | j                   |j	                            | j
                   t                      }|                    d           |                    |           |                                                     |           dS )z8Create dialog button box and add it to the dialog layoutRunrp   N)r   	addButtonr   
AcceptRoler   r   run_btn_clickedacceptedacceptrejectedrejectr   r   r   r   r   )r:   stdbtnsbboxrun_btn	btnlayouts        r<   add_button_boxz"BaseRunConfigDialog.add_button_box  s    ((..5+;+FGG 4555dk***dk***MM	QD!!!	*****r>   c                     t          j        | |           | j                            |                                            dS )zn
        Reimplement Qt method to be able to save the widget's size from the
        main application
        N)r
   resizeEventsize_changeemitsize)r:   events     r<   r   zBaseRunConfigDialog.resizeEvent  s<    
 	D%(((diikk*****r>   c                     dS zRun button was just clickedNrY   rL   s    r<   r   z#BaseRunConfigDialog.run_btn_clicked  s    r>   c                     t           )4Setup Run Configuration dialog with filename *fname*)NotImplementedErrorr9   s     r<   setupzBaseRunConfigDialog.setup  s    !!r>   rN   )rU   rV   rW   rX   r   r   r   r=   r   r   r   r   r   rY   r>   r<   r   r   h  s        33&--K     
+ 
+ 
++ + +  " " " " "r>   r   c                   L    e Zd ZdZddZd Z e            d             Zd ZdS )RunConfigOneDialogz1Run configuration dialog box: single file versionNc                 X    t                               | |           d | _        d | _        d S rN   )r   r=   ra   runconfigoptionsr:   r   s     r<   r=   zRunConfigOneDialog.__init__  s-    $$T6222 $r>   c                 *   || _         t          |           | _        | j                            t	          |                                                     t          |           }|                    | j                   |                    d           |	                    d           | 
                    |           |                     t          j                   |                     t          d          t!          j        |          z             dS )r   i0  TzRun settings for %sN)ra   rm   r   r7   r!   r8   r   	setWidgetsetMinimumWidthsetWidgetResizabler   r   r   CancelsetWindowTitler   r^   basename)r:   r;   
scrollareas      r<   r   zRunConfigOneDialog.setup  s     0 6 6!!"25"9"9"="="?"?@@@ &&
T2333""3'''%%d+++$$$,3444A344s|E7J7JJKKKKKr>   c                    | j                                         sdS t                      }|                    d| j        | j                                         f           t          |           t          j        |            dS )Reimplement Qt methodNr   )	r   r   rf   insertra   r8   rh   r
   r   )r:   rc   s     r<   r   zRunConfigOneDialog.accept  s{     $--// 	F022a$-1F1J1J1L1L!MNNN///tr>   c                     | j         j        S rN   )r   rj   rL   s    r<   get_configurationz$RunConfigOneDialog.get_configuration  s     $,,r>   rN   )	rU   rV   rW   rX   r=   r   r   r   r   rY   r>   r<   r   r     sp        ;;% % % %
L L L 
TVV  V- - - - -r>   r   c                   ,    e Zd ZdZddZd Zd Zd ZdS )RunConfigDialogz3Run configuration dialog box: multiple file versionNc                 f    t                               | |           d | _        d | _        d | _        d S rN   )r   r=   file_to_runcombostackr   s     r<   r=   zRunConfigDialog.__init__  s2    $$T6222



r>   c                 \    t          | j                                                  | _        dS r   )r   r  currentTextr  rL   s    r<   r   zRunConfigDialog.run_btn_clicked  s&    tz557788r>   c                 0   t          t          d                    }t                      | _        | j                            d           t                      | _        t                      }t          |          D ]\  }\  }}||k    r n:|	                    d|t          |                                          f           d}|D ]\  }}t          |           }|                    |           |                                                    dddd           | j                            |           | j                            |           | j        j                            | j        j                   | j                            |           |                     || j        d| j                  }t-                      }	|	                    |           t1          |           }
|
                    |	           |
                    d           |
                    d           t9          |           }|                    |
           |                     t<          j        t<          j         z             | !                    t          d                     dS )	r   zSelect a run configuration:r\   r   
   iX  TzRun configuration per fileN)"r   r   r	   r  setMaxVisibleItemsr   r  rf   	enumerater   r!   r8   rm   r7   r   setContentsMarginsaddItemr   currentIndexChangedr   setCurrentIndexr   r   r   r   r   r   r   r   r   r   Okr   r   )r:   r;   combo_labelrc   indexra   rI   widgetr   widget_dialogr   scroll_layouts               r<   r   zRunConfigDialog.setup  s^   Q<==>>[[

%%b)))#%%
022*3N*C*C 	 	&E&Hg   ! !!!e-=e-D-D-H-H-J-J%KLLLE!/ 	) 	)Hg%d++FJJwMMOO..q!Q:::Jx(((J  ((((
&..tz/IJJJ
""5)))!!+tz2tzJJ		''' &&
]+++""3'''%%d+++#D))
+++,/2B2IIJJJA:;;<<<<<r>   c                    g }t          | j                                                  D ]}t          | j                            |                    }| j                            |          }|| j                                        k    r|                                s dS |	                                }|
                    ||f           t          |           t          j        |            dS )r   N)ranger  countr   r  itemTextr  currentIndexr   r8   appendrh   r
   r   )r:   rc   r  ra   r   rI   s         r<   r   zRunConfigDialog.accept  s    4:++--.. 	9 	9E4:..u5566H#z0077
//1111#,,.. 2&**,,G!!Hg#68888///tr>   rN   )rU   rV   rW   rX   r=   r   r   r   rY   r>   r<   r   r     s\        ==   9 9 9&= &= &=P    r>   r   )FrX   os.pathpathr^   qtpy.compatr   qtpy.QtCorer   r   r   r   qtpy.QtWidgetsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   spyder.api.translationsr   spyder.config.managerr   spyder.utils.icon_managerr   spyder.utils.miscr   spyder.utils.qthelpersr   r{   r}   r   r   r   rC   DEDICATED_INTERPRETER_OPTIONrD   rE   rF   rG   WDIR_FIXED_DIR_OPTIONr   rz   r   r   r   r   r   r   r   objectr!   rf   rh   rk   rm   r   r   r   rY   r>   r<   <module>r(     s   / .       - , , , , , / / / / / / / / / / / /B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B & % % % % % & & & & & & ) ) ) ) ) ) , , , , , , 4 4 4 4 4 4 Q<== A:;; a455 :;; a@AA : > : @ : > 6 >?? 1 a?@@ AJKK a=>>1?@@1788	
*	+	+A())	T T T T Tv T T Tn  F F F
  {/ {/ {/ {/ {/w {/ {/ {/|7" 7" 7" 7" 7"' 7" 7" 7"t"- "- "- "- "-, "- "- "-JA A A A A) A A A A Ar>   