diff options
Diffstat (limited to 'src/plugins/cppeditor/cppclasswizard.cpp')
-rw-r--r-- | src/plugins/cppeditor/cppclasswizard.cpp | 69 |
1 files changed, 55 insertions, 14 deletions
diff --git a/src/plugins/cppeditor/cppclasswizard.cpp b/src/plugins/cppeditor/cppclasswizard.cpp index a5f21f859b..134bbeb822 100644 --- a/src/plugins/cppeditor/cppclasswizard.cpp +++ b/src/plugins/cppeditor/cppclasswizard.cpp @@ -30,6 +30,10 @@ #include "cppclasswizard.h" #include "cppeditorconstants.h" +#include <cpptools/cpptoolsconstants.h> +#include <coreplugin/icore.h> +#include <coreplugin/mimedatabase.h> + #include <utils/codegeneration.h> #include <utils/newclasswidget.h> #include <utils/qtcassert.h> @@ -37,19 +41,21 @@ #include <QtCore/QDebug> #include <QtCore/QDir> #include <QtCore/QTextStream> +#include <QtCore/QSettings> #include <QtGui/QVBoxLayout> +#include <QtGui/QHBoxLayout> +#include <QtGui/QPushButton> +#include <QtGui/QToolButton> +#include <QtGui/QSpacerItem> #include <QtGui/QWizard> using namespace CppEditor; using namespace CppEditor::Internal; - // ========= ClassNamePage ========= -ClassNamePage::ClassNamePage(const QString &sourceSuffix, - const QString &headerSuffix, - QWidget *parent) : +ClassNamePage::ClassNamePage(QWidget *parent) : QWizardPage(parent), m_isValid(false) { @@ -58,8 +64,6 @@ ClassNamePage::ClassNamePage(const QString &sourceSuffix, m_newClassWidget = new Core::Utils::NewClassWidget; // Order, set extensions first before suggested name is derived - m_newClassWidget->setHeaderExtension(headerSuffix); - m_newClassWidget->setSourceExtension(sourceSuffix); m_newClassWidget->setBaseClassInputVisible(true); m_newClassWidget->setBaseClassChoices(QStringList() << QString() << QLatin1String("QObject") @@ -70,11 +74,50 @@ ClassNamePage::ClassNamePage(const QString &sourceSuffix, m_newClassWidget->setNamespacesEnabled(true); m_newClassWidget->setAllowDirectories(true); - connect(m_newClassWidget, SIGNAL(validChanged()), - this, SLOT(slotValidChanged())); + connect(m_newClassWidget, SIGNAL(validChanged()), this, SLOT(slotValidChanged())); - QVBoxLayout *pageLayout = new QVBoxLayout(this); + QVBoxLayout *pageLayout = new QVBoxLayout(this); pageLayout->addWidget(m_newClassWidget); + QSpacerItem *vSpacer = new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::Expanding); + pageLayout->addItem(vSpacer); + QHBoxLayout *buttonLayout = new QHBoxLayout; + pageLayout->addLayout(buttonLayout); + QSpacerItem *hSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored); + buttonLayout->addItem(hSpacer); + QToolButton *settingsButton = new QToolButton; + settingsButton->setText(tr("Configure...")); + connect(settingsButton, SIGNAL(clicked()), this, SLOT(slotSettings())); + buttonLayout->addWidget(settingsButton); + initParameters(); +} + +// Retrieve settings of CppTools plugin. +static inline bool lowerCaseFiles(const Core::ICore *core) +{ + QString camelCaseSettingsKey = QLatin1String(CppTools::Constants::CPPTOOLS_SETTINGSGROUP); + camelCaseSettingsKey += QLatin1Char('/'); + camelCaseSettingsKey += QLatin1String(CppTools::Constants::LOWERCASE_CPPFILES_KEY); + return core->settings()->value(camelCaseSettingsKey, QVariant(false)).toBool(); +} + +// Set up new class widget from settings +void ClassNamePage::initParameters() +{ + Core::ICore *core = Core::ICore::instance(); + const Core::MimeDatabase *mdb = core->mimeDatabase(); + m_newClassWidget->setHeaderExtension(mdb->preferredSuffixByType(QLatin1String(Constants::CPP_HEADER_MIMETYPE))); + m_newClassWidget->setSourceExtension(mdb->preferredSuffixByType(QLatin1String(Constants::CPP_SOURCE_MIMETYPE))); + m_newClassWidget->setLowerCaseFiles(lowerCaseFiles(core)); +} + +void ClassNamePage::slotSettings() +{ + const QString id = QLatin1String(CppTools::Constants::CPP_SETTINGS_ID); + const QString cat = QLatin1String(CppTools::Constants::CPP_SETTINGS_CATEGORY); + if (Core::ICore::instance()->showOptionsDialog(cat, id, this)) { + initParameters(); + m_newClassWidget->triggerUpdateFileNames(); + } } void ClassNamePage::slotValidChanged() @@ -86,11 +129,9 @@ void ClassNamePage::slotValidChanged() } } -CppClassWizardDialog::CppClassWizardDialog(const QString &sourceSuffix, - const QString &headerSuffix, - QWidget *parent) : +CppClassWizardDialog::CppClassWizardDialog(QWidget *parent) : QWizard(parent), - m_classNamePage(new ClassNamePage(sourceSuffix, headerSuffix, this)) + m_classNamePage(new ClassNamePage(this)) { Core::BaseFileWizard::setupWizard(this); setWindowTitle(tr("C++ Class Wizard")); @@ -136,7 +177,7 @@ QWizard *CppClassWizard::createWizardDialog(QWidget *parent, const QString &defaultPath, const WizardPageList &extensionPages) const { - CppClassWizardDialog *wizard = new CppClassWizardDialog(sourceSuffix(), headerSuffix(), parent); + CppClassWizardDialog *wizard = new CppClassWizardDialog(parent); foreach (QWizardPage *p, extensionPages) wizard->addPage(p); wizard->setPath(defaultPath); |