1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing the Debugger Python configuration page. |
|
8 """ |
|
9 |
|
10 from __future__ import unicode_literals |
|
11 |
|
12 from E5Gui.E5Application import e5App |
|
13 from E5Gui.E5PathPicker import E5PathPickerModes |
|
14 |
|
15 from .ConfigurationPageBase import ConfigurationPageBase |
|
16 from .Ui_DebuggerPythonPage import Ui_DebuggerPythonPage |
|
17 |
|
18 import Preferences |
|
19 |
|
20 |
|
21 class DebuggerPythonPage(ConfigurationPageBase, Ui_DebuggerPythonPage): |
|
22 """ |
|
23 Class implementing the Debugger Python configuration page. |
|
24 """ |
|
25 def __init__(self): |
|
26 """ |
|
27 Constructor |
|
28 """ |
|
29 super(DebuggerPythonPage, self).__init__() |
|
30 self.setupUi(self) |
|
31 self.setObjectName("DebuggerPythonPage") |
|
32 |
|
33 try: |
|
34 virtualenvManager = e5App().getObject("VirtualEnvManager") |
|
35 except KeyError: |
|
36 from VirtualEnv.VirtualenvManager import VirtualenvManager |
|
37 virtualenvManager = VirtualenvManager() |
|
38 self.venvComboBox.addItems( |
|
39 [""] + sorted(virtualenvManager.getVirtualenvNamesForVariant(2))) |
|
40 |
|
41 self.debugClientPicker.setMode(E5PathPickerModes.OpenFileMode) |
|
42 self.debugClientPicker.setToolTip(self.tr( |
|
43 "Press to select the Debug Client via a file selection dialog")) |
|
44 self.debugClientPicker.setFilters(self.tr("Python Files (*.py *.py2)")) |
|
45 |
|
46 # set initial values |
|
47 venvName = Preferences.getDebugger("Python2VirtualEnv") |
|
48 if venvName: |
|
49 index = self.venvComboBox.findText(venvName) |
|
50 if index < 0: |
|
51 index = 0 |
|
52 self.venvComboBox.setCurrentIndex(index) |
|
53 dct = Preferences.getDebugger("DebugClientType") |
|
54 if dct == "standard": |
|
55 self.standardButton.setChecked(True) |
|
56 else: |
|
57 self.customButton.setChecked(True) |
|
58 self.debugClientPicker.setText( |
|
59 Preferences.getDebugger("DebugClient"), toNative=False) |
|
60 self.pyRedirectCheckBox.setChecked( |
|
61 Preferences.getDebugger("PythonRedirect")) |
|
62 self.pyNoEncodingCheckBox.setChecked( |
|
63 Preferences.getDebugger("PythonNoEncoding")) |
|
64 self.sourceExtensionsEdit.setText( |
|
65 Preferences.getDebugger("PythonExtensions")) |
|
66 |
|
67 def save(self): |
|
68 """ |
|
69 Public slot to save the Debugger Python configuration. |
|
70 """ |
|
71 Preferences.setDebugger( |
|
72 "Python2VirtualEnv", |
|
73 self.venvComboBox.currentText()) |
|
74 if self.standardButton.isChecked(): |
|
75 dct = "standard" |
|
76 else: |
|
77 dct = "custom" |
|
78 Preferences.setDebugger("DebugClientType", dct) |
|
79 Preferences.setDebugger( |
|
80 "DebugClient", |
|
81 self.debugClientPicker.text(toNative=False)) |
|
82 Preferences.setDebugger( |
|
83 "PythonRedirect", |
|
84 self.pyRedirectCheckBox.isChecked()) |
|
85 Preferences.setDebugger( |
|
86 "PythonNoEncoding", |
|
87 self.pyNoEncodingCheckBox.isChecked()) |
|
88 Preferences.setDebugger( |
|
89 "PythonExtensions", |
|
90 self.sourceExtensionsEdit.text()) |
|
91 |
|
92 |
|
93 def create(dlg): |
|
94 """ |
|
95 Module function to create the configuration page. |
|
96 |
|
97 @param dlg reference to the configuration dialog |
|
98 @return reference to the instantiated page (ConfigurationPageBase) |
|
99 """ |
|
100 page = DebuggerPythonPage() |
|
101 return page |
|