From 79169238b1016f417ca4287ec4ce123ecf3bc2cd Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Thu, 12 Mar 2009 17:53:25 +0100
Subject: [PATCH] Fun with Core::IWizard.

---
 .../genericprojectmanager.pro                 |  2 +
 .../genericprojectplugin.cpp                  |  6 +-
 .../genericprojectwizard.cpp                  | 62 +++++++++++++++++++
 .../genericprojectwizard.h                    | 31 ++++++++++
 4 files changed, 99 insertions(+), 2 deletions(-)
 create mode 100644 src/plugins/genericprojectmanager/genericprojectwizard.cpp
 create mode 100644 src/plugins/genericprojectmanager/genericprojectwizard.h

diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.pro b/src/plugins/genericprojectmanager/genericprojectmanager.pro
index 79ee17ce63a..57a849d161b 100644
--- a/src/plugins/genericprojectmanager/genericprojectmanager.pro
+++ b/src/plugins/genericprojectmanager/genericprojectmanager.pro
@@ -7,12 +7,14 @@ HEADERS = genericproject.h \
     genericprojectmanager.h \
     genericprojectconstants.h \
     genericprojectnodes.h \
+    genericprojectwizard.h \
     pkgconfigtool.h \
     makestep.h
 SOURCES = genericproject.cpp \
     genericprojectplugin.cpp \
     genericprojectmanager.cpp \
     genericprojectnodes.cpp \
+    genericprojectwizard.cpp \
     pkgconfigtool.cpp \
     makestep.cpp
 RESOURCES += genericproject.qrc
diff --git a/src/plugins/genericprojectmanager/genericprojectplugin.cpp b/src/plugins/genericprojectmanager/genericprojectplugin.cpp
index cd6c10ff5d9..75d70955a6e 100644
--- a/src/plugins/genericprojectmanager/genericprojectplugin.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectplugin.cpp
@@ -29,6 +29,7 @@
 
 #include "genericprojectplugin.h"
 #include "genericprojectmanager.h"
+#include "genericprojectwizard.h"
 #include "makestep.h"
 
 #include <coreplugin/icore.h>
@@ -57,8 +58,9 @@ bool GenericProjectPlugin::initialize(const QStringList &, QString *errorMessage
     if (! mimeDB->addMimeTypes(mimetypesXml, errorMessage))
         return false;
 
-    addAutoReleasedObject(new Manager());
-    addAutoReleasedObject(new MakeBuildStepFactory());
+    addAutoReleasedObject(new Manager);
+    addAutoReleasedObject(new MakeBuildStepFactory);
+    addAutoReleasedObject(new GenericProjectWizard);
 
     return true;
 }
diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.cpp b/src/plugins/genericprojectmanager/genericprojectwizard.cpp
new file mode 100644
index 00000000000..f4c0653e6d1
--- /dev/null
+++ b/src/plugins/genericprojectmanager/genericprojectwizard.cpp
@@ -0,0 +1,62 @@
+#include "genericprojectwizard.h"
+#include <utils/pathchooser.h>
+
+#include <QtGui/QWizard>
+#include <QtGui/QFormLayout>
+#include <QtCore/QtDebug>
+
+using namespace GenericProjectManager::Internal;
+using namespace Core::Utils;
+
+GenericProjectWizard::GenericProjectWizard()
+    : Core::BaseFileWizard(parameters())
+{
+}
+
+GenericProjectWizard::~GenericProjectWizard()
+{
+}
+
+Core::BaseFileWizardParameters GenericProjectWizard::parameters()
+{
+    static Core::BaseFileWizardParameters parameters(ProjectWizard);
+    parameters.setName(tr("Existing Project"));
+    parameters.setDescription(tr("Import Existing Project"));
+    parameters.setCategory(QLatin1String("Import"));
+    parameters.setTrCategory(tr("Import"));
+    return parameters;
+}
+
+QWizard *GenericProjectWizard::createWizardDialog(QWidget *parent,
+                                                  const QString &defaultPath,
+                                                  const WizardPageList &extensionPages) const
+{
+    QWizard *wizard = new QWizard(parent);
+    wizard->setWindowTitle(tr("Import Existing Project"));
+    setupWizard(wizard);
+
+    QWizardPage *firstPage = new QWizardPage;
+    firstPage->setTitle(tr(""));
+
+    QFormLayout *layout = new QFormLayout(firstPage);
+
+    PathChooser *pathChooser = new PathChooser;
+    pathChooser->setObjectName("pathChooser");
+    layout->addRow(tr("Source Directory:"), pathChooser);    
+
+    wizard->addPage(firstPage);
+
+    foreach (QWizardPage *p, extensionPages)
+        wizard->addPage(p);
+
+    return wizard;
+}
+
+Core::GeneratedFiles GenericProjectWizard::generateFiles(const QWizard *w,
+                                                         QString *errorMessage) const
+{
+    PathChooser *pathChooser = w->findChild<PathChooser *>("pathChooser");
+
+    return Core::GeneratedFiles();
+}
+
diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.h b/src/plugins/genericprojectmanager/genericprojectwizard.h
new file mode 100644
index 00000000000..3c49bdff4cd
--- /dev/null
+++ b/src/plugins/genericprojectmanager/genericprojectwizard.h
@@ -0,0 +1,31 @@
+#ifndef GENERICPROJECTWIZARD_H
+#define GENERICPROJECTWIZARD_H
+
+#include <coreplugin/basefilewizard.h>
+
+namespace GenericProjectManager {
+namespace Internal {
+
+class GenericProjectWizard : public Core::BaseFileWizard
+{
+    Q_OBJECT
+
+public:
+    GenericProjectWizard();
+    virtual ~GenericProjectWizard();
+
+    static Core::BaseFileWizardParameters parameters();
+
+protected:
+    virtual QWizard *createWizardDialog(QWidget *parent,
+                                        const QString &defaultPath,
+                                        const WizardPageList &extensionPages) const;
+
+    virtual Core::GeneratedFiles generateFiles(const QWizard *w,
+                                               QString *errorMessage) const;
+};
+
+} // end of namespace Internal
+} // end of namespace GenericProjectManager
+
+#endif // GENERICPROJECTWIZARD_H
-- 
GitLab