Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardRepeatDialog.py

branch
Py2 comp.
changeset 2791
a9577f248f04
parent 2736
86cd4d14b58e
child 3060
5883ce99ee12
diff -r 6686a3326df8 -r a9577f248f04 Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardRepeatDialog.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardRepeatDialog.py	Mon Jul 08 22:36:10 2013 +0200
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2013 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog for entering repeat counts.
+"""
+
+from __future__ import unicode_literals    # __IGNORE_WARNING__
+
+from PyQt4.QtCore import pyqtSlot
+from PyQt4.QtGui import QDialog
+
+from .Ui_QRegularExpressionWizardRepeatDialog import \
+    Ui_QRegularExpressionWizardRepeatDialog
+
+
+class QRegularExpressionWizardRepeatDialog(
+    QDialog, Ui_QRegularExpressionWizardRepeatDialog):
+    """
+    Class implementing a dialog for entering repeat counts.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget (QWidget)
+        """
+        super(QRegularExpressionWizardRepeatDialog, self).__init__(parent)
+        self.setupUi(self)
+        
+        self.unlimitedButton.setChecked(True)
+        self.greedyButton.setChecked(True)
+    
+    @pyqtSlot(int)
+    def on_lowerSpin_valueChanged(self, value):
+        """
+        Private slot to handle the lowerSpin valueChanged signal.
+        
+        @param value value of the spinbox (integer)
+        """
+        if self.upperSpin.value() < value:
+            self.upperSpin.setValue(value)
+    
+    @pyqtSlot(int)
+    def on_upperSpin_valueChanged(self, value):
+        """
+        Private slot to handle the upperSpin valueChanged signal.
+        
+        @param value value of the spinbox (integer)
+        """
+        if self.lowerSpin.value() > value:
+            self.lowerSpin.setValue(value)
+    
+    def getRepeat(self):
+        """
+        Public method to retrieve the dialog's result.
+        
+        @return ready formatted repeat string (string)
+        """
+        if self.possessiveButton.isChecked():
+            greedy = "+"
+        elif self.lazyButton.isChecked():
+            greedy = "?"
+        else:
+            greedy = ""
+            
+        if self.unlimitedButton.isChecked():
+            return "*" + greedy
+        elif self.minButton.isChecked():
+            reps = self.minSpin.value()
+            if reps == 1:
+                return "+" + greedy
+            else:
+                return "{{{0:d},}}{1}".format(reps, greedy)
+        elif self.maxButton.isChecked():
+            reps = self.maxSpin.value()
+            if reps == 1:
+                return "?" + greedy
+            else:
+                return "{{0,{0:d}}}{1}".format(reps, greedy)
+        elif self.exactButton.isChecked():
+            reps = self.exactSpin.value()
+            return "{{{0:d}}}".format(reps)
+        elif self.betweenButton.isChecked():
+            repsMin = self.lowerSpin.value()
+            repsMax = self.upperSpin.value()
+            return "{{{0:d},{1:d}}}{2}".format(repsMin, repsMax, greedy)

eric ide

mercurial