From 120fc27a41725d0ed87a727016e490e68a664cdc Mon Sep 17 00:00:00 2001 From: Ilia Zakoulov Date: Mon, 13 Oct 2025 16:54:13 +0300 Subject: [PATCH] PY-84747: Do not create welcome main.py file for the welcome project GitOrigin-RevId: 561d1439ba9b126e239187aa18ff1f7485ed35bd --- .../community/ide/impl/miscProject/impl/lib.kt | 14 ++++++-------- .../ide/impl/newProjectWizard/welcome/PyWelcome.kt | 3 ++- .../PyCharmWelcomeScreenProjectProvider.kt | 11 +++++++---- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/miscProject/impl/lib.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/miscProject/impl/lib.kt index 6f288e000ee0..59d27bd58500 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/miscProject/impl/lib.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/miscProject/impl/lib.kt @@ -10,10 +10,10 @@ import com.intellij.openapi.diagnostic.fileLogger import com.intellij.openapi.diagnostic.thisLogger import com.intellij.openapi.project.Project import com.intellij.openapi.project.ex.ProjectManagerEx -import com.intellij.openapi.project.guessProjectDir import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.vfs.VfsUtil import com.intellij.openapi.vfs.VirtualFile +import com.intellij.openapi.wm.ex.WelcomeScreenProjectProvider import com.intellij.platform.ide.progress.ModalTaskOwner import com.intellij.platform.ide.progress.TaskCancellation import com.intellij.platform.ide.progress.runWithModalProgressBlocking @@ -25,7 +25,6 @@ import com.intellij.pycharm.community.ide.impl.miscProject.MiscFileType import com.intellij.pycharm.community.ide.impl.miscProject.TemplateFileName import com.intellij.python.community.services.systemPython.SystemPythonService import com.intellij.util.SystemProperties -import com.intellij.util.concurrency.annotations.RequiresEdt import com.jetbrains.python.PyBundle import com.jetbrains.python.Result import com.jetbrains.python.errorProcessing.MessageError @@ -42,13 +41,14 @@ import kotlin.io.path.createDirectories import kotlin.io.path.createFile import kotlin.time.Duration.Companion.milliseconds -internal const val MISC_PROJECT_NAME: String = "Welcome" +internal const val MISC_PROJECT_WITH_WELCOME_NAME: String = "Welcome" +internal const val MISC_PROJECT_NAME = "PyCharmMiscProject" internal val miscProjectDefaultPath: Path get() { val default = GeneralLocalSettings.getInstance().defaultProjectDirectory val directory = if (default.isEmpty()) Path.of(SystemProperties.getUserHome()) else Path.of(default) - return directory.resolve("PyCharmMiscProject") + return directory.resolve(MISC_PROJECT_NAME) } /** @@ -145,8 +145,8 @@ private suspend fun createProjectAndSdk( systemPythonService: SystemPythonService, currentProject: Project?, ): PyResult> { - val isCurrentProjectIsAlreadyMiscProject = currentProject?.name == MISC_PROJECT_NAME - val project = if (isCurrentProjectIsAlreadyMiscProject) { + val isAlreadyMiscOrWelcomeScreenProject = currentProject != null && WelcomeScreenProjectProvider.isWelcomeScreenProject(currentProject) + val project = if (isAlreadyMiscOrWelcomeScreenProject) { currentProject } else { openProject(projectPath) @@ -174,8 +174,6 @@ private suspend fun openProject(projectPath: Path): Project { val project = projectManager.openProjectAsync(projectPath, OpenProjectTask { runConfigurators = false isProjectCreatedWithWizard = true - projectName = MISC_PROJECT_NAME - }) ?: error("Failed to open project in $projectPath, check logs") // There are countless numbers of reasons `openProjectAsync` might return null diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/newProjectWizard/welcome/PyWelcome.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/newProjectWizard/welcome/PyWelcome.kt index 7caf59e11a86..1ee7f6d0dbb4 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/newProjectWizard/welcome/PyWelcome.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/newProjectWizard/welcome/PyWelcome.kt @@ -31,6 +31,7 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.wm.ToolWindowId import com.intellij.openapi.wm.ToolWindowManager import com.intellij.openapi.wm.ex.ToolWindowManagerListener +import com.intellij.openapi.wm.ex.WelcomeScreenProjectProvider import com.intellij.platform.DirectoryProjectConfigurator import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiFile @@ -57,7 +58,7 @@ internal class PyWelcomeConfigurator : DirectoryProjectConfigurator { get() = false override fun configureProject(project: Project, baseDir: VirtualFile, moduleRef: Ref, isProjectCreatedWithWizard: Boolean) { - if (isProjectCreatedWithWizard || isInsideTempDirectory(baseDir)) { + if (isProjectCreatedWithWizard || isInsideTempDirectory(baseDir) || WelcomeScreenProjectProvider.isWelcomeScreenProject(project)) { return } diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/welcomeScreen/PyCharmWelcomeScreenProjectProvider.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/welcomeScreen/PyCharmWelcomeScreenProjectProvider.kt index 610a65e655f1..85b288718e4a 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/welcomeScreen/PyCharmWelcomeScreenProjectProvider.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/welcomeScreen/PyCharmWelcomeScreenProjectProvider.kt @@ -5,15 +5,18 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.project.ex.ProjectEx import com.intellij.openapi.wm.ex.WelcomeScreenProjectProvider import com.intellij.pycharm.community.ide.impl.miscProject.impl.MISC_PROJECT_NAME +import com.intellij.pycharm.community.ide.impl.miscProject.impl.MISC_PROJECT_WITH_WELCOME_NAME import com.intellij.pycharm.community.ide.impl.miscProject.impl.miscProjectDefaultPath import java.nio.file.Path private class PyCharmWelcomeScreenProjectProvider : WelcomeScreenProjectProvider() { - override fun getWelcomeScreenProjectName(): String = MISC_PROJECT_NAME + override fun getWelcomeScreenProjectName(): String = MISC_PROJECT_WITH_WELCOME_NAME override fun getWelcomeScreenProjectPath(): Path = miscProjectDefaultPath - override fun doIsWelcomeScreenProject(project: Project): Boolean = project.name == MISC_PROJECT_NAME + override fun doIsWelcomeScreenProject(project: Project): Boolean { + return project.name == MISC_PROJECT_WITH_WELCOME_NAME || project.name == MISC_PROJECT_NAME + } override fun doIsForceDisabledFileColors(): Boolean = true @@ -23,8 +26,8 @@ private class PyCharmWelcomeScreenProjectProvider : WelcomeScreenProjectProvider val project = super.doCreateOrOpenWelcomeScreenProject(path) // The name might be a MiscProject, since we are reusing that project. // We have to rename it to Welcome. - if (project.name != MISC_PROJECT_NAME && project is ProjectEx) { - project.setProjectName(MISC_PROJECT_NAME) + if (project.name != MISC_PROJECT_WITH_WELCOME_NAME && project is ProjectEx) { + project.setProjectName(MISC_PROJECT_WITH_WELCOME_NAME) project.save() } return project