put sdks to create new project interpreter combobox properly

This commit is contained in:
Ekaterina Tuzova
2014-02-14 20:32:57 +04:00
parent c67953e082
commit bb44a3d8a7
2 changed files with 9 additions and 15 deletions
@@ -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<Sdk> getAllPythonSdks(final Project project) {
public List<Sdk> getAllPythonSdks(@Nullable final Project project) {
List<Sdk> result = new ArrayList<Sdk>();
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<Sdk> getAllPythonSdks() {
return getAllPythonSdks(null);
}
}
@@ -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<Sdk> sdks = PythonSdkType.getAllSdks();
final List<PythonSdkFlavor> flavors = PythonSdkFlavor.getApplicableFlavors();
for (PythonSdkFlavor flavor : flavors) {
final Collection<String> strings = flavor.suggestHomePaths();
for (String string : strings) {
sdks.add(new PyDetectedSdk(string));
}
}
final List<Sdk> 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<Sdk>() {
@Override