diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2009-11-26 18:03:16 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2009-11-26 18:03:26 +0100 |
commit | 3e34a9ae7add389126f0307aac9f38c4a5217ac3 (patch) | |
tree | ed11ee78b9b49e134f2c57dc879ea3493c101d0c /src/plugins/projectexplorer/baseprojectwizarddialog.cpp | |
parent | f27c5cc61716aa25d9d7a8b24b582c771cc17e7b (diff) | |
download | qt-creator-3e34a9ae7add389126f0307aac9f38c4a5217ac3.tar.gz |
Project Wizards: Introduce notion of project directory, polish.
- Introduce project directory and "use" flag to file manager, use that
in new item dialog
- Add configuration under Project settings, rename it to "General"
- Make wizards create project names as "untitled1.."
- Remove modules page from Qt application wizards (parametrizable)
- Give Utils::ProjectIntroPage a "Set as default location" toggle.
- Introduce wizard dialog base classes for handling that.
- Introduce notion of "last visited directory to file manager" for
open and non-project wizards, route open through file manager.
- Clean out QmlAppWizard
Task-number: QTCREATORBUG-333
Rubber-stamped-by: con <qtc-committer@nokia.com>
Diffstat (limited to 'src/plugins/projectexplorer/baseprojectwizarddialog.cpp')
-rw-r--r-- | src/plugins/projectexplorer/baseprojectwizarddialog.cpp | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/src/plugins/projectexplorer/baseprojectwizarddialog.cpp b/src/plugins/projectexplorer/baseprojectwizarddialog.cpp new file mode 100644 index 0000000000..c648cfe2a8 --- /dev/null +++ b/src/plugins/projectexplorer/baseprojectwizarddialog.cpp @@ -0,0 +1,134 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "baseprojectwizarddialog.h" + +#include <coreplugin/basefilewizard.h> +#include <coreplugin/icore.h> +#include <coreplugin/filemanager.h> +#include <utils/projectintropage.h> + +#include <QtCore/QDir> + +namespace ProjectExplorer { + +struct BaseProjectWizardDialogPrivate { + explicit BaseProjectWizardDialogPrivate(Utils::ProjectIntroPage *page, int id = -1); + + const int introId; + Utils::ProjectIntroPage *introPage; +}; + +BaseProjectWizardDialogPrivate::BaseProjectWizardDialogPrivate(Utils::ProjectIntroPage *page, int id) : + introId(id), + introPage(page) +{ +} + +BaseProjectWizardDialog::BaseProjectWizardDialog(QWidget *parent) : + QWizard(parent), + d(new BaseProjectWizardDialogPrivate(new Utils::ProjectIntroPage)) +{ + init(); +} + +BaseProjectWizardDialog::BaseProjectWizardDialog(Utils::ProjectIntroPage *introPage, + int introId, + QWidget *parent) : + QWizard(parent), + d(new BaseProjectWizardDialogPrivate(introPage, introId)) +{ + init(); +} + +void BaseProjectWizardDialog::init() +{ + Core::BaseFileWizard::setupWizard(this); + addPage(d->introPage); + connect(this, SIGNAL(accepted()), this, SLOT(slotAccepted())); +} + +BaseProjectWizardDialog::~BaseProjectWizardDialog() +{ + delete d; +} + +QString BaseProjectWizardDialog::name() const +{ + return d->introPage->name(); +} + +QString BaseProjectWizardDialog::path() const +{ + return d->introPage->path(); +} + +void BaseProjectWizardDialog::setIntroDescription(const QString &des) +{ + d->introPage->setDescription(des); +} + +void BaseProjectWizardDialog::setPath(const QString &path) +{ + d->introPage->setPath(path); +} + +void BaseProjectWizardDialog::setName(const QString &name) +{ + d->introPage->setName(name); +} + +void BaseProjectWizardDialog::slotAccepted() +{ + if (d->introPage->useAsDefaultPath()) { + Core::FileManager *fm = Core::ICore::instance()->fileManager(); + fm->setProjectsDirectory(path()); + fm->setUseProjectsDirectory(true); + } +} + +Utils::ProjectIntroPage *BaseProjectWizardDialog::introPage() const +{ + return d->introPage; +} + +QString BaseProjectWizardDialog::projectName(const QString &path) +{ + const QDir pathDir(path); + const QString prefix = tr("untitled"); + for (unsigned i = 0; ; i++) { + QString name = prefix; + if (i) + name += QString::number(i); + if (!pathDir.exists(name)) + return name; + } + return prefix; +} +} // namespace ProjectExplorer |