diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2011-05-10 16:51:02 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2011-05-10 16:51:02 +0200 |
commit | 00a007048395c66d7f01ac23e2e1797b4159d858 (patch) | |
tree | 273f68a10b3282ca488b7ecd43f3b8ca3c57ee25 /doc/api/examples | |
parent | e8496ca33fef176a41a56c91f0342da56d6642c2 (diff) |
Doc: Add documentation on how to write Wizards in code.
Reviewed-by: Leena Miettinen <leena.miettinen@nokia.com>
Acked-by: Alessandro Portale <alessandro.portale@nokia.com>
Diffstat (limited to 'doc/api/examples')
-rw-r--r-- | doc/api/examples/webpagewizard/webpagewizard.cpp | 122 | ||||
-rw-r--r-- | doc/api/examples/webpagewizard/webpagewizard.h | 76 | ||||
-rw-r--r-- | doc/api/examples/webpagewizard/webpagewizardplugin.cpp | 13 |
3 files changed, 211 insertions, 0 deletions
diff --git a/doc/api/examples/webpagewizard/webpagewizard.cpp b/doc/api/examples/webpagewizard/webpagewizard.cpp new file mode 100644 index 00000000000..27b3b0e5821 --- /dev/null +++ b/doc/api/examples/webpagewizard/webpagewizard.cpp @@ -0,0 +1,122 @@ +//! [0] +#include "webpagewizard.h" + +#include <utils/filewizarddialog.h> +#include <utils/qtcassert.h> + +#include <QtCore/QXmlStreamWriter> + +#include <QtGui/QGridLayout> +#include <QtGui/QLabel> +#include <QtGui/QLineEdit> +#include <QtGui/QPlainTextEdit> + +namespace MyPlugin { +namespace Internal { + +//! [1] +WebContentPageWizardPage::WebContentPageWizardPage(QWidget *parent) : + QWizardPage(parent), + m_titleLineEdit(new QLineEdit), + m_textEdit(new QPlainTextEdit), + m_complete(false) +{ + QGridLayout *layout = new QGridLayout(this); + QLabel *titleLabel = new QLabel(tr("&Title")); + layout->addWidget(titleLabel, 0, 0); + layout->addWidget(m_titleLineEdit, 0, 1); + QLabel *contentLabel = new QLabel(tr("&Content")); + layout->addWidget(contentLabel, 1, 0, 1, 1, Qt::AlignTop); + layout->addWidget(m_textEdit, 1, 1); + titleLabel->setBuddy(m_titleLineEdit); + contentLabel->setBuddy(m_textEdit); + setTitle(tr("Web Page Contents")); + + connect(m_titleLineEdit, SIGNAL(textChanged(QString)), this, SLOT(slotChanged())); + connect(m_textEdit, SIGNAL(textChanged()), this, SLOT(slotChanged())); +} + +QString WebContentPageWizardPage::title() const +{ + return m_titleLineEdit->text(); +} + +QString WebContentPageWizardPage::contents() const +{ + return m_textEdit->toPlainText(); +} + +void WebContentPageWizardPage::slotChanged() +{ + const bool completeNow = !m_titleLineEdit->text().isEmpty() + && m_textEdit->blockCount() > 0; + if (completeNow != m_complete) { + m_complete = completeNow; + emit completeChanged(); + } +} + +//! [1] //! [2] + +WebContentWizardDialog::WebContentWizardDialog(QWidget *parent) : + Utils::FileWizardDialog(parent), m_contentPage(new WebContentPageWizardPage) +{ + addPage(m_contentPage); +} + +//! [2] //! [3] + +WebPageWizard::WebPageWizard(const Core::BaseFileWizardParameters ¶meters, + QObject *parent) : + Core::BaseFileWizard(parameters, parent) +{ +} + +QWizard *WebPageWizard::createWizardDialog(QWidget *parent, + const QString &defaultPath, + const WizardPageList &extensionPages) const +{ + WebContentWizardDialog *dialog = new WebContentWizardDialog(parent); + dialog->setPath(defaultPath); + foreach (QWizardPage *p, extensionPages) + dialog->addPage(p); + return dialog; +} + +Core::GeneratedFiles + WebPageWizard::generateFiles(const QWizard *w, + QString *) const +{ + Core::GeneratedFiles files; + const WebContentWizardDialog *dialog = qobject_cast<const WebContentWizardDialog*>(w); + QTC_ASSERT(dialog, return files; ) + + const QString fileName = Core::BaseFileWizard::buildFileName(dialog->path(), dialog->fileName(), QLatin1String("html")); + + Core::GeneratedFile file(fileName); + + QString contents; + QXmlStreamWriter writer(&contents); + writer.setAutoFormatting(true); + writer.writeStartDocument(); + writer.writeStartElement(QLatin1String("html")); + writer.writeStartElement(QLatin1String("head")); + writer.writeTextElement(QLatin1String("title"), dialog->title()); + writer.writeEndElement(); // HEAD + writer.writeStartElement(QLatin1String("body")); + writer.writeTextElement(QLatin1String("h1"), dialog->title()); + writer.writeTextElement(QLatin1String("p"), dialog->contents()); + writer.writeEndElement(); // BODY + writer.writeEndElement(); // HTML + file.setAttributes(Core::GeneratedFile::OpenEditorAttribute); + file.setContents(contents); + files.push_back(file); + return files; +} + +//! [3] + +} // namespace Internal +} // namespace MyPlugin + +//! [0] diff --git a/doc/api/examples/webpagewizard/webpagewizard.h b/doc/api/examples/webpagewizard/webpagewizard.h new file mode 100644 index 00000000000..a34c2288567 --- /dev/null +++ b/doc/api/examples/webpagewizard/webpagewizard.h @@ -0,0 +1,76 @@ +//! [0] + +#ifndef WEBPAGEFILEWIZARD_H +#define WEBPAGEFILEWIZARD_H + +#include "basefilewizard.h" +#include "utils/filewizarddialog.h" + +#include <QtGui/QWizardPage> + +QT_BEGIN_NAMESPACE +class QLineEdit; +class QPlainTextEdit; +QT_END_NAMESPACE + +namespace MyPlugin { +namespace Internal { + +//! [1] +class WebContentPageWizardPage : public QWizardPage +{ + Q_OBJECT +public: + explicit WebContentPageWizardPage(QWidget *parent = 0); + + QString title() const; + QString contents() const; + + virtual bool isComplete() const { return m_complete; } + +private slots: + void slotChanged(); + +private: + QLineEdit *m_titleLineEdit; + QPlainTextEdit *m_textEdit; + bool m_complete; +}; + +//! [1] //! [2] + +class WebContentWizardDialog : public Utils::FileWizardDialog +{ + Q_OBJECT +public: + explicit WebContentWizardDialog(QWidget *parent = 0); + + QString title() const { return m_contentPage->title(); } + QString contents() const { return m_contentPage->contents(); } + +private: + WebContentPageWizardPage *m_contentPage; +}; + +//! [2] //! [3] + +class WebPageWizard : public Core::BaseFileWizard +{ +public: + explicit WebPageWizard(const Core::BaseFileWizardParameters ¶meters, + QObject *parent = 0); +protected: + virtual QWizard *createWizardDialog(QWidget *parent, + const QString &defaultPath, + const WizardPageList &extensionPages) const; + virtual Core::GeneratedFiles generateFiles(const QWizard *w, + QString *errorMessage) const; +}; + +//! [3] +} // namespace Internal +} // namespace MyPlugin + + +#endif // WEBPAGEFILEWIZARD_H +//! [0] diff --git a/doc/api/examples/webpagewizard/webpagewizardplugin.cpp b/doc/api/examples/webpagewizard/webpagewizardplugin.cpp new file mode 100644 index 00000000000..29720c50cf3 --- /dev/null +++ b/doc/api/examples/webpagewizard/webpagewizardplugin.cpp @@ -0,0 +1,13 @@ +//! [0] +bool MyPlugin::initialize(const QStringList &arguments, QString *errorMessage) +{ + Core::BaseFileWizardParameters p(IWizard::FileWizard); + p.setCategory(QLatin1String("P.web")); + p.setDisplayCategory(tr("Web")); + p.setDescription(tr("Creates a Web Page.")); + p.setDisplayName(tr("Web Page")); + p.setId(QLatin1String("A.WebPage")); + addAutoReleasedObject(new WebPageWizard(p)); +} + +//! [0] |