# HG changeset patch # User SokoL_SD # Date 1247585302 0 # Node ID 06e7d3219464f041c51ba06cf8582679a6039862 # Parent 8aaa84d4845115e8d87cc4487336e23c81b1a6aa ups.... diff -r 8aaa84d48451 -r 06e7d3219464 examples/dialogs/classwizard/classwizard_d1.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/dialogs/classwizard/classwizard_d1.d Tue Jul 14 15:28:22 2009 +0000 @@ -0,0 +1,479 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ +module classwizard_d1; + +import qt.gui.QWizardPage; +import qt.gui.QCheckBox; +import qt.gui.QGroupBox; +import qt.gui.QLabel; +import qt.gui.QLineEdit; +import qt.gui.QRadioButton; +import qt.gui.QMessageBox; +import qt.gui.QVBoxLayout; +import qt.gui.QGridLayout; +import qt.core.QFile; +import qt.core.QDir; +import qt.core.QRegExp; + +import tango.text.convert.Format; +import tango.core.Array; +import tango.text.Ascii; + + +class ClassWizard : public QWizard +{ +public: + + this(QWidget parent = null) + { + super(parent); + addPage(new IntroPage); + addPage(new ClassInfoPage); + addPage(new CodeStylePage); + addPage(new OutputFilesPage); + addPage(new ConclusionPage); + + setPixmap(QWizard.BannerPixmap, new QPixmap(":/images/banner.png")); + setPixmap(QWizard.BackgroundPixmap, new QPixmap(":/images/background.png")); + + setWindowTitle(tr("Class Wizard")); + } + + void accept() + { + string className = field("className").toString(); + string baseClass = field("baseClass").toString(); + string macroName = field("macroName").toString(); + string baseInclude = field("baseInclude").toString(); + + string outputDir = field("outputDir").toString(); + string header = field("header").toString(); + string implementation = field("implementation").toString(); + + string block; + + if (field("comment").toBool()) { + block ~= "/*\n"; + block ~= " " ~ header ~ "\n"; + block ~= "*/\n"; + block ~= "\n"; + } + if (field("protect").toBool()) { + block ~= "#ifndef " ~ macroName ~ "\n"; + block ~= "#define " ~ macroName ~ "\n"; + block ~= "\n"; + } + if (field("includeBase").toBool()) { + block ~= "#include " ~ baseInclude ~ "\n"; + block ~= "\n"; + } + + block ~= "class " ~ className; + if (baseClass.length) + block ~= " : public " ~ baseClass; + block ~= "\n"; + block ~= "{\n"; + + /* qmake ignore */ + + if (field("qobjectMacro").toBool()) { + block ~= " \n"; + block ~= "\n"; + } + block ~= "public:\n"; + + if (field("qobjectCtor").toBool()) { + block ~= " " ~ className ~ "(QObject *parent = 0);\n"; + } else if (field("qwidgetCtor").toBool()) { + block ~= " " ~ className ~ "(QWidget *parent = 0);\n"; + } else if (field("defaultCtor").toBool()) { + block ~= " " ~ className ~ "();\n"; + if (field("copyCtor").toBool()) { + block ~= " " ~ className ~ "(const " ~ className ~ " &other);\n"; + block ~= "\n"; + block ~= " " ~ className ~ " &operator=" ~ "(const " ~ className ~ " &other);\n"; + } + } + block ~= "};\n"; + + if (field("protect").toBool()) { + block ~= "\n"; + block ~= "#endif\n"; + } + + auto headerFile = new QFile(outputDir ~ "/" ~ header); + if (!headerFile.open(QFile.WriteOnly | QFile.Text)) { + QMessageBox.warning(null, tr("Simple Wizard"), + Format(tr("Cannot write file {}:\n{}"), + headerFile.fileName(), + headerFile.errorString())); + return; + } + headerFile.write(block); + + block.length = 0; + + if (field("comment").toBool()) { + block ~= "/*\n"; + block ~= " " ~ implementation ~ "\n"; + block ~= "*/\n"; + block ~= "\n"; + } + block ~= "#include \"" ~ header ~ "\"\n"; + block ~= "\n"; + + if (field("qobjectCtor").toBool()) { + block ~= className ~ "." ~ className ~ "(QObject *parent)\n"; + block ~= " : " ~ baseClass ~ "(parent)\n"; + block ~= "{\n"; + block ~= "}\n"; + } else if (field("qwidgetCtor").toBool()) { + block ~= className ~ "." ~ className ~ "(QWidget *parent)\n"; + block ~= " : " ~ baseClass ~ "(parent)\n"; + block ~= "{\n"; + block ~= "}\n"; + } else if (field("defaultCtor").toBool()) { + block ~= className ~ "." ~ className ~ "()\n"; + block ~= "{\n"; + block ~= " // missing code\n"; + block ~= "}\n"; + + if (field("copyCtor").toBool()) { + block ~= "\n"; + block ~= className ~ "." ~ className ~ "(const " ~ className ~ " &other)\n"; + block ~= "{\n"; + block ~= " *this = other;\n"; + block ~= "}\n"; + block ~= "\n"; + block ~= className ~ " &" ~ className ~ ".operator=(const " ~ className ~ " &other)\n"; + block ~= "{\n"; + if (baseClass.length) + block ~= " " ~ baseClass ~ ".operator=(other);\n"; + block ~= " // missing code\n"; + block ~= " return *this;\n"; + block ~= "}\n"; + } + } + + auto implementationFile = new QFile(outputDir ~ "/" ~ implementation); + if (!implementationFile.open(QFile.WriteOnly | QFile.Text)) { + QMessageBox.warning(null, tr("Simple Wizard"), + Format(tr("Cannot write file {}:\n{}"), + implementationFile.fileName(), + implementationFile.errorString())); + return; + } + implementationFile.write(block); + + QDialog.accept(); + } +} + + +class IntroPage : public QWizardPage +{ +public: + + this(QWidget parent = null) + { + super(parent); + setTitle(tr("Introduction")); + setPixmap(QWizard.WatermarkPixmap, new QPixmap(":/images/watermark1.png")); + + label = new QLabel(tr("This wizard will generate a skeleton C++ class " + "definition, including a few functions. You simply " + "need to specify the class name and set a few " + "options to produce a header file and an " + "implementation file for your new C++ class.")); + label.setWordWrap(true); + + QVBoxLayout layout = new QVBoxLayout; + layout.addWidget(label); + setLayout(layout); + } + +private: + + QLabel label; +} + +class ClassInfoPage : public QWizardPage +{ +public: + + this(QWidget parent = null) + { + super(parent); + setTitle(tr("Class Information")); + setSubTitle(tr("Specify basic information about the class for which you want to generate skeleton source code files.")); + setPixmap(QWizard.LogoPixmap, new QPixmap(":/images/logo1.png")); + + classNameLabel = new QLabel(tr("&Class name:")); + classNameLineEdit = new QLineEdit; + classNameLabel.setBuddy(classNameLineEdit); + + baseClassLabel = new QLabel(tr("B&ase class:")); + baseClassLineEdit = new QLineEdit; + baseClassLabel.setBuddy(baseClassLineEdit); + + qobjectMacroCheckBox = new QCheckBox(tr("Generate ¯o")); + + groupBox = new QGroupBox(tr("C&onstructor")); + + qobjectCtorRadioButton = new QRadioButton(tr("&QObject-style constructor")); + qwidgetCtorRadioButton = new QRadioButton(tr("Q&Widget-style constructor")); + defaultCtorRadioButton = new QRadioButton(tr("&Default constructor")); + copyCtorCheckBox = new QCheckBox(tr("&Generate copy constructor and operator=")); + + defaultCtorRadioButton.setChecked(true); + defaultCtorRadioButton.toggled.connect(©CtorCheckBox.setEnabled); + + registerField("className*", classNameLineEdit); + registerField("baseClass", baseClassLineEdit); + registerField("qobjectMacro", qobjectMacroCheckBox); + registerField("qobjectCtor", qobjectCtorRadioButton); + registerField("qwidgetCtor", qwidgetCtorRadioButton); + registerField("defaultCtor", defaultCtorRadioButton); + registerField("copyCtor", copyCtorCheckBox); + + QVBoxLayout groupBoxLayout = new QVBoxLayout; + + groupBoxLayout.addWidget(qobjectCtorRadioButton); + groupBoxLayout.addWidget(qwidgetCtorRadioButton); + groupBoxLayout.addWidget(defaultCtorRadioButton); + groupBoxLayout.addWidget(copyCtorCheckBox); + groupBox.setLayout(groupBoxLayout); + + QGridLayout layout = new QGridLayout; + layout.addWidget(classNameLabel, 0, 0); + layout.addWidget(classNameLineEdit, 0, 1); + layout.addWidget(baseClassLabel, 1, 0); + layout.addWidget(baseClassLineEdit, 1, 1); + layout.addWidget(qobjectMacroCheckBox, 2, 0, 1, 2); + layout.addWidget(groupBox, 3, 0, 1, 2); + setLayout(layout); + } + +private: + + QLabel classNameLabel; + QLabel baseClassLabel; + QLineEdit classNameLineEdit; + QLineEdit baseClassLineEdit; + QCheckBox qobjectMacroCheckBox; + QGroupBox groupBox; + QRadioButton qobjectCtorRadioButton; + QRadioButton qwidgetCtorRadioButton; + QRadioButton defaultCtorRadioButton; + QCheckBox copyCtorCheckBox; +} + +class CodeStylePage : public QWizardPage +{ +public: + + this(QWidget parent = null) + { + super(parent); + setTitle(tr("Code Style Options")); + setSubTitle(tr("Choose the formatting of the generated code.")); + setPixmap(QWizard.LogoPixmap, new QPixmap(":/images/logo2.png")); + + commentCheckBox = new QCheckBox(tr("&Start generated files with a comment")); + commentCheckBox.setChecked(true); + + protectCheckBox = new QCheckBox(tr("&Protect header file against multiple inclusions")); + protectCheckBox.setChecked(true); + + macroNameLabel = new QLabel(tr("&Macro name:")); + macroNameLineEdit = new QLineEdit; + macroNameLabel.setBuddy(macroNameLineEdit); + + includeBaseCheckBox = new QCheckBox(tr("&Include base class definition")); + baseIncludeLabel = new QLabel(tr("Base class include:")); + baseIncludeLineEdit = new QLineEdit; + baseIncludeLabel.setBuddy(baseIncludeLineEdit); + + protectCheckBox.toggled.connect(¯oNameLabel.setEnabled); + protectCheckBox.toggled.connect(¯oNameLabel.setEnabled); + includeBaseCheckBox.toggled.connect(¯oNameLabel.setEnabled); + includeBaseCheckBox.toggled.connect(¯oNameLabel.setEnabled); + + registerField("comment", commentCheckBox); + registerField("protect", protectCheckBox); + registerField("macroName", macroNameLineEdit); + registerField("includeBase", includeBaseCheckBox); + registerField("baseInclude", baseIncludeLineEdit); + + QGridLayout layout = new QGridLayout; + layout.setColumnMinimumWidth(0, 20); + layout.addWidget(commentCheckBox, 0, 0, 1, 3); + layout.addWidget(protectCheckBox, 1, 0, 1, 3); + layout.addWidget(macroNameLabel, 2, 1); + layout.addWidget(macroNameLineEdit, 2, 2); + layout.addWidget(includeBaseCheckBox, 3, 0, 1, 3); + layout.addWidget(baseIncludeLabel, 4, 1); + layout.addWidget(baseIncludeLineEdit, 4, 2); + + setLayout(layout); + } + +protected: + + void initializePage() + { + string className = field("className").toString(); + macroNameLineEdit.setText(toUpper(className) ~ "_H"); + + string baseClass = field("baseClass").toString(); + + includeBaseCheckBox.setChecked(baseClass.length != 0); + includeBaseCheckBox.setEnabled(baseClass.length != 0); + baseIncludeLabel.setEnabled(baseClass.length != 0); + baseIncludeLineEdit.setEnabled(baseClass.length != 0); + + if (baseClass.length == 0) { + baseIncludeLineEdit.clear(); + } else if ((new QRegExp("Q[A-Z].*")).exactMatch(baseClass)) { + baseIncludeLineEdit.setText("<" ~ baseClass ~ ">"); + } else { + baseIncludeLineEdit.setText("\"" ~ toLower(baseClass) ~ ".h\""); + } + } + +private: + + QCheckBox commentCheckBox; + QCheckBox protectCheckBox; + QCheckBox includeBaseCheckBox; + QLabel macroNameLabel; + QLabel baseIncludeLabel; + QLineEdit macroNameLineEdit; + QLineEdit baseIncludeLineEdit; +} + +class OutputFilesPage : public QWizardPage +{ +public: + + this(QWidget parent = null) + { + super(parent); + setTitle(tr("Output Files")); + setSubTitle(tr("Specify where you want the wizard to put the generated skeleton code.")); + setPixmap(QWizard.LogoPixmap, new QPixmap(":/images/logo3.png")); + + outputDirLabel = new QLabel(tr("&Output directory:")); + outputDirLineEdit = new QLineEdit; + outputDirLabel.setBuddy(outputDirLineEdit); + + headerLabel = new QLabel(tr("&Header file name:")); + headerLineEdit = new QLineEdit; + headerLabel.setBuddy(headerLineEdit); + + implementationLabel = new QLabel(tr("&Implementation file name:")); + implementationLineEdit = new QLineEdit; + implementationLabel.setBuddy(implementationLineEdit); + + registerField("outputDir*", outputDirLineEdit); + registerField("header*", headerLineEdit); + registerField("implementation*", implementationLineEdit); + + QGridLayout layout = new QGridLayout; + layout.addWidget(outputDirLabel, 0, 0); + layout.addWidget(outputDirLineEdit, 0, 1); + layout.addWidget(headerLabel, 1, 0); + layout.addWidget(headerLineEdit, 1, 1); + layout.addWidget(implementationLabel, 2, 0); + layout.addWidget(implementationLineEdit, 2, 1); + setLayout(layout); + } + +protected: + + void initializePage() + { + string className = field("className").toString(); + headerLineEdit.setText(toLower(className) ~ ".h"); + implementationLineEdit.setText(toLower(className) ~ ".cpp"); + outputDirLineEdit.setText(QDir.convertSeparators(QDir.tempPath())); + } + +private: + + QLabel outputDirLabel; + QLabel headerLabel; + QLabel implementationLabel; + QLineEdit outputDirLineEdit; + QLineEdit headerLineEdit; + QLineEdit implementationLineEdit; +} + +class ConclusionPage : public QWizardPage +{ +public: + + this(QWidget parent = null) + { + super(parent); + setTitle(tr("Conclusion")); + setPixmap(QWizard.WatermarkPixmap, new QPixmap(":/images/watermark2.png")); + + label = new QLabel; + label.setWordWrap(true); + + QVBoxLayout layout = new QVBoxLayout; + layout.addWidget(label); + setLayout(layout); + } + +protected: + + void initializePage() + { + string finishText = wizard().buttonText(QWizard.FinishButton).dup; + label.setText(Format(tr("Click {} to generate the class skeleton."), finishText)); + } + +private: + + QLabel label; +} diff -r 8aaa84d48451 -r 06e7d3219464 examples/dialogs/standarddialogs/dialog_d1.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/dialogs/standarddialogs/dialog_d1.d Tue Jul 14 15:28:22 2009 +0000 @@ -0,0 +1,421 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ +module dialog_d1; + + +import qt.gui.QDialog; +import qt.gui.QCheckBox; +import qt.gui.QLabel; +import qt.gui.QMessageBox; +import qt.gui.QGridLayout; +import qt.gui.QErrorMessage; +import qt.gui.QFileDialog; +import qt.gui.QLineEdit; +import qt.gui.QInputDialog; +import qt.gui.QColorDialog; +import qt.gui.QFontDialog; +import qt.gui.QFileDialog; +import qt.core.QFile; + +import tango.text.convert.Format; + + +string MESSAGE = tr("
Message boxes have a caption, a text, " + "and any number of buttons, each with standard or custom texts." + "
Click a button to close the message box. Pressing the Esc button "
+ "will activate the detected escape button (if any).");
+
+
+class Dialog : public QDialog
+{
+public:
+
+ this(QWidget parent = null)
+ {
+ super(parent);
+ errorMessageDialog = new QErrorMessage(this);
+
+ int frameStyle = QFrame.Sunken | QFrame.Panel;
+
+ integerLabel = new QLabel;
+ integerLabel.setFrameStyle(frameStyle);
+ QPushButton integerButton = new QPushButton(tr("QInputget&Int()"));
+
+ doubleLabel = new QLabel;
+ doubleLabel.setFrameStyle(frameStyle);
+ QPushButton doubleButton = new QPushButton(tr("QInputget&Double()"));
+
+ itemLabel = new QLabel;
+ itemLabel.setFrameStyle(frameStyle);
+ QPushButton itemButton = new QPushButton(tr("QInputgetIte&m()"));
+
+ textLabel = new QLabel;
+ textLabel.setFrameStyle(frameStyle);
+ QPushButton textButton = new QPushButton(tr("QInputget&Text()"));
+
+ colorLabel = new QLabel;
+ colorLabel.setFrameStyle(frameStyle);
+ QPushButton colorButton = new QPushButton(tr("QColorget&Color()"));
+
+ fontLabel = new QLabel;
+ fontLabel.setFrameStyle(frameStyle);
+ QPushButton fontButton = new QPushButton(tr("QFontget&Font()"));
+
+ directoryLabel = new QLabel;
+ directoryLabel.setFrameStyle(frameStyle);
+ QPushButton directoryButton = new QPushButton(tr("QFilegetE&xistingDirectory()"));
+
+ openFileNameLabel = new QLabel;
+ openFileNameLabel.setFrameStyle(frameStyle);
+ QPushButton openFileNameButton = new QPushButton(tr("QFileget&OpenFileName()"));
+
+ openFileNamesLabel = new QLabel;
+ openFileNamesLabel.setFrameStyle(frameStyle);
+ QPushButton openFileNamesButton = new QPushButton(tr("QFile&getOpenFileNames()"));
+
+ saveFileNameLabel = new QLabel;
+ saveFileNameLabel.setFrameStyle(frameStyle);
+ QPushButton saveFileNameButton = new QPushButton(tr("QFileget&SaveFileName()"));
+
+ criticalLabel = new QLabel;
+ criticalLabel.setFrameStyle(frameStyle);
+ QPushButton criticalButton = new QPushButton(tr("QMessageBox.critica&l()"));
+
+ informationLabel = new QLabel;
+ informationLabel.setFrameStyle(frameStyle);
+ QPushButton informationButton = new QPushButton(tr("QMessageBox.i&nformation()"));
+
+ questionLabel = new QLabel;
+ questionLabel.setFrameStyle(frameStyle);
+ QPushButton questionButton = new QPushButton(tr("QMessageBox.&question()"));
+
+ warningLabel = new QLabel;
+ warningLabel.setFrameStyle(frameStyle);
+ QPushButton warningButton = new QPushButton(tr("QMessageBox.&warning()"));
+
+ errorLabel = new QLabel;
+ errorLabel.setFrameStyle(frameStyle);
+ QPushButton errorButton = new QPushButton(tr("QErrorMessage.show&M&essage()"));
+
+ integerButton.clicked.connect(&this.setInteger);
+ doubleButton.clicked.connect(&this.setDouble);
+ itemButton.clicked.connect(&this.setItem);
+ textButton.clicked.connect(&this.setText);
+ colorButton.clicked.connect(&this.setColor);
+ fontButton.clicked.connect(&this.setFont);
+ directoryButton.clicked.connect(&this.setExistingDirectory);
+ openFileNameButton.clicked.connect(&this.setOpenFileName);
+ openFileNamesButton.clicked.connect(&this.setOpenFileNames);
+ saveFileNameButton.clicked.connect(&this.setSaveFileName);
+ criticalButton.clicked.connect(&this.criticalMessage);
+ informationButton.clicked.connect(&this.informationMessage);
+ questionButton.clicked.connect(&this.questionMessage);
+ warningButton.clicked.connect(&this.warningMessage);
+ errorButton.clicked.connect(&this.errorMessage);
+
+ native = new QCheckBox(this);
+ native.setText("Use native file dialog.");
+ native.setChecked(true);
+
+ version(windows) {} else
+ {
+ version(mac) {} else
+ {
+ native.hide();
+ }
+ }
+
+ QGridLayout layout = new QGridLayout;
+ layout.setColumnStretch(1, 1);
+ layout.setColumnMinimumWidth(1, 250);
+ layout.addWidget(integerButton, 0, 0);
+ layout.addWidget(integerLabel, 0, 1);
+ layout.addWidget(doubleButton, 1, 0);
+ layout.addWidget(doubleLabel, 1, 1);
+ layout.addWidget(itemButton, 2, 0);
+ layout.addWidget(itemLabel, 2, 1);
+ layout.addWidget(textButton, 3, 0);
+ layout.addWidget(textLabel, 3, 1);
+ layout.addWidget(colorButton, 4, 0);
+ layout.addWidget(colorLabel, 4, 1);
+ layout.addWidget(fontButton, 5, 0);
+ layout.addWidget(fontLabel, 5, 1);
+ layout.addWidget(directoryButton, 6, 0);
+ layout.addWidget(directoryLabel, 6, 1);
+ layout.addWidget(openFileNameButton, 7, 0);
+ layout.addWidget(openFileNameLabel, 7, 1);
+ layout.addWidget(openFileNamesButton, 8, 0);
+ layout.addWidget(openFileNamesLabel, 8, 1);
+ layout.addWidget(saveFileNameButton, 9, 0);
+ layout.addWidget(saveFileNameLabel, 9, 1);
+ layout.addWidget(criticalButton, 10, 0);
+ layout.addWidget(criticalLabel, 10, 1);
+ layout.addWidget(informationButton, 11, 0);
+ layout.addWidget(informationLabel, 11, 1);
+ layout.addWidget(questionButton, 12, 0);
+ layout.addWidget(questionLabel, 12, 1);
+ layout.addWidget(warningButton, 13, 0);
+ layout.addWidget(warningLabel, 13, 1);
+ layout.addWidget(errorButton, 14, 0);
+ layout.addWidget(errorLabel, 14, 1);
+ layout.addWidget(native, 15, 0);
+ setLayout(layout);
+
+ setWindowTitle(tr("Standard Dialogs"));
+ }
+
+private:
+
+ void setInteger()
+ {
+ bool ok;
+ int i = QInputDialog.getInt(this, tr("QInputgetInteger()"), tr("Percentage:"), 25, 0, 100, 1, ok);
+ if (ok)
+ version(Tango)
+ integerLabel.setText(Format("{}", i));
+ else
+ integerLabel.setText(format("%d", i));
+ }
+
+ void setDouble()
+ {
+ bool ok;
+ double d = QInputDialog.getDouble(this, tr("QInputgetDouble()"),
+ tr("Amount:"), 37.56, -10000, 10000, 2, ok);
+ if (ok)
+ version(Tango)
+ doubleLabel.setText(Format("${}", d));
+ else
+ integerLabel.setText(format("%g", d));
+ }
+
+ void setItem()
+ {
+ string[] items = [tr("Spring"), tr("Summer"), tr("Fall"), tr("Winter")];
+
+ bool ok;
+ string item = QInputDialog.getItem(this, tr("QInputgetItem()"),
+ tr("Season:"), items, 0, false, ok);
+ if (ok && item.length)
+ itemLabel.setText(item);
+ }
+
+ void setText()
+ {
+ bool ok;
+ string text = QInputDialog.getText(this, tr("QInputgetText()"),
+ tr("User name:"), QLineEdit_EchoMode.Normal,
+ QDir.home().dirName(), ok);
+ if (ok && text.length)
+ textLabel.setText(text);
+ }
+
+ void setColor()
+ {
+ QColor color = QColorDialog.getColor(QColor.Green, this);
+ if (color.isValid()) {
+ colorLabel.setText(color.name());
+ colorLabel.setPalette(new QPalette(color));
+ colorLabel.setAutoFillBackground(true);
+ }
+ }
+
+ void setFont()
+ {
+ bool ok;
+ QFont font = QFontDialog.getFont(&ok, new QFont(fontLabel.text()), this);
+ if (ok) {
+ fontLabel.setText(font.key());
+ fontLabel.setFont(font);
+ }
+ }
+
+ void setExistingDirectory()
+ {
+ int options = QFileDialog_Option.DontResolveSymlinks | QFileDialog_Option.ShowDirsOnly;
+ if (!native.isChecked())
+ options |= QFileDialog_Option.DontUseNativeDialog;
+ string directory = QFileDialog.getExistingDirectory(this,
+ tr("QFilegetExistingDirectory()"),
+ directoryLabel.text(),
+ options);
+ if (directory.length)
+ directoryLabel.setText(directory);
+ }
+
+ void setOpenFileName()
+ {
+ int options;
+ if (!native.isChecked())
+ options |= QFileDialog_Option.DontUseNativeDialog;
+ string selectedFilter;
+ string fileName = QFileDialog.getOpenFileName(this,
+ tr("QFilegetOpenFileName()"),
+ openFileNameLabel.text(),
+ tr("All Files (*);;Text Files (*.txt)"),
+ selectedFilter,
+ options);
+ if (fileName.length)
+ openFileNameLabel.setText(fileName);
+ }
+
+ void setOpenFileNames()
+ {
+ int options;
+ if (!native.isChecked())
+ options |= QFileDialog_Option.DontUseNativeDialog;
+ string selectedFilter;
+ string[] files = QFileDialog.getOpenFileNames(
+ this, tr("QFilegetOpenFileNames()"),
+ openFilesPath,
+ tr("All Files (*);;Text Files (*.txt)"),
+ selectedFilter,
+ options);
+ if (files.length) {
+ openFilesPath = files[0];
+ version(Tango)
+ openFileNamesLabel.setText(Format("{}", files));
+ else
+ {
+ openFileNamesLabel.setText(join(files, "; "));
+ }
+ }
+ }
+
+ void setSaveFileName()
+ {
+ int options;
+ if (!native.isChecked())
+ options |= QFileDialog_Option.DontUseNativeDialog;
+ string selectedFilter;
+ string fileName = QFileDialog.getSaveFileName(this,
+ tr("QFilegetSaveFileName()"),
+ saveFileNameLabel.text(),
+ tr("All Files (*);;Text Files (*.txt)"),
+ selectedFilter,
+ options);
+ if (fileName.length)
+ saveFileNameLabel.setText(fileName);
+ }
+
+ void criticalMessage()
+ {
+ QMessageBox.StandardButton reply;
+ reply = QMessageBox.critical(this, tr("QMessageBox.critical()"),
+ MESSAGE,
+ QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore);
+ if (reply == QMessageBox.Abort)
+ criticalLabel.setText(tr("Abort"));
+ else if (reply == QMessageBox.Retry)
+ criticalLabel.setText(tr("Retry"));
+ else
+ criticalLabel.setText(tr("Ignore"));
+ }
+
+ void informationMessage()
+ {
+ QMessageBox.StandardButton reply;
+ reply = QMessageBox.information(this, tr("QMessageBox.information()"), MESSAGE);
+ if (reply == QMessageBox.Ok)
+ informationLabel.setText(tr("OK"));
+ else
+ informationLabel.setText(tr("Escape"));
+ }
+
+ void questionMessage()
+ {
+ QMessageBox.StandardButton reply;
+ reply = QMessageBox.question(this, tr("QMessageBox.question()"),
+ MESSAGE,
+ QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel);
+ if (reply == QMessageBox.Yes)
+ questionLabel.setText(tr("Yes"));
+ else if (reply == QMessageBox.No)
+ questionLabel.setText(tr("No"));
+ else
+ questionLabel.setText(tr("Cancel"));
+ }
+
+ void warningMessage()
+ {
+ auto msgBox = new QMessageBox(QMessageBox.Warning, tr("QMessageBox.warning()"), MESSAGE, 0, this);
+ msgBox.addButton(tr("Save &Again"), QMessageBox.AcceptRole);
+ msgBox.addButton(tr("&Continue"), QMessageBox.RejectRole);
+ if (msgBox.exec() == QMessageBox.AcceptRole)
+ warningLabel.setText(tr("Save Again"));
+ else
+ warningLabel.setText(tr("Continue"));
+ }
+
+ void errorMessage()
+ {
+ errorMessageDialog.showMessage(
+ tr("This dialog shows and remembers error messages. "
+ "If the checkbox is checked (as it is by default), "
+ "the shown message will be shown again, "
+ "but if the user unchecks the box the message "
+ "will not appear again if QErrorMessage.showMessage() "
+ "is called with the same message."));
+ errorLabel.setText(tr("If the box is unchecked, the message won't appear again."));
+ }
+
+private:
+
+ QCheckBox native;
+ QLabel integerLabel;
+ QLabel doubleLabel;
+ QLabel itemLabel;
+ QLabel textLabel;
+ QLabel colorLabel;
+ QLabel fontLabel;
+ QLabel directoryLabel;
+ QLabel openFileNameLabel;
+ QLabel openFileNamesLabel;
+ QLabel saveFileNameLabel;
+ QLabel criticalLabel;
+ QLabel informationLabel;
+ QLabel questionLabel;
+ QLabel warningLabel;
+ QLabel errorLabel;
+ QErrorMessage errorMessageDialog;
+
+ string openFilesPath;
+}
diff -r 8aaa84d48451 -r 06e7d3219464 examples/draganddrop/dropsite/dropsitewindow_d1.d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/draganddrop/dropsite/dropsitewindow_d1.d Tue Jul 14 15:28:22 2009 +0000
@@ -0,0 +1,153 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+module dropsitewindow_d1;
+
+import tango.text.Util;
+import tango.text.Ascii;
+import tango.text.convert.Format;
+
+import qt.gui.QWidget;
+import qt.gui.QLabel;
+import qt.gui.QTableWidget;
+import qt.gui.QPushButton;
+import qt.gui.QVBoxLayout;
+import qt.gui.QDialogButtonBox;
+
+import droparea;
+
+
+class DropSiteWindow : public QWidget
+{
+public:
+
+ this()
+ {
+ abstractLabel = new QLabel(tr("This example accepts drags from other "
+ "applications and displays the MIME types "
+ "provided by the drag object."));
+
+ abstractLabel.setWordWrap(true);
+ abstractLabel.adjustSize();
+
+ dropArea = new DropArea;
+ dropArea.changed.connect(&updateFormatsTable);
+
+ string[] labels;
+ labels ~= tr("Format");
+ labels ~= tr("Content");
+
+ formatsTable = new QTableWidget;
+ formatsTable.setColumnCount(2);
+ formatsTable.setEditTriggers(QAbstractItemView.NoEditTriggers);
+ formatsTable.setHorizontalHeaderLabels(labels);
+ formatsTable.horizontalHeader().setStretchLastSection(true);
+
+ clearButton = new QPushButton(tr("Clear"));
+ quitButton = new QPushButton(tr("Quit"));
+
+ buttonBox = new QDialogButtonBox;
+ buttonBox.addButton(clearButton, QDialogButtonBox.ActionRole);
+ buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole);
+
+ quitButton.pressed.connect(&close);
+ clearButton.pressed.connect(&dropArea.clearArea);
+
+ QVBoxLayout mainLayout = new QVBoxLayout;
+ mainLayout.addWidget(abstractLabel);
+ mainLayout.addWidget(dropArea);
+ mainLayout.addWidget(formatsTable);
+ mainLayout.addWidget(buttonBox);
+ setLayout(mainLayout);
+
+ setWindowTitle(tr("Drop Site"));
+ setMinimumSize(350, 500);
+ }
+
+ void updateFormatsTable(QMimeData mimeData)
+ {
+ formatsTable.setRowCount(0);
+ if (!mimeData)
+ return;
+
+ foreach (string format; mimeData.formats()) {
+ QTableWidgetItem formatItem = new QTableWidgetItem(format);
+ formatItem.setFlags(Qt.ItemIsEnabled);
+ formatItem.setTextAlignment(Qt.AlignTop | Qt.AlignLeft);
+
+ string text;
+ if (format == "text/plain") {
+ text = trim(mimeData.text());
+ } else if (format == "text/html") {
+ text = trim(mimeData.html());
+ } else if (format == "text/uri-list") {
+ QUrl[] urlList = mimeData.urls();
+ for (int i = 0; i < urlList.length && i < 32; ++i) {
+ string url = urlList[i].path();
+ text ~= url ~ " ";
+ }
+ } else {
+ QByteArray data = mimeData.data(format);
+ for (int i = 0; i < data.size() && i < 32; ++i) {
+ string hex = toUpper(Format("{0:x}", data.at(i)));
+ text ~= hex ~ " ";
+ }
+ }
+
+ int row = formatsTable.rowCount();
+ formatsTable.insertRow(row);
+ formatsTable.setItem(row, 0, new QTableWidgetItem(format));
+ formatsTable.setItem(row, 1, new QTableWidgetItem(text));
+ }
+
+ formatsTable.resizeColumnToContents(0);
+ }
+
+private:
+
+ DropArea dropArea;
+ QLabel abstractLabel;
+ QTableWidget formatsTable;
+
+ QPushButton clearButton;
+ QPushButton quitButton;
+ QDialogButtonBox buttonBox;
+}
diff -r 8aaa84d48451 -r 06e7d3219464 examples/draganddrop/dropsite/helloworld.ui
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/draganddrop/dropsite/helloworld.ui Tue Jul 14 15:28:22 2009 +0000
@@ -0,0 +1,27 @@
+