28 class DebuggerPropertiesDialog(QDialog, Ui_DebuggerPropertiesDialog): |
28 class DebuggerPropertiesDialog(QDialog, Ui_DebuggerPropertiesDialog): |
29 """ |
29 """ |
30 Class implementing a dialog for entering project specific debugger |
30 Class implementing a dialog for entering project specific debugger |
31 settings. |
31 settings. |
32 """ |
32 """ |
|
33 |
33 def __init__(self, project, parent=None, name=None): |
34 def __init__(self, project, parent=None, name=None): |
34 """ |
35 """ |
35 Constructor |
36 Constructor |
36 |
37 |
37 @param project reference to the project object |
38 @param project reference to the project object |
38 @param parent parent widget of this dialog (QWidget) |
39 @param parent parent widget of this dialog (QWidget) |
39 @param name name of this dialog (string) |
40 @param name name of this dialog (string) |
40 """ |
41 """ |
41 super().__init__(parent) |
42 super().__init__(parent) |
42 if name: |
43 if name: |
43 self.setObjectName(name) |
44 self.setObjectName(name) |
44 self.setupUi(self) |
45 self.setupUi(self) |
45 |
46 |
46 debugClientsHistory = Preferences.getProject( |
47 debugClientsHistory = Preferences.getProject("DebugClientsHistory") |
47 "DebugClientsHistory") |
|
48 self.debugClientPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
48 self.debugClientPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
49 self.debugClientPicker.setInsertPolicy( |
49 self.debugClientPicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop) |
50 QComboBox.InsertPolicy.InsertAtTop) |
|
51 self.debugClientPicker.setSizeAdjustPolicy( |
50 self.debugClientPicker.setSizeAdjustPolicy( |
52 QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon) |
51 QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon |
|
52 ) |
53 self.debugClientPicker.setPathsList(debugClientsHistory) |
53 self.debugClientPicker.setPathsList(debugClientsHistory) |
54 self.debugClientClearHistoryButton.setIcon( |
54 self.debugClientClearHistoryButton.setIcon(UI.PixmapCache.getIcon("editDelete")) |
55 UI.PixmapCache.getIcon("editDelete")) |
55 |
56 |
|
57 venvManager = ericApp().getObject("VirtualEnvManager") |
56 venvManager = ericApp().getObject("VirtualEnvManager") |
58 |
57 |
59 self.venvComboBox.addItem("") |
58 self.venvComboBox.addItem("") |
60 self.venvComboBox.addItems(sorted(venvManager.getVirtualenvNames())) |
59 self.venvComboBox.addItems(sorted(venvManager.getVirtualenvNames())) |
61 |
60 |
62 self.translationLocalCompleter = EricDirCompleter( |
61 self.translationLocalCompleter = EricDirCompleter(self.translationLocalEdit) |
63 self.translationLocalEdit) |
62 |
64 |
|
65 self.project = project |
63 self.project = project |
66 |
64 |
67 if self.project.debugProperties["VIRTUALENV"]: |
65 if self.project.debugProperties["VIRTUALENV"]: |
68 venvIndex = max(0, self.venvComboBox.findText( |
66 venvIndex = max( |
69 self.project.debugProperties["VIRTUALENV"])) |
67 0, |
|
68 self.venvComboBox.findText(self.project.debugProperties["VIRTUALENV"]), |
|
69 ) |
70 else: |
70 else: |
71 if self.project.pdata["PROGLANGUAGE"] == "Python3": |
71 if self.project.pdata["PROGLANGUAGE"] == "Python3": |
72 venvName = Preferences.getDebugger("Python3VirtualEnv") |
72 venvName = Preferences.getDebugger("Python3VirtualEnv") |
73 else: |
73 else: |
74 venvName = "" |
74 venvName = "" |
79 else: |
79 else: |
80 venvIndex = 0 |
80 venvIndex = 0 |
81 self.venvComboBox.setCurrentIndex(venvIndex) |
81 self.venvComboBox.setCurrentIndex(venvIndex) |
82 if self.project.debugProperties["DEBUGCLIENT"]: |
82 if self.project.debugProperties["DEBUGCLIENT"]: |
83 self.debugClientPicker.setText( |
83 self.debugClientPicker.setText( |
84 self.project.debugProperties["DEBUGCLIENT"], |
84 self.project.debugProperties["DEBUGCLIENT"], toNative=False |
85 toNative=False) |
85 ) |
86 else: |
86 else: |
87 if self.project.pdata["PROGLANGUAGE"] == "Python3": |
87 if self.project.pdata["PROGLANGUAGE"] == "Python3": |
88 debugClient = os.path.join( |
88 debugClient = os.path.join( |
89 getConfig('ericDir'), |
89 getConfig("ericDir"), "DebugClients", "Python", "DebugClient.py" |
90 "DebugClients", "Python", "DebugClient.py") |
90 ) |
91 else: |
91 else: |
92 debugClient = "" |
92 debugClient = "" |
93 self.debugClientPicker.setText(debugClient, toNative=False) |
93 self.debugClientPicker.setText(debugClient, toNative=False) |
94 self.debugEnvironmentOverrideCheckBox.setChecked( |
94 self.debugEnvironmentOverrideCheckBox.setChecked( |
95 self.project.debugProperties["ENVIRONMENTOVERRIDE"]) |
95 self.project.debugProperties["ENVIRONMENTOVERRIDE"] |
|
96 ) |
96 self.debugEnvironmentEdit.setText( |
97 self.debugEnvironmentEdit.setText( |
97 self.project.debugProperties["ENVIRONMENTSTRING"]) |
98 self.project.debugProperties["ENVIRONMENTSTRING"] |
|
99 ) |
98 self.remoteDebuggerGroup.setChecked( |
100 self.remoteDebuggerGroup.setChecked( |
99 self.project.debugProperties["REMOTEDEBUGGER"]) |
101 self.project.debugProperties["REMOTEDEBUGGER"] |
100 self.remoteHostEdit.setText( |
102 ) |
101 self.project.debugProperties["REMOTEHOST"]) |
103 self.remoteHostEdit.setText(self.project.debugProperties["REMOTEHOST"]) |
102 self.remoteCommandEdit.setText( |
104 self.remoteCommandEdit.setText(self.project.debugProperties["REMOTECOMMAND"]) |
103 self.project.debugProperties["REMOTECOMMAND"]) |
|
104 self.pathTranslationGroup.setChecked( |
105 self.pathTranslationGroup.setChecked( |
105 self.project.debugProperties["PATHTRANSLATION"]) |
106 self.project.debugProperties["PATHTRANSLATION"] |
106 self.translationRemoteEdit.setText( |
107 ) |
107 self.project.debugProperties["REMOTEPATH"]) |
108 self.translationRemoteEdit.setText(self.project.debugProperties["REMOTEPATH"]) |
108 self.translationLocalEdit.setText( |
109 self.translationLocalEdit.setText(self.project.debugProperties["LOCALPATH"]) |
109 self.project.debugProperties["LOCALPATH"]) |
|
110 self.consoleDebuggerGroup.setChecked( |
110 self.consoleDebuggerGroup.setChecked( |
111 self.project.debugProperties["CONSOLEDEBUGGER"]) |
111 self.project.debugProperties["CONSOLEDEBUGGER"] |
112 self.consoleCommandEdit.setText( |
112 ) |
113 self.project.debugProperties["CONSOLECOMMAND"]) |
113 self.consoleCommandEdit.setText(self.project.debugProperties["CONSOLECOMMAND"]) |
114 self.redirectCheckBox.setChecked( |
114 self.redirectCheckBox.setChecked(self.project.debugProperties["REDIRECT"]) |
115 self.project.debugProperties["REDIRECT"]) |
115 self.noEncodingCheckBox.setChecked(self.project.debugProperties["NOENCODING"]) |
116 self.noEncodingCheckBox.setChecked( |
116 |
117 self.project.debugProperties["NOENCODING"]) |
|
118 |
|
119 msh = self.minimumSizeHint() |
117 msh = self.minimumSizeHint() |
120 self.resize(max(self.width(), msh.width()), msh.height()) |
118 self.resize(max(self.width(), msh.width()), msh.height()) |
121 |
119 |
122 @pyqtSlot() |
120 @pyqtSlot() |
123 def on_debugClientPicker_aboutToShowPathPickerDialog(self): |
121 def on_debugClientPicker_aboutToShowPathPickerDialog(self): |
124 """ |
122 """ |
125 Private slot to perform actions before the debug client selection |
123 Private slot to perform actions before the debug client selection |
126 dialog is shown. |
124 dialog is shown. |
127 """ |
125 """ |
128 filters = self.project.getDebuggerFilters( |
126 filters = self.project.getDebuggerFilters(self.project.pdata["PROGLANGUAGE"]) |
129 self.project.pdata["PROGLANGUAGE"]) |
|
130 filters += self.tr("All Files (*)") |
127 filters += self.tr("All Files (*)") |
131 self.debugClientPicker.setFilters(filters) |
128 self.debugClientPicker.setFilters(filters) |
132 |
129 |
133 def storeData(self): |
130 def storeData(self): |
134 """ |
131 """ |
135 Public method to store the entered/modified data. |
132 Public method to store the entered/modified data. |
136 """ |
133 """ |
137 self.project.debugProperties["VIRTUALENV"] = ( |
134 self.project.debugProperties["VIRTUALENV"] = self.venvComboBox.currentText() |
138 self.venvComboBox.currentText() |
135 |
139 ) |
136 self.project.debugProperties["DEBUGCLIENT"] = self.debugClientPicker.text( |
140 |
137 toNative=False |
141 self.project.debugProperties["DEBUGCLIENT"] = ( |
|
142 self.debugClientPicker.text(toNative=False) |
|
143 ) |
138 ) |
144 if not self.project.debugProperties["DEBUGCLIENT"]: |
139 if not self.project.debugProperties["DEBUGCLIENT"]: |
145 if self.project.pdata["PROGLANGUAGE"] == "Python3": |
140 if self.project.pdata["PROGLANGUAGE"] == "Python3": |
146 debugClient = os.path.join( |
141 debugClient = os.path.join( |
147 getConfig('ericDir'), |
142 getConfig("ericDir"), "DebugClients", "Python", "DebugClient.py" |
148 "DebugClients", "Python", "DebugClient.py") |
143 ) |
149 else: |
144 else: |
150 debugClient = "" |
145 debugClient = "" |
151 self.project.debugProperties["DEBUGCLIENT"] = debugClient |
146 self.project.debugProperties["DEBUGCLIENT"] = debugClient |
152 |
147 |
153 self.project.debugProperties["ENVIRONMENTOVERRIDE"] = ( |
148 self.project.debugProperties[ |
154 self.debugEnvironmentOverrideCheckBox.isChecked() |
149 "ENVIRONMENTOVERRIDE" |
155 ) |
150 ] = self.debugEnvironmentOverrideCheckBox.isChecked() |
156 self.project.debugProperties["ENVIRONMENTSTRING"] = ( |
151 self.project.debugProperties[ |
157 self.debugEnvironmentEdit.text() |
152 "ENVIRONMENTSTRING" |
158 ) |
153 ] = self.debugEnvironmentEdit.text() |
159 self.project.debugProperties["REMOTEDEBUGGER"] = ( |
154 self.project.debugProperties[ |
160 self.remoteDebuggerGroup.isChecked() |
155 "REMOTEDEBUGGER" |
161 ) |
156 ] = self.remoteDebuggerGroup.isChecked() |
162 self.project.debugProperties["REMOTEHOST"] = ( |
157 self.project.debugProperties["REMOTEHOST"] = self.remoteHostEdit.text() |
163 self.remoteHostEdit.text() |
158 self.project.debugProperties["REMOTECOMMAND"] = self.remoteCommandEdit.text() |
164 ) |
159 self.project.debugProperties[ |
165 self.project.debugProperties["REMOTECOMMAND"] = ( |
160 "PATHTRANSLATION" |
166 self.remoteCommandEdit.text() |
161 ] = self.pathTranslationGroup.isChecked() |
167 ) |
162 self.project.debugProperties["REMOTEPATH"] = self.translationRemoteEdit.text() |
168 self.project.debugProperties["PATHTRANSLATION"] = ( |
163 self.project.debugProperties["LOCALPATH"] = self.translationLocalEdit.text() |
169 self.pathTranslationGroup.isChecked() |
164 self.project.debugProperties[ |
170 ) |
165 "CONSOLEDEBUGGER" |
171 self.project.debugProperties["REMOTEPATH"] = ( |
166 ] = self.consoleDebuggerGroup.isChecked() |
172 self.translationRemoteEdit.text() |
167 self.project.debugProperties["CONSOLECOMMAND"] = self.consoleCommandEdit.text() |
173 ) |
168 self.project.debugProperties["REDIRECT"] = self.redirectCheckBox.isChecked() |
174 self.project.debugProperties["LOCALPATH"] = ( |
169 self.project.debugProperties["NOENCODING"] = self.noEncodingCheckBox.isChecked() |
175 self.translationLocalEdit.text() |
|
176 ) |
|
177 self.project.debugProperties["CONSOLEDEBUGGER"] = ( |
|
178 self.consoleDebuggerGroup.isChecked() |
|
179 ) |
|
180 self.project.debugProperties["CONSOLECOMMAND"] = ( |
|
181 self.consoleCommandEdit.text() |
|
182 ) |
|
183 self.project.debugProperties["REDIRECT"] = ( |
|
184 self.redirectCheckBox.isChecked() |
|
185 ) |
|
186 self.project.debugProperties["NOENCODING"] = ( |
|
187 self.noEncodingCheckBox.isChecked() |
|
188 ) |
|
189 self.project.debugPropertiesLoaded = True |
170 self.project.debugPropertiesLoaded = True |
190 self.project.debugPropertiesChanged = True |
171 self.project.debugPropertiesChanged = True |
191 |
172 |
192 self.__saveHistories() |
173 self.__saveHistories() |
193 |
174 |
194 def __saveHistories(self): |
175 def __saveHistories(self): |
195 """ |
176 """ |
196 Private method to save the path picker histories. |
177 Private method to save the path picker histories. |
197 """ |
178 """ |
198 debugClient = self.debugClientPicker.text(toNative=False) |
179 debugClient = self.debugClientPicker.text(toNative=False) |
199 debugClientsHistory = self.debugClientPicker.getPathItems() |
180 debugClientsHistory = self.debugClientPicker.getPathItems() |
200 if debugClient not in debugClientsHistory: |
181 if debugClient not in debugClientsHistory: |
201 debugClientsHistory.insert(0, debugClient) |
182 debugClientsHistory.insert(0, debugClient) |
202 Preferences.setProject("DebugClientsHistory", |
183 Preferences.setProject("DebugClientsHistory", debugClientsHistory) |
203 debugClientsHistory) |
184 |
204 |
|
205 @pyqtSlot() |
185 @pyqtSlot() |
206 def on_debugClientClearHistoryButton_clicked(self): |
186 def on_debugClientClearHistoryButton_clicked(self): |
207 """ |
187 """ |
208 Private slot to clear the debug clients history. |
188 Private slot to clear the debug clients history. |
209 """ |
189 """ |
210 self.__clearHistory(self.debugClientPicker) |
190 self.__clearHistory(self.debugClientPicker) |
211 |
191 |
212 def __clearHistory(self, picker): |
192 def __clearHistory(self, picker): |
213 """ |
193 """ |
214 Private method to clear a path picker history. |
194 Private method to clear a path picker history. |
215 |
195 |
216 @param picker reference to the path picker |
196 @param picker reference to the path picker |
217 @type EricComboPathPicker |
197 @type EricComboPathPicker |
218 """ |
198 """ |
219 currentText = picker.text() |
199 currentText = picker.text() |
220 picker.clear() |
200 picker.clear() |
221 picker.setText(currentText) |
201 picker.setText(currentText) |
222 |
202 |
223 self.__saveHistories() |
203 self.__saveHistories() |