Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py

changeset 0
de9c2efb9d02
child 12
1d8dd9706f46
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/WizardPlugins/MessageBoxWizard/MessageBoxWizardDialog.py	Mon Dec 28 16:03:33 2009 +0000
@@ -0,0 +1,321 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2003 - 2009 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the message box wizard dialog.
+"""
+
+import os
+
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
+from E4Gui.E4Application import e4App
+
+from Ui_MessageBoxWizardDialog import Ui_MessageBoxWizardDialog
+
+class MessageBoxWizardDialog(QDialog, Ui_MessageBoxWizardDialog):
+    """
+    Class implementing the message box wizard dialog.
+    
+    It displays a dialog for entering the parameters
+    for the QMessageBox code generator.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent parent widget (QWidget)
+        """
+        QDialog.__init__(self, parent)
+        self.setupUi(self)
+        
+        # keep the following three lists in sync
+        self.buttonsList = [
+            self.trUtf8("No button"), 
+            self.trUtf8("Abort"), 
+            self.trUtf8("Apply"), 
+            self.trUtf8("Cancel"), 
+            self.trUtf8("Close"), 
+            self.trUtf8("Discard"), 
+            self.trUtf8("Help"), 
+            self.trUtf8("Ignore"), 
+            self.trUtf8("No"), 
+            self.trUtf8("No to all"), 
+            self.trUtf8("Ok"), 
+            self.trUtf8("Open"), 
+            self.trUtf8("Reset"), 
+            self.trUtf8("Restore defaults"), 
+            self.trUtf8("Retry"), 
+            self.trUtf8("Save"), 
+            self.trUtf8("Save all"), 
+            self.trUtf8("Yes"), 
+            self.trUtf8("Yes to all"), 
+        ]
+        self.buttonsCodeListBinary = [
+            QMessageBox.NoButton,
+            QMessageBox.Abort,
+            QMessageBox.Apply,
+            QMessageBox.Cancel,
+            QMessageBox.Close,
+            QMessageBox.Discard,
+            QMessageBox.Help,
+            QMessageBox.Ignore,
+            QMessageBox.No,
+            QMessageBox.NoToAll,
+            QMessageBox.Ok,
+            QMessageBox.Open,
+            QMessageBox.Reset,
+            QMessageBox.RestoreDefaults,
+            QMessageBox.Retry,
+            QMessageBox.Save,
+            QMessageBox.SaveAll,
+            QMessageBox.Yes,
+            QMessageBox.YesToAll,
+        ]
+        self.buttonsCodeListText = [
+            "QMessageBox.NoButton",
+            "QMessageBox.Abort",
+            "QMessageBox.Apply",
+            "QMessageBox.Cancel",
+            "QMessageBox.Close",
+            "QMessageBox.Discard",
+            "QMessageBox.Help",
+            "QMessageBox.Ignore",
+            "QMessageBox.No",
+            "QMessageBox.NoToAll",
+            "QMessageBox.Ok",
+            "QMessageBox.Open",
+            "QMessageBox.Reset",
+            "QMessageBox.RestoreDefaults",
+            "QMessageBox.Retry",
+            "QMessageBox.Save",
+            "QMessageBox.SaveAll",
+            "QMessageBox.Yes",
+            "QMessageBox.YesToAll",
+        ]
+        
+        self.defaultCombo.addItems(self.buttonsList)
+        
+        self.bTest = \
+            self.buttonBox.addButton(self.trUtf8("Test"), QDialogButtonBox.ActionRole)
+        
+    def __testQt42(self):
+        """
+        Private method to test the selected options for Qt 4.2.0.
+        """
+        buttons = QMessageBox.NoButton
+        if self.abortCheck.isChecked():
+            buttons |= QMessageBox.Abort
+        if self.applyCheck.isChecked():
+            buttons |= QMessageBox.Apply
+        if self.cancelCheck.isChecked():
+            buttons |= QMessageBox.Cancel
+        if self.closeCheck.isChecked():
+            buttons |= QMessageBox.Close
+        if self.discardCheck.isChecked():
+            buttons |= QMessageBox.Discard
+        if self.helpCheck.isChecked():
+            buttons |= QMessageBox.Help
+        if self.ignoreCheck.isChecked():
+            buttons |= QMessageBox.Ignore
+        if self.noCheck.isChecked():
+            buttons |= QMessageBox.No
+        if self.notoallCheck.isChecked():
+            buttons |= QMessageBox.NoToAll
+        if self.okCheck.isChecked():
+            buttons |= QMessageBox.Ok
+        if self.openCheck.isChecked():
+            buttons |= QMessageBox.Open
+        if self.resetCheck.isChecked():
+            buttons |= QMessageBox.Reset
+        if self.restoreCheck.isChecked():
+            buttons |= QMessageBox.RestoreDefaults
+        if self.retryCheck.isChecked():
+            buttons |= QMessageBox.Retry
+        if self.saveCheck.isChecked():
+            buttons |= QMessageBox.Save
+        if self.saveallCheck.isChecked():
+            buttons |= QMessageBox.SaveAll
+        if self.yesCheck.isChecked():
+            buttons |= QMessageBox.Yes
+        if self.yestoallCheck.isChecked():
+            buttons |= QMessageBox.YesToAll
+        if buttons == QMessageBox.NoButton:
+            buttons = QMessageBox.Ok
+        
+        defaultButton = self.buttonsCodeListBinary[self.defaultCombo.currentIndex()]
+        
+        if self.rInformation.isChecked():
+            QMessageBox.information(None,
+                self.eCaption.text(),
+                self.eMessage.toPlainText(),
+                QMessageBox.StandardButtons(buttons),
+                defaultButton
+            )
+        elif self.rQuestion.isChecked():
+            QMessageBox.question(None,
+                self.eCaption.text(),
+                self.eMessage.toPlainText(),
+                QMessageBox.StandardButtons(buttons),
+                defaultButton
+            )
+        elif self.rWarning.isChecked(): 
+            QMessageBox.warning(None,
+                self.eCaption.text(),
+                self.eMessage.toPlainText(),
+                QMessageBox.StandardButtons(buttons),
+                defaultButton
+            )
+        elif self.rCritical.isChecked():
+            QMessageBox.critical(None,
+                self.eCaption.text(),
+                self.eMessage.toPlainText(),
+                QMessageBox.StandardButtons(buttons),
+                defaultButton
+            )
+    
+    def on_buttonBox_clicked(self, button):
+        """
+        Private slot called by a button of the button box clicked.
+        
+        @param button button that was clicked (QAbstractButton)
+        """
+        if button == self.bTest:
+            self.on_bTest_clicked()
+    
+    @pyqtSlot()
+    def on_bTest_clicked(self):
+        """
+        Private method to test the selected options.
+        """
+        if self.rAbout.isChecked():
+            QMessageBox.about(None,
+                self.eCaption.text(),
+                self.eMessage.toPlainText()
+            )
+        elif self.rAboutQt.isChecked():
+            QMessageBox.aboutQt(None,
+                self.eCaption.text()
+            )
+        else:
+            self.__testQt42()
+        
+    def __enabledGroups(self):
+        """
+        Private method to enable/disable some group boxes.
+        """
+        self.standardButtons.setEnabled(not self.rAbout.isChecked() and \
+                                        not self.rAboutQt.isChecked()
+        )
+    
+    def on_rAbout_toggled(self, on):
+        """
+        Private slot to handle the toggled signal of the rAbout radio button.
+        
+        @param on toggle state (boolean) (ignored)
+        """
+        self.__enabledGroups()
+    
+    def on_rAboutQt_toggled(self, on):
+        """
+        Private slot to handle the toggled signal of the rAboutQt radio button.
+        
+        @param on toggle state (boolean) (ignored)
+        """
+        self.__enabledGroups()
+    
+    def __getQt42ButtonCode(self, istring, indString):
+        """
+        Private method to generate the button code for Qt 4.2.0.
+        
+        @param istring indentation string (string)
+        @param indString string used for indentation (space or tab) (string)
+        @return the button code (string)
+        """
+        buttons = []
+        if self.abortCheck.isChecked():
+            buttons.append("QMessageBox.Abort")
+        if self.applyCheck.isChecked():
+            buttons.append("QMessageBox.Apply")
+        if self.cancelCheck.isChecked():
+            buttons.append("QMessageBox.Cancel")
+        if self.closeCheck.isChecked():
+            buttons.append("QMessageBox.Close")
+        if self.discardCheck.isChecked():
+            buttons.append("QMessageBox.Discard")
+        if self.helpCheck.isChecked():
+            buttons.append("QMessageBox.Help")
+        if self.ignoreCheck.isChecked():
+            buttons.append("QMessageBox.Ignore")
+        if self.noCheck.isChecked():
+            buttons.append("QMessageBox.No")
+        if self.notoallCheck.isChecked():
+            buttons.append("QMessageBox.NoToAll")
+        if self.okCheck.isChecked():
+            buttons.append("QMessageBox.Ok")
+        if self.openCheck.isChecked():
+            buttons.append("QMessageBox.Open")
+        if self.resetCheck.isChecked():
+            buttons.append("QMessageBox.Reset")
+        if self.restoreCheck.isChecked():
+            buttons.append("QMessageBox.RestoreDefaults")
+        if self.retryCheck.isChecked():
+            buttons.append("QMessageBox.Retry")
+        if self.saveCheck.isChecked():
+            buttons.append("QMessageBox.Save")
+        if self.saveallCheck.isChecked():
+            buttons.append("QMessageBox.SaveAll")
+        if self.yesCheck.isChecked():
+            buttons.append("QMessageBox.Yes")
+        if self.yestoallCheck.isChecked():
+            buttons.append("QMessageBox.YesToAll")
+        if len(buttons) == 0:
+            return ""
+        
+        istring2 = istring + indString
+        joinstring = ' | \\%s%s' % (os.linesep, istring2)
+        btnCode = ',%s%sQMessageBox.StandardButtons(\\' % (os.linesep, istring)
+        btnCode += '%s%s%s)' % (os.linesep, istring2, joinstring.join(buttons))
+        defaultIndex = self.defaultCombo.currentIndex()
+        if defaultIndex:
+            btnCode += ',%s%s%s' % (os.linesep, istring, 
+                self.buttonsCodeListText[defaultIndex])
+        return btnCode
+    
+    def getCode(self, indLevel, indString):
+        """
+        Public method to get the source code.
+        
+        @param indLevel indentation level (int)
+        @param indString string used for indentation (space or tab) (string)
+        @return generated code (string)
+        """
+        # calculate our indentation level and the indentation string
+        il = indLevel + 1
+        istring = il * indString
+        
+        # now generate the code
+        msgdlg = 'QMessageBox.'
+        if self.rAbout.isChecked():
+            msgdlg += "about(None,%s" % os.linesep
+        elif self.rAboutQt.isChecked():
+            msgdlg += "aboutQt(None, %s" % os.linesep
+        elif self.rInformation.isChecked():
+            msgdlg += "information(None,%s" % os.linesep
+        elif self.rQuestion.isChecked():
+            msgdlg += "question(None,%s" % os.linesep
+        elif self.rWarning.isChecked():
+            msgdlg += "warning(None,%s" % os.linesep
+        else:
+            msgdlg +="critical(None,%s" % os.linesep
+        msgdlg += '%sself.trUtf8("%s")' % (istring, self.eCaption.text())
+        if not self.rAboutQt.isChecked():
+            msgdlg += ',%s%sself.trUtf8("""%s""")' % \
+                (os.linesep, istring, self.eMessage.toPlainText())
+        if not self.rAbout.isChecked() and not self.rAboutQt.isChecked():
+            msgdlg += self.__getQt42ButtonCode(istring, indString)
+        msgdlg +=')%s' % os.linesep
+        return msgdlg

eric ide

mercurial