Move code from Designer to QtSupport

* Move settings pages for Qt code generation from Designer to QtSupport
  plugin.
* Make Designer plugin depend on QtSupport

Change-Id: I222dac0a648c194ce46fd9f8bbb09c70db851bbd
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
Tobias Hunger
2014-07-18 15:47:20 +02:00
parent f7e8acbd09
commit ff33e989c7
16 changed files with 244 additions and 154 deletions

View File

@@ -3,14 +3,11 @@ DEFINES+=CPP_ENABLED
HEADERS+=$$PWD/formclasswizardpage.h \
$$PWD/formclasswizarddialog.h \
$$PWD/formclasswizard.h \
$$PWD/formclasswizardparameters.h \
$$PWD/cppsettingspage.h
$$PWD/formclasswizardparameters.h
SOURCES+=$$PWD/formclasswizardpage.cpp \
$$PWD/formclasswizarddialog.cpp \
$$PWD/formclasswizard.cpp \
$$PWD/formclasswizardparameters.cpp \
$$PWD/cppsettingspage.cpp
$$PWD/formclasswizardparameters.cpp
FORMS+=$$PWD/formclasswizardpage.ui \
$$PWD/cppsettingspagewidget.ui
FORMS+=$$PWD/formclasswizardpage.ui

View File

