Thu, 16 Feb 2017 18:58:58 +0100
Added capability to remember previously used entries in the project debugger properties dialog.
--- a/APIs/Python3/eric6.api Thu Feb 16 18:52:42 2017 +0100 +++ b/APIs/Python3/eric6.api Thu Feb 16 18:58:58 2017 +0100 @@ -6753,7 +6753,9 @@ eric6.Project.CreateDialogCodeDialog.pythonSignatureRole?7 eric6.Project.CreateDialogCodeDialog.returnTypeRole?7 eric6.Project.CreateDialogCodeDialog.rubySignatureRole?7 +eric6.Project.DebuggerPropertiesDialog.DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked?4() eric6.Project.DebuggerPropertiesDialog.DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog?4() +eric6.Project.DebuggerPropertiesDialog.DebuggerPropertiesDialog.on_interpreterClearHistoryButton_clicked?4() eric6.Project.DebuggerPropertiesDialog.DebuggerPropertiesDialog.storeData?4() eric6.Project.DebuggerPropertiesDialog.DebuggerPropertiesDialog?1(project, parent=None, name=None) eric6.Project.FiletypeAssociationDialog.FiletypeAssociationDialog.on_addAssociationButton_clicked?4()
--- a/Documentation/Help/source.qhp Thu Feb 16 18:52:42 2017 +0100 +++ b/Documentation/Help/source.qhp Thu Feb 16 18:58:58 2017 +0100 @@ -3729,7 +3729,11 @@ <keyword name="DebuggerPropertiesDialog" id="DebuggerPropertiesDialog" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog" /> <keyword name="DebuggerPropertiesDialog (Constructor)" id="DebuggerPropertiesDialog (Constructor)" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.__init__" /> <keyword name="DebuggerPropertiesDialog (Module)" id="DebuggerPropertiesDialog (Module)" ref="eric6.Project.DebuggerPropertiesDialog.html" /> + <keyword name="DebuggerPropertiesDialog.__clearHistory" id="DebuggerPropertiesDialog.__clearHistory" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.__clearHistory" /> + <keyword name="DebuggerPropertiesDialog.__saveHistories" id="DebuggerPropertiesDialog.__saveHistories" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.__saveHistories" /> + <keyword name="DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked" id="DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked" /> <keyword name="DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog" id="DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog" /> + <keyword name="DebuggerPropertiesDialog.on_interpreterClearHistoryButton_clicked" id="DebuggerPropertiesDialog.on_interpreterClearHistoryButton_clicked" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.on_interpreterClearHistoryButton_clicked" /> <keyword name="DebuggerPropertiesDialog.storeData" id="DebuggerPropertiesDialog.storeData" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.storeData" /> <keyword name="DebuggerPropertiesReader" id="DebuggerPropertiesReader" ref="eric6.E5XML.DebuggerPropertiesReader.html#DebuggerPropertiesReader" /> <keyword name="DebuggerPropertiesReader (Constructor)" id="DebuggerPropertiesReader (Constructor)" ref="eric6.E5XML.DebuggerPropertiesReader.html#DebuggerPropertiesReader.__init__" />
--- a/Documentation/Source/eric6.Project.DebuggerPropertiesDialog.html Thu Feb 16 18:52:42 2017 +0100 +++ b/Documentation/Source/eric6.Project.DebuggerPropertiesDialog.html Thu Feb 16 18:58:58 2017 +0100 @@ -61,9 +61,21 @@ <td><a href="#DebuggerPropertiesDialog.__init__">DebuggerPropertiesDialog</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#DebuggerPropertiesDialog.__clearHistory">__clearHistory</a></td> +<td>Private method to clear a path picker history</td> +</tr><tr> +<td><a href="#DebuggerPropertiesDialog.__saveHistories">__saveHistories</a></td> +<td>Private method to save the path picker histories.</td> +</tr><tr> +<td><a href="#DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked">on_debugClientClearHistoryButton_clicked</a></td> +<td>Private slot to clear the debug clients history.</td> +</tr><tr> <td><a href="#DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog">on_debugClientPicker_aboutToShowPathPickerDialog</a></td> <td>Private slot to perform actions before the debug client selection dialog is shown.</td> </tr><tr> +<td><a href="#DebuggerPropertiesDialog.on_interpreterClearHistoryButton_clicked">on_interpreterClearHistoryButton_clicked</a></td> +<td>Private slot to clear the interpreter history.</td> +</tr><tr> <td><a href="#DebuggerPropertiesDialog.storeData">storeData</a></td> <td>Public method to store the entered/modified data.</td> </tr> @@ -88,12 +100,32 @@ <dd> name of this dialog (string) </dd> -</dl><a NAME="DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog" ID="DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog"></a> +</dl><a NAME="DebuggerPropertiesDialog.__clearHistory" ID="DebuggerPropertiesDialog.__clearHistory"></a> +<h4>DebuggerPropertiesDialog.__clearHistory</h4> +<b>__clearHistory</b>(<i>picker</i>) +<p> + Private method to clear a path picker history +</p><a NAME="DebuggerPropertiesDialog.__saveHistories" ID="DebuggerPropertiesDialog.__saveHistories"></a> +<h4>DebuggerPropertiesDialog.__saveHistories</h4> +<b>__saveHistories</b>(<i></i>) +<p> + Private method to save the path picker histories. +</p><a NAME="DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked" ID="DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked"></a> +<h4>DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked</h4> +<b>on_debugClientClearHistoryButton_clicked</b>(<i></i>) +<p> + Private slot to clear the debug clients history. +</p><a NAME="DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog" ID="DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog"></a> <h4>DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog</h4> <b>on_debugClientPicker_aboutToShowPathPickerDialog</b>(<i></i>) <p> Private slot to perform actions before the debug client selection dialog is shown. +</p><a NAME="DebuggerPropertiesDialog.on_interpreterClearHistoryButton_clicked" ID="DebuggerPropertiesDialog.on_interpreterClearHistoryButton_clicked"></a> +<h4>DebuggerPropertiesDialog.on_interpreterClearHistoryButton_clicked</h4> +<b>on_interpreterClearHistoryButton_clicked</b>(<i></i>) +<p> + Private slot to clear the interpreter history. </p><a NAME="DebuggerPropertiesDialog.storeData" ID="DebuggerPropertiesDialog.storeData"></a> <h4>DebuggerPropertiesDialog.storeData</h4> <b>storeData</b>(<i></i>)
--- a/E5Gui/E5PathPicker.py Thu Feb 16 18:52:42 2017 +0100 +++ b/E5Gui/E5PathPicker.py Thu Feb 16 18:58:58 2017 +0100 @@ -215,6 +215,8 @@ self._editor.setText(text) else: self._editor.setEditText(text) + if text and self._editor.findText(text) == -1: + self._editor.insertItem(0, text) def _editorText(self): """
--- a/Preferences/__init__.py Thu Feb 16 18:52:42 2017 +0100 +++ b/Preferences/__init__.py Thu Feb 16 18:58:58 2017 +0100 @@ -746,6 +746,8 @@ "DeterminePyFromProject": True, "TasksProjectAutoSave": True, "TasksProjectRescanOnOpen": True, + "DebugClientsHistory": [], + "DebuggerInterpreterHistory": [], } # defaults for the multi project settings @@ -2403,6 +2405,9 @@ if key in ["RecentNumber"]: return int(prefClass.settings.value( "Project/" + key, prefClass.projectDefaults[key])) + elif key in ["DebugClientsHistory", "DebuggerInterpreterHistory"]: + return toList(prefClass.settings.value( + "Project/" + key, prefClass.projectDefaults[key])) else: return toBool(prefClass.settings.value( "Project/" + key, prefClass.projectDefaults[key])) @@ -2416,7 +2421,14 @@ @param value the value to be set @param prefClass preferences class used as the storage area """ - prefClass.settings.setValue("Project/" + key, value) + if key in ["DebugClientsHistory", "DebuggerInterpreterHistory"]: + # max. list sizes is hard coded to 20 entries + newList = [v for v in value if v] + if len(newList) > 20: + newList = newList[:20] + prefClass.settings.setValue("Project/" + key, newList) + else: + prefClass.settings.setValue("Project/" + key, value) def getProjectBrowserFlags(key, prefClass=Prefs):
--- a/Project/DebuggerPropertiesDialog.py Thu Feb 16 18:52:42 2017 +0100 +++ b/Project/DebuggerPropertiesDialog.py Thu Feb 16 18:58:58 2017 +0100 @@ -13,7 +13,7 @@ import sys from PyQt5.QtCore import pyqtSlot -from PyQt5.QtWidgets import QDialog +from PyQt5.QtWidgets import QDialog, QComboBox from E5Gui.E5Completers import E5DirCompleter from E5Gui.E5PathPicker import E5PathPickerModes @@ -23,6 +23,9 @@ from eric6config import getConfig +import Preferences +import UI.PixmapCache + class DebuggerPropertiesDialog(QDialog, Ui_DebuggerPropertiesDialog): """ @@ -42,8 +45,25 @@ self.setObjectName(name) self.setupUi(self) + debugClientsHistory = Preferences.getProject( + "DebugClientsHistory") self.debugClientPicker.setMode(E5PathPickerModes.OpenFileMode) + self.debugClientPicker.setInsertPolicy(QComboBox.InsertAtTop) + self.debugClientPicker.setSizeAdjustPolicy( + QComboBox.AdjustToMinimumContentsLength) + self.debugClientPicker.setPathsList(debugClientsHistory) + self.debugClientClearHistoryButton.setIcon( + UI.PixmapCache.getIcon("editDelete.png")) + + interpreterHistory = Preferences.getProject( + "DebuggerInterpreterHistory") self.interpreterPicker.setMode(E5PathPickerModes.OpenFileMode) + self.interpreterPicker.setInsertPolicy(QComboBox.InsertAtTop) + self.interpreterPicker.setSizeAdjustPolicy( + QComboBox.AdjustToMinimumContentsLength) + self.interpreterPicker.setPathsList(interpreterHistory) + self.interpreterClearHistoryButton.setIcon( + UI.PixmapCache.getIcon("editDelete.png")) self.translationLocalCompleter = E5DirCompleter( self.translationLocalEdit) @@ -160,3 +180,47 @@ self.project.debugProperties["NOENCODING"] = \ self.noEncodingCheckBox.isChecked() self.project.debugPropertiesLoaded = True + + self.__saveHistories() + + def __saveHistories(self): + """ + Private method to save the path picker histories. + """ + debugClient = self.debugClientPicker.text() + debugClientsHistory = self.debugClientPicker.getPathItems() + if debugClient not in debugClientsHistory: + debugClientsHistory.insert(0, debugClient) + Preferences.setProject("DebugClientsHistory", + debugClientsHistory) + + interpreter = self.interpreterPicker.text() + interpreterHistory = self.interpreterPicker.getPathItems() + if interpreter not in interpreterHistory: + interpreterHistory.insert(0, interpreter) + Preferences.setProject("DebuggerInterpreterHistory", + interpreterHistory) + + @pyqtSlot() + def on_debugClientClearHistoryButton_clicked(self): + """ + Private slot to clear the debug clients history. + """ + self.__clearHistory(self.debugClientPicker) + + @pyqtSlot() + def on_interpreterClearHistoryButton_clicked(self): + """ + Private slot to clear the interpreter history. + """ + self.__clearHistory(self.interpreterPicker) + + def __clearHistory(self, picker): + """ + Private method to clear a path picker history + """ + currentText = picker.text() + picker.clear() + picker.setText(currentText) + + self.__saveHistories()
--- a/Project/DebuggerPropertiesDialog.ui Thu Feb 16 18:52:42 2017 +0100 +++ b/Project/DebuggerPropertiesDialog.ui Thu Feb 16 18:58:58 2017 +0100 @@ -22,9 +22,9 @@ <property name="title"> <string>Debug Client</string> </property> - <layout class="QVBoxLayout" name="verticalLayout"> + <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="E5PathPicker" name="debugClientPicker" native="true"> + <widget class="E5ComboPathPicker" name="debugClientPicker" native="true"> <property name="focusPolicy"> <enum>Qt::StrongFocus</enum> </property> @@ -33,6 +33,13 @@ </property> </widget> </item> + <item> + <widget class="QToolButton" name="debugClientClearHistoryButton"> + <property name="toolTip"> + <string>Press to clear the history of entered debug clients</string> + </property> + </widget> + </item> </layout> </widget> </item> @@ -41,9 +48,9 @@ <property name="title"> <string>Interpreter for Debug Client</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> - <widget class="E5PathPicker" name="interpreterPicker" native="true"> + <widget class="E5ComboPathPicker" name="interpreterPicker" native="true"> <property name="focusPolicy"> <enum>Qt::StrongFocus</enum> </property> @@ -52,6 +59,13 @@ </property> </widget> </item> + <item> + <widget class="QToolButton" name="interpreterClearHistoryButton"> + <property name="toolTip"> + <string>Press to clear the history of entered interpreters</string> + </property> + </widget> + </item> </layout> </widget> </item> @@ -255,7 +269,7 @@ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> <customwidgets> <customwidget> - <class>E5PathPicker</class> + <class>E5ComboPathPicker</class> <extends>QWidget</extends> <header>E5Gui/E5PathPicker.h</header> <container>1</container> @@ -263,7 +277,9 @@ </customwidgets> <tabstops> <tabstop>debugClientPicker</tabstop> + <tabstop>debugClientClearHistoryButton</tabstop> <tabstop>interpreterPicker</tabstop> + <tabstop>interpreterClearHistoryButton</tabstop> <tabstop>debugEnvironmentOverrideCheckBox</tabstop> <tabstop>debugEnvironmentEdit</tabstop> <tabstop>remoteDebuggerGroup</tabstop>
--- a/changelog Thu Feb 16 18:52:42 2017 +0100 +++ b/changelog Thu Feb 16 18:58:58 2017 +0100 @@ -8,6 +8,9 @@ - Mercurial Interface -- improved the log browser in several ways -- improved the status dialog +- Project + -- added capability to remember previously used entries in the project + debugger properties dialog Version 17.02.1: - bug fixes