mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[python] (PY-84316) revert serial calls & EditorContextBarMenu for Python Package Manager Actions
GitOrigin-RevId: 42374befa238b38583cf0490e1b2e248c206f2ef
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8344d9a136
commit
e87293623e
@@ -1141,6 +1141,7 @@
|
||||
icon="com.intellij.icons.AllIcons.Actions.Install"/>
|
||||
<separator/>
|
||||
|
||||
<add-to-group group-id="EditorContextBarMenu" anchor="first"/>
|
||||
<add-to-group group-id="ExternalSystemView.ProjectMenu" anchor="last"/>
|
||||
<add-to-group group-id="RunContextGroup"/>
|
||||
</group>
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.intellij.openapi.application.edtWriteAction
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.openapi.module.ModuleUtil
|
||||
import com.intellij.openapi.project.DumbAwareAction
|
||||
import com.intellij.openapi.util.NlsContexts
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.python.pyproject.PY_PROJECT_TOML
|
||||
import com.jetbrains.python.errorProcessing.ErrorSink
|
||||
@@ -106,3 +107,9 @@ internal fun PythonPackageManager.isRunLocked(): Boolean {
|
||||
return CancellableJobSerialRunner.isRunLocked(this.sdk)
|
||||
}
|
||||
|
||||
internal suspend fun <V> PythonPackageManager.runSynchronized(
|
||||
title: @NlsContexts.ProgressTitle String,
|
||||
runnable: suspend () -> PyResult<V>,
|
||||
): PyResult<V> {
|
||||
return CancellableJobSerialRunner.run(this.project, this.sdk, title, runnable)
|
||||
}
|
||||
@@ -142,8 +142,8 @@ class PythonPackageManagerUI(val manager: PythonPackageManager, val sink: ErrorS
|
||||
@ApiStatus.Internal
|
||||
suspend fun <T> executeCommand(
|
||||
progressTitle: @Nls String,
|
||||
operation: suspend (() -> PyResult<T>?),
|
||||
): T? = PythonPackageManagerUIHelpers.runPackagingOperationMaybeBackground(manager.project, sink, progressTitle) {
|
||||
operation: suspend (() -> PyResult<T>),
|
||||
): T? = PythonPackageManagerUIHelpers.runPackagingOperationMaybeBackground(manager, sink, progressTitle) {
|
||||
|
||||
operation()
|
||||
}
|
||||
|
||||
+6
-18
@@ -2,11 +2,9 @@
|
||||
package com.jetbrains.python.packaging.management.ui
|
||||
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.popup.Balloon
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||
import com.intellij.openapi.util.NlsContexts
|
||||
import com.intellij.platform.ide.progress.withBackgroundProgress
|
||||
import com.intellij.ui.awt.RelativePoint
|
||||
import com.intellij.util.ui.JBUI
|
||||
import com.jetbrains.python.errorProcessing.ErrorSink
|
||||
@@ -14,6 +12,8 @@ import com.jetbrains.python.errorProcessing.PyResult
|
||||
import com.jetbrains.python.errorProcessing.emit
|
||||
import com.jetbrains.python.getOrNull
|
||||
import com.jetbrains.python.onFailure
|
||||
import com.jetbrains.python.packaging.management.PythonPackageManager
|
||||
import com.jetbrains.python.packaging.management.runSynchronized
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import javax.swing.JLabel
|
||||
@@ -21,26 +21,14 @@ import javax.swing.UIManager
|
||||
|
||||
internal object PythonPackageManagerUIHelpers {
|
||||
suspend fun <T> runPackagingOperationMaybeBackground(
|
||||
project: Project,
|
||||
manager: PythonPackageManager,
|
||||
errorSink: ErrorSink?,
|
||||
@NlsContexts.ProgressTitle title: String,
|
||||
operation: suspend (() -> PyResult<T>?),
|
||||
): T? = withBackgroundProgress(project = project, title, cancellable = true) {
|
||||
runPackagingOperationMaybeShowErrorDialog(errorSink, project) {
|
||||
withContext(Dispatchers.Default) {
|
||||
operation()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun <T> runPackagingOperationMaybeShowErrorDialog(
|
||||
errorSink: ErrorSink?,
|
||||
project: Project,
|
||||
operation: suspend (() -> PyResult<T>?),
|
||||
operation: suspend (() -> PyResult<T>),
|
||||
): T? {
|
||||
val pyResult = operation() ?: return null
|
||||
val pyResult = manager.runSynchronized(title, operation)
|
||||
return pyResult.onFailure {
|
||||
errorSink?.emit(it, project)
|
||||
errorSink?.emit(it, manager.project)
|
||||
}.getOrNull()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user