@@ -15,6 +15,7 @@ QtcPlugin {
Depends { name: "ResourceEditor" }
Depends { name: "TextEditor" }
Depends { name: "ProjectExplorer" }
Depends { name: "QtSupport" }
cpp.defines: base.concat(["CPP_ENABLED"])
cpp.includePaths: base.concat([
@@ -66,8 +67,6 @@ QtcPlugin {
name: "cpp"
prefix: "cpp/"
files: [
"cppsettingspage.cpp", "cppsettingspage.h",
"cppsettingspagewidget.ui",
"formclasswizard.cpp", "formclasswizard.h",
"formclasswizarddialog.cpp", "formclasswizarddialog.h",
"formclasswizardpage.cpp", "formclasswizardpage.h", "formclasswizardpage.ui",

View File

@@ -7,5 +7,6 @@ QTC_PLUGIN_DEPENDS += \
resourceeditor\
cpptools \
projectexplorer \
qtsupport \
texteditor \
coreplugin

View File

@@ -43,8 +43,6 @@ const char C_DESIGNER_XML_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("Designer", "Form
const char SETTINGS_CATEGORY[] = "P.Designer";
const char SETTINGS_CATEGORY_ICON[] = ":/core/images/category_design.png";
const char SETTINGS_TR_CATEGORY[] = QT_TRANSLATE_NOOP("Designer", "Designer");
const char SETTINGS_CPP_SETTINGS_ID[] = "Class Generation";
const char SETTINGS_CPP_SETTINGS_NAME[] = QT_TRANSLATE_NOOP("Designer", "Class Generation");
// Context
const char C_FORMEDITOR[] = "FormEditor.FormEditor";

View File

@@ -34,7 +34,6 @@
#ifdef CPP_ENABLED
# include "cpp/formclasswizard.h"
# include "cpp/cppsettingspage.h"
#endif
#include "settingspage.h"
@@ -49,6 +48,7 @@
#include <coreplugin/designmode.h>
#include <cpptools/cpptoolsconstants.h>
#include <QApplication>
#include <QDebug>
#include <QLibraryInfo>
#include <QTranslator>
@@ -146,8 +146,6 @@ void FormEditorPlugin::initializeTemplates()
wizard->setDescription(tr("Creates a Qt Designer form along with a matching class (C++ header and source file) "
"for implementation purposes. You can add the form and class to an existing Qt Widget Project."));
addAutoReleasedObject(wizard);
addAutoReleasedObject(new CppSettingsPage);
#endif
}

View File

@@ -34,6 +34,7 @@
#include <utils/codegeneration.h>
#include <coreplugin/icore.h>
#include <cpptools/abstracteditorsupport.h>
#include <qtsupport/codegensettings.h>
#include <QTextStream>
#include <QSettings>
@@ -43,69 +44,22 @@
static const char uiMemberC[] = "ui";
static const char uiNamespaceC[] = "Ui";
static const char formClassWizardPageGroupC[] = "FormClassWizardPage";
static const char translationKeyC[] = "RetranslationSupport";
static const char embeddingModeKeyC[] = "Embedding";
// TODO: These 2 are general coding convention settings and
// should go to CppTools...
static const char includeQtModuleKeyC[] = "IncludeQtModule";
static const char addQtVersionCheckKeyC[] = "AddQtVersionCheck";
static const bool retranslationSupportDefault = false;
namespace Designer {
namespace Internal {
FormClassWizardGenerationParameters::FormClassWizardGenerationParameters() :
embedding(PointerAggregatedUiClass),
retranslationSupport(retranslationSupportDefault),
includeQtModule(false),
addQtVersionCheck(false)
{
}
void FormClassWizardGenerationParameters::fromSettings(const QSettings *settings)
{
QString group = QLatin1String(formClassWizardPageGroupC) + QLatin1Char('/');
retranslationSupport = settings->value(group + QLatin1String(translationKeyC), retranslationSupportDefault).toBool();
embedding = static_cast<UiClassEmbedding>(settings->value(group + QLatin1String(embeddingModeKeyC), int(PointerAggregatedUiClass)).toInt());
includeQtModule = settings->value(group + QLatin1String(includeQtModuleKeyC), false).toBool();
addQtVersionCheck = settings->value(group + QLatin1String(addQtVersionCheckKeyC), false).toBool();
}
void FormClassWizardGenerationParameters::toSettings(QSettings *settings) const
{
settings->beginGroup(QLatin1String(formClassWizardPageGroupC));
settings->setValue(QLatin1String(translationKeyC), retranslationSupport);
settings->setValue(QLatin1String(embeddingModeKeyC), embedding);
settings->setValue(QLatin1String(includeQtModuleKeyC), includeQtModule);
settings->setValue(QLatin1String(addQtVersionCheckKeyC), addQtVersionCheck);
settings->endGroup();
}
bool FormClassWizardGenerationParameters::equals(const FormClassWizardGenerationParameters &rhs) const
{
return embedding == rhs.embedding
&& retranslationSupport == rhs.retranslationSupport
&& includeQtModule == rhs.includeQtModule
&& addQtVersionCheck == rhs.addQtVersionCheck;
}
// Generation code
// Write out how to access the Ui class in the source code.
static inline void writeUiMemberAccess(const FormClassWizardGenerationParameters &fp, QTextStream &str)
static inline void writeUiMemberAccess(const QtSupport::CodeGenSettings &fp, QTextStream &str)
{
switch (fp.embedding) {
case PointerAggregatedUiClass:
case QtSupport::CodeGenSettings::PointerAggregatedUiClass:
str << uiMemberC << "->";
break;
case AggregatedUiClass:
case QtSupport::CodeGenSettings::AggregatedUiClass:
str << uiMemberC << '.';
break;
case InheritedUiClass:
case QtSupport::CodeGenSettings::InheritedUiClass:
break;
}
}
@@ -115,7 +69,7 @@ static inline void writeUiMemberAccess(const FormClassWizardGenerationParameters
bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParameters &parameters,
QString *header, QString *source, int indentation)
{
Internal::FormClassWizardGenerationParameters generationParameters;
QtSupport::CodeGenSettings generationParameters;
generationParameters.fromSettings(Core::ICore::settings());
const QString indent = QString(indentation, QLatin1Char(' '));
@@ -158,7 +112,7 @@ bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParamete
<< "\n#define " << guard << '\n' << '\n';
// Include 'ui_'
if (generationParameters.embedding != Internal::PointerAggregatedUiClass) {
if (generationParameters.embedding != QtSupport::CodeGenSettings::PointerAggregatedUiClass) {
Utils::writeIncludeFileDirective(uiInclude, false, headerStr);
} else {
// Todo: Can we obtain the header from the code model for custom widgets?
@@ -184,7 +138,7 @@ bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParamete
headerStr);
// Forward-declare the UI class
if (generationParameters.embedding == Internal::PointerAggregatedUiClass) {
if (generationParameters.embedding == QtSupport::CodeGenSettings::PointerAggregatedUiClass) {
headerStr << '\n'
<< namespaceIndent << "namespace " << uiNamespaceC << " {\n"
<< namespaceIndent << indent << "class " << Internal::FormTemplateWizardPage::stripNamespaces(uiClassName) << ";\n"
@@ -194,22 +148,22 @@ bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParamete
// Class declaration
headerStr << '\n' << namespaceIndent << "class " << unqualifiedClassName
<< " : public " << formBaseClass;
if (generationParameters.embedding == Internal::InheritedUiClass)
if (generationParameters.embedding == QtSupport::CodeGenSettings::InheritedUiClass)
headerStr << ", private " << uiClassName;
headerStr << "\n{\n" << namespaceIndent << indent << "Q_OBJECT\n\n"
<< namespaceIndent << "public:\n"
<< namespaceIndent << indent << "explicit " << unqualifiedClassName << "(QWidget *parent = 0);\n";
if (generationParameters.embedding == Internal::PointerAggregatedUiClass)
if (generationParameters.embedding == QtSupport::CodeGenSettings::PointerAggregatedUiClass)
headerStr << namespaceIndent << indent << "~" << unqualifiedClassName << "();\n";
// retranslation
if (generationParameters.retranslationSupport)
headerStr << '\n' << namespaceIndent << "protected:\n"
<< namespaceIndent << indent << "void changeEvent(QEvent *e);\n";
// Member variable
if (generationParameters.embedding != Internal::InheritedUiClass) {
if (generationParameters.embedding != QtSupport::CodeGenSettings::InheritedUiClass) {
headerStr << '\n' << namespaceIndent << "private:\n"
<< namespaceIndent << indent << uiClassName << ' ';
if (generationParameters.embedding == Internal::PointerAggregatedUiClass)
if (generationParameters.embedding == QtSupport::CodeGenSettings::PointerAggregatedUiClass)
headerStr << '*';
headerStr << uiMemberC << ";\n";
}
@@ -221,20 +175,20 @@ bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParamete
QTextStream sourceStr(source);
sourceStr << sourceLicense;
Utils::writeIncludeFileDirective(parameters.headerFile, false, sourceStr);
if (generationParameters.embedding == Internal::PointerAggregatedUiClass)
if (generationParameters.embedding == QtSupport::CodeGenSettings::PointerAggregatedUiClass)
Utils::writeIncludeFileDirective(uiInclude, false, sourceStr);
// NameSpaces(
Utils::writeOpeningNameSpaces(namespaceList, QString(), sourceStr);
// Constructor with setupUi
sourceStr << '\n' << namespaceIndent << unqualifiedClassName << "::" << unqualifiedClassName << "(QWidget *parent) :\n"
<< namespaceIndent << indent << formBaseClass << "(parent)";
if (generationParameters.embedding == Internal::PointerAggregatedUiClass)
if (generationParameters.embedding == QtSupport::CodeGenSettings::PointerAggregatedUiClass)
sourceStr << ",\n" << namespaceIndent << indent << uiMemberC << "(new " << uiClassName << ")";
sourceStr << '\n' << namespaceIndent << "{\n" << namespaceIndent << indent;
writeUiMemberAccess(generationParameters, sourceStr);
Internal::writeUiMemberAccess(generationParameters, sourceStr);
sourceStr << "setupUi(this);\n" << namespaceIndent << "}\n";
// Deleting destructor for ptr
if (generationParameters.embedding == Internal::PointerAggregatedUiClass) {
if (generationParameters.embedding == QtSupport::CodeGenSettings::PointerAggregatedUiClass) {
sourceStr << '\n' << namespaceIndent << unqualifiedClassName << "::~" << unqualifiedClassName
<< "()\n" << namespaceIndent << "{\n"
<< namespaceIndent << indent << "delete " << uiMemberC << ";\n"
@@ -247,7 +201,7 @@ bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParamete
<< namespaceIndent << indent << formBaseClass << "::changeEvent(e);\n"
<< namespaceIndent << indent << "switch (e->type()) {\n" << namespaceIndent << indent << "case QEvent::LanguageChange:\n"
<< namespaceIndent << indent << indent;
writeUiMemberAccess(generationParameters, sourceStr);
Internal::writeUiMemberAccess(generationParameters, sourceStr);
sourceStr << "retranslateUi(this);\n"
<< namespaceIndent << indent << indent << "break;\n"
<< namespaceIndent << indent << "default:\n"

View File

@@ -40,35 +40,6 @@ QT_END_NAMESPACE
namespace Designer {
class FormClassWizardParameters;
namespace Internal {
// How to embed the Ui::Form class.
enum UiClassEmbedding
{
PointerAggregatedUiClass, // "Ui::Form *m_ui";
AggregatedUiClass, // "Ui::Form m_ui";
InheritedUiClass // "...private Ui::Form..."
};
// Parameters influencing the code generation to be used in settings page.
struct FormClassWizardGenerationParameters
{
FormClassWizardGenerationParameters();
bool equals(const FormClassWizardGenerationParameters &rhs) const;
void fromSettings(const QSettings *);
void toSettings(QSettings *) const;
UiClassEmbedding embedding;
bool retranslationSupport; // Add handling for language change events
bool includeQtModule; // Include "<QtGui/[Class]>" or just "<[Class]>"
bool addQtVersionCheck; // Include #ifdef when using "#include <QtGui/..."
};
inline bool operator==(const FormClassWizardGenerationParameters &p1, const FormClassWizardGenerationParameters &p2) { return p1.equals(p2); }
inline bool operator!=(const FormClassWizardGenerationParameters &p1, const FormClassWizardGenerationParameters &p2) { return !p1.equals(p2); }
} // namespace Internal
// Publicly registered service to generate the code for a form class
// (See PluginManager::Invoke) to be accessed by Qt4ProjectManager.

View File

@@ -0,0 +1,84 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** 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.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
#include "codegensettings.h"
#include <coreplugin/icore.h>
#include <QSettings>
static const char CODE_GEN_GROUP[] = "FormClassWizardPage";
static const char TRANSLATION_KEY[] = "RetranslationSupport";
static const char EMBEDDING_KEY[] = "Embedding";
static const char INCLUDE_QT_MODULE_KEY[] = "IncludeQtModule";
static const char ADD_QT_VERSION_CHECK_KEY[] = "AddQtVersionCheck";
static const bool retranslationSupportDefault = false;
namespace QtSupport {
CodeGenSettings::CodeGenSettings() :
embedding(PointerAggregatedUiClass),
retranslationSupport(retranslationSupportDefault),
includeQtModule(false),
addQtVersionCheck(false)
{
}
bool CodeGenSettings::equals(const CodeGenSettings &rhs) const
{
return embedding == rhs.embedding
&& retranslationSupport == rhs.retranslationSupport
&& includeQtModule == rhs.includeQtModule
&& addQtVersionCheck == rhs.addQtVersionCheck;
}
void CodeGenSettings::fromSettings(const QSettings *settings)
{
QString group = QLatin1String(CODE_GEN_GROUP) + QLatin1Char('/');
retranslationSupport = settings->value(group + QLatin1String(TRANSLATION_KEY), retranslationSupportDefault).toBool();
embedding = static_cast<UiClassEmbedding>(settings->value(group + QLatin1String(EMBEDDING_KEY), int(PointerAggregatedUiClass)).toInt());
includeQtModule = settings->value(group + QLatin1String(INCLUDE_QT_MODULE_KEY), false).toBool();
addQtVersionCheck = settings->value(group + QLatin1String(ADD_QT_VERSION_CHECK_KEY), false).toBool();
}
void CodeGenSettings::toSettings(QSettings *settings) const
{
settings->beginGroup(QLatin1String(CODE_GEN_GROUP));
settings->setValue(QLatin1String(TRANSLATION_KEY), retranslationSupport);
settings->setValue(QLatin1String(EMBEDDING_KEY), embedding);
settings->setValue(QLatin1String(INCLUDE_QT_MODULE_KEY), includeQtModule);
settings->setValue(QLatin1String(ADD_QT_VERSION_CHECK_KEY), addQtVersionCheck);
settings->endGroup();
}
} // namespace QtSupport

View File

@@ -0,0 +1,67 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** 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.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
#ifndef CODEGENSETTINGS_H
#define CODEGENSETTINGS_H
#include "qtsupport_global.h"
QT_FORWARD_DECLARE_CLASS(QSettings)
namespace QtSupport {
class QTSUPPORT_EXPORT CodeGenSettings
{
public:
// How to embed the Ui::Form class.
enum UiClassEmbedding
{
PointerAggregatedUiClass, // "Ui::Form *m_ui";
AggregatedUiClass, // "Ui::Form m_ui";
InheritedUiClass // "...private Ui::Form..."
};
CodeGenSettings();
bool equals(const CodeGenSettings &rhs) const;
void fromSettings(const QSettings *settings);
void toSettings(QSettings *settings) const;
UiClassEmbedding embedding;
bool retranslationSupport; // Add handling for language change events
bool includeQtModule; // Include "<QtGui/[Class]>" or just "<[Class]>"
bool addQtVersionCheck; // Include #ifdef when using "#include <QtGui/..."
};
inline bool operator==(const CodeGenSettings &p1, const CodeGenSettings &p2) { return p1.equals(p2); }
inline bool operator!=(const CodeGenSettings &p1, const CodeGenSettings &p2) { return !p1.equals(p2); }
} // namespace QtSupport
#endif // CODEGENSETTINGS_H

View File

@@ -27,19 +27,22 @@
**
****************************************************************************/
#include "cppsettingspage.h"
#include <designer/designerconstants.h>
#include "codegensettingspage.h"
#include "qtsupportconstants.h"
#include <cpptools/cpptoolsconstants.h>
#include <QCoreApplication>
#include <QTextStream>
#include <coreplugin/icore.h>
namespace Designer {
namespace QtSupport {
namespace Internal {
// ---------- CppSettingsPageWidget
// ---------- CodeGenSettingsPageWidget
CppSettingsPageWidget::CppSettingsPageWidget(QWidget *parent) :
CodeGenSettingsPageWidget::CodeGenSettingsPageWidget(QWidget *parent) :
QWidget(parent)
{
m_ui.setupUi(this);
@@ -47,17 +50,17 @@ CppSettingsPageWidget::CppSettingsPageWidget(QWidget *parent) :
m_ui.addQtVersionCheckBox, SLOT(setEnabled(bool)));
}
FormClassWizardGenerationParameters CppSettingsPageWidget::parameters() const
CodeGenSettings CodeGenSettingsPageWidget::parameters() const
{
FormClassWizardGenerationParameters rc;
rc.embedding = static_cast<UiClassEmbedding>(uiEmbedding());
CodeGenSettings rc;
rc.embedding = static_cast<CodeGenSettings::UiClassEmbedding>(uiEmbedding());
rc.retranslationSupport =m_ui.retranslateCheckBox->isChecked();
rc.includeQtModule = m_ui.includeQtModuleCheckBox->isChecked();
rc.addQtVersionCheck = m_ui.addQtVersionCheckBox->isChecked();
return rc;
}
void CppSettingsPageWidget::setParameters(const FormClassWizardGenerationParameters &p)
void CodeGenSettingsPageWidget::setParameters(const CodeGenSettings &p)
{
m_ui.retranslateCheckBox->setChecked(p.retranslationSupport);
m_ui.includeQtModuleCheckBox->setChecked(p.includeQtModule);
@@ -65,54 +68,56 @@ void CppSettingsPageWidget::setParameters(const FormClassWizardGenerationParamet
setUiEmbedding(p.embedding);
}
int CppSettingsPageWidget::uiEmbedding() const
int CodeGenSettingsPageWidget::uiEmbedding() const
{
if (m_ui.ptrAggregationRadioButton->isChecked())
return PointerAggregatedUiClass;
return CodeGenSettings::PointerAggregatedUiClass;
if (m_ui.aggregationButton->isChecked())
return AggregatedUiClass;
return InheritedUiClass;
return CodeGenSettings::AggregatedUiClass;
return CodeGenSettings::InheritedUiClass;
}
void CppSettingsPageWidget::setUiEmbedding(int v)
void CodeGenSettingsPageWidget::setUiEmbedding(int v)
{
switch (v) {
case PointerAggregatedUiClass:
case CodeGenSettings::PointerAggregatedUiClass:
m_ui.ptrAggregationRadioButton->setChecked(true);
break;
case AggregatedUiClass:
case CodeGenSettings::AggregatedUiClass:
m_ui.aggregationButton->setChecked(true);
break;
case InheritedUiClass:
case CodeGenSettings::InheritedUiClass:
m_ui.multipleInheritanceButton->setChecked(true);
break;
}
}
// ---------- CppSettingsPage
CppSettingsPage::CppSettingsPage(QObject *parent) : Core::IOptionsPage(parent)
// ---------- CodeGenSettingsPage
CodeGenSettingsPage::CodeGenSettingsPage(QObject *parent) :
Core::IOptionsPage(parent),
m_widget(0)
{
m_parameters.fromSettings(Core::ICore::settings());
setId(Designer::Constants::SETTINGS_CPP_SETTINGS_ID);
setDisplayName(QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_CPP_SETTINGS_NAME));
setCategory(Designer::Constants::SETTINGS_CATEGORY);
setDisplayCategory(QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_TR_CATEGORY));
setCategoryIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON));
setId(Constants::CODEGEN_SETTINGS_PAGE_ID);
setDisplayName(QCoreApplication::translate("QtSupport", Constants::CODEGEN_SETTINGS_PAGE_NAME));
setCategory(CppTools::Constants::CPP_SETTINGS_CATEGORY);
setDisplayCategory(QCoreApplication::translate("CppTools", CppTools::Constants::CPP_SETTINGS_TR_CATEGORY));
setCategoryIcon(QLatin1String(CppTools::Constants::SETTINGS_CATEGORY_CPP_ICON));
}
QWidget *CppSettingsPage::widget()
QWidget *CodeGenSettingsPage::widget()
{
if (!m_widget) {
m_widget = new CppSettingsPageWidget;
m_widget = new CodeGenSettingsPageWidget;
m_widget->setParameters(m_parameters);
}
return m_widget;
}
void CppSettingsPage::apply()
void CodeGenSettingsPage::apply()
{
if (m_widget) {
const FormClassWizardGenerationParameters newParameters = m_widget->parameters();
const CodeGenSettings newParameters = m_widget->parameters();
if (newParameters != m_parameters) {
m_parameters = newParameters;
m_parameters.toSettings(Core::ICore::settings());
@@ -120,10 +125,10 @@ void CppSettingsPage::apply()
}
}
void CppSettingsPage::finish()
void CodeGenSettingsPage::finish()
{
delete m_widget;
}
} // namespace Internal
} // namespace Designer
} // namespace QtSupport

View File

@@ -27,50 +27,51 @@
**
****************************************************************************/
#ifndef CPPSETTINGSPAGE_H
#define CPPSETTINGSPAGE_H
#ifndef CODEGENSETTINGSPAGE_H
#define CODEGENSETTINGSPAGE_H
#include "ui_cppsettingspagewidget.h"
#include <designer/qtdesignerformclasscodegenerator.h>
#include "ui_codegensettingspagewidget.h"
#include "codegensettings.h"
#include <coreplugin/dialogs/ioptionspage.h>
#include <QPointer>
namespace Designer {
namespace QtSupport {
namespace Internal {
class CppSettingsPageWidget : public QWidget
class CodeGenSettingsPageWidget : public QWidget
{
Q_OBJECT
public:
explicit CppSettingsPageWidget(QWidget *parent = 0);
explicit CodeGenSettingsPageWidget(QWidget *parent = 0);
FormClassWizardGenerationParameters parameters() const;
void setParameters(const FormClassWizardGenerationParameters &p);
CodeGenSettings parameters() const;
void setParameters(const CodeGenSettings &p);
private:
int uiEmbedding() const;
void setUiEmbedding(int);
Ui::CppSettingsPageWidget m_ui;
Ui::CodeGenSettingsPageWidget m_ui;
};
class CppSettingsPage : public Core::IOptionsPage
class CodeGenSettingsPage : public Core::IOptionsPage
{
public:
explicit CppSettingsPage(QObject *parent = 0);
explicit CodeGenSettingsPage(QObject *parent = 0);
QWidget *widget();
void apply();
void finish();
private:
QPointer<CppSettingsPageWidget> m_widget;
FormClassWizardGenerationParameters m_parameters;
QPointer<CodeGenSettingsPageWidget> m_widget;
CodeGenSettings m_parameters;
};
} // namespace Internal
} // namespace Designer
} // namespace QtSupport
#endif // CPPSETTINGSPAGE_H
#endif // CODEGENSETTINGSPAGE_H

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Designer::Internal::CppSettingsPageWidget</class>
<widget class="QWidget" name="Designer::Internal::CppSettingsPageWidget">
<class>QtSupport::Internal::CodeGenSettingsPageWidget</class>
<widget class="QWidget" name="QtSupport::Internal::CodeGenSettingsPageWidget">
<property name="geometry">
<rect>
<x>0</x>

View File

@@ -7,6 +7,8 @@ DEFINES += QMAKE_LIBRARY
include(../../shared/proparser/proparser.pri)
HEADERS += \
codegensettings.h \
codegensettingspage.h \
qtsupportplugin.h \
qtsupport_global.h \
qtkitconfigwidget.h \
@@ -36,6 +38,8 @@ HEADERS += \
winceqtversion.h
SOURCES += \
codegensettings.cpp \
codegensettingspage.cpp \
qtsupportplugin.cpp \
qtkitconfigwidget.cpp \
qtkitinformation.cpp \
@@ -68,6 +72,7 @@ greaterThan(QT_MAJOR_VERSION, 4) {
}
FORMS += \
codegensettingspagewidget.ui \
showbuildlog.ui \
qtversioninfo.ui \
debugginghelper.ui \

View File

@@ -60,6 +60,11 @@ QtcPlugin {
files: [
"baseqtversion.cpp",
"baseqtversion.h",
"codegensettings.cpp",
"codegensettings.h",
"codegensettingspage.cpp",
"codegensettingspage.h",
"codegensettingswidget.ui",
"qtconfigwidget.cpp",
"qtconfigwidget.h",
"qtsupport.qrc",

View File

@@ -33,10 +33,13 @@
namespace QtSupport {
namespace Constants {
// Qt4 settings pages
// Qt settings pages
const char QTVERSION_SETTINGS_PAGE_ID[] = "H.Qt Versions";
const char QTVERSION_SETTINGS_PAGE_NAME[] = QT_TRANSLATE_NOOP("QtSupport", "Qt Versions");
const char CODEGEN_SETTINGS_PAGE_ID[] = "Class Generation";
const char CODEGEN_SETTINGS_PAGE_NAME[] = QT_TRANSLATE_NOOP("QtSupport", "Qt Class Generation");
// QtVersions
const char DESKTOPQT[] = "Qt4ProjectManager.QtVersion.Desktop";
const char SIMULATORQT[] = "Qt4ProjectManager.QtVersion.Simulator";

View File

@@ -29,6 +29,7 @@
#include "qtsupportplugin.h"
#include "codegensettingspage.h"
#include "customexecutablerunconfiguration.h"
#include "desktopqtversionfactory.h"
#include "qtfeatureprovider.h"
@@ -81,6 +82,7 @@ bool QtSupportPlugin::initialize(const QStringList &arguments, QString *errorMes
QtFeatureProvider *featureMgr = new QtFeatureProvider;
addAutoReleasedObject(featureMgr);
addAutoReleasedObject(new CodeGenSettingsPage);
addAutoReleasedObject(new QtOptionsPage);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 1, 0))