src/eric7/EricWidgets/EricStringListEditWidget.py

branch
eric7
changeset 9561
f7bb5739c35a
parent 9534
5ed8445f3b31
child 9586
2750e76fc366
diff -r abffba70297f -r f7bb5739c35a src/eric7/EricWidgets/EricStringListEditWidget.py
--- a/src/eric7/EricWidgets/EricStringListEditWidget.py	Sun Dec 04 14:20:53 2022 +0100
+++ b/src/eric7/EricWidgets/EricStringListEditWidget.py	Mon Dec 05 11:37:42 2022 +0100
@@ -16,6 +16,8 @@
 )
 from PyQt6.QtWidgets import QInputDialog, QLineEdit, QWidget
 
+from eric7.EricWidgets import EricMessageBox
+
 from .Ui_EricStringListEditWidget import Ui_EricStringListEditWidget
 
 
@@ -32,7 +34,8 @@
         """
         Constructor
 
-        @param parent reference to the parent widget (QWidget)
+        @param parent reference to the parent widget
+        @type QWidget
         """
         super().__init__(parent)
         self.setupUi(self)
@@ -44,6 +47,12 @@
         self.stringList.setModel(self.__proxyModel)
 
         self.defaultButton.hide()
+        self.resetButton.hide()
+        self.resetLine.hide()
+
+        # store some internal state
+        self.__defaultVisible = False
+        self.__resetVisible = False
 
         self.searchEdit.textChanged.connect(self.__proxyModel.setFilterFixedString)
 
@@ -55,8 +64,10 @@
         """
         Public method to set the list of strings to be edited.
 
-        @param stringList list of strings to be edited (list of string)
+        @param stringList list of strings to be edited
+        @type list of str
         """
+        self.__initialList = stringList[:]
         self.__model.setStringList(stringList)
         self.__model.sort(0)
 
@@ -64,7 +75,8 @@
         """
         Public method to get the edited list of strings.
 
-        @return edited list of string (list of string)
+        @return edited list of string
+        @rtype list of str
         """
         return self.__model.stringList()[:]
 
@@ -90,7 +102,8 @@
         """
         Public method to set a what's that help text for the string list.
 
-        @param txt help text to be set (string)
+        @param txt help text to be set
+        @type str
         """
         self.stringList.setWhatsThis(txt)
 
@@ -102,6 +115,19 @@
         @type bool
         """
         self.defaultButton.setVisible(visible)
+        self.__defaultVisible = visible
+        self.resetLine.setVisible(self.__defaultVisible and self.__resetVisible)
+
+    def setResetVisible(self, visible):
+        """
+        Public method to show or hide the reset button.
+
+        @param visible flag indicating the visibility of the reset button
+        @type bool
+        """
+        self.resetButton.setVisible(visible)
+        self.__resetVisible = visible
+        self.resetLine.setVisible(self.__defaultVisible and self.__resetVisible)
 
     def setAddVisible(self, visible):
         """
@@ -128,3 +154,20 @@
             self.__model.insertRow(self.__model.rowCount())
             self.__model.setData(self.__model.index(self.__model.rowCount() - 1), entry)
             self.__model.sort(0)
+
+    @pyqtSlot()
+    def on_resetButton_clicked(self):
+        """
+        Public slot to reset the list to its initial value.
+        """
+        ok = EricMessageBox.yesNo(
+            self,
+            self.tr("Reset List"),
+            self.tr(
+                "Do you really want to reset the list to its initial value? All changes"
+                " will be lost."
+            ),
+        )
+        if ok:
+            self.__model.setStringList(self.__initialList)
+            self.__model.sort(0)

eric ide

mercurial