PrintRemover/ConfigurationPage/PrintRemoverPage.py

changeset 21
9288af505740
parent 13
67844d930102
child 28
46e76a5913cf
diff -r 765081822a29 -r 9288af505740 PrintRemover/ConfigurationPage/PrintRemoverPage.py
--- a/PrintRemover/ConfigurationPage/PrintRemoverPage.py	Fri Apr 18 16:48:41 2014 +0200
+++ b/PrintRemover/ConfigurationPage/PrintRemoverPage.py	Wed Apr 23 18:40:28 2014 +0200
@@ -9,13 +9,17 @@
 
 from __future__ import unicode_literals    # __IGNORE_WARNING__
 
-from PyQt4.QtCore import pyqtSlot, Qt
-from PyQt4.QtGui import QListWidgetItem
+import os
+
+from PyQt4.QtCore import pyqtSlot
+from PyQt4.QtGui import QListWidgetItem, QInputDialog, QLineEdit
 
 from Preferences.ConfigurationPages.ConfigurationPageBase import \
     ConfigurationPageBase
 from .Ui_PrintRemoverPage import Ui_PrintRemoverPage
 
+import UI.PixmapCache
+
 
 class PrintRemoverPage(ConfigurationPageBase, Ui_PrintRemoverPage):
     """
@@ -31,10 +35,26 @@
         self.setupUi(self)
         self.setObjectName("PrintRemoverPage")
         
+        self.editButton.setIcon(UI.PixmapCache.getIcon(
+            os.path.join("PrintRemover", "icons", "edit.png")))
+        self.addButton.setIcon(UI.PixmapCache.getIcon("plus.png"))
+        self.addSeparatorButton.setIcon(UI.PixmapCache.getIcon(
+            os.path.join("PrintRemover", "icons", "separatorAdd.png")))
+        self.deleteButton.setIcon(UI.PixmapCache.getIcon("minus.png"))
+        self.upButton.setIcon(UI.PixmapCache.getIcon("1uparrow.png"))
+        self.downButton.setIcon(UI.PixmapCache.getIcon("1downarrow.png"))
+        
+        self.editButton.setEnabled(False)
+        self.deleteButton.setEnabled(False)
+        self.upButton.setEnabled(False)
+        self.downButton.setEnabled(False)
+        
         self.__plugin = plugin
         
         # set initial values
         for pattern in self.__plugin.getPreferences("StartswithStrings"):
+            if pattern == "--Separator--":
+                pattern = self.tr("--Separator--")
             QListWidgetItem(pattern, self.patternList)
     
     def save(self):
@@ -44,7 +64,10 @@
         patterns = []
         for row in range(self.patternList.count()):
             itm = self.patternList.item(row)
-            patterns.append(itm.text())
+            pattern = itm.text()
+            if pattern == self.tr("--Separator--"):
+                pattern = "--Separator--"
+            patterns.append(pattern)
         self.__plugin.setPreferences("StartswithStrings", patterns)
     
     @pyqtSlot()
@@ -52,41 +75,106 @@
         """
         Private slot to handle the selection of patterns.
         """
-        self.deletePatternButton.setEnabled(
-            len(self.patternList.selectedItems()) != 0)
+        if len(self.patternList.selectedItems()) == 0:
+            self.editButton.setEnabled(False)
+            self.deleteButton.setEnabled(False)
+            self.upButton.setEnabled(False)
+            self.downButton.setEnabled(False)
+        else:
+            itm = self.patternList.selectedItems()[0]
+            self.editButton.setEnabled(itm.text() != self.tr("--Separator--"))
+            self.deleteButton.setEnabled(True)
+            self.upButton.setEnabled(self.patternList.row(itm) > 0)
+            self.downButton.setEnabled(
+                self.patternList.row(itm) < self.patternList.count() - 1)
     
     @pyqtSlot()
-    def on_deletePatternButton_clicked(self):
+    def on_editButton_clicked(self):
         """
