diff --git a/src/libs/utils/filewizarddialog.cpp b/src/libs/utils/filewizarddialog.cpp
index d9d06e499431e02c17ea1230e5d844c4d5a2b6a6..1de160325318956bd08557caee386b20d09eee18 100644
--- a/src/libs/utils/filewizarddialog.cpp
+++ b/src/libs/utils/filewizarddialog.cpp
@@ -35,13 +35,14 @@
 namespace Utils {
 
 FileWizardDialog::FileWizardDialog(QWidget *parent) :
-    QWizard(parent),
+    Wizard(parent),
     m_filePage(new FileWizardPage)
 {
     setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
     setOption(QWizard::NoCancelButton, false);
     setOption(QWizard::NoDefaultButton, false);
-    addPage(m_filePage);
+    const int filePageId = addPage(m_filePage);
+    wizardProgress()->item(filePageId)->setTitle(tr("Location"));
     connect(m_filePage, SIGNAL(activated()), button(QWizard::FinishButton), SLOT(animateClick()));
 }
 
diff --git a/src/libs/utils/filewizarddialog.h b/src/libs/utils/filewizarddialog.h
index a071ba3ac0902c62c4757b7c3bd9efe2544471bd..0b3470139c059f33e0865051866e1b8f7bfa735b 100644
--- a/src/libs/utils/filewizarddialog.h
+++ b/src/libs/utils/filewizarddialog.h
@@ -31,8 +31,7 @@
 #define FILEWIZARDDIALOG_H
 
 #include "utils_global.h"
-
-#include <QtGui/QWizard>
+#include "wizard.h"
 
 namespace Utils {
 
@@ -43,7 +42,7 @@ class FileWizardPage;
    and path. Custom pages can be added via Core::IWizardExtension.
 */
 
-class QTCREATOR_UTILS_EXPORT FileWizardDialog : public QWizard {
+class QTCREATOR_UTILS_EXPORT FileWizardDialog : public Wizard {
     Q_OBJECT
     Q_DISABLE_COPY(FileWizardDialog)
 public:
diff --git a/src/libs/utils/filewizardpage.ui b/src/libs/utils/filewizardpage.ui
index 2657a586bdd350cda06dc504f6bfced6cb5ff82d..17b78cae6d19e8dc7071315726a265006d43b0a8 100644
--- a/src/libs/utils/filewizardpage.ui
+++ b/src/libs/utils/filewizardpage.ui
@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="title">
-   <string>Choose the location</string>
+   <string>Choose the Location</string>
   </property>
   <layout class="QFormLayout" name="formLayout">
    <item row="0" column="0">
@@ -37,17 +37,17 @@
   </layout>
  </widget>
  <customwidgets>
+  <customwidget>
+   <class>Utils::FileNameValidatingLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header location="global">utils/filenamevalidatinglineedit.h</header>
+  </customwidget>
   <customwidget>
    <class>Utils::PathChooser</class>
    <extends>QWidget</extends>
    <header>pathchooser.h</header>
    <container>1</container>
   </customwidget>
-  <customwidget>
-   <class>Utils::FileNameValidatingLineEdit</class>
-   <extends>QLineEdit</extends>
-   <header>filenamevalidatinglineedit.h</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
diff --git a/src/libs/utils/wizard.cpp b/src/libs/utils/wizard.cpp
index 4489c95ca2b4951d33150401db2c2f0c12ff432f..dea12c3abe7b25e43ff0c811b5f19c90b75e7308 100644
--- a/src/libs/utils/wizard.cpp
+++ b/src/libs/utils/wizard.cpp
@@ -33,6 +33,7 @@
 #include <QHBoxLayout>
 #include <QMap>
 #include <QHash>
+#include <QVariant>
 
 namespace Utils {
 
diff --git a/src/libs/utils/wizard.h b/src/libs/utils/wizard.h
index 87e43278c1cfb665a018f910a1d8bd8c4c27e6fa..94993deb30aec23905048cdca6bee73216b32157 100644
--- a/src/libs/utils/wizard.h
+++ b/src/libs/utils/wizard.h
@@ -38,6 +38,7 @@
 
 namespace Utils {
 
+class Wizard;
 class WizardProgress;
 class WizardPrivate;
 
diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
index b4091f6f99c1696c22ab585c443bae2fe0234e67..2c1cd7fdfdf7ef2b75a61ba2820c43c7962286d6 100644
--- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
@@ -84,6 +84,13 @@ CMakeOpenProjectWizard::CMakeOpenProjectWizard(CMakeManager *cmakeManager, const
     setPage(ShadowBuildPageId, new ShadowBuildPage(this));
     setPage(CMakeRunPageId, new CMakeRunPage(this));
 
+    Utils::WizardProgress *wp = wizardProgress();
+    Utils::WizardProgressItem *inSourceItem = wp->item(InSourcePageId);
+    Utils::WizardProgressItem *shadowBuildItem = wp->item(ShadowBuildPageId);
+    Utils::WizardProgressItem *cmakeRunItem = wp->item(CMakeRunPageId);
+    inSourceItem->setNextItems(QList<Utils::WizardProgressItem *>() << cmakeRunItem);
+    shadowBuildItem->setNextItems(QList<Utils::WizardProgressItem *>() << cmakeRunItem);
+
     setStartId(startid);
     init();
 }
@@ -216,6 +223,7 @@ InSourceBuildPage::InSourceBuildPage(CMakeOpenProjectWizard *cmakeWizard)
                    "If you want a shadow build, clean your source directory and re-open the project.")
                    .arg(m_cmakeWizard->buildDirectory()));
     layout()->addWidget(label);
+    setTitle(tr("Build Location"));
 }
 
 
@@ -239,6 +247,7 @@ ShadowBuildPage::ShadowBuildPage(CMakeOpenProjectWizard *cmakeWizard, bool chang
     m_pc->setPath(m_cmakeWizard->buildDirectory());
     connect(m_pc, SIGNAL(changed(QString)), this, SLOT(buildDirectoryChanged()));
     fl->addRow(tr("Build directory:"), m_pc);
+    setTitle(tr("Build Location"));
 }
 
 void ShadowBuildPage::buildDirectoryChanged()
@@ -312,6 +321,7 @@ void CMakeRunPage::initWidgets()
     pl.setVerticalStretch(1);
     m_output->setSizePolicy(pl);
     fl->addRow(m_output);
+    setTitle(tr("Run CMake"));
 }
 
 void CMakeRunPage::initializePage()
diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h
index ad389dbaec89b71308c32681130cfacad297db67..b96cd54c20e1fbebdffce1e389cc054f6c4e09e7 100644
--- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h
+++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h
@@ -31,13 +31,13 @@
 #define CMAKEOPENPROJECTWIZARD_H
 
 #include <projectexplorer/environment.h>
+#include <utils/wizard.h>
 
 #include <QtCore/QProcess>
 #include <QtGui/QPushButton>
 #include <QtGui/QComboBox>
 #include <QtGui/QLineEdit>
 #include <QtGui/QLabel>
-#include <QtGui/QWizard>
 #include <QtGui/QPlainTextEdit>
 
 namespace Utils {
@@ -49,7 +49,7 @@ namespace Internal {
 
 class CMakeManager;
 
-class CMakeOpenProjectWizard : public QWizard
+class CMakeOpenProjectWizard : public Utils::Wizard
 {
     Q_OBJECT
 public:
diff --git a/src/plugins/coreplugin/basefilewizard.cpp b/src/plugins/coreplugin/basefilewizard.cpp
index 54a51b53c839a54e930cec307a43a5c452aac8cf..c136fd7172413790d3b7ae0eed38b5eed470fc4a 100644
--- a/src/plugins/coreplugin/basefilewizard.cpp
+++ b/src/plugins/coreplugin/basefilewizard.cpp
@@ -569,6 +569,21 @@ void BaseFileWizard::setupWizard(QWizard *w)
     w->setOption(QWizard::NoBackButtonOnStartPage, true);
 }
 
+void BaseFileWizard::applyExtensionPageShortTitle(Utils::Wizard *wizard, int pageId)
+{
+    if (pageId < 0)
+        return;
+    QWizardPage *p = wizard->page(pageId);
+    if (!p)
+        return;
+    Utils::WizardProgressItem *item = wizard->wizardProgress()->item(pageId);
+    if (!item)
+        return;
+    const QString shortTitle = p->property("shortTitle").toString();
+    if (!shortTitle.isEmpty())
+      item->setTitle(shortTitle);
+}
+
 bool BaseFileWizard::postGenerateFiles(const QWizard *w, const GeneratedFiles &l, QString *errorMessage)
 {
     Q_UNUSED(w);
@@ -691,7 +706,7 @@ QWizard *StandardFileWizard::createWizardDialog(QWidget *parent,
     setupWizard(standardWizardDialog);
     standardWizardDialog->setPath(defaultPath);
     foreach (QWizardPage *p, extensionPages)
-        standardWizardDialog->addPage(p);
+        BaseFileWizard::applyExtensionPageShortTitle(standardWizardDialog, standardWizardDialog->addPage(p));
     return standardWizardDialog;
 }
 
diff --git a/src/plugins/coreplugin/basefilewizard.h b/src/plugins/coreplugin/basefilewizard.h
index 8c88ea635053e0df75f6a9170c0b44f95ab01d26..7a8536cea88d9fe2b5cff90b79f72a9c685ee0e5 100644
--- a/src/plugins/coreplugin/basefilewizard.h
+++ b/src/plugins/coreplugin/basefilewizard.h
@@ -44,6 +44,10 @@ class QWizardPage;
 class QDebug;
 QT_END_NAMESPACE
 
+namespace Utils {
+    class Wizard;
+}
+
 namespace Core {
 
 class IEditor;
@@ -172,6 +176,9 @@ public:
     // Sets some standard options on a QWizard
     static void setupWizard(QWizard *);
 
+    // Read "shortTitle" dynamic property of the pageId and apply it as the title of corresponding progress item
+    static void applyExtensionPageShortTitle(Utils::Wizard *wizard, int pageId);
+
 protected:
     typedef QList<QWizardPage *> WizardPageList;
 
diff --git a/src/plugins/cppeditor/cppclasswizard.cpp b/src/plugins/cppeditor/cppclasswizard.cpp
index 7e565bfcc624c188c59622d2f7e8fcbd5463d8e5..4c8caeb8cafb14fe1aeeb634431d3411d03a3cfa 100644
--- a/src/plugins/cppeditor/cppclasswizard.cpp
+++ b/src/plugins/cppeditor/cppclasswizard.cpp
@@ -60,7 +60,7 @@ ClassNamePage::ClassNamePage(QWidget *parent) :
     QWizardPage(parent),
     m_isValid(false)
 {
-    setTitle(tr("Enter class name"));
+    setTitle(tr("Enter Class Name"));
     setSubTitle(tr("The header and source file names will be derived from the class name"));
 
     m_newClassWidget = new Utils::NewClassWidget;
@@ -133,12 +133,13 @@ void ClassNamePage::slotValidChanged()
 }
 
 CppClassWizardDialog::CppClassWizardDialog(QWidget *parent) :
-    QWizard(parent),
+    Utils::Wizard(parent),
     m_classNamePage(new ClassNamePage(this))
 {
     Core::BaseFileWizard::setupWizard(this);
     setWindowTitle(tr("C++ Class Wizard"));
-    addPage(m_classNamePage);
+    const int classNameId = addPage(m_classNamePage);
+    wizardProgress()->item(classNameId)->setTitle(tr("Details"));
 }
 
 void CppClassWizardDialog::setPath(const QString &path)
@@ -183,7 +184,7 @@ QWizard *CppClassWizard::createWizardDialog(QWidget *parent,
 {
     CppClassWizardDialog *wizard = new CppClassWizardDialog(parent);
     foreach (QWizardPage *p, extensionPages)
-        wizard->addPage(p);
+        BaseFileWizard::applyExtensionPageShortTitle(wizard, wizard->addPage(p));
     wizard->setPath(defaultPath);
     return wizard;
 }
diff --git a/src/plugins/cppeditor/cppclasswizard.h b/src/plugins/cppeditor/cppclasswizard.h
index 1d61508a4a0fef9b2a66915a017f6060f99f49b9..98c11019ea30efc90998b6451dfd2e6d9e77d129 100644
--- a/src/plugins/cppeditor/cppclasswizard.h
+++ b/src/plugins/cppeditor/cppclasswizard.h
@@ -31,10 +31,10 @@
 #define CPPCLASSWIZARD_H
 
 #include <coreplugin/basefilewizard.h>
+#include <utils/wizard.h>
 
 #include <QtCore/QStringList>
 #include <QtGui/QWizardPage>
-#include <QtGui/QWizard>
 
 namespace Utils {
 
@@ -77,7 +77,7 @@ struct CppClassWizardParameters
     int classType;
 };
 
-class CppClassWizardDialog : public QWizard
+class CppClassWizardDialog : public Utils::Wizard
 {
     Q_OBJECT
     Q_DISABLE_COPY(CppClassWizardDialog)
diff --git a/src/plugins/cvs/checkoutwizardpage.cpp b/src/plugins/cvs/checkoutwizardpage.cpp
index 92929848b46aef002d422c0ab79ae391ef5fa674..12fe66d00215ac0c3b140300d925405fafb56ddc 100644
--- a/src/plugins/cvs/checkoutwizardpage.cpp
+++ b/src/plugins/cvs/checkoutwizardpage.cpp
@@ -35,6 +35,7 @@ namespace Internal {
 CheckoutWizardPage::CheckoutWizardPage(QWidget *parent) :
     VCSBase::BaseCheckoutWizardPage(parent)
 {
+    setTitle(tr("Location"));
     setSubTitle(tr("Specify repository and path."));
     setRepositoryLabel(tr("Repository:"));
     setDirectoryVisible(false);
diff --git a/src/plugins/designer/cpp/formclasswizarddialog.cpp b/src/plugins/designer/cpp/formclasswizarddialog.cpp
index 2441aea262d56e27c706d46f4957c7bd6703859c..6452babb53f2435a6c2ab70c80b5d16207449ee7 100644
--- a/src/plugins/designer/cpp/formclasswizarddialog.cpp
+++ b/src/plugins/designer/cpp/formclasswizarddialog.cpp
@@ -32,6 +32,8 @@
 #include "formclasswizardpage.h"
 #include "formclasswizardparameters.h"
 
+#include <coreplugin/basefilewizard.h>
+
 #include <QtCore/QDebug>
 #include <QtGui/QAbstractButton>
 
@@ -43,20 +45,22 @@ namespace Internal {
 // ----------------- FormClassWizardDialog
 FormClassWizardDialog::FormClassWizardDialog(const WizardPageList &extensionPages,
                                              QWidget *parent) :
-    QWizard(parent),
+    Utils::Wizard(parent),
     m_formPage(new FormTemplateWizardPage),
     m_classPage(new FormClassWizardPage)
 {
     setWindowTitle(tr("Qt Designer Form Class"));
 
     setPage(FormPageId, m_formPage);
+    wizardProgress()->item(FormPageId)->setTitle(tr("Form Template"));
     connect(m_formPage, SIGNAL(templateActivated()),
             button(QWizard::NextButton), SLOT(animateClick()));
 
     setPage(ClassPageId, m_classPage);
+    wizardProgress()->item(ClassPageId)->setTitle(tr("Class Details"));
 
     foreach (QWizardPage *p, extensionPages)
-        addPage(p);
+        Core::BaseFileWizard::applyExtensionPageShortTitle(this, addPage(p));
 }
 
 QString FormClassWizardDialog::path() const
diff --git a/src/plugins/designer/cpp/formclasswizarddialog.h b/src/plugins/designer/cpp/formclasswizarddialog.h
index 19b32120ce94a6b48effd1757f697bd966d5edbb..9a3c06c4814d7c3151e0b0ecce9f4219d56f9837 100644
--- a/src/plugins/designer/cpp/formclasswizarddialog.h
+++ b/src/plugins/designer/cpp/formclasswizarddialog.h
@@ -30,7 +30,7 @@
 #ifndef FORMCLASSWIZARDDIALOG_H
 #define FORMCLASSWIZARDDIALOG_H
 
-#include <QtGui/QWizard>
+#include <utils/wizard.h>
 
 namespace Designer {
 
@@ -42,7 +42,7 @@ namespace Internal {
 class FormClassWizardPage;
 class FormTemplateWizardPage;
 
-class FormClassWizardDialog : public QWizard
+class FormClassWizardDialog : public Utils::Wizard
 {
     Q_DISABLE_COPY(FormClassWizardDialog)
     Q_OBJECT
diff --git a/src/plugins/designer/cpp/formclasswizardpage.ui b/src/plugins/designer/cpp/formclasswizardpage.ui
index 605406993dacd1970f9b02097364b1f6464d3ce2..d46c4e83c6845037e5da4808bab9a3b20a1ef4b4 100644
--- a/src/plugins/designer/cpp/formclasswizardpage.ui
+++ b/src/plugins/designer/cpp/formclasswizardpage.ui
@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="title">
-   <string>Choose a class name</string>
+   <string>Choose a Class Name</string>
   </property>
   <layout class="QGridLayout" name="gridLayout">
    <item row="0" column="0">
@@ -21,7 +21,7 @@
      </property>
      <layout class="QVBoxLayout" name="verticalLayout_2">
       <item>
-       <widget class="Utils::NewClassWidget" name="newClassWidget"/>
+       <widget class="Utils::NewClassWidget" name="newClassWidget" native="true"/>
       </item>
      </layout>
     </widget>
@@ -62,7 +62,4 @@
  </customwidgets>
  <resources/>
  <connections/>
- <buttongroups>
-  <buttongroup name="buttonGroup"/>
- </buttongroups>
 </ui>
diff --git a/src/plugins/designer/formtemplatewizardpage.cpp b/src/plugins/designer/formtemplatewizardpage.cpp
index 45713ea2ad5ebf24de504e60a23a14997f1be2ac..db7787ab22aff9963744162dd764c38dac7d4d03 100644
--- a/src/plugins/designer/formtemplatewizardpage.cpp
+++ b/src/plugins/designer/formtemplatewizardpage.cpp
@@ -59,7 +59,7 @@ FormTemplateWizardPage::FormTemplateWizardPage(QWidget * parent) :
     m_newFormWidget(QDesignerNewFormWidgetInterface::createNewFormWidget(FormEditorW::instance()->designerEditor())),
     m_templateSelected(m_newFormWidget->hasCurrentTemplate())
 {
-    setTitle(tr("Choose a form template"));
+    setTitle(tr("Choose a Form Template"));
     QVBoxLayout *layout = new QVBoxLayout;
 
     connect(m_newFormWidget, SIGNAL(currentTemplateChanged(bool)),
diff --git a/src/plugins/designer/formwizarddialog.cpp b/src/plugins/designer/formwizarddialog.cpp
index f29dc2225151fc26c2df41cdd61504b3519fab3a..60869257208112022bb58acf64466d8e21d42e30 100644
--- a/src/plugins/designer/formwizarddialog.cpp
+++ b/src/plugins/designer/formwizarddialog.cpp
@@ -48,7 +48,7 @@ namespace Internal {
 // ----------------- FormWizardDialog
 FormWizardDialog::FormWizardDialog(const WizardPageList &extensionPages,
                                    QWidget *parent)
-  : QWizard(parent),
+    : Utils::Wizard(parent),
     m_formPage(new FormTemplateWizardPage)
 {
     init(extensionPages);
@@ -59,11 +59,15 @@ void FormWizardDialog::init(const WizardPageList &extensionPages)
     Core::BaseFileWizard::setupWizard(this);
     setWindowTitle(tr("Qt Designer Form"));
     setPage(FormPageId, m_formPage);
+    wizardProgress()->item(FormPageId)->setTitle(tr("Form Template"));
 
     if (!extensionPages.empty()) {
         int id = FirstExtensionPageId;
-        foreach (QWizardPage *p, extensionPages)
-            setPage(id++, p);
+        foreach (QWizardPage *p, extensionPages) {
+            setPage(id, p);
+            Core::BaseFileWizard::applyExtensionPageShortTitle(this, id);
+            id++;
+        }
     }
 }
 
@@ -82,6 +86,7 @@ FormFileWizardDialog::FormFileWizardDialog(const WizardPageList &extensionPages,
     m_filePage(new Utils::FileWizardPage)
 {
     setPage(FilePageId, m_filePage);
+    wizardProgress()->item(FilePageId)->setTitle(tr("Location"));
     connect(m_filePage, SIGNAL(activated()),
             button(QWizard::FinishButton), SLOT(animateClick()));
 
diff --git a/src/plugins/designer/formwizarddialog.h b/src/plugins/designer/formwizarddialog.h
index 32e504c3e4a899f42d88e4ec9b93360eae43e7c9..89eb8181800f0a5cdd73fd03772c6a1a765b0fe7 100644
--- a/src/plugins/designer/formwizarddialog.h
+++ b/src/plugins/designer/formwizarddialog.h
@@ -30,7 +30,7 @@
 #ifndef FORMWIZARDDIALOG_H
 #define FORMWIZARDDIALOG_H
 
-#include <QtGui/QWizard>
+#include <utils/wizard.h>
 
 namespace Utils {
     class FileWizardPage;
@@ -44,7 +44,7 @@ class FormTemplateWizardPage;
 // Single-Page Wizard for new forms offering all types known to Qt Designer.
 // To be used for Mode "CreateNewEditor" [not currently used]
 
-class FormWizardDialog : public QWizard
+class FormWizardDialog : public Utils::Wizard
 {
     Q_DISABLE_COPY(FormWizardDialog)
     Q_OBJECT
diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.cpp b/src/plugins/genericprojectmanager/genericprojectwizard.cpp
index a69503b4f58ef550a5d27213794166edad848309..3551523e88679d1fc107d951c8e3576884988fbf 100644
--- a/src/plugins/genericprojectmanager/genericprojectwizard.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectwizard.cpp
@@ -51,7 +51,7 @@ using namespace Utils;
 //////////////////////////////////////////////////////////////////////////////
 
 GenericProjectWizardDialog::GenericProjectWizardDialog(QWidget *parent)
-    : QWizard(parent)
+    : Utils::Wizard(parent)
 {
     setWindowTitle(tr("Import Existing Project"));
 
@@ -61,7 +61,8 @@ GenericProjectWizardDialog::GenericProjectWizardDialog(QWidget *parent)
     m_firstPage->setFileNameLabel(tr("Project name:"));
     m_firstPage->setPathLabel(tr("Location:"));
 
-    addPage(m_firstPage);
+    const int firstPageId = addPage(m_firstPage);
+    wizardProgress()->item(firstPageId)->setTitle(tr("Location"));
 }
 
 GenericProjectWizardDialog::~GenericProjectWizardDialog()
@@ -111,7 +112,7 @@ QWizard *GenericProjectWizard::createWizardDialog(QWidget *parent,
     wizard->setPath(defaultPath);
 
     foreach (QWizardPage *p, extensionPages)
-        wizard->addPage(p);
+        BaseFileWizard::applyExtensionPageShortTitle(wizard, wizard->addPage(p));
 
     return wizard;
 }
diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.h b/src/plugins/genericprojectmanager/genericprojectwizard.h
index 1744251f37ab89aba2c77be32769460965161a3b..833d89ee1f27dcefa467bb68a07eeba5fb2bd138 100644
--- a/src/plugins/genericprojectmanager/genericprojectwizard.h
+++ b/src/plugins/genericprojectmanager/genericprojectwizard.h
@@ -31,8 +31,7 @@
 #define GENERICPROJECTWIZARD_H
 
 #include <coreplugin/basefilewizard.h>
-
-#include <QtGui/QWizard>
+#include <utils/wizard.h>
 
 QT_BEGIN_NAMESPACE
 class QFileInfo;
@@ -48,7 +47,7 @@ class FileWizardPage;
 namespace GenericProjectManager {
 namespace Internal {
 
-class GenericProjectWizardDialog : public QWizard
+    class GenericProjectWizardDialog : public Utils::Wizard
 {
     Q_OBJECT
 
diff --git a/src/plugins/git/clonewizardpage.cpp b/src/plugins/git/clonewizardpage.cpp
index 057b58b067ba3b53d810ce795b9face95f299b0c..e2e3fdeb8b8bcd2eb0bf2efaced34f24c96b19a3 100644
--- a/src/plugins/git/clonewizardpage.cpp
+++ b/src/plugins/git/clonewizardpage.cpp
@@ -55,6 +55,7 @@ CloneWizardPage::CloneWizardPage(QWidget *parent) :
     VCSBase::BaseCheckoutWizardPage(parent),
     d(new CloneWizardPagePrivate)
 {
+    setTitle(tr("Location"));
     setSubTitle(tr("Specify repository URL, checkout directory and path."));
     setRepositoryLabel(tr("Clone URL:"));
 }
diff --git a/src/plugins/git/gitorious/gitorioushostwizardpage.cpp b/src/plugins/git/gitorious/gitorioushostwizardpage.cpp
index c298782c1c3b15b2241d34bda1f95a20b035ec6a..d35a68c72e59ceda256c9bc355dc9ce099235e83 100644
--- a/src/plugins/git/gitorious/gitorioushostwizardpage.cpp
+++ b/src/plugins/git/gitorious/gitorioushostwizardpage.cpp
@@ -73,6 +73,7 @@ GitoriousHostWizardPage::GitoriousHostWizardPage(QWidget *parent) :
     QVBoxLayout *lt = new QVBoxLayout;
     lt->addWidget(m_widget);
     setLayout(lt);
+    setTitle(tr("Host"));
     setSubTitle(tr("Select a host."));
 }
 
diff --git a/src/plugins/git/gitorious/gitoriousprojectwizardpage.cpp b/src/plugins/git/gitorious/gitoriousprojectwizardpage.cpp
index 08d3468c0609d21ce93babb17ea0c9ed15795370..18f306a501bd5e2ab6af5f643ec637ed44b86d6d 100644
--- a/src/plugins/git/gitorious/gitoriousprojectwizardpage.cpp
+++ b/src/plugins/git/gitorious/gitoriousprojectwizardpage.cpp
@@ -50,6 +50,7 @@ GitoriousProjectWizardPage::GitoriousProjectWizardPage(const GitoriousHostWizard
     QVBoxLayout *lt = new QVBoxLayout;
     lt->addWidget(m_stackedWidget);
     setLayout(lt);
+    setTitle(tr("Project"));
 }
 
 static inline QString msgChooseProject(const QString &h)
diff --git a/src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp b/src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp
index 47302b5e80baf8c5e1a97378e05e2ff2b78e621e..e06e74f28baa3cf9efb689eca1982646c03ebd32 100644
--- a/src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp
+++ b/src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp
@@ -97,6 +97,8 @@ GitoriousRepositoryWizardPage::GitoriousRepositoryWizardPage(const GitoriousProj
     ui->repositoryTreeView->setSelectionMode(QAbstractItemView::SingleSelection);
     connect(ui->repositoryTreeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
             this, SLOT(slotCurrentChanged(QModelIndex,QModelIndex)));
+
+    setTitle(tr("Repository"));
 }
 
 GitoriousRepositoryWizardPage::~GitoriousRepositoryWizardPage()
diff --git a/src/plugins/mercurial/clonewizardpage.cpp b/src/plugins/mercurial/clonewizardpage.cpp
index c41029926626122622f983cfcf56d70b5d8ce449..ed8f668736da8535a4a3ea64229d68fbf5b9c072 100644
--- a/src/plugins/mercurial/clonewizardpage.cpp
+++ b/src/plugins/mercurial/clonewizardpage.cpp
@@ -34,6 +34,8 @@ using namespace Mercurial::Internal;
 CloneWizardPage::CloneWizardPage(QWidget *parent)
         : VCSBase::BaseCheckoutWizardPage(parent)
 {
+    setTitle(tr("Location"));
+    setSubTitle(tr("Specify repository URL, checkout directory and path."));
     setRepositoryLabel(tr("Clone URL:"));
 }
 
diff --git a/src/plugins/projectexplorer/baseprojectwizarddialog.cpp b/src/plugins/projectexplorer/baseprojectwizarddialog.cpp
index a23240547093430dfb86e954bea122f9fcdda23c..dfb3ff6b50c47d7018b4cabb131bd78be432f014 100644
--- a/src/plugins/projectexplorer/baseprojectwizarddialog.cpp
+++ b/src/plugins/projectexplorer/baseprojectwizarddialog.cpp
@@ -56,7 +56,7 @@ BaseProjectWizardDialogPrivate::BaseProjectWizardDialogPrivate(Utils::ProjectInt
 }
 
 BaseProjectWizardDialog::BaseProjectWizardDialog(QWidget *parent) :
-    QWizard(parent),
+    Utils::Wizard(parent),
     d(new BaseProjectWizardDialogPrivate(new Utils::ProjectIntroPage))
 {
     init();
@@ -65,7 +65,7 @@ BaseProjectWizardDialog::BaseProjectWizardDialog(QWidget *parent) :
 BaseProjectWizardDialog::BaseProjectWizardDialog(Utils::ProjectIntroPage *introPage,
                                                  int introId,
                                                  QWidget *parent) :
-    QWizard(parent),
+    Utils::Wizard(parent),
     d(new BaseProjectWizardDialogPrivate(introPage, introId))
 {
     init();
@@ -80,6 +80,7 @@ void BaseProjectWizardDialog::init()
         d->introPageId = d->desiredIntroPageId;
         setPage(d->desiredIntroPageId, d->introPage);
     }
+    wizardProgress()->item(d->introPageId)->setTitle(tr("Location"));
     connect(this, SIGNAL(accepted()), this, SLOT(slotAccepted()));
     connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotBaseCurrentIdChanged(int)));
 }
diff --git a/src/plugins/projectexplorer/baseprojectwizarddialog.h b/src/plugins/projectexplorer/baseprojectwizarddialog.h
index a0b669644ae7026eb3b5f0b0624ce6c11196a0ce..32f47d96e35bf999f2916d1058f577b70c611dd8 100644
--- a/src/plugins/projectexplorer/baseprojectwizarddialog.h
+++ b/src/plugins/projectexplorer/baseprojectwizarddialog.h
@@ -31,6 +31,7 @@
 #define BASEPROJECTWIZARDDIALOG_H
 
 #include "projectexplorer_export.h"
+#include <utils/wizard.h>
 
 #include <QtGui/QWizard>
 
@@ -46,7 +47,7 @@ struct BaseProjectWizardDialogPrivate;
  * page and takes care of setting the directory as default
  * should the user wish to do that. */
 
-class PROJECTEXPLORER_EXPORT BaseProjectWizardDialog : public QWizard
+class PROJECTEXPLORER_EXPORT BaseProjectWizardDialog : public Utils::Wizard
 {
     Q_OBJECT
 
diff --git a/src/plugins/projectexplorer/customwizard/customwizard.cpp b/src/plugins/projectexplorer/customwizard/customwizard.cpp
index 87dfbb2f2b1e60258726ca0ffdcbbb617d3e1fb9..ae40298001934a6a107192fa817456bbec7fcefe 100644
--- a/src/plugins/projectexplorer/customwizard/customwizard.cpp
+++ b/src/plugins/projectexplorer/customwizard/customwizard.cpp
@@ -43,6 +43,7 @@
 #include <QtCore/QMap>
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
+#include <QtCore/QCoreApplication>
 
 static const char templatePathC[] = "templates/wizards";
 static const char configFileC[] = "wizard.xml";
@@ -87,22 +88,25 @@ void CustomWizard::setParameters(const CustomWizardParametersPtr &p)
 }
 
 // Add a wizard page with an id, visibly warn if something goes wrong.
-static inline void addWizardPage(QWizard *w, QWizardPage *p, int id)
+static inline void addWizardPage(Utils::Wizard *w, QWizardPage *p, int id)
 {
+    int addedPageId = 0;
     if (id == -1) {
-        w->addPage(p);
+        addedPageId = w->addPage(p);
     } else {
         if (w->pageIds().contains(id)) {
             qWarning("Page %d already present in custom wizard dialog, defaulting to add.", id);
-            w->addPage(p);
+            addedPageId = w->addPage(p);
         } else {
             w->setPage(id, p);
+            addedPageId = id;
         }
     }
+    w->wizardProgress()->item(addedPageId)->setTitle(QCoreApplication::translate("ProjectExplorer::CustomWizard", "Details", "Default short title for custom wizard page to be shown in the progress pane of the wizard."));
 }
 
 // Initialize a wizard with a custom file page.
-void CustomWizard::initWizardDialog(QWizard *wizard, const QString &defaultPath,
+void CustomWizard::initWizardDialog(Utils::Wizard *wizard, const QString &defaultPath,
                                     const WizardPageList &extensionPages) const
 {
     QTC_ASSERT(!parameters().isNull(), return);
@@ -114,7 +118,7 @@ void CustomWizard::initWizardDialog(QWizard *wizard, const QString &defaultPath,
     if (!parameters()->fieldPageTitle.isEmpty())
         customPage->setTitle(parameters()->fieldPageTitle);
     foreach(QWizardPage *ep, extensionPages)
-        wizard->addPage(ep);
+        BaseFileWizard::applyExtensionPageShortTitle(wizard, wizard->addPage(ep));
     Core::BaseFileWizard::setupWizard(wizard);
     if (CustomWizardPrivate::verbose)
         qDebug() << "initWizardDialog" << wizard << wizard->pageIds();
@@ -125,7 +129,7 @@ QWizard *CustomWizard::createWizardDialog(QWidget *parent,
                                                  const WizardPageList &extensionPages) const
 {
     QTC_ASSERT(!d->m_parameters.isNull(), return 0);
-    QWizard *wizard = new QWizard(parent);
+    Utils::Wizard *wizard = new Utils::Wizard(parent);
     initWizardDialog(wizard, defaultPath, extensionPages);
     return wizard;
 }
@@ -373,6 +377,9 @@ void CustomProjectWizard::initProjectWizardDialog(BaseProjectWizardDialog *w,
     const CustomWizardContextPtr ctx = context();
     ctx->reset();
 
+    if (!displayName().isEmpty())
+        w->setWindowTitle(displayName());
+
     if (!pa->fields.isEmpty()) {
         Internal::CustomWizardFieldPage *cp = new Internal::CustomWizardFieldPage(ctx, pa->fields);
         addWizardPage(w, cp, parameters()->firstPageId);
@@ -380,7 +387,7 @@ void CustomProjectWizard::initProjectWizardDialog(BaseProjectWizardDialog *w,
             cp->setTitle(pa->fieldPageTitle);
     }
     foreach(QWizardPage *ep, extensionPages)
-        w->addPage(ep);
+        BaseFileWizard::applyExtensionPageShortTitle(w, w->addPage(ep));
     w->setPath(defaultPath);
     w->setProjectName(BaseProjectWizardDialog::uniqueProjectName(defaultPath));
 
diff --git a/src/plugins/projectexplorer/customwizard/customwizard.h b/src/plugins/projectexplorer/customwizard/customwizard.h
index 842afd85f51e064dec10a0cf3579bf02e13c44f6..522c31d580e3ccb3b3182e15955713d6e1fe1797 100644
--- a/src/plugins/projectexplorer/customwizard/customwizard.h
+++ b/src/plugins/projectexplorer/customwizard/customwizard.h
@@ -42,6 +42,10 @@ QT_BEGIN_NAMESPACE
 class QDir;
 QT_END_NAMESPACE
 
+namespace Utils {
+    class Wizard;
+}
+
 namespace ProjectExplorer {
 class CustomWizard;
 struct CustomWizardPrivate;
@@ -108,7 +112,7 @@ protected:
     typedef QSharedPointer<Internal::CustomWizardParameters> CustomWizardParametersPtr;
     typedef QSharedPointer<Internal::CustomWizardContext> CustomWizardContextPtr;
 
-    void initWizardDialog(QWizard *w, const QString &defaultPath,
+    void initWizardDialog(Utils::Wizard *w, const QString &defaultPath,
                           const WizardPageList &extensionPages) const;
 
     // generate files in path
diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp
index 20709529b3c6b4f41f0ba01eee4919cd6b8b360d..34fbf26308d8fbf4903806c101de348fcc8b703b 100644
--- a/src/plugins/projectexplorer/projectwizardpage.cpp
+++ b/src/plugins/projectexplorer/projectwizardpage.cpp
@@ -42,6 +42,7 @@ ProjectWizardPage::ProjectWizardPage(QWidget *parent) :
     m_ui->setupUi(this);
     connect(m_ui->projectComboBox, SIGNAL(currentIndexChanged(int)),
             this, SLOT(slotProjectChanged(int)));
+    setProperty("shortTitle", tr("Summary"));
 }
 
 ProjectWizardPage::~ProjectWizardPage()
diff --git a/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp b/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp
index 8ba918c7fe7eb6c28b66807029a227bc65353de6..8719ab08dbd96a8e01f6269cc1ff6470672d7693 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp
@@ -79,7 +79,7 @@ QWizard *QmlProjectApplicationWizard::createWizardDialog(QWidget *parent,
     wizard->setProjectName(QmlProjectApplicationWizardDialog::uniqueProjectName(defaultPath));
 
     foreach (QWizardPage *p, extensionPages)
-        wizard->addPage(p);
+        BaseFileWizard::applyExtensionPageShortTitle(wizard, wizard->addPage(p));
 
     return wizard;
 }
diff --git a/src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp b/src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp
index 8b927dc744b66cac8a3f8f15f17aa3d11305a229..e1527b847d5f2f95e4445a72f2c4233045234d05 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp
@@ -55,17 +55,18 @@ namespace Internal {
 //////////////////////////////////////////////////////////////////////////////
 
 QmlProjectImportWizardDialog::QmlProjectImportWizardDialog(QWidget *parent)
-    : QWizard(parent)
+    : Utils::Wizard(parent)
 {
     setWindowTitle(tr("Import Existing Qt QML Directory"));
 
     // first page
     m_firstPage = new FileWizardPage;
-    m_firstPage->setTitle(tr("QML Project"));
+    m_firstPage->setTitle(tr("Project Name and Location"));
     m_firstPage->setFileNameLabel(tr("Project name:"));
     m_firstPage->setPathLabel(tr("Location:"));
 
-    addPage(m_firstPage);
+    const int firstPageId = addPage(m_firstPage);
+    wizardProgress()->item(firstPageId)->setTitle(tr("Location"));
 }
 
 QmlProjectImportWizardDialog::~QmlProjectImportWizardDialog()
@@ -120,7 +121,7 @@ QWizard *QmlProjectImportWizard::createWizardDialog(QWidget *parent,
     wizard->setPath(defaultPath);
 
     foreach (QWizardPage *p, extensionPages)
-        wizard->addPage(p);
+        BaseFileWizard::applyExtensionPageShortTitle(wizard, wizard->addPage(p));
 
     return wizard;
 }
diff --git a/src/plugins/qmlprojectmanager/qmlprojectimportwizard.h b/src/plugins/qmlprojectmanager/qmlprojectimportwizard.h
index d2d5d387923a13b912fe8388a1ebfe05e8c99120..bc1d22e11fa7aed9777651acad3bf608aff9c13d 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectimportwizard.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectimportwizard.h
@@ -31,8 +31,7 @@
 #define QMLPROJECTIMPORTWIZARD_H
 
 #include <coreplugin/basefilewizard.h>
-
-#include <QtGui/QWizard>
+#include <utils/wizard.h>
 
 QT_BEGIN_NAMESPACE
 class QDir;
@@ -48,7 +47,7 @@ class FileWizardPage;
 namespace QmlProjectManager {
 namespace Internal {
 
-class QmlProjectImportWizardDialog : public QWizard
+class QmlProjectImportWizardDialog : public Utils::Wizard
 {
     Q_OBJECT
 
diff --git a/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetwizarddialog.cpp b/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetwizarddialog.cpp
index 1870531b7b699fe0ab4a6136aa545b8432fce5a7..3e4ee1c65a1d77a375d45e54956ea9013c9241e9 100644
--- a/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetwizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/customwidgetwizard/customwidgetwizarddialog.cpp
@@ -55,9 +55,11 @@ CustomWidgetWizardDialog::CustomWidgetWizardDialog(const QString &templateName,
     addTargetSetupPage(BaseQt4ProjectWizardDialog::desktopTarget());
     m_widgetPageId = addPage(m_widgetsPage);
     m_pluginPageId = addPage(m_pluginPage);
+    wizardProgress()->item(m_widgetPageId)->setTitle(tr("Custom Widgets"));
+    wizardProgress()->item(m_pluginPageId)->setTitle(tr("Plugin Details"));
 
     foreach (QWizardPage *p, extensionPages)
-        addPage(p);
+        Core::BaseFileWizard::applyExtensionPageShortTitle(this, addPage(p));
     connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotCurrentIdChanged(int)));
 }
 
diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp
index 680da0f0d180a47d00b5c5020a7e3d4f9ead793a..f82c3203e539834f61e8ac38568daeefe1babf4f 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.cpp
+++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp
@@ -48,7 +48,7 @@ using namespace Qt4ProjectManager;
 using namespace Qt4ProjectManager::Internal;
 
 ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::WindowFlags flags)
-    : QWizard(parent, flags), m_project(project), m_targetSetupPage(0)
+    : Utils::Wizard(parent, flags), m_project(project), m_targetSetupPage(0)
 {
     Q_ASSERT(project);
 
@@ -105,7 +105,8 @@ void ProjectLoadWizard::setupTargetPage()
     m_targetSetupPage->setImportDirectoryBrowsingEnabled(true);
     m_targetSetupPage->setImportDirectoryBrowsingLocation(m_project->projectDirectory());
 
-    addPage(m_targetSetupPage);
+    const int targetPageId = addPage(m_targetSetupPage);
+    wizardProgress()->item(targetPageId)->setTitle(tr("Targets"));
 }
 
 void ProjectLoadWizard::applySettings()
diff --git a/src/plugins/qt4projectmanager/projectloadwizard.h b/src/plugins/qt4projectmanager/projectloadwizard.h
index 1a5aef422cfde29ebe991e4d1ea448448014e47a..12376095ca07f26b4c3ae9984f09099ad206e8a8 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.h
+++ b/src/plugins/qt4projectmanager/projectloadwizard.h
@@ -31,7 +31,8 @@
 #define PROJECTLOADWIZARD_H
 
 #include "qtversionmanager.h"
-#include "wizards/targetsetuppage.h"
+#include <wizards/targetsetuppage.h>
+#include <utils/wizard.h>
 
 namespace Qt4ProjectManager {
 class Qt4Project;
@@ -40,7 +41,7 @@ namespace Internal {
 
 class TargetsPage;
 
-class ProjectLoadWizard : public QWizard
+class ProjectLoadWizard : public Utils::Wizard
 {
     Q_OBJECT
 public:
diff --git a/src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp
index fc59468d94b8a6aaccbf257fe94f10bca5a8cdec..e3a03435dfb1a284cf8dcbe5db113eaa0a4f7c90 100644
--- a/src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp
@@ -29,6 +29,7 @@
 
 #include "consoleappwizarddialog.h"
 #include "consoleappwizard.h"
+#include <coreplugin/basefilewizard.h>
 
 #include <QtCore/QDebug>
 
@@ -55,7 +56,7 @@ ConsoleAppWizardDialog::ConsoleAppWizardDialog(const QString &templateName,
     addTargetSetupPage();
 
     foreach (QWizardPage *p, extensionPages)
-        addPage(p);
+        Core::BaseFileWizard::applyExtensionPageShortTitle(this, addPage(p));
 }
 
 QtProjectParameters ConsoleAppWizardDialog::parameters() const
diff --git a/src/plugins/qt4projectmanager/wizards/emptyprojectwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/emptyprojectwizarddialog.cpp
index e572120cf3defb6544744f7c0ad09eb8a0fd5b6e..046cd70e2963a6bb2e55682209d111df74ca89b8 100644
--- a/src/plugins/qt4projectmanager/wizards/emptyprojectwizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/emptyprojectwizarddialog.cpp
@@ -48,7 +48,7 @@ EmptyProjectWizardDialog::EmptyProjectWizardDialog(const QString &templateName,
     addTargetSetupPage();
 
     foreach (QWizardPage *p, extensionPages)
-        addPage(p);
+        Core::BaseFileWizard::applyExtensionPageShortTitle(this, addPage(p));
 }
 
 QtProjectParameters EmptyProjectWizardDialog::parameters() const
diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
index 7cbb6ed42f5fe88ad65a2590782d7e4bc4dc285c..cdba39733516e04dfa05c8402069452f8fe991c8 100644
--- a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
@@ -67,10 +67,11 @@ GuiAppWizardDialog::GuiAppWizardDialog(const QString &templateName,
 
     m_filesPage->setFormInputCheckable(true);
     m_filesPage->setClassTypeComboVisible(false);
-    addPage(m_filesPage);
+    const int filesPageId = addPage(m_filesPage);
+    wizardProgress()->item(filesPageId)->setTitle(tr("Details"));
 
     foreach (QWizardPage *p, extensionPages)
-        addPage(p);
+        Core::BaseFileWizard::applyExtensionPageShortTitle(this, addPage(p));
 }
 
 void GuiAppWizardDialog::setBaseClasses(const QStringList &baseClasses)
diff --git a/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp
index dad6cff56ad847a506ec8bdbe8f7b47c80919573..ea4e21605678282e099814e692b087c3da5ee9a7 100644
--- a/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp
@@ -154,11 +154,12 @@ LibraryWizardDialog::LibraryWizardDialog(const QString &templateName,
     m_filesPage->setClassTypeComboVisible(false);
 
     m_filesPageId = addPage(m_filesPage);
+    wizardProgress()->item(m_filesPageId)->setTitle(tr("Details"));
 
     connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotCurrentIdChanged(int)));
 
     foreach (QWizardPage *p, extensionPages)
-        addPage(p);
+        Core::BaseFileWizard::applyExtensionPageShortTitle(this, addPage(p));
 }
 
 void LibraryWizardDialog::setSuffixes(const QString &header, const QString &source,  const QString &form)
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
index 07d768dbf6e3e2a83248df7b7188d5cc154445a7..f292c38fea64387d14c785cbdb72ce9ec22bfb7a 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
@@ -218,9 +218,12 @@ int BaseQt4ProjectWizardDialog::addModulesPage(int id)
         return -1;
     if (id >= 0) {
         setPage(id, m_modulesPage);
+        wizardProgress()->item(id)->setTitle(tr("Modules"));
         return id;
     }
-    return addPage(m_modulesPage);
+    const int newId = addPage(m_modulesPage);
+    wizardProgress()->item(newId)->setTitle(tr("Modules"));
+    return newId;
 }
 
 int BaseQt4ProjectWizardDialog::addTargetSetupPage(QSet<QString> targets, bool mobile, int id)
@@ -242,6 +245,7 @@ int BaseQt4ProjectWizardDialog::addTargetSetupPage(QSet<QString> targets, bool m
         setPage(id, m_targetSetupPage);
     else
         id = addPage(m_targetSetupPage);
+    wizardProgress()->item(id)->setTitle(tr("Qt Versions"));
 
     return id;
 }
diff --git a/src/plugins/qt4projectmanager/wizards/testwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/testwizarddialog.cpp
index 2f4969a1767e1194238f23c920871bf986c46a68..f58e6b2fd958fff8b210cc14c48ee0b00d35792e 100644
--- a/src/plugins/qt4projectmanager/wizards/testwizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/testwizarddialog.cpp
@@ -61,10 +61,11 @@ TestWizardDialog::TestWizardDialog(const QString &templateName,
     setWindowTitle(templateName);
     setSelectedModules(QLatin1String("core testlib"), true);
     addTargetSetupPage();
-    m_testPageId = addPage(m_testPage);
     m_modulesPageId = addModulesPage();
+    m_testPageId = addPage(m_testPage);
+    wizardProgress()->item(m_testPageId)->setTitle(tr("Details"));
     foreach (QWizardPage *p, extensionPages)
-        addPage(p);
+        Core::BaseFileWizard::applyExtensionPageShortTitle(this, addPage(p));
     connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotCurrentIdChanged(int)));
 }
 
diff --git a/src/plugins/qt4projectmanager/wizards/testwizardpage.cpp b/src/plugins/qt4projectmanager/wizards/testwizardpage.cpp
index dc48848cd85433b15cc84309c6b880a72bcff9be..62df28bb6f5cedf401067ee3d30b5e57ce4b5759 100644
--- a/src/plugins/qt4projectmanager/wizards/testwizardpage.cpp
+++ b/src/plugins/qt4projectmanager/wizards/testwizardpage.cpp
@@ -43,6 +43,7 @@ TestWizardPage::TestWizardPage(QWidget *parent) :
     m_fileNameEdited(false),
     m_valid(false)
 {
+    setTitle(tr("Test Class Information"));
     ui->setupUi(this);
     ui->testSlotLineEdit->setText(QLatin1String("testCase1"));
     ui->testClassLineEdit->setLowerCaseFileName(m_lowerCaseFileNames);
diff --git a/src/plugins/qt4projectmanager/wizards/testwizardpage.ui b/src/plugins/qt4projectmanager/wizards/testwizardpage.ui
index cd085f5c057381c973b923ca32f86f3e2a5e0220..bf2506aed08e612874ce6c04b8f70efbdd016a55 100644
--- a/src/plugins/qt4projectmanager/wizards/testwizardpage.ui
+++ b/src/plugins/qt4projectmanager/wizards/testwizardpage.ui
@@ -14,6 +14,32 @@
    <string>WizardPage</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="descriptionLabel">
+     <property name="text">
+      <string>Specify basic information about the test class for which you want to generate skeleton source code file.</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>0</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
    <item>
     <layout class="QFormLayout" name="formLayout">
      <property name="fieldGrowthPolicy">
@@ -59,7 +85,7 @@
      </item>
      <item row="6" column="1">
       <widget class="Utils::FileNameValidatingLineEdit" name="fileLineEdit">
-       <property name="allowDirectories">
+       <property name="allowDirectories" stdset="0">
         <bool>true</bool>
        </property>
       </widget>
diff --git a/src/plugins/subversion/checkoutwizardpage.cpp b/src/plugins/subversion/checkoutwizardpage.cpp
index a9e27a9f3e948300caee730415c4dad1758ffc13..a97f826d246e685a3c28f9f42171a60cde221fe9 100644
--- a/src/plugins/subversion/checkoutwizardpage.cpp
+++ b/src/plugins/subversion/checkoutwizardpage.cpp
@@ -35,7 +35,8 @@ namespace Internal {
 CheckoutWizardPage::CheckoutWizardPage(QWidget *parent) :
     VCSBase::BaseCheckoutWizardPage(parent)
 {
-    setSubTitle(tr("Specify repository, checkout directory and path."));
+    setTitle(tr("Location"));
+    setSubTitle(tr("Specify repository URL, checkout directory and path."));
     setRepositoryLabel(tr("Repository:"));
 }
 
diff --git a/src/plugins/vcsbase/checkoutprogresswizardpage.cpp b/src/plugins/vcsbase/checkoutprogresswizardpage.cpp
index 471ce74dcd06fa4718721cab420c63c870f92b34..a2109c9b1932be16a3c09715c834bd957da1e5e7 100644
--- a/src/plugins/vcsbase/checkoutprogresswizardpage.cpp
+++ b/src/plugins/vcsbase/checkoutprogresswizardpage.cpp
@@ -45,6 +45,7 @@ CheckoutProgressWizardPage::CheckoutProgressWizardPage(QWidget *parent) :
     m_state(Idle)
 {
     ui->setupUi(this);
+    setTitle(tr("Checkout"));
 }
 
 CheckoutProgressWizardPage::~CheckoutProgressWizardPage()
@@ -63,7 +64,8 @@ void CheckoutProgressWizardPage::start(const QSharedPointer<AbstractCheckoutJob>
     connect(job.data(), SIGNAL(succeeded()), this, SLOT(slotSucceeded()));
     QApplication::setOverrideCursor(Qt::WaitCursor);
     ui->logPlainTextEdit->clear();
-    setSubTitle(tr("Checkout started..."));
+    ui->statusLabel->setText(tr("Checkout started..."));
+    ui->statusLabel->setPalette(QPalette());
     m_state = Running;
     // Note: Process jobs can emit failed() right from
     // the start() method on Windows.
@@ -76,7 +78,10 @@ void CheckoutProgressWizardPage::slotFailed(const QString &why)
     if (m_state == Running) {
         m_state = Failed;
         QApplication::restoreOverrideCursor();
-        setSubTitle(tr("Failed."));
+        ui->statusLabel->setText(tr("Failed."));
+        QPalette palette = ui->statusLabel->palette();
+        palette.setColor(QPalette::Active, QPalette::Text, Qt::red);
+        ui->statusLabel->setPalette(palette);
         emit terminated(false);
     }
 }
@@ -86,7 +91,10 @@ void CheckoutProgressWizardPage::slotSucceeded()
     if (m_state == Running) {
         m_state = Succeeded;
         QApplication::restoreOverrideCursor();
-        setSubTitle(tr("Succeeded."));
+        ui->statusLabel->setText(tr("Succeeded."));
+        QPalette palette = ui->statusLabel->palette();
+        palette.setColor(QPalette::Active, QPalette::Text, Qt::green);
+        ui->statusLabel->setPalette(palette);
         emit completeChanged();
         emit terminated(true);
     }
diff --git a/src/plugins/vcsbase/checkoutprogresswizardpage.ui b/src/plugins/vcsbase/checkoutprogresswizardpage.ui
index dc47d3b5c91ea2126eeac556257de2da5740705d..02366375d0e8e93d0b581369bce7f0980577fb73 100644
--- a/src/plugins/vcsbase/checkoutprogresswizardpage.ui
+++ b/src/plugins/vcsbase/checkoutprogresswizardpage.ui
@@ -18,6 +18,13 @@
      </property>
     </widget>
    </item>
+   <item>
+    <widget class="QLabel" name="statusLabel">
+     <property name="text">
+      <string/>
+     </property>
+    </widget>
+   </item>
   </layout>
  </widget>
  <resources/>
diff --git a/src/plugins/vcsbase/checkoutwizarddialog.cpp b/src/plugins/vcsbase/checkoutwizarddialog.cpp
index a153b6772373fa754b1d0385369defedb17ef155..5b534a4996d06ebf639f4533441cea330d8de695 100644
--- a/src/plugins/vcsbase/checkoutwizarddialog.cpp
+++ b/src/plugins/vcsbase/checkoutwizarddialog.cpp
@@ -41,7 +41,7 @@ namespace Internal {
 
 CheckoutWizardDialog::CheckoutWizardDialog(const QList<QWizardPage *> &parameterPages,
                                            QWidget *parent) :
-    QWizard(parent),
+    Utils::Wizard(parent),
     m_progressPage(new CheckoutProgressWizardPage),
     m_progressPageId(-1)
 {
diff --git a/src/plugins/vcsbase/checkoutwizarddialog.h b/src/plugins/vcsbase/checkoutwizarddialog.h
index 025189d806d63b8cfdaab837ffc61d5170642f39..97d029f6ffc18657d77b726529734a77d5413674 100644
--- a/src/plugins/vcsbase/checkoutwizarddialog.h
+++ b/src/plugins/vcsbase/checkoutwizarddialog.h
@@ -32,7 +32,7 @@
 
 #include <QtCore/QSharedPointer>
 #include <QtCore/QList>
-#include <QtGui/QWizard>
+#include <utils/wizard.h>
 
 namespace VCSBase {
 class AbstractCheckoutJob;
@@ -44,7 +44,7 @@ class CheckoutProgressWizardPage;
  * Overwrites reject() to first kill the checkout
  * and then close. */
 
-class CheckoutWizardDialog : public QWizard {
+class CheckoutWizardDialog : public Utils::Wizard {
     Q_OBJECT
 public:
     CheckoutWizardDialog(const QList<QWizardPage *> &parameterPages,