B
    nôb\  ã               @   sö   d Z ddlmZ ddl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mZ ddlmZmZ ddlm Z  dd	l!m"Z" dd
l#m$Z$ dd„ Z%G dd„ deƒZ&dd„ Z'e(dkròe'ƒ  dS )zProject creation dialog.é    )Úprint_functionN)Úgetexistingdirectory)ÚQtÚSignal)ÚQVBoxLayoutÚQLabelÚ	QLineEditÚQPushButtonÚQDialogÚ	QComboBoxÚQGridLayoutÚQToolButtonÚQDialogButtonBoxÚ	QGroupBoxÚQRadioButtonÚQHBoxLayout)Ú_Úget_home_dir)Úget_std_icon)Úto_text_string)Úget_available_project_typesc          
   C   sP   yt j| d}| ¡  W n2 tk
rJ } z|jtjkr:dS W dd}~X Y nX dS )zCheck if path has write access)ÚdirFNT)ÚtempfileZTemporaryFileÚcloseÚOSErrorÚerrnoZEACCES)ÚpathZtestfileÚe© r   úDlib/python3.7/site-packages/spyder/widgets/projects/projectdialog.pyÚis_writable#   s    r    c                   sN   e Zd ZdZeeeeƒZ‡ fdd„Zdd„ Zdd„ Z	dd	d
„Z
dd„ Z‡  ZS )ÚProjectDialogzProject creation dialog.c                sx  t t| ƒj|d d ttjd ƒttjd ƒg¡}dddg}||krX| |¡ t|ƒ}d| _	t
ƒ | _tƒ | _ttd	ƒƒ| _ttd
ƒƒ| _ttdƒƒ| _ttdƒƒ| _ttdƒƒ| _ttdƒƒ| _tƒ | _tt
ƒ ƒ| _tƒ | _tƒ | _tƒ | _ttdƒƒ| _ ttdƒƒ| _!t"t#j$ƒ| _%| j% &| j t"j'¡ | j% &| j!t"j'¡ | j (|¡ | j )d¡ | j *d¡ | j +d¡ | j ,t-dƒ¡ | j  .d¡ | j  /d¡ | j! *d¡ | j (|  0¡ ¡ | j 1| 2|¡¡ |  3tdƒ¡ |  4d¡ | j 5d¡ | j 5d¡ t6ƒ }| 7| j¡ | 7| j¡ | 8d¡ | j 9|¡ t:ƒ }| 7| jdd¡ | 7| jdddd¡ | 7| jdd¡ | 7| jdd¡ | 7| jdd¡ | 7| jdd¡ | 7| jdddd¡ | 7| jdd¡ | 7| jdddd¡ t;ƒ }| 7| j¡ | <d¡ | =|¡ | 8¡  | <d¡ | 7| j%¡ |  9|¡ | jj> ?| j@¡ | j!j> ?| jA¡ | j j> ?| jB¡ | jj> ?| jC¡ | jj> ?| jC¡ | jjD ?| jC¡ dS )zProject creation dialog.)ÚparentÚ.r   é   z2.7z3.4z3.5NzNew directoryzExisting directoryzProject nameZLocationzProject typezPython versionZCancelZCreateTZDirOpenIconFzCreate new projectiô  é   é   é
   é   )EÚsuperr!   Ú__init__Újoinr   ÚsysÚversion_infoÚappendÚsortedZproject_namer   Úlocationr   Zgroupboxr   r   Úradio_new_dirÚradio_from_dirr   Zlabel_project_nameZlabel_locationZlabel_project_typeZlabel_python_versionr   Útext_project_nameÚtext_locationr   Úcombo_project_typeÚcombo_python_versionr   Zbutton_select_locationr	   Zbutton_cancelÚbutton_creater   r   Z
HorizontalZbboxZ	addButtonZ
ActionRoleZaddItemsZ
setCheckedÚ
setEnabledZsetReadOnlyZsetIconr   Z
setDefaultZsetAutoDefaultÚ_get_project_typesZsetCurrentIndexÚindexZsetWindowTitleZsetFixedWidthZ
setVisibler   Z	addWidgetZ
addStretchZ	setLayoutr   r   Z
addSpacingZ	addLayoutZclickedZconnectÚselect_locationÚcreate_projectr   Úupdate_locationZtextChanged)Úselfr"   Zcurrent_python_versionZpython_versionsZ
layout_topZlayout_gridZlayout)Ú	__class__r   r   r*   4   sŒ    







zProjectDialog.__init__c             C   s(   t ƒ }g }x|D ]}| |j¡ qW |S )z Get all available project types.)r   r.   ZPROJECT_TYPE_NAME)r>   Zproject_typesZprojectsZprojectr   r   r   r9      s
    
z ProjectDialog._get_project_typesc             C   s0   t | tdƒ| jƒ}|r,t|ƒr,|| _|  ¡  dS )zSelect directory.zSelect directoryN)r   r   r0   r    r=   )r>   r0   r   r   r   r;   ™   s    
zProjectDialog.select_locationÚ c             C   s’   | j  | j ¡ ¡ | j  ¡  ¡ }|rR| j ¡ rRt | j|¡}| j	 
tj |¡¡ n0| j ¡ rp| j	 d¡ | j}n| j	 d¡ | j}| j |¡ dS )zUpdate text of location.TFN)r3   r8   r1   Z	isCheckedÚtextÚstripÚospr+   r0   r7   ZsetDisabledÚosr   Úisdirr2   r4   ZsetText)r>   rA   Únamer   r   r   r   r=   ¢   s    
zProjectDialog.update_locationc             C   s:   d  | j ¡ ¡g}| j | j ¡ | j ¡ |¡ |  ¡  dS )zCreate project.z
python={0}N)	Úformatr6   ZcurrentTextÚsig_project_creation_requestedÚemitr4   rA   r5   Zaccept)r>   Zpackagesr   r   r   r<   ³   s    zProjectDialog.create_project)r@   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚobjectrH   r*   r9   r;   r=   r<   Ú__classcell__r   r   )r?   r   r!   .   s   [
	
r!   c              C   s4   ddl m}  | ƒ }tdƒ}| ¡  t | ¡ ¡ dS )zLocal test.r   )ÚqapplicationN)Úspyder.utils.qthelpersrP   r!   Zshowr,   ÚexitZexec_)rP   ZappZdlgr   r   r   Útest½   s
    rS   Ú__main__))rM   Z
__future__r   r   rD   Úos.pathr   rC   r,   r   Zqtpy.compatr   Zqtpy.QtCorer   r   Zqtpy.QtWidgetsr   r   r   r	   r
   r   r   r   r   r   r   r   Zspyder.config.baser   r   rQ   r   Zspyder.py3compatr   Zspyder.widgets.projectsr   r    r!   rS   rJ   r   r   r   r   Ú<module>   s&   8 	