Files
openide/python/ide/impl/resources/intellij.pycharm.community.ide.impl.xml
Ilya Kazakevich 7bd141a993 PyCharm: Rewrite NPW API: See com.jetbrains.python.newProjectWizard
This package (aka PyV3) fixes several issues, including
1. Lots of `DirectoryProjectGenerator` misuses: We now create UI and settings with `ProjectGeneratorPeer`: no more manuals casts in callback
2. Decouples project generation from UI: Settings aren't aware of UI but generate a project instead. Settings are mapped to the UI using Kotlin DSL UI
3. Kotlin DSL UI panel enables validation
4. `PySdkCreator` (an interface implemented by all "v2" SDK panels) now accepts `Module`, so we can provide it Poetry

The whole machinery of `PythonGenerateProjectCallback` (a pack of manual casts only mother could love) is completely deprecated and will be removed soon.

Lots of small changes towards `suspend` functions, Kotlin DSL UI and `Flow` decrease the technical debt.


Merge-request: IJ-MR-144503
Merged-by: Ilya Kazakevich <ilya.kazakevich@jetbrains.com>

GitOrigin-RevId: 21963e843b0ae67c71a6fc5ea1229cb0f57915a9
2024-09-10 19:50:12 +00:00

114 lines
7.5 KiB
XML

