fixed project creation with detected sdk

This commit is contained in:
Ekaterina Tuzova
2014-04-09 20:16:53 +04:00
parent 8da69d7cb2
commit 53a8f264c4
@@ -17,21 +17,26 @@ package com.jetbrains.python.newProject;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkAdditionalData;
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil;
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.DirectoryProjectGenerator;
import com.intellij.platform.NewDirectoryProjectAction;
import com.jetbrains.python.configuration.PyConfigurableInterpreterList;
import com.jetbrains.python.sdk.PyDetectedSdk;
import com.jetbrains.python.sdk.PySdkService;
import com.jetbrains.python.sdk.PythonSdkAdditionalData;
import com.jetbrains.python.sdk.PythonSdkType;
@@ -56,7 +61,14 @@ public class PythonNewDirectoryProjectAction extends NewDirectoryProjectAction {
mySdk = dlg.getSdk();
final ProjectSdksModel model = PyConfigurableInterpreterList.getInstance(project).getModel();
if (mySdk instanceof PyDetectedSdk) {
mySdk = SdkConfigurationUtil.createAndAddSDK(mySdk.getName(), PythonSdkType.getInstance());
VirtualFile sdkHome = ApplicationManager.getApplication().runWriteAction(new Computable<VirtualFile>() {
@Override
public VirtualFile compute() {
return LocalFileSystem.getInstance().refreshAndFindFileByPath(mySdk.getName());
}
});
PySdkService.getInstance().solidifySdk(mySdk);
mySdk = SdkConfigurationUtil.setupSdk(ProjectJdkTable.getInstance().getAllJdks(), sdkHome, PythonSdkType.getInstance(), true, null, null);
model.addSdk(mySdk);
try {
model.apply();
@@ -65,7 +77,6 @@ public class PythonNewDirectoryProjectAction extends NewDirectoryProjectAction {
LOG.error("Error adding detected python interpreter " + exception.getMessage());
}
}
mySdk = model.findSdk(mySdk);
myInstallFramework = dlg.installFramework();
Project newProject = generateProject(project, dlg);