diff --git a/python/ide/src/com/jetbrains/python/configuration/PyConfigurableInterpreterList.java b/python/ide/src/com/jetbrains/python/configuration/PyConfigurableInterpreterList.java index 0260c8e7edc2..87b9163eb824 100644 --- a/python/ide/src/com/jetbrains/python/configuration/PyConfigurableInterpreterList.java +++ b/python/ide/src/com/jetbrains/python/configuration/PyConfigurableInterpreterList.java @@ -28,6 +28,7 @@ import com.jetbrains.python.sdk.PythonSdkAdditionalData; import com.jetbrains.python.sdk.PythonSdkType; import com.jetbrains.python.sdk.flavors.PythonSdkFlavor; import com.jetbrains.python.sdk.flavors.VirtualEnvSdkFlavor; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.*; @@ -69,7 +70,7 @@ public class PyConfigurableInterpreterList { } } - public List getAllPythonSdks(final Project project) { + public List getAllPythonSdks(@Nullable final Project project) { List result = new ArrayList(); for (Sdk sdk : getModel().getSdks()) { if (sdk.getSdkType() instanceof PythonSdkType) { @@ -94,7 +95,7 @@ public class PyConfigurableInterpreterList { final LanguageLevel level2 = flavor2 != null ? flavor2.getLanguageLevel(o2) : LanguageLevel.getDefault(); if (isVEnv1) { - if (associatedWithCurrent(o1, project)) return -1; + if (project != null && associatedWithCurrent(o1, project)) return -1; if (isVEnv2) { final int compare = Comparing.compare(level1, level2); if (compare != 0) return -compare; @@ -138,4 +139,8 @@ public class PyConfigurableInterpreterList { } return false; } + + public List getAllPythonSdks() { + return getAllPythonSdks(null); + } } diff --git a/python/ide/src/com/jetbrains/python/newProject/PythonNewDirectoryProjectDialog.java b/python/ide/src/com/jetbrains/python/newProject/PythonNewDirectoryProjectDialog.java index d0b02f3c21bd..8db6add9d056 100644 --- a/python/ide/src/com/jetbrains/python/newProject/PythonNewDirectoryProjectDialog.java +++ b/python/ide/src/com/jetbrains/python/newProject/PythonNewDirectoryProjectDialog.java @@ -31,6 +31,7 @@ import com.intellij.ui.ComboboxWithBrowseButton; import com.intellij.ui.components.JBCheckBox; import com.intellij.ui.components.JBLabel; import com.jetbrains.python.PythonSdkChooserCombo; +import com.jetbrains.python.configuration.PyConfigurableInterpreterList; import com.jetbrains.python.configuration.VirtualEnvProjectFilter; import com.jetbrains.python.packaging.PyExternalProcessException; import com.jetbrains.python.packaging.PyPackage; @@ -38,8 +39,6 @@ import com.jetbrains.python.packaging.PyPackageManager; import com.jetbrains.python.packaging.PyPackageManagerImpl; import com.jetbrains.python.remote.PythonRemoteInterpreterManager; import com.jetbrains.python.remote.RemoteProjectSettings; -import com.jetbrains.python.sdk.PreferredSdkComparator; -import com.jetbrains.python.sdk.PyDetectedSdk; import com.jetbrains.python.sdk.PythonSdkType; import com.jetbrains.python.sdk.flavors.JythonSdkFlavor; import com.jetbrains.python.sdk.flavors.PyPySdkFlavor; @@ -54,8 +53,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.Collection; -import java.util.Collections; import java.util.List; /** @@ -71,16 +68,8 @@ public class PythonNewDirectoryProjectDialog extends NewDirectoryProjectDialog { super(project); myProject = project; - final List sdks = PythonSdkType.getAllSdks(); - final List flavors = PythonSdkFlavor.getApplicableFlavors(); - for (PythonSdkFlavor flavor : flavors) { - final Collection strings = flavor.suggestHomePaths(); - for (String string : strings) { - sdks.add(new PyDetectedSdk(string)); - } - } + final List sdks = PyConfigurableInterpreterList.getInstance(myProject).getAllPythonSdks(); VirtualEnvProjectFilter.removeAllAssociated(sdks); - Collections.sort(sdks, PreferredSdkComparator.INSTANCE); final Sdk preferred = sdks.isEmpty() ? null : sdks.iterator().next(); mySdkCombo = new PythonSdkChooserCombo(project, sdks, new Condition() { @Override