import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
import com.intellij.openapi.ui.ComboBox;
import com.intellij.openapi.ui.FixedSizeButton;
+import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
public boolean isModified() {
final Sdk selectedItem = (Sdk)mySdkCombo.getSelectedItem();
Sdk sdk = getSdk();
- sdk = sdk == null ? null : myProjectSdksModel.findSdk(sdk.getName());
- return selectedItem instanceof PyDetectedSdk || sdk != selectedItem || mySdkSettingsWereModified;
+ final Sdk selectedSdk = selectedItem == null ? null : myProjectSdksModel.findSdk(selectedItem);
+ return selectedItem instanceof PyDetectedSdk || !Comparing.equal(sdk, selectedSdk) || mySdkSettingsWereModified;
}
@Nullable
public void apply() throws ConfigurationException {
try {
final Sdk item = (Sdk)mySdkCombo.getSelectedItem();
- Sdk newSdk = item;
+ Sdk newSdk = item == null ? null : myProjectSdksModel.findSdk(item);
if (item instanceof PyDetectedSdk) {
VirtualFile sdkHome = ApplicationManager.getApplication().runWriteAction(new Computable<VirtualFile>() {
@Override
return LocalFileSystem.getInstance().refreshAndFindFileByPath(item.getName());
}
});
- newSdk = SdkConfigurationUtil.setupSdk(myProjectSdksModel.getSdks(), sdkHome, PythonSdkType.getInstance(), true, null, null);
+ newSdk = SdkConfigurationUtil.createAndAddSDK(sdkHome.getPath(), PythonSdkType.getInstance());
if (newSdk != null) {
myProjectSdksModel.addSdk(newSdk);
updateSdkList(false);
+ myProjectSdksModel.apply();
}
PySdkService.getInstance().solidifySdk(item);
}
- myProjectSdksModel.apply();
- newSdk = newSdk == null ? null : myProjectSdksModel.findSdk(newSdk.getName());
- mySdkCombo.getModel().setSelectedItem(newSdk);
+ mySdkCombo.getModel().setSelectedItem(newSdk == null ? null : myProjectSdksModel.findSdk(newSdk.getName()));
final Sdk prevSdk = getSdk();
setSdk(newSdk);