-        Private slot to delete the selected items.
+        Private slot to edit the selected entry.
         """
-        for itm in self.patternList.selectedItems():
-            self.patternList.takeItem(self.patternList.row(itm))
-            del itm
+        itm = self.patternList.selectedItems()[0]
+        pattern, ok = QInputDialog.getText(
+            self,
+            self.tr("Line Start Pattern"),
+            self.tr("Enter a line start pattern:"),
+            QLineEdit.Normal,
+            itm.text())
+        if ok and pattern:
+            itm.setText(pattern)
     
     @pyqtSlot()
-    def on_addPatternButton_clicked(self):
+    def on_addButton_clicked(self):
         """
         Private slot add a pattern to the list.
         """
-        pattern = self.patternEdit.text()
-        if pattern:
-            foundItems = self.patternList.findItems(
-                pattern, Qt.MatchCaseSensitive | Qt.MatchExactly)
-            if len(foundItems) == 0:
-                QListWidgetItem(pattern, self.patternList)
-                self.patternEdit.clear()
+        pattern, ok = QInputDialog.getText(
+            self,
+            self.tr("Line Start Pattern"),
+            self.tr("Enter a line start pattern:"),
+            QLineEdit.Normal)
+        if ok and pattern:
+            itm = QListWidgetItem(pattern)
+            if len(self.patternList.selectedItems()):
+                row = self.patternList.row(
+                    self.patternList.selectedItems()[0]) + 1
+                self.patternList.insertItem(row, itm)
+                for sitm in self.patternList.selectedItems():
+                    sitm.setSelected(False)
+            else:
+                self.patternList.addItem(itm)
+            itm.setSelected(True)
     
-    @pyqtSlot(str)
-    def on_patternEdit_textChanged(self, pattern):
+    @pyqtSlot()
+    def on_addSeparatorButton_clicked(self):
+        """
+        Private slot add a separator to the list.
         """
-        Private slot to handle entering a pattern.
-        
-        @param pattern pattern string entered into the line edit (string)
+        itm = QListWidgetItem(self.tr("--Separator--"))
+        if len(self.patternList.selectedItems()):
+            row = self.patternList.row(
+                self.patternList.selectedItems()[0]) + 1
+            self.patternList.insertItem(row, itm)
+            for sitm in self.patternList.selectedItems():
+                sitm.setSelected(False)
+        else:
+            self.patternList.addItem(itm)
+        itm.setSelected(True)
+    
+    @pyqtSlot()
+    def on_deleteButton_clicked(self):
+        """
+        Private slot to delete the selected entry.
+        """
+        itm = self.patternList.selectedItems()[0]
+        self.patternList.takeItem(self.patternList.row(itm))
+        del itm
+    
+    @pyqtSlot()
+    def on_upButton_clicked(self):
         """
-        enable = False
-        if pattern:
-            foundItems = self.patternList.findItems(
-                pattern, Qt.MatchCaseSensitive | Qt.MatchExactly)
-            enable = len(foundItems) == 0
-        self.addPatternButton.setEnabled(enable)
+        Private slot to move an entry up.
+        """
+        self.__moveSelectedEntry(True)
+    
+    @pyqtSlot()
+    def on_downButton_clicked(self):
+        """
+        Private slot to move an entry down.
+        """
+        self.__moveSelectedEntry(False)
+    
+    def __moveSelectedEntry(self, moveUp):
+        """
+        Private method to move the selected entry up or down.
+        
+        @param moveUp flag indicating to move the entry up (boolean)
+        """
+        itm = self.patternList.selectedItems()[0]
+        row = self.patternList.row(itm)
+        newRow = row - 1 if moveUp else row + 1
+        self.patternList.takeItem(row)
+        self.patternList.insertItem(newRow, itm)
+        for sitm in self.patternList.selectedItems():
+            sitm.setSelected(False)
+        itm.setSelected(True)

eric ide

mercurial