aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cppeditor/cppclasswizard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cppeditor/cppclasswizard.cpp')
-rw-r--r--src/plugins/cppeditor/cppclasswizard.cpp69
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);