mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-26376 Persist last selected base virtualenv SDK
This commit is contained in:
@@ -30,12 +30,19 @@ class PySdkSettings : PersistentStateComponent<PySdkSettings.State> {
|
||||
set(value) {
|
||||
state.USE_NEW_ENVIRONMENT_FOR_NEW_PROJECT = value
|
||||
}
|
||||
|
||||
var preferredEnvironmentType: String?
|
||||
get() = state.PREFERRED_ENVIRONMENT_TYPE
|
||||
set(value) {
|
||||
state.PREFERRED_ENVIRONMENT_TYPE = value
|
||||
}
|
||||
|
||||
var preferredVirtualEnvBaseSdk: String?
|
||||
get() = state.PREFERRED_VIRTUALENV_BASE_SDK
|
||||
set(value) {
|
||||
state.PREFERRED_VIRTUALENV_BASE_SDK = value
|
||||
}
|
||||
|
||||
fun setPreferredVirtualEnvBasePath(value: @SystemIndependent String, projectPath: @SystemIndependent String) {
|
||||
val pathMap = ReplacePathToMacroMap().apply {
|
||||
addMacroReplacement(projectPath, PathMacroUtil.PROJECT_DIR_MACRO_NAME)
|
||||
@@ -79,6 +86,8 @@ class PySdkSettings : PersistentStateComponent<PySdkSettings.State> {
|
||||
var PREFERRED_ENVIRONMENT_TYPE: String? = null
|
||||
@JvmField
|
||||
var PREFERRED_VIRTUALENV_BASE_PATH: String? = null
|
||||
@JvmField
|
||||
var PREFERRED_VIRTUALENV_BASE_SDK: String? = null
|
||||
}
|
||||
|
||||
private val defaultVirtualEnvRoot: @SystemIndependent String
|
||||
|
||||
@@ -66,7 +66,12 @@ class PyAddNewVirtualEnvPanel(private val project: Project?,
|
||||
|
||||
override val panelName = "New environment"
|
||||
override val icon: Icon = PythonIcons.Python.Virtualenv
|
||||
private val baseSdkField = PySdkPathChoosingComboBox(findBaseSdks(existingSdks), null)
|
||||
private val baseSdkField = PySdkPathChoosingComboBox(findBaseSdks(existingSdks), null).apply {
|
||||
val preferredSdkPath = PySdkSettings.instance.preferredVirtualEnvBaseSdk
|
||||
items.find { it.homePath == preferredSdkPath }?.let {
|
||||
selectedSdk = it
|
||||
}
|
||||
}
|
||||
private val pathField = TextFieldWithBrowseButton().apply {
|
||||
val defaultBasePath = FileUtil.toSystemDependentName(PySdkSettings.instance.getPreferredVirtualEnvBasePath(projectBasePath))
|
||||
val parentPath = PathUtil.getParentPath(defaultBasePath)
|
||||
@@ -111,7 +116,10 @@ class PyAddNewVirtualEnvPanel(private val project: Project?,
|
||||
sdk.associateWithProject(project, newProjectPath != null)
|
||||
}
|
||||
excludeDirectoryFromProject(root, project)
|
||||
PySdkSettings.instance.setPreferredVirtualEnvBasePath(FileUtil.toSystemIndependentName(pathField.text), projectBasePath)
|
||||
with(PySdkSettings.instance) {
|
||||
setPreferredVirtualEnvBasePath(FileUtil.toSystemIndependentName(pathField.text), projectBasePath)
|
||||
preferredVirtualEnvBaseSdk = baseSdkField.selectedSdk?.homePath
|
||||
}
|
||||
return sdk
|
||||
}
|
||||
|
||||
|
||||
@@ -53,9 +53,14 @@ class PySdkPathChoosingComboBox(sdks: List<Sdk>, suggestedFile: VirtualFile?) :
|
||||
}
|
||||
}
|
||||
|
||||
val selectedSdk: Sdk?
|
||||
var selectedSdk: Sdk?
|
||||
get() = childComponent.selectedItem as? Sdk?
|
||||
set(value) {
|
||||
if (value in items) {
|
||||
childComponent.selectedItem = value
|
||||
}
|
||||
}
|
||||
|
||||
private val items: List<Sdk>
|
||||
val items: List<Sdk>
|
||||
get() = (0 until childComponent.itemCount).map { childComponent.getItemAt(it) }
|
||||
}
|
||||
Reference in New Issue
Block a user