aboutsummaryrefslogtreecommitdiffstats
path: root/doc/api/examples
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2011-05-10 16:51:02 +0200
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>2011-05-10 16:51:02 +0200
commit00a007048395c66d7f01ac23e2e1797b4159d858 (patch)
tree273f68a10b3282ca488b7ecd43f3b8ca3c57ee25 /doc/api/examples
parente8496ca33fef176a41a56c91f0342da56d6642c2 (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.cpp122
-rw-r--r--doc/api/examples/webpagewizard/webpagewizard.h76
-rw-r--r--doc/api/examples/webpagewizard/webpagewizardplugin.cpp13
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 &parameters,
+ 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 &parameters,
+ 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]