[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE
From: Ramon Zarazua <killerfox512 () gmail ! com>
Date: 2009-07-31 23:33:49
Message-ID: 1249083229.703697.28297.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1005410 by rzarazua:
Added functionality to insert generated classes into already existing files
M +24 -6 kdevelop/languages/cpp/codegen/cppnewclass.cpp
M +25 -9 kdevplatform/language/codegen/createclass.cpp
M +12 -0 kdevplatform/language/codegen/createclass.h
M +1 -1 kdevplatform/language/codegen/ui/outputlocation.ui
--- trunk/KDE/kdevelop/languages/cpp/codegen/cppnewclass.cpp #1005409:1005410
@@ -184,12 +184,29 @@
Identifier classId = Identifier(name());
// Header protector
- QString headerGuard = headerUrl().fileName().toUpper().replace('.', \
'_').replace('-','_');
- if (m_namespaces.size())
- headerGuard.prepend(m_namespaces.join("_").toUpper() + '_');
+ //If this is a new file add the header guard
+ QString headerGuard;
+ bool headerExists;
+ {
+ QFileInfo info(headerUrl().toLocalFile());
+ headerExists = info.exists();
+ }
+ if(!headerExists)
+ {
+ if(headerPosition() != SimpleCursor())
+ {
+ kWarning() << "A header position was specified for a new file, ignoring.";
+ setHeaderPosition(SimpleCursor());
+ }
+
+ headerGuard = headerUrl().fileName().toUpper().replace('.', \
'_').replace('-','_'); + if (m_namespaces.size())
+ headerGuard.prepend(m_namespaces.join("_").toUpper() + '_');
- output << "#ifndef " << headerGuard << '\n';
- output << "#define " << headerGuard << "\n\n";
+
+ output << "#ifndef " << headerGuard << '\n';
+ output << "#define " << headerGuard << "\n\n";
+ }
//Add #includes
@@ -263,7 +280,8 @@
for(int i = 0; i < m_namespaces.size(); ++i)
output << "}\n\n";
- output << "#endif // " << headerGuard << '\n';
+ if(!headerExists)
+ output << "#endif // " << headerGuard << '\n';
DocumentChangeSet changes;
changes.addChange(DocumentChange(IndexedString(headerUrl().path()),
--- trunk/KDE/kdevplatform/language/codegen/createclass.cpp #1005409:1005410
@@ -631,8 +631,17 @@
Ui::OutputLocationDialog* output;
CreateClassWizard* parent;
+
+ void updateRanges(KIntNumInput * line, KIntNumInput * column, bool enable);
};
+void OutputPagePrivate::updateRanges(KIntNumInput * line, KIntNumInput * column, \
bool enable) +{
+ kDebug() << "Updating Ranges, file exists: " << enable;
+ line->setEnabled(enable);
+ column->setEnabled(enable);
+}
+
OutputPage::OutputPage(CreateClassWizard* parent)
: QWizardPage(parent)
, d(new OutputPagePrivate)
@@ -647,16 +656,11 @@
d->output->headerUrl->fileDialog()->setOperationMode( KFileDialog::Saving );
d->output->implementationUrl->setMode( KFile::File | KFile::LocalOnly );
d->output->implementationUrl->fileDialog()->setOperationMode( \
KFileDialog::Saving );
-
- registerField("headerUrl*", d->output->headerUrl);
- registerField("implementationUrl*", d->output->implementationUrl);
- registerField("headerLine", d->output->headerLineNumber);
- registerField("headerColumn", d->output->headerColumnNumber);
- registerField("implementationLine", d->output->implementationLineNumber);
- registerField("implementationColumn", d->output->implementationColumnNumber);
connect(d->output->lowerFilenameCheckBox, SIGNAL(stateChanged(int)), this, \
SLOT(updateFileNames())); + connect(d->output->headerUrl, SIGNAL(textChanged(const \
QString &)), this, SLOT(updateHeaderRanges(const QString &))); + \
connect(d->output->implementationUrl, SIGNAL(textChanged(const QString &)), this, \
SLOT(updateImplementationRanges(const QString &))); }
void OutputPage::initializePage()
@@ -670,6 +674,18 @@
d->output->implementationUrl->setUrl(d->parent->generator()->implementationUrlFromBase(d->parent->d->baseUrl, \
d->output->lowerFilenameCheckBox->isChecked())); }
+void OutputPage::updateHeaderRanges(const QString & url)
+{
+ QFileInfo info(url);
+ d->updateRanges(d->output->headerLineNumber, d->output->headerColumnNumber, \
info.exists() && !info.isDir()); +}
+
+void OutputPage::updateImplementationRanges(const QString & url)
+{
+ QFileInfo info(url);
+ d->updateRanges(d->output->implementationLineNumber, \
d->output->implementationColumnNumber, info.exists() && !info.isDir()); +}
+
bool OutputPage::isComplete() const
{
return !d->output->headerUrl->url().url().isEmpty() && \
!d->output->implementationUrl->url().url().isEmpty(); @@ -679,8 +695,8 @@
{
d->parent->generator()->setHeaderUrl(d->output->headerUrl->text());
d->parent->generator()->setImplementationUrl(d->output->implementationUrl->text());
- d->parent->generator()->setHeaderPosition(SimpleCursor(field("headerLine").toInt(), \
field("headerColumn").toInt()));
- d->parent->generator()->setHeaderPosition(SimpleCursor(field("implementationLine").toInt(), \
field("implementationColumn").toInt())); + \
d->parent->generator()->setHeaderPosition(SimpleCursor(d->output->headerLineNumber->value(), \
d->output->headerColumnNumber->value())); + \
d->parent->generator()->setImplementationPosition(SimpleCursor(d->output->implementationLineNumber->value(), \
d->output->implementationColumnNumber->value())); return true;
}
--- trunk/KDE/kdevplatform/language/codegen/createclass.h #1005409:1005410
@@ -307,6 +307,18 @@
private slots:
virtual void updateFileNames();
+
+ /**
+ * This implementation simply enables the position widgets on a file that \
exists. + * Derived classes should overload to set the ranges where class \
generation should be allowed + */
+ virtual void updateHeaderRanges(const QString &);
+
+ /**
+ * This implementation simply enables the position widgets on a file that \
exists. + * Derived classes should overload to set the ranges where class \
generation should be allowed + */
+ virtual void updateImplementationRanges(const QString &);
};
}
--- trunk/KDE/kdevplatform/language/codegen/ui/outputlocation.ui #1005409:1005410
@@ -71,7 +71,7 @@
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="enabled">
- <bool>false</bool>
+ <bool>true</bool>
</property>
<property name="title">
<string>Location within existing file(s)</string>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic