From 3aa2b0876caa79cf7461d6af0aa7f8330318fb21 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 10 Feb 2012 15:40:53 +0100 Subject: [PATCH] Wizards: add option to show an image for description IWizard::descriptionImage() can return the path to an image. An empty string is interpreted as no image available. Change-Id: Ia2012eecbfdeb9bec123ed666fff2d73d79e05ce Reviewed-by: Alessandro Portale --- src/plugins/coreplugin/basefilewizard.cpp | 17 ++++ src/plugins/coreplugin/basefilewizard.h | 6 ++ src/plugins/coreplugin/dialogs/iwizard.h | 2 + src/plugins/coreplugin/dialogs/newdialog.cpp | 7 ++ src/plugins/coreplugin/dialogs/newdialog.ui | 98 ++++++++++++-------- src/plugins/vcsbase/basecheckoutwizard.cpp | 5 + src/plugins/vcsbase/basecheckoutwizard.h | 2 + 7 files changed, 99 insertions(+), 38 deletions(-) diff --git a/src/plugins/coreplugin/basefilewizard.cpp b/src/plugins/coreplugin/basefilewizard.cpp index b04a4ef0fb4..125e5b50906 100644 --- a/src/plugins/coreplugin/basefilewizard.cpp +++ b/src/plugins/coreplugin/basefilewizard.cpp @@ -88,6 +88,7 @@ public: QString displayCategory; Core::FeatureSet requiredFeatures; Core::IWizard::WizardFlags flags; + QString descriptionImage; }; BaseFileWizardParameterData::BaseFileWizardParameterData(IWizard::WizardKind k) : @@ -242,6 +243,17 @@ void BaseFileWizardParameters::setFlags(Core::IWizard::WizardFlags flags) { m_d->flags = flags; } + +QString BaseFileWizardParameters::descriptionImage() const +{ + return m_d->descriptionImage; +} + +void BaseFileWizardParameters::setDescriptionImage(const QString &path) +{ + m_d->descriptionImage = path; +} + /*! \class Core::Internal::WizardEventLoop \brief Special event loop that runs a QWizard and terminates if the page changes. @@ -417,6 +429,11 @@ QString BaseFileWizard::displayCategory() const return d->m_parameters.displayCategory(); } +QString BaseFileWizard::descriptionImage() const +{ + return d->m_parameters.descriptionImage(); +} + void BaseFileWizard::runWizard(const QString &path, QWidget *parent, const QString &platform) { QTC_ASSERT(!path.isEmpty(), return); diff --git a/src/plugins/coreplugin/basefilewizard.h b/src/plugins/coreplugin/basefilewizard.h index fb07b2da21a..64a21259d2e 100644 --- a/src/plugins/coreplugin/basefilewizard.h +++ b/src/plugins/coreplugin/basefilewizard.h @@ -96,6 +96,10 @@ public: Core::IWizard::WizardFlags flags() const; void setFlags(Core::IWizard::WizardFlags flags); + + QString descriptionImage() const; + void setDescriptionImage(const QString &path); + private: QSharedDataPointer m_d; }; @@ -150,6 +154,8 @@ public: virtual QString category() const; virtual QString displayCategory() const; + virtual QString descriptionImage() const; + virtual void runWizard(const QString &path, QWidget *parent, const QString &platform); virtual Core::FeatureSet requiredFeatures() const; virtual WizardFlags flags() const; diff --git a/src/plugins/coreplugin/dialogs/iwizard.h b/src/plugins/coreplugin/dialogs/iwizard.h index b6e0a4e79a8..ec26f696505 100644 --- a/src/plugins/coreplugin/dialogs/iwizard.h +++ b/src/plugins/coreplugin/dialogs/iwizard.h @@ -72,6 +72,8 @@ public: virtual QString category() const = 0; virtual QString displayCategory() const = 0; + virtual QString descriptionImage() const = 0; + virtual FeatureSet requiredFeatures() const = 0; virtual WizardFlags flags() const = 0; diff --git a/src/plugins/coreplugin/dialogs/newdialog.cpp b/src/plugins/coreplugin/dialogs/newdialog.cpp index 4f68818a8eb..201c529c9ef 100644 --- a/src/plugins/coreplugin/dialogs/newdialog.cpp +++ b/src/plugins/coreplugin/dialogs/newdialog.cpp @@ -436,6 +436,13 @@ void NewDialog::currentItemChanged(const QModelIndex &index) m_ui->templateDescription->setHtml(desciption); + if (!wizard->descriptionImage().isEmpty()) { + m_ui->imageLabel->setVisible(true); + m_ui->imageLabel->setPixmap(wizard->descriptionImage()); + } else { + m_ui->imageLabel->setVisible(false); + } + } else { m_ui->templateDescription->setText(QString()); } diff --git a/src/plugins/coreplugin/dialogs/newdialog.ui b/src/plugins/coreplugin/dialogs/newdialog.ui index 536c9f6eb60..5fd16849133 100644 --- a/src/plugins/coreplugin/dialogs/newdialog.ui +++ b/src/plugins/coreplugin/dialogs/newdialog.ui @@ -33,42 +33,16 @@ - - - - - 0 - 0 - + + + + Qt::Horizontal - - Qt::NoFocus + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 0 - 0 - - - - - - - - - @@ -170,16 +144,64 @@ - - - - Qt::Horizontal + + + + QFrame { background: white } - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + QFrame::StyledPanel + + + + + + + + + + + + + 0 + 0 + + + + Qt::NoFocus + + + QFrame::NoFrame + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + + + + + + diff --git a/src/plugins/vcsbase/basecheckoutwizard.cpp b/src/plugins/vcsbase/basecheckoutwizard.cpp index dfbcf275187..9ef03dcc247 100644 --- a/src/plugins/vcsbase/basecheckoutwizard.cpp +++ b/src/plugins/vcsbase/basecheckoutwizard.cpp @@ -119,6 +119,11 @@ QString BaseCheckoutWizard::id() const return d->id; } +QString BaseCheckoutWizard::descriptionImage() const +{ + return QString(); +} + void BaseCheckoutWizard::setId(const QString &id) { d->id = id; diff --git a/src/plugins/vcsbase/basecheckoutwizard.h b/src/plugins/vcsbase/basecheckoutwizard.h index b36bacc576c..cf012709c92 100644 --- a/src/plugins/vcsbase/basecheckoutwizard.h +++ b/src/plugins/vcsbase/basecheckoutwizard.h @@ -64,6 +64,8 @@ public: virtual QString displayCategory() const; virtual QString id() const; + virtual QString descriptionImage() const; + virtual void runWizard(const QString &path, QWidget *parent, const QString &platform); virtual Core::FeatureSet requiredFeatures() const;