26 """ |
26 """ |
27 Class implementing a dialog for entering project specific debugger |
27 Class implementing a dialog for entering project specific debugger |
28 settings. |
28 settings. |
29 """ |
29 """ |
30 |
30 |
31 def __init__(self, project, parent=None, name=None): |
31 def __init__(self, project, isRemote=False, parent=None, name=None): |
32 """ |
32 """ |
33 Constructor |
33 Constructor |
34 |
34 |
35 @param project reference to the project object |
35 @param project reference to the project object |
36 @type Project |
36 @type Project |
37 @param parent parent widget of this dialog |
37 @param isRemote flag indicating a remote project (defaults to False) |
38 @type QWidget |
38 @type bool (optional) |
39 @param name name of this dialog |
39 @param parent parent widget of this dialog (defaults to None) |
40 @type str |
40 @type QWidget (optional) |
|
41 @param name name of this dialog (defaults to None) |
|
42 @type str (optional) |
41 """ |
43 """ |
42 super().__init__(parent) |
44 super().__init__(parent) |
43 if name: |
45 if name: |
44 self.setObjectName(name) |
46 self.setObjectName(name) |
45 self.setupUi(self) |
47 self.setupUi(self) |
46 |
48 |
47 self.project = project |
49 self.project = project |
|
50 self.__isRemote = isRemote |
48 |
51 |
49 debugClientsHistory = Preferences.getProject("DebugClientsHistory") |
52 debugClientsHistory = Preferences.getProject("DebugClientsHistory") |
50 self.debugClientPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
53 self.debugClientPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
51 self.debugClientPicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop) |
54 self.debugClientPicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop) |
52 self.debugClientPicker.setSizeAdjustPolicy( |
55 self.debugClientPicker.setSizeAdjustPolicy( |
87 if venvName: |
93 if venvName: |
88 venvIndex = max(0, self.venvComboBox.findText(venvName)) |
94 venvIndex = max(0, self.venvComboBox.findText(venvName)) |
89 else: |
95 else: |
90 venvIndex = 0 |
96 venvIndex = 0 |
91 self.venvComboBox.setCurrentIndex(venvIndex) |
97 self.venvComboBox.setCurrentIndex(venvIndex) |
92 if self.project.debugProperties["DEBUGCLIENT"]: |
98 |
|
99 # Debug Client |
|
100 self.debugClientGroup.setVisible(not isRemote) |
|
101 if isRemote: |
|
102 self.debugClientPicker.clear() |
|
103 elif self.project.debugProperties["DEBUGCLIENT"]: |
93 self.debugClientPicker.setText( |
104 self.debugClientPicker.setText( |
94 self.project.debugProperties["DEBUGCLIENT"], toNative=False |
105 self.project.debugProperties["DEBUGCLIENT"], toNative=False |
95 ) |
106 ) |
96 else: |
107 else: |
97 if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python3": |
108 if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python3": |
99 getConfig("ericDir"), "DebugClients", "Python", "DebugClient.py" |
110 getConfig("ericDir"), "DebugClients", "Python", "DebugClient.py" |
100 ) |
111 ) |
101 else: |
112 else: |
102 debugClient = "" |
113 debugClient = "" |
103 self.debugClientPicker.setText(debugClient, toNative=False) |
114 self.debugClientPicker.setText(debugClient, toNative=False) |
|
115 |
|
116 # Debug Environment |
104 self.debugEnvironmentOverrideCheckBox.setChecked( |
117 self.debugEnvironmentOverrideCheckBox.setChecked( |
105 self.project.debugProperties["ENVIRONMENTOVERRIDE"] |
118 self.project.debugProperties["ENVIRONMENTOVERRIDE"] |
106 ) |
119 ) |
107 self.debugEnvironmentEdit.setText( |
120 self.debugEnvironmentEdit.setText( |
108 self.project.debugProperties["ENVIRONMENTSTRING"] |
121 self.project.debugProperties["ENVIRONMENTSTRING"] |
109 ) |
122 ) |
|
123 |
|
124 # Remote (ssh) Debugger |
|
125 self.remoteDebuggerGroup.setVisible(not isRemote) |
110 self.remoteDebuggerGroup.setChecked( |
126 self.remoteDebuggerGroup.setChecked( |
111 self.project.debugProperties["REMOTEDEBUGGER"] |
127 self.project.debugProperties["REMOTEDEBUGGER"] |
112 ) |
128 ) |
113 self.remoteHostEdit.setText(self.project.debugProperties["REMOTEHOST"]) |
129 self.remoteHostEdit.setText(self.project.debugProperties["REMOTEHOST"]) |
114 self.remoteCommandEdit.setText(self.project.debugProperties["REMOTECOMMAND"]) |
130 self.remoteCommandEdit.setText(self.project.debugProperties["REMOTECOMMAND"]) |
118 self.pathTranslationGroup.setChecked( |
134 self.pathTranslationGroup.setChecked( |
119 self.project.debugProperties["PATHTRANSLATION"] |
135 self.project.debugProperties["PATHTRANSLATION"] |
120 ) |
136 ) |
121 self.translationRemoteEdit.setText(self.project.debugProperties["REMOTEPATH"]) |
137 self.translationRemoteEdit.setText(self.project.debugProperties["REMOTEPATH"]) |
122 self.translationLocalEdit.setText(self.project.debugProperties["LOCALPATH"]) |
138 self.translationLocalEdit.setText(self.project.debugProperties["LOCALPATH"]) |
|
139 |
|
140 # Console Debugger |
|
141 self.consoleDebuggerGroup.setVisible(not isRemote) |
123 self.consoleDebuggerGroup.setChecked( |
142 self.consoleDebuggerGroup.setChecked( |
124 self.project.debugProperties["CONSOLEDEBUGGER"] |
143 self.project.debugProperties["CONSOLEDEBUGGER"] |
125 ) |
144 ) |
126 self.consoleCommandEdit.setText(self.project.debugProperties["CONSOLECOMMAND"]) |
145 self.consoleCommandEdit.setText(self.project.debugProperties["CONSOLECOMMAND"]) |
127 self.redirectCheckBox.setChecked(self.project.debugProperties["REDIRECT"]) |
146 |
|
147 # Redirect stdin/stdout/stderr |
|
148 self.redirectCheckBox.setChecked( |
|
149 self.project.debugProperties["REDIRECT"] or isRemote |
|
150 ) |
|
151 |
|
152 # No encoding |
128 self.noEncodingCheckBox.setChecked(self.project.debugProperties["NOENCODING"]) |
153 self.noEncodingCheckBox.setChecked(self.project.debugProperties["NOENCODING"]) |
129 |
154 |
130 msh = self.minimumSizeHint() |
155 msh = self.minimumSizeHint() |
131 self.resize(max(self.width(), msh.width()), msh.height()) |
156 self.resize(max(self.width(), msh.width()), msh.height()) |
132 |
157 |
146 """ |
171 """ |
147 Public method to store the entered/modified data. |
172 Public method to store the entered/modified data. |
148 """ |
173 """ |
149 self.project.debugProperties["VIRTUALENV"] = self.venvComboBox.currentText() |
174 self.project.debugProperties["VIRTUALENV"] = self.venvComboBox.currentText() |
150 |
175 |
151 self.project.debugProperties["DEBUGCLIENT"] = self.debugClientPicker.text( |
176 if self.__isRemote: |
152 toNative=False |
177 self.project.debugProperties["DEBUGCLIENT"] = "" |
153 ) |
178 else: |
154 if not self.project.debugProperties["DEBUGCLIENT"]: |
179 self.project.debugProperties["DEBUGCLIENT"] = self.debugClientPicker.text( |
155 if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python3": |
180 toNative=False |
156 debugClient = os.path.join( |
181 ) |
157 getConfig("ericDir"), "DebugClients", "Python", "DebugClient.py" |
182 if not self.project.debugProperties["DEBUGCLIENT"]: |
158 ) |
183 if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python3": |
159 else: |
184 debugClient = os.path.join( |
160 debugClient = "" |
185 getConfig("ericDir"), "DebugClients", "Python", "DebugClient.py" |
161 self.project.debugProperties["DEBUGCLIENT"] = debugClient |
186 ) |
|
187 else: |
|
188 debugClient = "" |
|
189 self.project.debugProperties["DEBUGCLIENT"] = debugClient |
162 |
190 |
163 self.project.debugProperties[ |
191 self.project.debugProperties[ |
164 "ENVIRONMENTOVERRIDE" |
192 "ENVIRONMENTOVERRIDE" |
165 ] = self.debugEnvironmentOverrideCheckBox.isChecked() |
193 ] = self.debugEnvironmentOverrideCheckBox.isChecked() |
166 self.project.debugProperties[ |
194 self.project.debugProperties[ |
167 "ENVIRONMENTSTRING" |
195 "ENVIRONMENTSTRING" |
168 ] = self.debugEnvironmentEdit.text() |
196 ] = self.debugEnvironmentEdit.text() |
169 self.project.debugProperties[ |
197 |
170 "REMOTEDEBUGGER" |
198 if self.__isRemote: |
171 ] = self.remoteDebuggerGroup.isChecked() |
199 self.project.debugProperties["REMOTEDEBUGGER"] = False |
172 self.project.debugProperties["REMOTEHOST"] = self.remoteHostEdit.text() |
200 else: |
173 self.project.debugProperties["REMOTECOMMAND"] = self.remoteCommandEdit.text() |
201 self.project.debugProperties[ |
174 self.project.debugProperties[ |
202 "REMOTEDEBUGGER" |
175 "REMOTEDEBUGCLIENT" |
203 ] = self.remoteDebuggerGroup.isChecked() |
176 ] = self.remoteDebugClientEdit.text() |
204 self.project.debugProperties["REMOTEHOST"] = self.remoteHostEdit.text() |
177 self.project.debugProperties[ |
205 self.project.debugProperties[ |
178 "PATHTRANSLATION" |
206 "REMOTECOMMAND" |
179 ] = self.pathTranslationGroup.isChecked() |
207 ] = self.remoteCommandEdit.text() |
180 self.project.debugProperties["REMOTEPATH"] = self.translationRemoteEdit.text() |
208 self.project.debugProperties[ |
181 self.project.debugProperties["LOCALPATH"] = self.translationLocalEdit.text() |
209 "REMOTEDEBUGCLIENT" |
182 self.project.debugProperties[ |
210 ] = self.remoteDebugClientEdit.text() |
183 "CONSOLEDEBUGGER" |
211 self.project.debugProperties[ |
184 ] = self.consoleDebuggerGroup.isChecked() |
212 "PATHTRANSLATION" |
185 self.project.debugProperties["CONSOLECOMMAND"] = self.consoleCommandEdit.text() |
213 ] = self.pathTranslationGroup.isChecked() |
186 self.project.debugProperties["REDIRECT"] = self.redirectCheckBox.isChecked() |
214 self.project.debugProperties[ |
|
215 "REMOTEPATH" |
|
216 ] = self.translationRemoteEdit.text() |
|
217 self.project.debugProperties["LOCALPATH"] = self.translationLocalEdit.text() |
|
218 |
|
219 if self.__isRemote: |
|
220 self.project.debugProperties["CONSOLEDEBUGGER"] = False |
|
221 else: |
|
222 self.project.debugProperties[ |
|
223 "CONSOLEDEBUGGER" |
|
224 ] = self.consoleDebuggerGroup.isChecked() |
|
225 self.project.debugProperties[ |
|
226 "CONSOLECOMMAND" |
|
227 ] = self.consoleCommandEdit.text() |
|
228 |
|
229 self.project.debugProperties["REDIRECT"] = ( |
|
230 self.redirectCheckBox.isChecked() or self.__isRemote |
|
231 ) |
187 self.project.debugProperties["NOENCODING"] = self.noEncodingCheckBox.isChecked() |
232 self.project.debugProperties["NOENCODING"] = self.noEncodingCheckBox.isChecked() |
|
233 |
188 self.project.debugPropertiesLoaded = True |
234 self.project.debugPropertiesLoaded = True |
189 self.project.debugPropertiesChanged = True |
235 self.project.debugPropertiesChanged = True |
190 |
236 |
191 self.__saveHistories() |
237 self.__saveHistories() |
192 |
238 |