diff -r 000000000000 -r de9c2efb9d02 Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py Mon Dec 28 16:03:33 2009 +0000 @@ -0,0 +1,182 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2003 - 2009 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the color dialog wizard dialog. +""" + +import os + +from PyQt4.QtCore import * +from PyQt4.QtGui import * + +from Ui_ColorDialogWizardDialog import Ui_ColorDialogWizardDialog + +class ColorDialogWizardDialog(QDialog, Ui_ColorDialogWizardDialog): + """ + Class implementing the color dialog wizard dialog. + + It displays a dialog for entering the parameters + for the QColorDialog code generator. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent parent widget (QWidget) + """ + QDialog.__init__(self, parent) + self.setupUi(self) + + self.bTest = \ + self.buttonBox.addButton(self.trUtf8("Test"), QDialogButtonBox.ActionRole) + + if qVersion() < "4.5.0": + self.rQt40.setChecked(True) + else: + self.rQt45.setChecked(True) + + 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.rColor.isChecked(): + if not self.eColor.currentText(): + QColorDialog.getColor() + else: + coStr = self.eColor.currentText() + if coStr.startswith('#'): + coStr = "QColor('%s')" % coStr + else: + coStr = "QColor(%s)" % coStr + try: + if self.rQt45.isChecked(): + exec 'QColorDialog.getColor(%s, None, "%s")' % \ + (coStr, self.eTitle.text()) + else: + exec 'QColorDialog.getColor(%s)' % coStr + except: + QMessageBox.critical(None, + self.trUtf8("QColorDialog Wizard Error"), + self.trUtf8("""<p>The colour <b>{0}</b> is not valid.</p>""") + .format(coStr)) + + elif self.rRGBA.isChecked(): + if self.rQt45.isChecked(): + QColorDialog.getColor( + QColor(self.sRed.value(), self.sGreen.value(), + self.sBlue.value(), self.sAlpha.value()), + None, self.eTitle.text(), + QColorDialog.ColorDialogOptions(QColorDialog.ShowAlphaChannel)) + else: + rgba = qRgba(self.sRed.value(), self.sGreen.value(), + self.sBlue.value(), self.sAlpha.value()) + QColorDialog.getRgba(rgba) + + def on_eRGB_textChanged(self, text): + """ + Private slot to handle the textChanged signal of eRGB. + + @param text the new text (string) + """ + if not text: + self.sRed.setEnabled(True) + self.sGreen.setEnabled(True) + self.sBlue.setEnabled(True) + self.sAlpha.setEnabled(True) + self.bTest.setEnabled(True) + else: + self.sRed.setEnabled(False) + self.sGreen.setEnabled(False) + self.sBlue.setEnabled(False) + self.sAlpha.setEnabled(False) + self.bTest.setEnabled(False) + + def on_eColor_editTextChanged(self, text): + """ + Private slot to handle the editTextChanged signal of eColor. + + @param text the new text (string) + """ + if not text or text.startswith('Qt.') or text.startswith('#'): + self.bTest.setEnabled(True) + else: + self.bTest.setEnabled(False) + + def on_rQt45_toggled(self, on): + """ + Private slot to handle the toggled signal of the rQt45 radio button. + + @param on toggle state (boolean) (ignored) + """ + self.titleGroup.setEnabled(on) + + 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 + code = 'QColorDialog.' + if self.rColor.isChecked(): + code += 'getColor(' + if self.eColor.currentText(): + col = str(self.eColor.currentText()) + if col.startswith('#'): + code += 'QColor("%s")' % col + else: + code += 'QColor(%s)' % col + if self.rQt45.isChecked(): + code += ', None,%s' % os.linesep + code += '%sself.trUtf8("%s"),%s' % \ + (istring, self.eTitle.text(), os.linesep) + code += \ + '%sQColorDialog.ColorDialogOptions(QColorDialog.ShowAlphaChannel)' % \ + istring + code += ')%s' % os.linesep + elif self.rRGBA.isChecked(): + if self.rQt45.isChecked(): + code += 'getColor(' + if not self.eRGB.text(): + code += 'QColor(%d, %d, %d, %d),%s' % \ + (self.sRed.value(), self.sGreen.value(), self.sBlue.value(), + self.sAlpha.value(), os.linesep) + else: + code += '%s,%s' % (self.eRGB.text(), os.linesep) + code += '%sNone,%s' % (istring, os.linesep) + code += '%sself.trUtf8("%s"),%s' % \ + (istring, self.eTitle.text(), os.linesep) + code += \ + '%sQColorDialog.ColorDialogOptions(QColorDialog.ShowAlphaChannel)' % \ + istring + code += ')%s' % os.linesep + else: + code += 'getRgba(' + if not self.eRGB.text(): + code += 'qRgba(%d, %d, %d, %d)' % \ + (self.sRed.value(), self.sGreen.value(), self.sBlue.value(), + self.sAlpha.value()) + else: + code += str(self.eRGB.text()) + code += ')%s' % os.linesep + + return code