<idea-plugin package="com.intellij.pycharm.community.ide.impl">
<!--Customization code for both Community and Pro PyCharms-->
<dependencies>
<plugin id="PythonCore"/>
<module name="intellij.platform.whatsNew" />
</dependencies>
<projectListeners>
<listener class="com.intellij.pycharm.community.ide.impl.PyModuleListener" topic="com.intellij.openapi.project.ModuleListener"/>
<listener class="com.intellij.pycharm.community.ide.impl.PySdkFromEnvironmentVariableConfigurator"
topic="com.intellij.workspaceModel.ide.JpsProjectLoadedListener"/>
</projectListeners>
<extensions defaultExtensionNs="com.intellij">
<applicationInitializedListener implementation="com.intellij.pycharm.community.ide.impl.PyCharmCorePluginConfigurator"/>
<applicationService serviceInterface="com.intellij.lang.IdeLanguageCustomization"
serviceImplementation="com.intellij.pycharm.community.ide.impl.PyCharmPythonIdeLanguageCustomization"
overrides="true"/>
<projectConfigurable groupId="project"
id="com.intellij.pycharm.community.ide.impl.configuration.PythonContentEntriesConfigurable"
bundle="messages.PyBundle"
key="configurable.PythonContentEntriesConfigurable.display.name"
provider="com.intellij.pycharm.community.ide.impl.configuration.PythonContentEntriesConfigurableProvider"/>
<projectConfigurable groupId="project"
id="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable"
bundle="messages.PyBundle"
key="configurable.PyActiveSdkModuleConfigurable.python.interpreter.display.name"
instance="com.intellij.pycharm.community.ide.impl.PyCharmPyActiveSdkModuleConfigurable"
groupWeight="5"/> <!-- id is used in InterpreterSettingsQuickFix.showPythonInterpreterSettings -->
<projectConfigurable groupId="project"
id="com.intellij.pycharm.community.ide.impl.configuration.PyDependenciesConfigurable"
bundle="messages.PyBundle"
key="configurable.PyDependenciesConfigurable.display.name"
provider="com.intellij.pycharm.community.ide.impl.configuration.PyDependenciesConfigurableProvider"/>
<statusBarWidgetFactory id="pythonInterpreterWidget"
implementation="com.intellij.pycharm.community.ide.impl.configuration.PySdkStatusBarWidgetFactory"
order="after CodeStyleStatusBarWidget, before git, before hg, before Notifications"/>
<directoryProjectConfigurator implementation="com.intellij.pycharm.community.ide.impl.PythonSdkConfigurator" id="sdk"
order="after PlatformProjectConfigurator"/>
<directoryProjectConfigurator implementation="com.intellij.pycharm.community.ide.impl.PythonSourceRootConfigurator" id="sourceRoot"
order="after sdk"/>
<directoryProjectConfigurator implementation="com.intellij.pycharm.community.ide.impl.PlatformInspectionProfileConfigurator"/>
<directoryProjectConfigurator implementation="com.intellij.pycharm.community.ide.impl.newProject.welcome.PyWelcomeConfigurator"
id="welcome" order="last"/>
<applicationService serviceInterface="com.intellij.openapi.module.ModuleTypeManager"
serviceImplementation="com.intellij.pycharm.community.ide.impl.PythonModuleTypeManager"
overrides="true"/>
<fileStructureGroupRuleProvider implementation="com.intellij.usages.impl.rules.FileGroupingRuleProvider" order="first"/>
<fileStructureGroupRuleProvider implementation="com.intellij.pycharm.community.ide.impl.PyClassGroupingRuleProvider"
order="before py-function"/>
<diffPreviewProvider implementation="com.intellij.pycharm.community.ide.impl.configuration.PyDiffPreviewProvider"/>
<optionsApplicabilityFilter implementation="com.intellij.pycharm.community.ide.impl.PyOptionsApplicabilityFilter"/>
<applicationService serviceInterface="com.jetbrains.python.run.PyCommonOptionsFormFactory"
serviceImplementation="com.intellij.pycharm.community.ide.impl.PyIdeCommonOptionsFormFactory"/>
<applicationService serviceInterface="com.jetbrains.python.run.PyCommonFragmentsBuilder"
serviceImplementation="com.intellij.pycharm.community.ide.impl.PyIdeCommonFragmentsBuilder"/>
<applicationService serviceInterface="com.intellij.platform.whatsNew.WhatsNewInVisionContentProvider"
serviceImplementation="com.intellij.pycharm.community.ide.impl.whatsnew.PyCharmWhatsNewInVisionContentProvider"
overrides="true"/>
<directoryIndexExcludePolicy implementation="com.intellij.pycharm.community.ide.impl.PyDirectoryIndexExcludePolicy"/>
<applicationService serviceImplementation="com.intellij.pycharm.community.ide.impl.newProject.welcome.PyWelcomeSettings"/>
<statistics.counterUsagesCollector implementationClass="com.intellij.pycharm.community.ide.impl.newProject.welcome.PyWelcomeCollector"/>
<notificationGroup id="PyCharm Professional Advertiser" displayType="STICKY_BALLOON" isLogByDefault="false"
bundle="messages.PyCharmCommunityCustomizationBundle" key="notification.group.pro.advertiser"/>
<ignoredFileProvider implementation="com.intellij.pycharm.community.ide.impl.configuration.PyTemporarilyIgnoredFileProvider"/>
<statistics.counterUsagesCollector
implementationClass="com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationCollector"/>
<defaultToolWindowLayout implementation="com.intellij.pycharm.community.ide.impl.PyToolWindowLayoutProvider" order="last"/>
<codeInsight.codeVision.settings.defaults implementation="com.intellij.pycharm.community.ide.impl.PyCharmCodeVisionSettingsDefaults"/>
</extensions>
<extensions defaultExtensionNs="Pythonid">
<projectSdkConfigurationExtension
implementation="com.intellij.pycharm.community.ide.impl.configuration.PyRequirementsTxtOrSetupPySdkConfiguration"
id="requirementsTxtOrSetupPy"/>
<projectSdkConfigurationExtension
implementation="com.intellij.pycharm.community.ide.impl.configuration.PyEnvironmentYmlSdkConfiguration"
id="environmentYml"/>
<projectSdkConfigurationExtension implementation="com.intellij.pycharm.community.ide.impl.configuration.PyPipfileSdkConfiguration"
id="pipfile" order="before requirementsTxtOrSetupPy"/>
<projectSdkConfigurationExtension implementation="com.intellij.pycharm.community.ide.impl.configuration.PyPoetrySdkConfiguration"/>
</extensions>
<actions resource-bundle="messages.ActionsBundle">
<action id="PySwitchSdkAction" class="com.intellij.pycharm.community.ide.impl.configuration.PySwitchSdkAction"/>
<action id="NewDirectoryProject" class="com.intellij.pycharm.community.ide.impl.newProject.PyCharmNewProjectAction">
<add-to-group group-id="NewProjectOrModuleGroup"/>
</action>
<group id="WelcomeScreen.Platform.NewProject">
<group id="WelcomeScreen.CreateDirectoryProject"
class="com.intellij.pycharm.community.ide.impl.newProject.impl.PyV3NewProjectStepAction"/>
<reference ref="WelcomeScreen.OpenDirectoryProject"/>
<add-to-group group-id="WelcomeScreen.QuickStart" anchor="first"/>
</group>
</actions>
</idea-plugin>