diff --git a/python/src/com/jetbrains/python/debugger/PyDebugRunner.java b/python/src/com/jetbrains/python/debugger/PyDebugRunner.java index 5cc3106ca2df..e7d4523cf684 100644 --- a/python/src/com/jetbrains/python/debugger/PyDebugRunner.java +++ b/python/src/com/jetbrains/python/debugger/PyDebugRunner.java @@ -351,7 +351,8 @@ public class PyDebugRunner extends GenericProgramRunner { } if (PyDebuggerOptionsProvider.getInstance(project).isSupportQtDebugging()) { - debugParams.addParameter("--qt-support"); + String pyQtBackend = PyDebuggerOptionsProvider.getInstance(project).getPyQtBackend().toLowerCase(); + debugParams.addParameter(String.format("--qt-support=%s", pyQtBackend)); } } diff --git a/python/src/com/jetbrains/python/debugger/PyDebuggerConfigurable.form b/python/src/com/jetbrains/python/debugger/PyDebuggerConfigurable.form index b49ffbad6d12..75154d2c47c2 100644 --- a/python/src/com/jetbrains/python/debugger/PyDebuggerConfigurable.form +++ b/python/src/com/jetbrains/python/debugger/PyDebuggerConfigurable.form @@ -3,12 +3,12 @@ - + - + @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -44,12 +44,12 @@ - + - + @@ -65,10 +65,24 @@ - + + + + + + + + + + + + + + + diff --git a/python/src/com/jetbrains/python/debugger/PyDebuggerConfigurable.java b/python/src/com/jetbrains/python/debugger/PyDebuggerConfigurable.java index ae81a612dbe0..b6fae30ba87a 100644 --- a/python/src/com/jetbrains/python/debugger/PyDebuggerConfigurable.java +++ b/python/src/com/jetbrains/python/debugger/PyDebuggerConfigurable.java @@ -21,6 +21,7 @@ import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.ComboBox; import com.intellij.ui.TooltipWithClickableLinks; import com.intellij.ui.components.JBCheckBox; import com.intellij.ui.components.JBLabel; @@ -29,6 +30,11 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import static com.jetbrains.python.debugger.PyDebugSupportUtils.DEBUGGER_WARNING_MESSAGE; @@ -44,12 +50,22 @@ public class PyDebuggerConfigurable implements SearchableConfigurable, Configura private JCheckBox mySupportGevent; private JBCheckBox mySupportQt; private JBLabel warningIcon; + private ComboBox myPyQtBackend; + private List myPyQtBackendsList = new ArrayList<>(Arrays.asList("Auto", "PyQt4", "PyQt5", "PySide")); private final Project myProject; public PyDebuggerConfigurable(Project project, final PyDebuggerOptionsProvider settings) { myProject = project; mySettings = settings; + myPyQtBackendsList.forEach(e -> myPyQtBackend.addItem(e)); + + mySupportQt.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + myPyQtBackend.setEnabled(mySupportQt.isSelected()); + } + }); } public String getDisplayName() { @@ -79,7 +95,8 @@ public class PyDebuggerConfigurable implements SearchableConfigurable, Configura return myAttachToSubprocess.isSelected() != mySettings.isAttachToSubprocess() || mySaveSignatures.isSelected() != mySettings.isSaveCallSignatures() || mySupportGevent.isSelected() != mySettings.isSupportGeventDebugging() || - mySupportQt.isSelected() != mySettings.isSupportQtDebugging(); + mySupportQt.isSelected() != mySettings.isSupportQtDebugging() || + !myPyQtBackend.getSelectedItem().equals(mySettings.getPyQtBackend()); } public void apply() throws ConfigurationException { @@ -87,6 +104,7 @@ public class PyDebuggerConfigurable implements SearchableConfigurable, Configura mySettings.setSaveCallSignatures(mySaveSignatures.isSelected()); mySettings.setSupportGeventDebugging(mySupportGevent.isSelected()); mySettings.setSupportQtDebugging(mySupportQt.isSelected()); + mySettings.setPyQtBackend(myPyQtBackendsList.get(myPyQtBackend.getSelectedIndex())); } public void reset() { @@ -94,6 +112,7 @@ public class PyDebuggerConfigurable implements SearchableConfigurable, Configura mySaveSignatures.setSelected(mySettings.isSaveCallSignatures()); mySupportGevent.setSelected(mySettings.isSupportGeventDebugging()); mySupportQt.setSelected(mySettings.isSupportQtDebugging()); + myPyQtBackend.setSelectedItem(mySettings.getPyQtBackend()); } public void disposeUIResources() { diff --git a/python/src/com/jetbrains/python/debugger/PyDebuggerOptionsProvider.java b/python/src/com/jetbrains/python/debugger/PyDebuggerOptionsProvider.java index 6ae122235a04..cbc502e75e7c 100644 --- a/python/src/com/jetbrains/python/debugger/PyDebuggerOptionsProvider.java +++ b/python/src/com/jetbrains/python/debugger/PyDebuggerOptionsProvider.java @@ -53,6 +53,7 @@ public class PyDebuggerOptionsProvider implements PersistentStateComponent