
    G@d$                         d Z ddlZddlmZ ddlZddl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mZmZmZmZ ddlmZmZ ddlmZ ddlmZ d	 Z G d
 de          Z d Z!e"dk    r e!             dS dS )Project creation dialog.    N)getexistingdirectory)QtSignal)	QComboBoxQDialogQDialogButtonBoxQGridLayout	QGroupBoxQHBoxLayoutQLabel	QLineEditQPushButtonQRadioButtonQVBoxLayout)_get_home_dir)ima)create_toolbuttonc                     	 t          j        |           }|                                 n2# t          $ r%}|j        t          j        k    rY d}~dS Y d}~nd}~ww xY wdS )zCheck if path has write access)dirNFT)tempfileTemporaryFilecloseOSErrorerrnoEACCES)pathtestfilees      Mlib/python3.11/site-packages/spyder/plugins/projects/widgets/projectdialog.pyis_writabler"      s    )d333   7el""55555 #"""" 4s   ), 
AAAc                   R     e Zd ZdZ eeee          Z	  fdZd Z	ddZ
d Z xZS )ProjectDialogr   c                 @   t          t          |                               |           || _        || _        i | _        |                     |                                 t          j	         z             d| _
        t                      | _        d}t          t          d                              |                    | _        | j                            d           | j                            d           t'                      | _        t+          t          d                    | _        t+          t          d                    | _        t          t          d                    | _        t          t          d	                    | _        t          t          d
                    | _        t7                      | _        t7          t                                | _        t=                      | _        t          d          | _         | j         !                                 tE          | | j#        tI          j%        d          t          d                    | _&        tO          t          d                    | _(        tO          t          d                    | _)        tU          t          j+                  | _,        | j,        -                    | j(        tT          j.                   | j,        -                    | j)        tT          j.                   | j        /                    d           | j        0                    d           | j        1                    d           | j(        2                    d           | j(        3                    d           | j)        0                    d           d |4                                D             D ] \  }}| j        5                    ||           !| 6                    t          d                     to                      }|8                    | j                   |9                    d           |8                    | j                   |9                    d           | j        :                    |           tw                      }|8                    | j        dd           |8                    | j        dddd           |8                    | j        dd           |8                    | j        dd           |8                    | j&        dd           |8                    | j        dd           |8                    | j        dddd           |8                    | j         dddd           ty                      }|8                    | j                   |9                    d           |8                    | j                   |9                    d           |=                    |           |9                    d           |8                    | j,                   |>                    |j?                   | :                    |           | j)        j@        A                    | jB                   | j(        j@        A                    | jC                   | j        j@        A                    | jD                   | j        j@        A                    | jD                   | j        jE        A                    | jD                   dS )r   )parentNz6http://docs.spyder-ide.org/current/panes/projects.htmlzSelect a new or existing directory to create a new Spyder project in it. To learn more about projects, take a look at our <a href="{0}">documentation</a>.TzNew directoryzExisting directoryzProject nameLocationzProject type DirOpenIconSelect directory)	triggeredicontipCancelCreateFc                 @    g | ]\  }}||                                 fS  )get_name).0pt_idpts      r!   
<listcomp>z*ProjectDialog.__init__.<locals>.<listcomp>t   s5     6 6 6yubUBKKMM2 6 6 6    zCreate new project      r               )Fsuperr$   __init__plugin_project_typesproject_datasetWindowFlagswindowFlagsr   WindowContextHelpButtonHintproject_namer   locationr   r   formatdescription_labelsetOpenExternalLinkssetWordWrapr   groupboxr   radio_new_dirradio_from_dirlabel_project_namelabel_locationlabel_project_typer   text_project_nametext_locationr   combo_project_typelabel_informationhider   select_locationr   r,   button_select_locationr   button_cancelbutton_creater	   
Horizontalbbox	addButton
ActionRole
setChecked
setEnabledsetReadOnly
setDefaultsetAutoDefaultitemsaddItemsetWindowTitler   	addWidget
addSpacing	setLayoutr
   r   	addLayoutsetSizeConstraintSetFixedSizeclickedconnectcreate_projectr   update_locationtextChanged)
selfr&   project_typesprojects_urlid_name
layout_toplayout_gridlayout	__class__s
            r!   r?   zProjectDialog.__init__:   s3   mT""++6+:::+""@!@@	B 	B 	B !$ P!' 7 8 88>|8L8L"
 "

 	33D999**4000!)!O*<*<==*1-A+B+BCC"(>):):";";$Qz]]33"(>):):";";!*&|~~66"+++!'##%%%&7*-(($%%	'
 '
 '
