Add "Inherits QObject" checkbox to Class Wizard.

For now it is dumb, but it can be improved over time.
This commit is contained in:
Daniel Molkentin
2009-10-21 17:06:15 +02:00
parent afcbb78999
commit da89dbb410
5 changed files with 62 additions and 12 deletions

View File

@@ -57,6 +57,7 @@ struct NewClassWidgetPrivate {
bool m_baseClassInputVisible; bool m_baseClassInputVisible;
bool m_formInputVisible; bool m_formInputVisible;
bool m_pathInputVisible; bool m_pathInputVisible;
bool m_qobjectCheckBoxVisible;
bool m_formInputCheckable; bool m_formInputCheckable;
}; };
@@ -69,7 +70,9 @@ NewClassWidgetPrivate:: NewClassWidgetPrivate() :
m_baseClassInputVisible(true), m_baseClassInputVisible(true),
m_formInputVisible(true), m_formInputVisible(true),
m_pathInputVisible(true), m_pathInputVisible(true),
m_qobjectCheckBoxVisible(false),
m_formInputCheckable(false) m_formInputCheckable(false)
{ {
} }
@@ -169,6 +172,17 @@ void NewClassWidget::setBaseClassInputVisible(bool visible)
m_d->m_ui.baseClassComboBox->setVisible(visible); m_d->m_ui.baseClassComboBox->setVisible(visible);
} }
void NewClassWidget::setQObjectCheckBoxVisible(bool visible)
{
m_d->m_qobjectCheckBoxVisible = visible;
m_d->m_ui.qobjectCheckBox->setVisible(visible);
}
bool NewClassWidget::isQObjectCheckBoxVisible() const
{
return m_d->m_qobjectCheckBoxVisible;
}
void NewClassWidget::setBaseClassEditable(bool editable) void NewClassWidget::setBaseClassEditable(bool editable)
{ {
m_d->m_ui.baseClassComboBox->setEditable(editable); m_d->m_ui.baseClassComboBox->setEditable(editable);
@@ -356,6 +370,16 @@ void NewClassWidget::setAllowDirectories(bool v)
} }
} }
bool NewClassWidget::inheritsQObject() const
{
return m_d->m_ui.qobjectCheckBox->isChecked();
}
void NewClassWidget::setInheritsQObject(bool v)
{
m_d->m_ui.qobjectCheckBox->setChecked(v);
}
bool NewClassWidget::lowerCaseFiles() const bool NewClassWidget::lowerCaseFiles() const
{ {
return m_d->m_ui.classLineEdit->lowerCaseFileName(); return m_d->m_ui.classLineEdit->lowerCaseFileName();

View File

@@ -57,6 +57,7 @@ class QTCREATOR_UTILS_EXPORT NewClassWidget : public QWidget
Q_PROPERTY(bool baseClassEditable READ isBaseClassEditable WRITE setBaseClassEditable DESIGNABLE false) Q_PROPERTY(bool baseClassEditable READ isBaseClassEditable WRITE setBaseClassEditable DESIGNABLE false)
Q_PROPERTY(bool formInputVisible READ isFormInputVisible WRITE setFormInputVisible DESIGNABLE true) Q_PROPERTY(bool formInputVisible READ isFormInputVisible WRITE setFormInputVisible DESIGNABLE true)
Q_PROPERTY(bool pathInputVisible READ isPathInputVisible WRITE setPathInputVisible DESIGNABLE true) Q_PROPERTY(bool pathInputVisible READ isPathInputVisible WRITE setPathInputVisible DESIGNABLE true)
Q_PROPERTY(bool qobjectCheckBoxVisible READ isQObjectCheckBoxVisible WRITE setQObjectCheckBoxVisible DESIGNABLE true)
Q_PROPERTY(QString className READ className WRITE setClassName DESIGNABLE true) Q_PROPERTY(QString className READ className WRITE setClassName DESIGNABLE true)
Q_PROPERTY(QString baseClassName READ baseClassName WRITE setBaseClassName DESIGNABLE true) Q_PROPERTY(QString baseClassName READ baseClassName WRITE setBaseClassName DESIGNABLE true)
Q_PROPERTY(QString sourceFileName READ sourceFileName DESIGNABLE false) Q_PROPERTY(QString sourceFileName READ sourceFileName DESIGNABLE false)
@@ -70,6 +71,7 @@ class QTCREATOR_UTILS_EXPORT NewClassWidget : public QWidget
Q_PROPERTY(bool formInputCheckable READ formInputCheckable WRITE setFormInputCheckable DESIGNABLE true) Q_PROPERTY(bool formInputCheckable READ formInputCheckable WRITE setFormInputCheckable DESIGNABLE true)
Q_PROPERTY(bool formInputChecked READ formInputChecked WRITE setFormInputChecked DESIGNABLE true) Q_PROPERTY(bool formInputChecked READ formInputChecked WRITE setFormInputChecked DESIGNABLE true)
Q_PROPERTY(bool allowDirectories READ allowDirectories WRITE setAllowDirectories) Q_PROPERTY(bool allowDirectories READ allowDirectories WRITE setAllowDirectories)
Q_PROPERTY(bool inheritsQObject READ inheritsQObject WRITE setInheritsQObject)
Q_PROPERTY(bool lowerCaseFiles READ lowerCaseFiles WRITE setLowerCaseFiles) Q_PROPERTY(bool lowerCaseFiles READ lowerCaseFiles WRITE setLowerCaseFiles)
// Utility "USER" property for wizards containing file names. // Utility "USER" property for wizards containing file names.
Q_PROPERTY(QStringList files READ files DESIGNABLE false USER true) Q_PROPERTY(QStringList files READ files DESIGNABLE false USER true)
@@ -82,6 +84,7 @@ public:
bool isBaseClassEditable() const; bool isBaseClassEditable() const;
bool isFormInputVisible() const; bool isFormInputVisible() const;
bool isPathInputVisible() const; bool isPathInputVisible() const;
bool isQObjectCheckBoxVisible() const;
bool formInputCheckable() const; bool formInputCheckable() const;
bool formInputChecked() const; bool formInputChecked() const;
@@ -95,6 +98,7 @@ public:
QString sourceExtension() const; QString sourceExtension() const;
QString headerExtension() const; QString headerExtension() const;
QString formExtension() const; QString formExtension() const;
bool inheritsQObject() const;
bool allowDirectories() const; bool allowDirectories() const;
bool lowerCaseFiles() const; bool lowerCaseFiles() const;
@@ -114,6 +118,7 @@ public slots:
void setPathInputVisible(bool visible); void setPathInputVisible(bool visible);
void setFormInputCheckable(bool v); void setFormInputCheckable(bool v);
void setFormInputChecked(bool v); void setFormInputChecked(bool v);
void setQObjectCheckBoxVisible(bool v);
/** /**
* The name passed into the new class widget will be reformatted to be a * The name passed into the new class widget will be reformatted to be a
@@ -126,6 +131,7 @@ public slots:
void setSourceExtension(const QString &e); void setSourceExtension(const QString &e);
void setHeaderExtension(const QString &e); void setHeaderExtension(const QString &e);
void setFormExtension(const QString &e); void setFormExtension(const QString &e);
void setInheritsQObject(bool v);
void setAllowDirectories(bool v); void setAllowDirectories(bool v);
void setLowerCaseFiles(bool v); void setLowerCaseFiles(bool v);

View File

@@ -2,6 +2,14 @@
<ui version="4.0"> <ui version="4.0">
<class>Utils::NewClassWidget</class> <class>Utils::NewClassWidget</class>
<widget class="QWidget" name="Utils::NewClassWidget"> <widget class="QWidget" name="Utils::NewClassWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>213</width>
<height>190</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout"> <layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy"> <property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum> <enum>QFormLayout::ExpandingFieldsGrow</enum>
@@ -36,7 +44,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="3" column="0">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@@ -52,7 +60,7 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="2" column="1"> <item row="3" column="1">
<spacer name="verticalSpacer_2"> <spacer name="verticalSpacer_2">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@@ -68,60 +76,67 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="3" column="0"> <item row="4" column="0">
<widget class="QLabel" name="headerLabel"> <widget class="QLabel" name="headerLabel">
<property name="text"> <property name="text">
<string>Header file:</string> <string>Header file:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1"> <item row="4" column="1">
<widget class="Utils::FileNameValidatingLineEdit" name="headerFileLineEdit"/> <widget class="Utils::FileNameValidatingLineEdit" name="headerFileLineEdit"/>
</item> </item>
<item row="4" column="0"> <item row="5" column="0">
<widget class="QLabel" name="sourceLabel"> <widget class="QLabel" name="sourceLabel">
<property name="text"> <property name="text">
<string>Source file:</string> <string>Source file:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="5" column="1">
<widget class="Utils::FileNameValidatingLineEdit" name="sourceFileLineEdit"/> <widget class="Utils::FileNameValidatingLineEdit" name="sourceFileLineEdit"/>
</item> </item>
<item row="5" column="0"> <item row="6" column="0">
<widget class="QLabel" name="generateFormLabel"> <widget class="QLabel" name="generateFormLabel">
<property name="text"> <property name="text">
<string>Generate form:</string> <string>Generate form:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="7" column="0">
<widget class="QLabel" name="formLabel"> <widget class="QLabel" name="formLabel">
<property name="text"> <property name="text">
<string>Form file:</string> <string>Form file:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="1"> <item row="7" column="1">
<widget class="Utils::FileNameValidatingLineEdit" name="formFileLineEdit"/> <widget class="Utils::FileNameValidatingLineEdit" name="formFileLineEdit"/>
</item> </item>
<item row="7" column="0"> <item row="8" column="0">
<widget class="QLabel" name="pathLabel"> <widget class="QLabel" name="pathLabel">
<property name="text"> <property name="text">
<string>Path:</string> <string>Path:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="1"> <item row="8" column="1">
<widget class="Utils::PathChooser" name="pathChooser" native="true"/> <widget class="Utils::PathChooser" name="pathChooser" native="true"/>
</item> </item>
<item row="5" column="1"> <item row="6" column="1">
<widget class="QCheckBox" name="generateFormCheckBox"> <widget class="QCheckBox" name="generateFormCheckBox">
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1">
<widget class="QCheckBox" name="qobjectCheckBox">
<property name="text">
<string>Inherits QObject</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>

View File

@@ -74,6 +74,7 @@ ClassNamePage::ClassNamePage(QWidget *parent) :
m_newClassWidget->setFormInputVisible(false); m_newClassWidget->setFormInputVisible(false);
m_newClassWidget->setNamespacesEnabled(true); m_newClassWidget->setNamespacesEnabled(true);
m_newClassWidget->setAllowDirectories(true); m_newClassWidget->setAllowDirectories(true);
m_newClassWidget->setBaseClassInputVisible(true);
connect(m_newClassWidget, SIGNAL(validChanged()), this, SLOT(slotValidChanged())); connect(m_newClassWidget, SIGNAL(validChanged()), this, SLOT(slotValidChanged()));
@@ -154,6 +155,7 @@ CppClassWizardParameters CppClassWizardDialog::parameters() const
rc.sourceFile = ncw->sourceFileName(); rc.sourceFile = ncw->sourceFileName();
rc.baseClass = ncw->baseClassName(); rc.baseClass = ncw->baseClassName();
rc.path = ncw->path(); rc.path = ncw->path();
rc.inheritsQObject = ncw->inheritsQObject();
return rc; return rc;
} }
@@ -253,6 +255,8 @@ bool CppClassWizard::generateHeaderAndSource(const CppClassWizardParameters &par
else else
headerStr << "\n"; headerStr << "\n";
headerStr << namespaceIndent << "{\n"; headerStr << namespaceIndent << "{\n";
if (params.inheritsQObject)
headerStr << namespaceIndent << "Q_OBJECT\n";
headerStr << namespaceIndent << "public:\n" headerStr << namespaceIndent << "public:\n"
<< namespaceIndent << indent << unqualifiedClassName << "();\n"; << namespaceIndent << indent << unqualifiedClassName << "();\n";
headerStr << namespaceIndent << "};\n"; headerStr << namespaceIndent << "};\n";

View File

@@ -74,6 +74,7 @@ struct CppClassWizardParameters
QString sourceFile; QString sourceFile;
QString baseClass; QString baseClass;
QString path; QString path;
bool inheritsQObject;
}; };
class CppClassWizardDialog : public QWizard class CppClassWizardDialog : public QWizard