[PyCharm] PY-81850 Python Settings follow-up improvements #PY-81850 Ready for Merge

* Added a description for the "Python" group of Settings
* Added a description for the "Type Renderers" settings page
* Added a description for the "External Documentation" settings page
* Added a helpId for the "Type Renderers" settings page


(cherry picked from commit 29e93e8dd7fc7f54adea825b60cf8d95540fc6b0)

IJ-CR-166515

GitOrigin-RevId: f8fd3f2ca9d6e2d34077a5424673adeb66bc05d1
This commit is contained in:
Natalia.Murycheva
2025-06-17 23:40:46 +02:00
committed by intellij-monorepo-bot
parent 35b419badd
commit 84549d7bdf
4 changed files with 31 additions and 6 deletions

View File

@@ -58,7 +58,7 @@
weight="1000"
bundle="messages.PyBundle"
displayNameKey="settings.python.group.title"
descriptionKey="settings.python.group.title"/>
descriptionKey="settings.python.group.description"/>
<projectConfigurable groupId="python.group.settings"
id="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable"

View File

@@ -211,6 +211,7 @@ settings.memory.indicator.row.comment=Displays current memory usage in the statu
# Main Python Settings Group
settings.python.group.title=Python
settings.python.group.description=<html><body>Configure key Python development settings to customize your coding, debugging, data visualization, and documentation workflows.
runcfg.autodetect.display_name=Autodetect
runcfg.autodetect.parameters.group.name=Python test
@@ -676,6 +677,7 @@ configurable.PyActiveSdkModuleConfigurable.python.interpreter.display.name=Pytho
configurable.PyActiveSdkModuleConfigurable.pycharm.interpreter.display.name=Interpreter
configurable.PyUserTypeRenderersConfigurable.display.name=Python Type Renderers
configurable.PyUserTypeRenderersConfigurable.pycharm.display.name=Type Renderers
configurable.PyUserTypeRenderersConfigurable.description= Define custom display formats for various data types across your application.
configurable.plots.pycharm.display.name=Plots
flask.name=Flask
settings.default.remote.interpreter=Default Python Remote Interpreter
@@ -914,6 +916,7 @@ pydev.console.python.interpreter.is.not.selected=Python interpreter is not selec
external.documentation.python.plugin=Python External Documentation
external.documentation.pycharm=External Documentation
external.documentation.description=Configure URLs for Python external documentation to enable quick access to relevant resources.
external.documentation.edit.documentation.url=Edit Documentation URL
external.documentation.title=Python External Documentation
external.documentation.configure.description=No external documentation URL is configured for module {0}.\nWould you like to configure it now?

View File

@@ -15,11 +15,13 @@ import com.intellij.openapi.ui.ValidationInfo
import com.intellij.openapi.util.Disposer
import com.intellij.psi.util.QualifiedName
import com.intellij.ui.*
import com.intellij.ui.components.JBLabel
import com.intellij.ui.dsl.builder.AlignX
import com.intellij.ui.dsl.builder.LabelPosition
import com.intellij.ui.dsl.builder.panel
import com.intellij.ui.table.JBTable
import com.intellij.util.textCompletion.TextFieldWithCompletion
import com.intellij.util.ui.JBUI
import com.intellij.xdebugger.XDebuggerManager
import com.intellij.xdebugger.impl.XSourcePositionImpl
import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl
@@ -91,6 +93,14 @@ class PyUserTypeRenderersConfigurable : SearchableConfigurable {
myRendererChooser.selectElements(listOf(first))
}
myMainPanel.removeAll()
val border = IdeBorderFactory.createEmptyBorder(JBUI.insets(10, 0))
val message = PyBundle.message("configurable.PyUserTypeRenderersConfigurable.description")
myMainPanel.add(
JBUI.Panels.simplePanel(JBLabel(message)).withBorder(border),
BorderLayout.NORTH
)
myMainPanel.add(splitter, BorderLayout.CENTER)
}
return myMainPanel
@@ -164,6 +174,8 @@ class PyUserTypeRenderersConfigurable : SearchableConfigurable {
override fun getId(): String = CONFIGURABLE_ID
override fun getHelpTopic(): String = "reference.idesettings.debugger.typerenderers"
private fun setupRendererChooser() {
myRendererChooser.emptyText.text = PyBundle.message("form.debugger.variables.view.user.type.renderers.no.renderers")
myRendererChooser.addElementsMarkListener(ElementsChooser.ElementsMarkListener { element, isMarked ->

View File

@@ -6,17 +6,19 @@ import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.ui.AddEditRemovePanel;
import com.intellij.ui.ColoredTableCellRenderer;
import com.intellij.ui.JBColor;
import com.intellij.ui.SimpleTextAttributes;
import com.intellij.ui.*;
import com.intellij.ui.components.JBLabel;
import com.intellij.util.PlatformUtils;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.components.BorderLayoutPanel;
import com.jetbrains.python.PyBundle;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.util.ArrayList;
import java.util.Map;
@@ -42,9 +44,17 @@ public final class PythonDocumentationConfigurable implements SearchableConfigur
@Override
public JComponent createComponent() {
Border border = IdeBorderFactory.createEmptyBorder(JBUI.insets(10, 0));
JPanel panelWithDescription = JBUI.Panels.simplePanel(new JBLabel(PyBundle.message("external.documentation.description"))).withBorder(border);
SwingUtilities.updateComponentTreeUI(myPanel); // TODO: create Swing components in this method (see javadoc)
myPanel.getTable().setShowGrid(false);
return myPanel;
BorderLayoutPanel myComponent = new BorderLayoutPanel()
.addToTop(panelWithDescription)
.addToCenter(myPanel);
return myComponent;
}
@Override