# )855(855$R]33		D.0@0KLLL	D.0@0KLLL 	%%d+++%%d+++&&t,,,%%d+++))$///%%e,,,6 6,22446 6 6 	7 	7KS$#++D#6666A233444 !]]
T/000b!!!T0111c"""
+++!mmd5q!<<<d4aAqAAAd11a888d0!Q777d91a@@@d5q!<<<d5q!QBBBd4aAqAAA/000!'''!%%%!###  !4555v 	"**4+>???"**4:666#++D,@AAA"**4+?@@@*2243GHHHHHr7   c                 8   t          j        t          | t          d          | j                            }|r^|dk    rZt          |          rM|| _        | j                            t          j        |                     | 	                                 dS dS dS dS )zSelect directory.r*   .N)
ospnormpathr   r   rG   r"   rR   setTextbasenamerp   )rr   rG   s     r!   rW   zProjectDialog.select_location   s    < $%% 
 
  	'C8$$ ' (&..s|H/E/EFFF$$&&&&&		' 	'' 'r7   r(   c                    d}d}| j         }| j                                                                        }| j                            | j                                                   | j                            d           | j        	                                 |rZ| j                                        rAt          j        | j         |          }t          j        |           }|st          d          }nY| j                                        r@| j         }t          j        t          j        |d                     }|st          d          }| j                            |           | j                                        }| j        |         j        } |||          \  }}	|s|r	|dz   |	z   }n|	}|r6| j                                         | j                            d|z              |o|}
| j                            |
           |
r6| j                            d           | j                            d           d	S | j                            d           | j                            d           d	S )
z(Update text of location and validate it.r(   FzThis directory already exists!z.spyprojectz+This directory is already a Spyder project!z


TN)rG   rR   textstripr`   rM   	isCheckedrU   r   rV   r}   joinisdirr   rN   rS   rT   currentDatarA   validate_nameshowrZ   rb   rc   rY   )rr   r   msgpath_validationr   rv   project_type_idvalidate_funcproject_name_validationproject_msg	validateds              r!   rp   zProjectDialog.update_location   s   }%**,,2244 	))$*<*F*F*H*HIII&&r***##%%% 	GD&0022 	G8DM400D"%)D//1O" :899 **,, 	G =D"%)CHT=,I,I"J"JJO" GEFF 	""4((( 1==??+O<J/<}T4/H/H,& 	" "Fl[0!  	7"'')))"**4#:666 $?(?	%%i000  	4))$///--d33333))$///--d33333r7   c                 2   | j                                         | j                                        d| _        | j                            | j                                         | j                                        g            |                                  dS )zCreate project.)	root_pathproject_typeN)rS   r   rT   r   rB   sig_project_creation_requestedemitaccept)rr   s    r!   ro   zProjectDialog.create_project   s     +0022 3??AA
 
 	+00##%%#//11	
 	
 	

 	r7   )r(   )__name__
__module____qualname____doc__r   strobjectr   r?   rW   rp   ro   __classcell__)rz   s   @r!   r$   r$   (   s        ""%+VCf%=%="cI cI cI cI cIJ' ' ' 84 84 84 84t      r7   r$   c                      ddl m}  ddlm}  G d d|          } |             }t	          dd|i          }|                                 t          j        |                                           dS )zLocal test.r   )qapplication)BaseProjectTypec                   :    e Zd Zed             Zed             ZdS )test.<locals>.MockProjectTypec                      dS )NBoor1   r1   r7   r!   r2   z&test.<locals>.MockProjectType.get_name   s    5r7   c                     dS )N)FzBOOM!r1   )r   rv   s     r!   r   z+test.<locals>.MockProjectType.validate_name  s    !>r7   N)r   r   r   staticmethodr2   r   r1   r7   r!   MockProjectTyper      sH        		 	 
	 
	" 	" 
	" 	" 	"r7   r   Nempty)	spyder.utils.qthelpersr   spyder.plugins.projects.apir   r$   r   sysexitexec_)r   r   r   appdlgs        r!   testr      s    333333;;;;;;" " " " "/ " " " ,..C
w8
9
9CHHJJJHSYY[[r7   __main__)#r   r   os.pathr   r}   r   r   qtpy.compatr   qtpy.QtCorer   r   qtpy.QtWidgetsr   r   r	   r
   r   r   r   r   r   r   r   spyder.config.baser   r   spyder.utils.icon_managerr   r   r   r"   r$   r   r   r1   r7   r!   <module>r      s            



  - , , , , , " " " " " " " "D D D D D D D D D D D D D D D D D D D D D D D D D D
 / . . . . . . . ) ) ) ) ) ) 4 4 4 4 4 4  L L L L LG L L L^  * zDFFFFF r7   