diff --git a/installer/qinstaller.cpp b/installer/qinstaller.cpp index b0b4cbff77e..9ccaa53850c 100644 --- a/installer/qinstaller.cpp +++ b/installer/qinstaller.cpp @@ -239,7 +239,7 @@ static void appendFileData(QIODevice *out, const QString &fileName) static void appendFileData(QIODevice *out, QIODevice *in) { - Q_ASSERT(!in->isSequential()); + QTC_ASSERT(!in->isSequential(), return); qint64 size = in->size(); QByteArray &b = theBuffer(size); rawRead(in, b.data(), size); diff --git a/shared/cpaster/cgi.cpp b/shared/cpaster/cgi.cpp index 2e94dc96b02..6e8ecd1404c 100644 --- a/shared/cpaster/cgi.cpp +++ b/shared/cpaster/cgi.cpp @@ -45,7 +45,7 @@ QString CGI::encodeURL(const QString &rawText) enc.reserve(utf.length()); // Make sure we at least have space for a normal US-ASCII URL QByteArray::const_iterator it = utf.constBegin(); - while(it != utf.constEnd()) { + while (it != utf.constEnd()) { char ch = *it; if (('A' <= ch && ch <= 'Z') || ('a' <= ch && ch <= 'z') @@ -54,7 +54,7 @@ QString CGI::encodeURL(const QString &rawText) else if (ch == ' ') enc.append('+'); else { - switch(ch) { + switch (ch) { case '-': case '_': case '(': case ')': case '.': case '!': @@ -80,15 +80,15 @@ QString CGI::decodeURL(const QString &urlText) { QByteArray dec; QString::const_iterator it = urlText.constBegin(); - while(it != urlText.constEnd()) { + while (it != urlText.constEnd()) { ushort ch = (*it).unicode(); - switch(ch) { + switch (ch) { case '%': { char c1 = char(0x00ff & (*(++it)).unicode()); char c2 = char(0x00ff & (*(++it)).unicode()); ushort v = 0; - if('A' <= c1 && c1 <= 'Z') + if ('A' <= c1 && c1 <= 'Z') v = c1 - 'A' + 10; else if ('a' <= c1 && c1 <= 'z') v = c1 - 'a' + 10; @@ -97,7 +97,7 @@ QString CGI::decodeURL(const QString &urlText) else continue; // Malformed URL! v <<= 4; // c1 was MSB half - if('A' <= c2 && c2 <= 'Z') + if ('A' <= c2 && c2 <= 'Z') v |= c2 - 'A' + 10; else if ('a' <= c2 && c2 <= 'z') v |= c2 - 'a' + 10; @@ -123,7 +123,7 @@ QString CGI::decodeURL(const QString &urlText) // ------------------------------------------------------------------------------------------------- inline const char *unicodeToHTML(ushort unicode_char) { - switch(unicode_char) { + switch (unicode_char) { // Latin ------------------------------- case 0x0022: return "quot"; // (34 ) quotation mark = APL quote case 0x0026: return "amp"; // (38 ) ampersand diff --git a/shared/cpaster/splitter.cpp b/shared/cpaster/splitter.cpp index 08ec626f625..22ccf1d9901 100644 --- a/shared/cpaster/splitter.cpp +++ b/shared/cpaster/splitter.cpp @@ -66,10 +66,8 @@ FileDataList splitDiffToFiles(const QByteArray &data) // The algorithm works like this: // On the first match we only get the filename of the first patch part // On the second match (if any) we get the diff content, and the name of the next file patch - // - - while(-1 != (splitIndex = splitExpr.indexIn(strData,splitIndex))) { + while (-1 != (splitIndex = splitExpr.indexIn(strData,splitIndex))) { if (!filename.isEmpty()) { QString content = strData.mid(previousSplit, splitIndex - previousSplit); ret.append(FileData(filename, content.toLatin1())); diff --git a/shared/cpaster/view.cpp b/shared/cpaster/view.cpp index ca5bd270eb2..6c37defe36b 100644 --- a/shared/cpaster/view.cpp +++ b/shared/cpaster/view.cpp @@ -125,7 +125,7 @@ QString View::getComment() QByteArray View::getContent() { QByteArray newContent; - for(int i = 0; i < m_ui.uiPatchList->count(); ++i) { + for (int i = 0; i < m_ui.uiPatchList->count(); ++i) { QListWidgetItem *item = m_ui.uiPatchList->item(i); if (item->checkState() != Qt::Unchecked) newContent += m_parts.at(i).content; @@ -159,7 +159,7 @@ int View::show(const QString &user, const QString &description, const QString &c QByteArray content; m_parts = parts; m_ui.uiPatchList->clear(); - foreach(const FileData part, parts) { + foreach (const FileData part, parts) { QListWidgetItem *itm = new QListWidgetItem(part.filename, m_ui.uiPatchList); itm->setCheckState(Qt::Checked); itm->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); diff --git a/shared/cplusplus/Control.cpp b/shared/cplusplus/Control.cpp index c994dbab9a2..a486dfdb940 100644 --- a/shared/cplusplus/Control.cpp +++ b/shared/cplusplus/Control.cpp @@ -511,6 +511,12 @@ Identifier *Control::findOrInsertIdentifier(const char *chars) return findOrInsertIdentifier(chars, length); } +Control::IdentifierIterator Control::firstIdentifier() const +{ return d->identifiers.begin(); } + +Control::IdentifierIterator Control::lastIdentifier() const +{ return d->identifiers.end(); } + StringLiteral *Control::findOrInsertStringLiteral(const char *chars, unsigned size) { return d->stringLiterals.findOrInsertLiteral(chars, size); } diff --git a/shared/cplusplus/Control.h b/shared/cplusplus/Control.h index fa7b4faa502..bd4b204843f 100644 --- a/shared/cplusplus/Control.h +++ b/shared/cplusplus/Control.h @@ -151,6 +151,11 @@ public: Identifier *findOrInsertIdentifier(const char *chars, unsigned size); Identifier *findOrInsertIdentifier(const char *chars); + typedef const Identifier *const *IdentifierIterator; + + IdentifierIterator firstIdentifier() const; + IdentifierIterator lastIdentifier() const; + StringLiteral *findOrInsertStringLiteral(const char *chars, unsigned size); StringLiteral *findOrInsertStringLiteral(const char *chars); diff --git a/shared/designerintegrationv2/formresizer.cpp b/shared/designerintegrationv2/formresizer.cpp index 3b44599d7ef..156b8e718ac 100644 --- a/shared/designerintegrationv2/formresizer.cpp +++ b/shared/designerintegrationv2/formresizer.cpp @@ -30,19 +30,22 @@ ** version 1.2, included in the file GPL_EXCEPTION.txt in this package. ** ***************************************************************************/ + #include "formresizer.h" #include "sizehandlerect.h" #include "widgethostconstants.h" +#include + #include + #include #include #include #include #include -#include -enum { debugFormResizer=0 }; +enum { debugFormResizer = 0 }; using namespace SharedTools::Internal; @@ -140,7 +143,7 @@ void FormResizer::setFormWindow(QDesignerFormWindowInterface *fw) if (debugFormResizer) qDebug() << "FormResizer::setFormWindow " << fw; QVBoxLayout *layout = qobject_cast(m_frame->layout()); - Q_ASSERT(layout); + QTC_ASSERT(layout, return); if (layout->count()) delete layout->takeAt(0); m_formWindow = fw; diff --git a/shared/help/helpviewer.cpp b/shared/help/helpviewer.cpp index d542e4996f5..9b80e99cd84 100644 --- a/shared/help/helpviewer.cpp +++ b/shared/help/helpviewer.cpp @@ -409,7 +409,7 @@ QVariant HelpViewer::loadResource(int type, const QUrl &name) void HelpViewer::openLinkInNewTab() { - if(lastAnchor.isEmpty()) + if (lastAnchor.isEmpty()) return; parentWidget->setSourceInNewTab(QUrl(lastAnchor)); diff --git a/shared/indenter/constants.cpp b/shared/indenter/constants.cpp index 2339ceb6938..120ebdccb22 100644 --- a/shared/indenter/constants.cpp +++ b/shared/indenter/constants.cpp @@ -33,6 +33,8 @@ #include "indenter.h" +#include + using namespace SharedTools::IndenterInternal; // --- Constants @@ -55,12 +57,12 @@ Constants::Constants() : "|(?:public|protected|private|signals|Q_SIGNALS|default)(?:\\s+slots|\\s+Q_SLOTS)?\\s*" ")?:.*")) { - m_literal.setMinimal( true ); - m_inlineCComment.setMinimal( true ); - Q_ASSERT(m_literal.isValid()); - Q_ASSERT(m_label.isValid()); - Q_ASSERT(m_inlineCComment.isValid()); - Q_ASSERT(m_braceX.isValid()); - Q_ASSERT(m_iflikeKeyword.isValid()); - Q_ASSERT(m_caseLabel.isValid()); + m_literal.setMinimal(true); + m_inlineCComment.setMinimal(true); + QTC_ASSERT(m_literal.isValid(), return); + QTC_ASSERT(m_label.isValid(), return); + QTC_ASSERT(m_inlineCComment.isValid(), return); + QTC_ASSERT(m_braceX.isValid(), return); + QTC_ASSERT(m_iflikeKeyword.isValid(), return); + QTC_ASSERT(m_caseLabel.isValid(), return); } diff --git a/shared/indenter/test/main.cpp b/shared/indenter/test/main.cpp index 701f66987c0..e9c9396197a 100644 --- a/shared/indenter/test/main.cpp +++ b/shared/indenter/test/main.cpp @@ -174,7 +174,7 @@ int main(int argc, char **argv) return 1; } - foreach(QString fileName, fileNames) + foreach (const QString &fileName, fileNames) if (const int rc = format(fileName)) return rc; diff --git a/shared/proparser/procommandmanager.cpp b/shared/proparser/procommandmanager.cpp index a6b61f4a3fb..99fc3025637 100644 --- a/shared/proparser/procommandmanager.cpp +++ b/shared/proparser/procommandmanager.cpp @@ -33,6 +33,8 @@ #include "procommandmanager.h" +#include + using namespace Qt4ProjectManager::Internal; ProCommandGroup::ProCommandGroup(const QString &name) @@ -76,7 +78,7 @@ ProCommandManager::~ProCommandManager() void ProCommandManager::beginGroup(const QString &name) { - Q_ASSERT(!m_group); + QTC_ASSERT(!m_group, return); if (m_pos != m_groups.count()) { int removecount = m_groups.count() - m_pos; @@ -95,7 +97,7 @@ bool ProCommandManager::hasGroup() const void ProCommandManager::endGroup() { - Q_ASSERT(m_group); + QTC_ASSERT(m_group, return); m_groups.append(m_group); m_pos = m_groups.count(); @@ -106,7 +108,7 @@ void ProCommandManager::endGroup() bool ProCommandManager::command(ProCommand *cmd) { - Q_ASSERT(m_group); + QTC_ASSERT(m_group, return false); if (cmd->redo()) { m_group->appendCommand(cmd); diff --git a/shared/proparser/proeditor.cpp b/shared/proparser/proeditor.cpp index 02287b06ab1..93adb12493e 100644 --- a/shared/proparser/proeditor.cpp +++ b/shared/proparser/proeditor.cpp @@ -139,7 +139,7 @@ bool ProEditor::eventFilter(QObject *, QEvent *event) if (event->type() == QEvent::ShortcutOverride) { QKeyEvent *k = static_cast(event); if (k->modifiers() == Qt::ControlModifier) { - switch(k->key()) { + switch (k->key()) { case Qt::Key_X: cut(); return true; case Qt::Key_C: @@ -168,11 +168,8 @@ void ProEditor::updatePasteAction() bool pasteEnabled = false; const QMimeData *data = QApplication::clipboard()->mimeData(); - if (data) { - if (data->hasFormat(QLatin1String("application/x-problock"))) { - pasteEnabled = true; - } - } + if (data && data->hasFormat(QLatin1String("application/x-problock"))) + pasteEnabled = true; m_pasteAction->setEnabled(pasteEnabled); } diff --git a/shared/proparser/proeditormodel.cpp b/shared/proparser/proeditormodel.cpp index d0f28f68688..a929c7ab88d 100644 --- a/shared/proparser/proeditormodel.cpp +++ b/shared/proparser/proeditormodel.cpp @@ -732,13 +732,10 @@ bool ProEditorModel::insertItem(ProItem *item, int row, const QModelIndex &paren void ProEditorModel::markProFileModified(QModelIndex index) { - while(index.isValid()) - { - if( proItem(index)->kind() == ProItem::BlockKind) - { + while (index.isValid()) { + if (proItem(index)->kind() == ProItem::BlockKind) { ProBlock * block = proBlock(index); - if(block->blockKind() == ProBlock::ProFileKind) - { + if (block->blockKind() == ProBlock::ProFileKind) { ProFile * file = static_cast(block); file->setModified(true); return; @@ -791,9 +788,9 @@ QString ProEditorModel::expressionToString(ProBlock *block, bool display) const { QString result; QList items = block->items(); - for(int i=0; ikind()) { + switch (item->kind()) { case ProItem::FunctionKind: { ProFunction *v = static_cast(item); result += v->text(); @@ -808,14 +805,16 @@ QString ProEditorModel::expressionToString(ProBlock *block, bool display) const } else { result += v->text(); } - break; } + break; + } case ProItem::OperatorKind: { ProOperator *v = static_cast(item); if (v->operatorKind() == ProOperator::NotOperator) result += QLatin1Char('!'); else result += QLatin1Char('|'); - break; } + break; + } case ProItem::ValueKind: case ProItem::BlockKind: break; // ### unhandled @@ -847,7 +846,7 @@ QList ProEditorModel::stringToExpression(const QString &exp) const bool c = false; QString tmpstr; - for (int i=0; i + #include #include #include @@ -332,7 +334,7 @@ void ProFileEvaluator::Private::insertOperator(const char op) updateItem(); ProOperator::OperatorKind opkind; - switch(op) { + switch (op) { case '!': opkind = ProOperator::NotOperator; break; @@ -532,21 +534,21 @@ bool ProFileEvaluator::Private::visitEndProFile(ProFile * pro) evaluateFile(mkspecDirectory + "/features/default_post.prf", &ok); QStringList processed; - while(1) { + while (1) { bool finished = true; QStringList configs = values("CONFIG"); - for(int i = configs.size()-1; i >= 0; --i) { + for (int i = configs.size()-1; i >= 0; --i) { const QString config = configs[i].toLower(); - if(!processed.contains(config)) { + if (!processed.contains(config)) { processed.append(config); evaluateFile(mkspecDirectory + "/features/" + config + ".prf", &ok); - if(ok) { + if (ok) { finished = false; break; } } } - if(finished) + if (finished) break; } } @@ -683,7 +685,7 @@ bool ProFileEvaluator::Private::visitProFunction(ProFunction *func) QString text = func->text(); int lparen = text.indexOf(QLatin1Char('(')); int rparen = text.lastIndexOf(QLatin1Char(')')); - Q_ASSERT(lparen < rparen); + QTC_ASSERT(lparen < rparen, return false); QString arguments = text.mid(lparen + 1, rparen - lparen - 1); QString funcName = text.left(lparen); diff --git a/shared/proparser/proparserutils.h b/shared/proparser/proparserutils.h index 8c5cb3aaabc..82941e31c1b 100644 --- a/shared/proparser/proparserutils.h +++ b/shared/proparser/proparserutils.h @@ -173,41 +173,41 @@ static QStringList split_arg_list(QString params) const QChar *params_data = params.data(); const int params_len = params.length(); int last = 0; - while(last < params_len && ((params_data+last)->unicode() == SPACE + while (last < params_len && ((params_data+last)->unicode() == SPACE /*|| (params_data+last)->unicode() == TAB*/)) ++last; - for(int x = last, parens = 0; x <= params_len; x++) { + for (int x = last, parens = 0; x <= params_len; x++) { unicode = (params_data+x)->unicode(); - if(x == params_len) { - while(x && (params_data+(x-1))->unicode() == SPACE) + if (x == params_len) { + while (x && (params_data+(x-1))->unicode() == SPACE) --x; QString mid(params_data+last, x-last); - if(quote) { - if(mid[0] == quote && mid[(int)mid.length()-1] == quote) + if (quote) { + if (mid[0] == quote && mid[(int)mid.length()-1] == quote) mid = mid.mid(1, mid.length()-2); quote = 0; } args << mid; break; } - if(unicode == LPAREN) { + if (unicode == LPAREN) { --parens; - } else if(unicode == RPAREN) { + } else if (unicode == RPAREN) { ++parens; - } else if(quote && unicode == quote) { + } else if (quote && unicode == quote) { quote = 0; - } else if(!quote && (unicode == SINGLEQUOTE || unicode == DOUBLEQUOTE)) { + } else if (!quote && (unicode == SINGLEQUOTE || unicode == DOUBLEQUOTE)) { quote = unicode; - } else if(!parens && !quote && unicode == COMMA) { + } else if (!parens && !quote && unicode == COMMA) { QString mid = params.mid(last, x - last).trimmed(); args << mid; last = x+1; - while(last < params_len && ((params_data+last)->unicode() == SPACE + while (last < params_len && ((params_data+last)->unicode() == SPACE /*|| (params_data+last)->unicode() == TAB*/)) ++last; } } - for(int i = 0; i < args.count(); i++) + for (int i = 0; i < args.count(); i++) unquote(&args[i]); return args; } @@ -227,22 +227,22 @@ static QStringList split_value_list(const QString &vals, bool do_semicolon=false const QChar *vals_data = vals.data(); const int vals_len = vals.length(); - for(int x = 0, parens = 0; x < vals_len; x++) { + for (int x = 0, parens = 0; x < vals_len; x++) { QChar c = vals_data[x]; if (x != vals_len-1 && c == BACKSLASH && vals_data[x+1].unicode() == '\'' || vals_data[x+1] == DOUBLEQUOTE) { build += vals_data[x++]; // get that 'escape' } else if (!quote.isEmpty() && c == quote.top()) { quote.pop(); - } else if(c == SINGLEQUOTE || c == DOUBLEQUOTE) { + } else if (c == SINGLEQUOTE || c == DOUBLEQUOTE) { quote.push(c); - } else if(c == RPAREN) { + } else if (c == RPAREN) { --parens; - } else if(c == LPAREN) { + } else if (c == LPAREN) { ++parens; } - if(!parens && quote.isEmpty() && ((do_semicolon && c == SEMICOLON) || + if (!parens && quote.isEmpty() && ((do_semicolon && c == SEMICOLON) || vals_data[x] == Option::field_sep)) { ret << build; build.clear(); @@ -250,7 +250,7 @@ static QStringList split_value_list(const QString &vals, bool do_semicolon=false build += vals_data[x]; } } - if(!build.isEmpty()) + if (!build.isEmpty()) ret << build; return ret; } @@ -262,7 +262,7 @@ static QStringList qmake_mkspec_paths() QByteArray qmakepath = qgetenv("QMAKEPATH"); if (!qmakepath.isEmpty()) { const QStringList lst = splitPathList(QString::fromLocal8Bit(qmakepath)); - for(QStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it) + for (QStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it) ret << ((*it) + concat); } ret << QLibraryInfo::location(QLibraryInfo::DataPath) + concat; diff --git a/shared/proparser/prowriter.cpp b/shared/proparser/prowriter.cpp index 0f215fd79c4..98787294ce4 100644 --- a/shared/proparser/prowriter.cpp +++ b/shared/proparser/prowriter.cpp @@ -137,7 +137,7 @@ void ProWriter::writeBlock(ProBlock *block, const QString &indent) if (block->blockKind() & ProBlock::VariableKind) { ProVariable *v = static_cast(block); m_out << v->variable(); - switch(v->variableOperator()) { + switch (v->variableOperator()) { case ProVariable::AddOperator: m_out << QLatin1String(" += "); break; case ProVariable::RemoveOperator: @@ -165,12 +165,12 @@ void ProWriter::writeBlock(ProBlock *block, const QString &indent) } QList items = block->items(); - for (int i=0; iitems()) { + foreach (ProItem *child, block->items()) { QDomNode childNode = createItemNode(doc, child); if (!childNode.isNull()) tag.appendChild(childNode); diff --git a/shared/proparser/valueeditor.cpp b/shared/proparser/valueeditor.cpp index 2208b0492e9..638d7994a92 100644 --- a/shared/proparser/valueeditor.cpp +++ b/shared/proparser/valueeditor.cpp @@ -131,7 +131,7 @@ void ValueEditor::initialize() connect(m_itemListWidget, SIGNAL(itemChanged(QListWidgetItem *)), this, SLOT(updateItemChanges(QListWidgetItem *))); - foreach(ProVariableInfo *varinfo, m_infomanager->variables()) { + foreach (ProVariableInfo *varinfo, m_infomanager->variables()) { m_varComboBox->addItem(varinfo->name(), varinfo->id()); } diff --git a/shared/qrceditor/resourcefile.cpp b/shared/qrceditor/resourcefile.cpp index daf1946e53e..f394f43f41e 100644 --- a/shared/qrceditor/resourcefile.cpp +++ b/shared/qrceditor/resourcefile.cpp @@ -33,13 +33,16 @@ #include "resourcefile_p.h" -#include -#include -#include +#include + #include -#include -#include #include +#include +#include +#include +#include +#include + #include #include @@ -109,14 +112,14 @@ bool ResourceFile::load() const QString language = relt.attribute(QLatin1String("lang")); const int idx = indexOfPrefix(prefix); - Prefix * p = NULL; + Prefix * p = 0; if (idx == -1) { p = new Prefix(prefix, language); m_prefix_list.append(p); } else { p = m_prefix_list[idx]; } - Q_ASSERT(p != NULL); + QTC_ASSERT(p, return false); QDomElement felt = relt.firstChildElement(QLatin1String("file")); for (; !felt.isNull(); felt = felt.nextSiblingElement(QLatin1String("file"))) { @@ -151,7 +154,7 @@ bool ResourceFile::save() const QStringList name_list = prefixList(); - foreach (QString name, name_list) { + foreach (const QString &name, name_list) { FileList file_list; QString lang; foreach (Prefix *pref, m_prefix_list) { @@ -164,7 +167,7 @@ bool ResourceFile::save() QDomElement relt = doc.createElement(QLatin1String("qresource")); root.appendChild(relt); relt.setAttribute(QLatin1String("prefix"), name); - if(!lang.isEmpty()) + if (!lang.isEmpty()) relt.setAttribute(QLatin1String("lang"), lang); foreach (const File *f, file_list) { @@ -247,9 +250,9 @@ bool ResourceFile::isEmpty() const QStringList ResourceFile::fileList(int pref_idx) const { - Q_ASSERT((pref_idx >= 0) && (pref_idx < m_prefix_list.count())); - const FileList &abs_file_list = m_prefix_list.at(pref_idx)->file_list; QStringList result; + QTC_ASSERT(pref_idx >= 0 && pref_idx < m_prefix_list.count(), return result); + const FileList &abs_file_list = m_prefix_list.at(pref_idx)->file_list; foreach (const File *abs_file, abs_file_list) result.append(relativePath(abs_file->name)); return result; @@ -258,9 +261,9 @@ QStringList ResourceFile::fileList(int pref_idx) const void ResourceFile::addFile(int prefix_idx, const QString &file, int file_idx) { Prefix * const p = m_prefix_list[prefix_idx]; - Q_ASSERT(p != NULL); + QTC_ASSERT(p, return); FileList &files = p->file_list; - Q_ASSERT((file_idx >= -1) && (file_idx <= files.size())); + QTC_ASSERT(file_idx >= -1 && file_idx <= files.size(), return); if (file_idx == -1) file_idx = files.size(); files.insert(file_idx, new File(p, absolutePath(file))); @@ -272,7 +275,7 @@ void ResourceFile::addPrefix(const QString &prefix, int prefix_idx) if (indexOfPrefix(fixed_prefix) != -1) return; - Q_ASSERT((prefix_idx >= -1) && (prefix_idx <= m_prefix_list.size())); + QTC_ASSERT(prefix_idx >= -1 && prefix_idx <= m_prefix_list.size(), return); if (prefix_idx == -1) prefix_idx = m_prefix_list.size(); m_prefix_list.insert(prefix_idx, new Prefix(fixed_prefix)); @@ -280,7 +283,7 @@ void ResourceFile::addPrefix(const QString &prefix, int prefix_idx) void ResourceFile::removePrefix(int prefix_idx) { - Q_ASSERT((prefix_idx >= 0) && (prefix_idx < m_prefix_list.count())); + QTC_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count(), return); Prefix * const p = m_prefix_list.at(prefix_idx); delete p; m_prefix_list.removeAt(prefix_idx); @@ -288,39 +291,39 @@ void ResourceFile::removePrefix(int prefix_idx) void ResourceFile::removeFile(int prefix_idx, int file_idx) { - Q_ASSERT((prefix_idx >= 0) && (prefix_idx < m_prefix_list.count())); + QTC_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count(), return); FileList &fileList = m_prefix_list[prefix_idx]->file_list; - Q_ASSERT((file_idx >= 0) && (file_idx < fileList.count())); + QTC_ASSERT(file_idx >= 0 && file_idx < fileList.count(), return); delete fileList.at(file_idx); fileList.removeAt(file_idx); } void ResourceFile::replacePrefix(int prefix_idx, const QString &prefix) { - Q_ASSERT((prefix_idx >= 0) && (prefix_idx < m_prefix_list.count())); + QTC_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count(), return); m_prefix_list[prefix_idx]->name = fixPrefix(prefix); } void ResourceFile::replaceLang(int prefix_idx, const QString &lang) { - Q_ASSERT((prefix_idx >= 0) && (prefix_idx < m_prefix_list.count())); + QTC_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count(), return); m_prefix_list[prefix_idx]->lang = lang; } void ResourceFile::replaceAlias(int prefix_idx, int file_idx, const QString &alias) { - Q_ASSERT((prefix_idx >= 0) && (prefix_idx < m_prefix_list.count())); + QTC_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count(), return); FileList &fileList = m_prefix_list.at(prefix_idx)->file_list; - Q_ASSERT((file_idx >= 0) && (file_idx < fileList.count())); + QTC_ASSERT(file_idx >= 0 && file_idx < fileList.count(), return); fileList[file_idx]->alias = alias; } void ResourceFile::replaceFile(int pref_idx, int file_idx, const QString &file) { - Q_ASSERT((pref_idx >= 0) && (pref_idx < m_prefix_list.count())); + QTC_ASSERT(pref_idx >= 0 && pref_idx < m_prefix_list.count(), return); FileList &fileList = m_prefix_list.at(pref_idx)->file_list; - Q_ASSERT((file_idx >= 0) && (file_idx < fileList.count())); + QTC_ASSERT(file_idx >= 0 && file_idx < fileList.count(), return); fileList[file_idx]->name = file; } @@ -336,7 +339,7 @@ int ResourceFile::indexOfPrefix(const QString &prefix) const int ResourceFile::indexOfFile(int pref_idx, const QString &file) const { - Q_ASSERT((pref_idx >= 0) && (pref_idx < m_prefix_list.count())); + QTC_ASSERT(pref_idx >= 0 && pref_idx < m_prefix_list.count(), return -1); Prefix * const p = m_prefix_list.at(pref_idx); File equalFile(p, absolutePath(file)); return p->file_list.indexOf(&equalFile); @@ -370,16 +373,16 @@ bool ResourceFile::contains(const QString &prefix, const QString &file) const return false; if (file.isEmpty()) return true; - Q_ASSERT((pref_idx >= 0) && (pref_idx < m_prefix_list.count())); + QTC_ASSERT(pref_idx >= 0 && pref_idx < m_prefix_list.count(), return false); Prefix * const p = m_prefix_list.at(pref_idx); - Q_ASSERT(p != NULL); + QTC_ASSERT(p, return false); File equalFile(p, absolutePath(file)); return p->file_list.contains(&equalFile); } bool ResourceFile::contains(int pref_idx, const QString &file) const { - Q_ASSERT((pref_idx >= 0) && (pref_idx < m_prefix_list.count())); + QTC_ASSERT(pref_idx >= 0 && pref_idx < m_prefix_list.count(), return false); Prefix * const p = m_prefix_list.at(pref_idx); File equalFile(p, absolutePath(file)); return p->file_list.contains(&equalFile); @@ -409,49 +412,49 @@ int ResourceFile::prefixCount() const QString ResourceFile::prefix(int idx) const { - Q_ASSERT((idx >= 0) && (idx < m_prefix_list.count())); + QTC_ASSERT((idx >= 0) && (idx < m_prefix_list.count()), return QString()); return m_prefix_list.at(idx)->name; } QString ResourceFile::lang(int idx) const { - Q_ASSERT((idx >= 0) && (idx < m_prefix_list.count())); + QTC_ASSERT(idx >= 0 && idx < m_prefix_list.count(), return QString()); return m_prefix_list.at(idx)->lang; } int ResourceFile::fileCount(int prefix_idx) const { - Q_ASSERT((prefix_idx >= 0) && (prefix_idx < m_prefix_list.count())); + QTC_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count(), return 0); return m_prefix_list.at(prefix_idx)->file_list.size(); } QString ResourceFile::file(int prefix_idx, int file_idx) const { - Q_ASSERT((prefix_idx >= 0) && (prefix_idx < m_prefix_list.count())); + QTC_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count(), return QString()); FileList &fileList = m_prefix_list.at(prefix_idx)->file_list; - Q_ASSERT((file_idx >= 0) && (file_idx < fileList.count())); + QTC_ASSERT(file_idx >= 0 && file_idx < fileList.count(), return QString()); return fileList.at(file_idx)->name; } QString ResourceFile::alias(int prefix_idx, int file_idx) const { - Q_ASSERT((prefix_idx >= 0) && (prefix_idx < m_prefix_list.count())); + QTC_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count(), return QString()); FileList &fileList = m_prefix_list.at(prefix_idx)->file_list; - Q_ASSERT((file_idx >= 0) && (file_idx < fileList.count())); + QTC_ASSERT(file_idx >= 0 && file_idx < fileList.count(), return QString()); return fileList.at(file_idx)->alias; } void * ResourceFile::prefixPointer(int prefixIndex) const { - Q_ASSERT((prefixIndex >= 0) && (prefixIndex < m_prefix_list.count())); + QTC_ASSERT(prefixIndex >= 0 && prefixIndex < m_prefix_list.count(), return 0); return m_prefix_list.at(prefixIndex); } void * ResourceFile::filePointer(int prefixIndex, int fileIndex) const { - Q_ASSERT((prefixIndex >= 0) && (prefixIndex < m_prefix_list.count())); + QTC_ASSERT(prefixIndex >= 0 && prefixIndex < m_prefix_list.count(), return 0); FileList &fileList = m_prefix_list.at(prefixIndex)->file_list; - Q_ASSERT((fileIndex >= 0) && (fileIndex < fileList.count())); + QTC_ASSERT(fileIndex >= 0 && fileIndex < fileList.count(), return 0); return fileList.at(fileIndex); } @@ -497,28 +500,28 @@ QModelIndex ResourceModel::index(int row, int column, const QModelIndex &parent) if (column != 0) return QModelIndex(); - void * internalPointer = NULL; + void * internalPointer = 0; if (parent.isValid()) { void * const pip = parent.internalPointer(); - if (pip == NULL) + if (pip == 0) return QModelIndex(); // File node Node * const node = reinterpret_cast(pip); Prefix * const prefix = node->prefix(); - Q_ASSERT(prefix != NULL); - if ((row < 0) || (row >= prefix->file_list.count())) + QTC_ASSERT(prefix, return QModelIndex()); + if (row < 0 || row >= prefix->file_list.count()) return QModelIndex(); const int prefixIndex = m_resource_file.prefixPointerIndex(prefix); const int fileIndex = row; internalPointer = m_resource_file.filePointer(prefixIndex, fileIndex); } else { // Prefix node - if ((row < 0) || (row >= m_resource_file.prefixCount())) + if (row < 0 || row >= m_resource_file.prefixCount()) return QModelIndex(); internalPointer = m_resource_file.prefixPointer(row); } - Q_ASSERT(internalPointer != NULL); + QTC_ASSERT(internalPointer, return QModelIndex()); return createIndex(row, 0, internalPointer); } @@ -528,16 +531,16 @@ QModelIndex ResourceModel::parent(const QModelIndex &index) const return QModelIndex(); void * const internalPointer = index.internalPointer(); - if (internalPointer == NULL) + if (internalPointer == 0) return QModelIndex(); Node * const node = reinterpret_cast(internalPointer); Prefix * const prefix = node->prefix(); - Q_ASSERT(prefix != NULL); + QTC_ASSERT(prefix, return QModelIndex()); bool const isFileNode = (prefix != node); if (isFileNode) { const int row = m_resource_file.prefixPointerIndex(prefix); - Q_ASSERT(row >= 0); + QTC_ASSERT(row >= 0, return QModelIndex()); return createIndex(row, 0, prefix); } else { return QModelIndex(); @@ -550,7 +553,7 @@ int ResourceModel::rowCount(const QModelIndex &parent) const void * const internalPointer = parent.internalPointer(); Node * const node = reinterpret_cast(internalPointer); Prefix * const prefix = node->prefix(); - Q_ASSERT(prefix != NULL); + QTC_ASSERT(prefix, return 0); bool const isFileNode = (prefix != node); if (isFileNode) { @@ -609,7 +612,7 @@ QVariant ResourceModel::data(const QModelIndex &index, int role) const Node * const node = reinterpret_cast(internalPointer); Prefix const * const prefix = node->prefix(); File const * const file = node->file(); - Q_ASSERT(prefix != NULL); + QTC_ASSERT(prefix, return QVariant()); bool const isFileNode = (prefix != node); QVariant result; @@ -622,14 +625,14 @@ QVariant ResourceModel::data(const QModelIndex &index, int role) const // Prefix node stringRes = prefix->name; const QString &lang = prefix->lang; - if(!lang.isEmpty()) + if (!lang.isEmpty()) appendParenthesized(lang, stringRes); } else { // File node - Q_ASSERT(file != NULL); + QTC_ASSERT(file, return result); stringRes = QFileInfo(file->name).fileName(); const QString alias = file->alias; - if(!alias.isEmpty()) + if (!alias.isEmpty()) appendParenthesized(alias, stringRes); } result = stringRes; @@ -638,7 +641,7 @@ QVariant ResourceModel::data(const QModelIndex &index, int role) const case Qt::DecorationRole: if (isFileNode) { // File node - Q_ASSERT(file != NULL); + QTC_ASSERT(file, return result); const QString path = m_resource_file.absolutePath(file->name); if (iconFileExtension(path)) { const QIcon icon(path); @@ -650,11 +653,11 @@ QVariant ResourceModel::data(const QModelIndex &index, int role) const case Qt::ToolTipRole: if (isFileNode) { // File node - Q_ASSERT(file != NULL); + QTC_ASSERT(file, return result); QString conv_file = m_resource_file.relativePath(file->name); QString stringRes = conv_file.replace(QDir::separator(), QLatin1Char('/')); const QString &alias_file = file->alias; - if(!alias_file.isEmpty()) + if (!alias_file.isEmpty()) appendParenthesized(alias_file, stringRes); result = stringRes; @@ -679,12 +682,12 @@ void ResourceModel::getItem(const QModelIndex &index, QString &prefix, QString & void * const internalPointer = index.internalPointer(); Node * const node = reinterpret_cast(internalPointer); Prefix * const p = node->prefix(); - Q_ASSERT(p != NULL); + QTC_ASSERT(p, return); bool const isFileNode = (p != node); if (isFileNode) { - File * const f = node->file(); - Q_ASSERT(f != NULL); + File *const f = node->file(); + QTC_ASSERT(f, return); if (!f->alias.isEmpty()) file = f->alias; else @@ -696,7 +699,7 @@ void ResourceModel::getItem(const QModelIndex &index, QString &prefix, QString & QString ResourceModel::lang(const QModelIndex &index) const { - if(!index.isValid()) + if (!index.isValid()) return QString(); return m_resource_file.lang(index.row()); @@ -704,14 +707,14 @@ QString ResourceModel::lang(const QModelIndex &index) const QString ResourceModel::alias(const QModelIndex &index) const { - if(!index.isValid() || !index.parent().isValid()) + if (!index.isValid() || !index.parent().isValid()) return QString(); return m_resource_file.alias(index.parent().row(), index.row()); } QString ResourceModel::file(const QModelIndex &index) const { - if(!index.isValid() || !index.parent().isValid()) + if (!index.isValid() || !index.parent().isValid()) return QString(); return m_resource_file.file(index.parent().row(), index.row()); } @@ -852,7 +855,7 @@ void ResourceModel::changePrefix(const QModelIndex &model_idx, const QString &pr if (m_resource_file.prefix(prefix_idx) == ResourceFile::fixPrefix(prefix)) return; - if(m_resource_file.contains(prefix)) + if (m_resource_file.contains(prefix)) return; m_resource_file.replacePrefix(prefix_idx, prefix); @@ -880,7 +883,7 @@ void ResourceModel::changeAlias(const QModelIndex &index, const QString &alias) if (!index.parent().isValid()) return; - if(m_resource_file.alias(index.parent().row(), index.row()) == alias) + if (m_resource_file.alias(index.parent().row(), index.row()) == alias) return; m_resource_file.replaceAlias(index.parent().row(), index.row(), alias); emit dataChanged(index, index); diff --git a/shared/qrceditor/resourcefile_p.h b/shared/qrceditor/resourcefile_p.h index 3276c2dec1e..6643be39aba 100644 --- a/shared/qrceditor/resourcefile_p.h +++ b/shared/qrceditor/resourcefile_p.h @@ -36,10 +36,12 @@ #include "namespace_global.h" +#include + +#include +#include #include #include -#include -#include #include "shared_global_p.h" @@ -66,11 +68,11 @@ class Node protected: Node(File *file, Prefix *prefix) : m_file(file), m_prefix(prefix) { - Q_ASSERT(m_prefix != NULL); + QTC_ASSERT(m_prefix, return); } public: - File * file() { return m_file; } - Prefix * prefix() { Q_ASSERT(m_prefix != NULL); return m_prefix; } + File *file() { return m_file; } + Prefix *prefix() { return m_prefix; } private: File *m_file; Prefix *m_prefix; diff --git a/shared/qrceditor/resourceview.cpp b/shared/qrceditor/resourceview.cpp index 27a0a5a4254..d0d3a9d11c5 100644 --- a/shared/qrceditor/resourceview.cpp +++ b/shared/qrceditor/resourceview.cpp @@ -32,16 +32,20 @@ ***************************************************************************/ #include "resourceview.h" + #include "undocommands_p.h" -#include -#include +#include + +#include + #include -#include #include -#include #include -#include +#include +#include +#include +#include #include namespace SharedTools { @@ -308,14 +312,14 @@ void ResourceView::findSamePlacePostDeletionModelIndex(int &row, QModelIndex &pa EntryBackup * ResourceView::removeEntry(const QModelIndex &index) { - Q_ASSERT(m_qrcModel != NULL); + QTC_ASSERT(m_qrcModel, return 0); return m_qrcModel->removeEntry(index); } void ResourceView::addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile) { - Q_ASSERT(m_qrcModel != NULL); + QTC_ASSERT(m_qrcModel, return); m_qrcModel->addFiles(prefixIndex, fileNames, cursorFile, firstFile, lastFile); // Expand prefix node @@ -327,11 +331,11 @@ void ResourceView::addFiles(int prefixIndex, const QStringList &fileNames, int c void ResourceView::removeFiles(int prefixIndex, int firstFileIndex, int lastFileIndex) { - Q_ASSERT((prefixIndex >= 0) && (prefixIndex < m_qrcModel->rowCount(QModelIndex()))); + QTC_ASSERT(prefixIndex >= 0 && prefixIndex < m_qrcModel->rowCount(QModelIndex()), return); const QModelIndex prefixModelIndex = m_qrcModel->index(prefixIndex, 0, QModelIndex()); - Q_ASSERT(prefixModelIndex != QModelIndex()); - Q_ASSERT((firstFileIndex >= 0) && (firstFileIndex < m_qrcModel->rowCount(prefixModelIndex))); - Q_ASSERT((lastFileIndex >= 0) && (lastFileIndex < m_qrcModel->rowCount(prefixModelIndex))); + QTC_ASSERT(prefixModelIndex != QModelIndex(), return); + QTC_ASSERT(firstFileIndex >= 0 && firstFileIndex < m_qrcModel->rowCount(prefixModelIndex), return); + QTC_ASSERT(lastFileIndex >= 0 && lastFileIndex < m_qrcModel->rowCount(prefixModelIndex), return); for (int i = lastFileIndex; i >= firstFileIndex; i--) { const QModelIndex index = m_qrcModel->index(i, 0, prefixModelIndex); @@ -476,7 +480,7 @@ bool ResourceView::load(QString fileName) const QFileInfo fi(fileName); m_qrcModel->setFileName(fi.absoluteFilePath()); - if(!fi.exists()) + if (!fi.exists()) return false; const bool result = m_qrcModel->reload(); @@ -501,9 +505,8 @@ void ResourceView::changePrefix(const QModelIndex &index) QString const prefixAfter = QInputDialog::getText(this, tr("Change Prefix"), tr("Input Prefix:"), QLineEdit::Normal, prefixBefore, &ok); - if (ok) { + if (ok) addUndoCommand(preindex, PrefixProperty, prefixBefore, prefixAfter); - } } void ResourceView::changeLang(const QModelIndex &index) @@ -522,7 +525,7 @@ void ResourceView::changeLang(const QModelIndex &index) void ResourceView::changeAlias(const QModelIndex &index) { - if(!index.parent().isValid()) + if (!index.parent().isValid()) return; bool ok = false; @@ -531,9 +534,8 @@ void ResourceView::changeAlias(const QModelIndex &index) QString const aliasAfter = QInputDialog::getText(this, tr("Change File Alias"), tr("Alias:"), QLineEdit::Normal, aliasBefore, &ok); - if (ok) { + if (ok) addUndoCommand(index, AliasProperty, aliasBefore, aliasAfter); - } } QString ResourceView::currentAlias() const @@ -570,7 +572,7 @@ QString ResourceView::getCurrentValue(NodeProperty property) const case AliasProperty: return currentAlias(); case PrefixProperty: return currentPrefix(); case LanguageProperty: return currentLanguage(); - default: Q_ASSERT(false); return QString(); // Kill warning + default: QTC_ASSERT(false, /**/); return QString(); // Kill warning } } @@ -581,19 +583,20 @@ void ResourceView::changeValue(const QModelIndex &nodeIndex, NodeProperty proper case AliasProperty: m_qrcModel->changeAlias(nodeIndex, value); return; case PrefixProperty: m_qrcModel->changePrefix(nodeIndex, value); return; case LanguageProperty: m_qrcModel->changeLang(nodeIndex, value); return; - default: Q_ASSERT(false); + default: QTC_ASSERT(false, /**/); } } -void ResourceView::advanceMergeId() { +void ResourceView::advanceMergeId() +{ m_mergeId++; - if (m_mergeId < 0) { + if (m_mergeId < 0) m_mergeId = 0; - } } void ResourceView::addUndoCommand(const QModelIndex &nodeIndex, NodeProperty property, - const QString &before, const QString &after) { + const QString &before, const QString &after) +{ QUndoCommand * const command = new ModifyPropertyCommand(this, nodeIndex, property, m_mergeId, before, after); m_history->push(command); diff --git a/shared/qrceditor/undocommands.cpp b/shared/qrceditor/undocommands.cpp index 6b549326d58..246b69c0d71 100644 --- a/shared/qrceditor/undocommands.cpp +++ b/shared/qrceditor/undocommands.cpp @@ -92,7 +92,7 @@ bool ModifyPropertyCommand::mergeWith(const QUndoCommand * command) { const ModifyPropertyCommand * const brother = dynamic_cast(command); - if (command == NULL || m_property != brother->m_property) + if (command == 0 || m_property != brother->m_property) return false; // Choose older command (this) and forgot the other @@ -101,7 +101,7 @@ bool ModifyPropertyCommand::mergeWith(const QUndoCommand * command) void ModifyPropertyCommand::undo() { - Q_ASSERT(m_view != NULL); + QTC_ASSERT(m_view, return); // Save current text in m_after for redo() m_after = m_view->getCurrentValue(m_property); @@ -117,12 +117,12 @@ void ModifyPropertyCommand::redo() return; // Bring back text before undo - Q_ASSERT(m_view != NULL); + QTC_ASSERT(m_view, return); m_view->changeValue(makeIndex(), m_property, m_after); } RemoveEntryCommand::RemoveEntryCommand(ResourceView *view, const QModelIndex &index) - : ModelIndexViewCommand(view), m_entry(NULL), m_isExpanded(true) + : ModelIndexViewCommand(view), m_entry(0), m_isExpanded(true) { storeIndex(index); } @@ -142,9 +142,9 @@ void RemoveEntryCommand::redo() void RemoveEntryCommand::undo() { - if (m_entry != NULL) { + if (m_entry == 0) { m_entry->restore(); - Q_ASSERT(m_view != NULL); + QTC_ASSERT(m_view != 0, return); const QModelIndex index = makeIndex(); m_view->setExpanded(index, m_isExpanded); m_view->setCurrentIndex(index); @@ -155,7 +155,7 @@ void RemoveEntryCommand::undo() void RemoveEntryCommand::freeEntry() { delete m_entry; - m_entry = NULL; + m_entry = 0; } AddFilesCommand::AddFilesCommand(ResourceView *view, int prefixIndex, int cursorFileIndex, diff --git a/shared/qtsingleapplication/qtlocalpeer.cpp b/shared/qtsingleapplication/qtlocalpeer.cpp index f488e72134b..1e324106ad0 100644 --- a/shared/qtsingleapplication/qtlocalpeer.cpp +++ b/shared/qtsingleapplication/qtlocalpeer.cpp @@ -50,9 +50,9 @@ static PProcessIdToSessionId pProcessIdToSessionId = 0; namespace SharedTools { -const char* QtLocalPeer::ack = "ack"; +const char *QtLocalPeer::ack = "ack"; -QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) +QtLocalPeer::QtLocalPeer(QObject *parent, const QString &appId) : QObject(parent), id(appId) { if (id.isEmpty()) @@ -86,8 +86,6 @@ QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) lockFile.open(QIODevice::ReadWrite); } - - bool QtLocalPeer::isClient() { if (lockFile.isLocked()) @@ -105,7 +103,6 @@ bool QtLocalPeer::isClient() return false; } - bool QtLocalPeer::sendMessage(const QString &message, int timeout) { if (!isClient()) @@ -113,7 +110,7 @@ bool QtLocalPeer::sendMessage(const QString &message, int timeout) QLocalSocket socket; bool connOk = false; - for(int i = 0; i < 2; i++) { + for (int i = 0; i < 2; i++) { // Try twice, in case the other instance is just starting up socket.connectToServer(socketName); connOk = socket.waitForConnected(timeout/2); @@ -139,7 +136,6 @@ bool QtLocalPeer::sendMessage(const QString &message, int timeout) return res; } - void QtLocalPeer::receiveConnection() { QLocalSocket* socket = server->nextPendingConnection(); diff --git a/shared/scriptwrapper/wrap_helpers.h b/shared/scriptwrapper/wrap_helpers.h index 21ed625c161..02db144a3e5 100644 --- a/shared/scriptwrapper/wrap_helpers.h +++ b/shared/scriptwrapper/wrap_helpers.h @@ -34,6 +34,8 @@ #ifndef WRAP_HELPERS_H #define WRAP_HELPERS_H +#include + #include #include #include @@ -87,7 +89,7 @@ template Wrapped * (Wrapper::*wrappedAccessor) () const) { Wrapped *wrapped = wrappedFromScriptValue(context->thisObject(), wrappedAccessor); - Q_ASSERT(wrapped); + QTC_ASSERT(wrapped, return 0); return wrapped; } @@ -314,7 +316,7 @@ static void scriptValueToQObject(const QScriptValue &sv, SomeQObject * &p) { QObject *qObject = sv.toQObject(); p = qobject_cast(qObject); - Q_ASSERT(p); + QTC_ASSERT(p, return); } // Register a QObject-derived class which has Q_DECLARE_METATYPE(Ptr*) diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp index 45ad1f569a5..3e619548a23 100644 --- a/src/libs/cplusplus/CppDocument.cpp +++ b/src/libs/cplusplus/CppDocument.cpp @@ -32,6 +32,9 @@ ***************************************************************************/ #include "CppDocument.h" + +#include + #include #include #include @@ -143,9 +146,9 @@ void Document::appendMacro(const Macro ¯o) _definedMacros.append(macro); } -void Document::addMacroUse(unsigned offset, unsigned length) +void Document::addMacroUse(const Macro ¯o, unsigned offset, unsigned length) { - _macroUses.append(Block(offset, offset + length)); + _macroUses.append(MacroUse(macro, offset, offset + length)); } TranslationUnit *Document::translationUnit() const @@ -270,7 +273,7 @@ bool Document::parse(ParseMode mode) void Document::check() { - Q_ASSERT(! _globalNamespace); + QTC_ASSERT(!_globalNamespace, return); Semantic semantic(_control); diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h index d289c579e9c..aaca36c18ee 100644 --- a/src/libs/cplusplus/CppDocument.h +++ b/src/libs/cplusplus/CppDocument.h @@ -68,8 +68,7 @@ public: void addIncludeFile(const QString &fileName); void appendMacro(const Macro ¯o); - - void addMacroUse(unsigned offset, unsigned length); + void addMacroUse(const Macro ¯o, unsigned offset, unsigned length); Control *control() const; TranslationUnit *translationUnit() const; @@ -177,12 +176,30 @@ public: inline unsigned end() const { return _end; } + + bool contains(unsigned pos) const + { return pos >= _begin && pos < _end; } + }; + + class MacroUse: public Block { + Macro _macro; + + public: + inline MacroUse(const Macro ¯o, + unsigned begin = 0, + unsigned end = 0) + : Block(begin, end), + _macro(macro) + { } + + const Macro ¯o() const + { return _macro; } }; QList skippedBlocks() const { return _skippedBlocks; } - QList macroUses() const + QList macroUses() const { return _macroUses; } private: @@ -197,7 +214,7 @@ private: QList _diagnosticMessages; QList _definedMacros; QList _skippedBlocks; - QList _macroUses; + QList _macroUses; }; } // end of namespace CPlusPlus diff --git a/src/libs/cplusplus/OverviewModel.cpp b/src/libs/cplusplus/OverviewModel.cpp index 20658778905..7f38cb8ba1a 100644 --- a/src/libs/cplusplus/OverviewModel.cpp +++ b/src/libs/cplusplus/OverviewModel.cpp @@ -34,6 +34,8 @@ #include "OverviewModel.h" #include "Overview.h" +#include + #include #include #include @@ -81,13 +83,13 @@ QModelIndex OverviewModel::index(int row, int column, const QModelIndex &parent) return createIndex(row, column, symbol); } else { Symbol *parentSymbol = static_cast(parent.internalPointer()); - Q_ASSERT(parentSymbol != 0); + QTC_ASSERT(parentSymbol, return QModelIndex()); ScopedSymbol *scopedSymbol = parentSymbol->asScopedSymbol(); - Q_ASSERT(scopedSymbol != 0); + QTC_ASSERT(scopedSymbol, return QModelIndex()); Scope *scope = scopedSymbol->members(); - Q_ASSERT(scope != 0); + QTC_ASSERT(scope, return QModelIndex()); return createIndex(row, 0, scope->symbolAt(row)); } @@ -124,12 +126,12 @@ int OverviewModel::rowCount(const QModelIndex &parent) const if (!parent.parent().isValid() && parent.row() == 0) // account for no symbol item return 0; Symbol *parentSymbol = static_cast(parent.internalPointer()); - Q_ASSERT(parentSymbol != 0); + QTC_ASSERT(parentSymbol, return 0); if (ScopedSymbol *scopedSymbol = parentSymbol->asScopedSymbol()) { if (!scopedSymbol->isFunction()) { Scope *parentScope = scopedSymbol->members(); - Q_ASSERT(parentScope != 0); + QTC_ASSERT(parentScope, return 0); return parentScope->symbolCount(); } diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp index cfcd06cacd7..6915e1169b0 100644 --- a/src/libs/cplusplus/ResolveExpression.cpp +++ b/src/libs/cplusplus/ResolveExpression.cpp @@ -45,12 +45,14 @@ #include #include -#include -#include +#include + +#include +#include using namespace CPlusPlus; -namespace { +namespace { typedef QList< QPair > Substitution; @@ -98,7 +100,7 @@ protected: // types virtual void visit(PointerToMemberType * /*ty*/) { - Q_ASSERT(0); + QTC_ASSERT(false, /**/); } virtual void visit(PointerType *ty) @@ -150,32 +152,32 @@ protected: { /* nothing to do*/ } virtual void visit(Namespace *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } virtual void visit(Class *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } virtual void visit(Enum *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } // names virtual void visit(NameId *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } virtual void visit(TemplateNameId *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } virtual void visit(DestructorNameId *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } virtual void visit(OperatorNameId *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } virtual void visit(ConversionNameId *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } virtual void visit(QualifiedNameId *) - { Q_ASSERT(0); } + { QTC_ASSERT(false, /**/); } }; } // end of anonymous namespace diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index 7bdc9b95d69..83386e8079c 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -164,7 +164,15 @@ protected: bool process_primary() { if ((*_lex)->is(T_INT_LITERAL)) { - _value.set_long(tokenSpell().toLong()); + int base = 10; + const QByteArray spell = tokenSpell(); + if (spell.at(0) == '0') { + if (spell.size() > 1 && (spell.at(1) == 'x' || spell.at(1) == 'X')) + base = 16; + else + base = 8; + } + _value.set_long(tokenSpell().toLong(0, base)); ++(*_lex); return true; } else if (isTokenDefined()) { @@ -367,7 +375,7 @@ protected: { process_xor(); - while ((*_lex)->is(T_CARET)) { + while ((*_lex)->is(T_PIPE)) { const Token op = *(*_lex); ++(*_lex); @@ -481,12 +489,12 @@ void pp::operator () (const QByteArray &filename, const QByteArray &source, QByteArray *result) { - const QByteArray previousFile = env.current_file; - env.current_file = filename; + const QByteArray previousFile = env.currentFile; + env.currentFile = filename; operator () (source, result); - env.current_file = previousFile; + env.currentFile = previousFile; } pp::State pp::createStateFromSource(const QByteArray &source) const @@ -518,7 +526,7 @@ void pp::operator()(const QByteArray &source, QByteArray *result) result->append(QByteArray::number(_dot->lineno)); result->append(' '); result->append('"'); - result->append(env.current_file); + result->append(env.currentFile); result->append('"'); result->append('\n'); } else { @@ -604,28 +612,29 @@ void pp::operator()(const QByteArray &source, QByteArray *result) m->definition.constEnd(), result); + m->hidden = false; + if (client) client->stopExpandingMacro(_dot->offset, *m); - m->hidden = false; continue; } else { QByteArray tmp; - m->hidden = true; if (client) client->startExpandingMacro(identifierToken->offset, *m, spell); + m->hidden = true; expand(m->definition.constBegin(), m->definition.constEnd(), &tmp); + m->hidden = false; + if (client) client->stopExpandingMacro(_dot->offset, *m); - m->hidden = false; - m = 0; // reset the active the macro pushState(createStateFromSource(tmp)); @@ -843,6 +852,8 @@ void pp::processDefine(TokenIterator firstToken, TokenIterator lastToken) } Macro macro; + macro.fileName = env.currentFile; + macro.line = env.currentLine; macro.name = tokenText(*tk); ++tk; // skip T_IDENTIFIER diff --git a/src/libs/cplusplus/pp-environment.cpp b/src/libs/cplusplus/pp-environment.cpp index a1ade3b189a..20491727a4c 100644 --- a/src/libs/cplusplus/pp-environment.cpp +++ b/src/libs/cplusplus/pp-environment.cpp @@ -52,11 +52,14 @@ #include "pp-environment.h" #include "pp.h" + +#include + #include using namespace CPlusPlus; -Environment::Environment () +Environment::Environment() : currentLine(0), hide_next(false), _macros(0), @@ -67,7 +70,7 @@ Environment::Environment () { } -Environment::~Environment () +Environment::~Environment() { if (_macros) { qDeleteAll(firstMacro(), lastMacro()); @@ -78,20 +81,22 @@ Environment::~Environment () free(_hash); } -unsigned Environment::macroCount () const -{ return _macro_count + 1; } +unsigned Environment::macroCount() const +{ + return _macro_count + 1; +} -Macro *Environment::macroAt (unsigned index) const -{ return _macros[index]; } +Macro *Environment::macroAt(unsigned index) const +{ + return _macros[index]; +} Macro *Environment::bind(const Macro &__macro) { - Q_ASSERT(! __macro.name.isEmpty()); + QTC_ASSERT(! __macro.name.isEmpty(), return 0); Macro *m = new Macro (__macro); m->hashcode = hash_code(m->name); - m->fileName = current_file; - m->line = currentLine; if (++_macro_count == _allocated_macros) { if (! _allocated_macros) @@ -115,11 +120,13 @@ Macro *Environment::bind(const Macro &__macro) return m; } -Macro *Environment::remove (const QByteArray &name) +Macro *Environment::remove(const QByteArray &name) { Macro macro; macro.name = name; macro.hidden = true; + macro.fileName = currentFile; + macro.line = currentLine; return bind(macro); } diff --git a/src/libs/cplusplus/pp-environment.h b/src/libs/cplusplus/pp-environment.h index e2a75d29b81..4200b5ea0ff 100644 --- a/src/libs/cplusplus/pp-environment.h +++ b/src/libs/cplusplus/pp-environment.h @@ -94,7 +94,7 @@ private: void rehash(); public: - QByteArray current_file; + QByteArray currentFile; unsigned currentLine; bool hide_next; diff --git a/src/libs/cplusplus/pp-macro-expander.cpp b/src/libs/cplusplus/pp-macro-expander.cpp index 9ae9702fe18..e17dd873dba 100644 --- a/src/libs/cplusplus/pp-macro-expander.cpp +++ b/src/libs/cplusplus/pp-macro-expander.cpp @@ -73,7 +73,7 @@ const char *MacroExpander::operator () (const char *__first, const char *__last, __result->append(QByteArray::number(env.currentLine)); __result->append(' '); __result->append('"'); - __result->append(env.current_file); + __result->append(env.currentFile); __result->append('"'); __result->append('\n'); ++lines; @@ -218,7 +218,7 @@ const char *MacroExpander::operator () (const char *__first, const char *__last, else if (fast_name == "__FILE__") { __result->append('"'); - __result->append(env.current_file); + __result->append(env.currentFile); __result->append('"'); continue; } diff --git a/src/libs/cplusplus/pp-macro.h b/src/libs/cplusplus/pp-macro.h index 494b7a4de7f..887fff53b0a 100644 --- a/src/libs/cplusplus/pp-macro.h +++ b/src/libs/cplusplus/pp-macro.h @@ -57,6 +57,7 @@ #include #include +#include namespace CPlusPlus { @@ -89,6 +90,33 @@ public: hashcode(0), state(0) { } + + QString toString() const + { + QString text; + if (hidden) + text += QLatin1String("#undef "); + else + text += QLatin1String("#define "); + text += QString::fromUtf8(name.constData(), name.size()); + if (function_like) { + text += QLatin1Char('('); + bool first = true; + foreach (const QByteArray formal, formals) { + if (! first) + text += QLatin1String(", "); + else + first = false; + text += QString::fromUtf8(formal.constData(), formal.size()); + } + if (variadics) + text += QLatin1String("..."); + text += QLatin1Char(')'); + } + text += QLatin1Char(' '); + text += QString::fromUtf8(definition.constData(), definition.size()); + return text; + } }; } // namespace CPlusPlus diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index f6f623f6654..3f7ba386e4e 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -422,12 +422,12 @@ void PluginManager::formatPluginVersions(QTextStream &str) const void PluginManager::startTests() { #ifdef WITH_TESTS - foreach(PluginSpec *pluginSpec, d->testSpecs) { + foreach (PluginSpec *pluginSpec, d->testSpecs) { const QMetaObject *mo = pluginSpec->plugin()->metaObject(); QStringList methods; methods.append("arg0"); // We only want slots starting with "test" - for(int i = mo->methodOffset(); i < mo->methodCount(); ++i) { + for (int i = mo->methodOffset(); i < mo->methodCount(); ++i) { if (QByteArray(mo->method(i).signature()).startsWith("test")) { QString method = QString::fromLatin1(mo->method(i).signature()); methods.append(method.left(method.size()-2)); diff --git a/src/libs/utils/classnamevalidatinglineedit.cpp b/src/libs/utils/classnamevalidatinglineedit.cpp index 0210b96e702..aa6557574cf 100644 --- a/src/libs/utils/classnamevalidatinglineedit.cpp +++ b/src/libs/utils/classnamevalidatinglineedit.cpp @@ -33,6 +33,8 @@ #include "classnamevalidatinglineedit.h" +#include + #include #include @@ -53,7 +55,7 @@ ClassNameValidatingLineEditPrivate:: ClassNameValidatingLineEditPrivate() : m_namespaceDelimiter(QLatin1String("::")), m_namespacesEnabled(false) { - Q_ASSERT(m_nameRegexp.isValid()); + QTC_ASSERT(m_nameRegexp.isValid(), return); } // --------------------- ClassNameValidatingLineEdit @@ -113,7 +115,7 @@ QString ClassNameValidatingLineEdit::createClassName(const QString &name) // Remove spaces and convert the adjacent characters to uppercase QString className = name; QRegExp spaceMatcher(QLatin1String(" +(\\w)"), Qt::CaseSensitive, QRegExp::RegExp2); - Q_ASSERT(spaceMatcher.isValid()); + QTC_ASSERT(spaceMatcher.isValid(), /**/); int pos; while ((pos = spaceMatcher.indexIn(className)) != -1) { className.replace(pos, spaceMatcher.matchedLength(), diff --git a/src/libs/utils/filenamevalidatinglineedit.cpp b/src/libs/utils/filenamevalidatinglineedit.cpp index 5b308f5ce47..a7e228903b5 100644 --- a/src/libs/utils/filenamevalidatinglineedit.cpp +++ b/src/libs/utils/filenamevalidatinglineedit.cpp @@ -32,6 +32,7 @@ ***************************************************************************/ #include "filenamevalidatinglineedit.h" +#include "qtcassert.h" #include #include @@ -46,7 +47,7 @@ static const QRegExp &windowsDeviceNoSubDirPattern() { static const QRegExp rc(QLatin1String("CON|AUX|PRN|COM1|COM2|LPT1|LPT2|NUL"), Qt::CaseInsensitive); - Q_ASSERT(rc.isValid()); + QTC_ASSERT(rc.isValid(), return rc); return rc; } @@ -54,7 +55,7 @@ static const QRegExp &windowsDeviceSubDirPattern() { static const QRegExp rc(QLatin1String(".*[/\\\\]CON|.*[/\\\\]AUX|.*[/\\\\]PRN|.*[/\\\\]COM1|.*[/\\\\]COM2|.*[/\\\\]LPT1|.*[/\\\\]LPT2|.*[/\\\\]NUL"), Qt::CaseInsensitive); - Q_ASSERT(rc.isValid()); + QTC_ASSERT(rc.isValid(), return rc); return rc; } diff --git a/src/libs/utils/filewizardpage.cpp b/src/libs/utils/filewizardpage.cpp index 3e85b34d44b..da892faf03b 100644 --- a/src/libs/utils/filewizardpage.cpp +++ b/src/libs/utils/filewizardpage.cpp @@ -92,7 +92,7 @@ void FileWizardPage::setName(const QString &name) void FileWizardPage::changeEvent(QEvent *e) { - switch(e->type()) { + switch (e->type()) { case QEvent::LanguageChange: m_d->m_ui.retranslateUi(this); break; diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index 68ebe9cbbfd..81a2228e669 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -32,18 +32,20 @@ ***************************************************************************/ #include "pathchooser.h" + #include "basevalidatinglineedit.h" +#include "qtcassert.h" -#include -#include -#include -#include -#include - -#include -#include -#include #include +#include +#include +#include + +#include +#include +#include +#include +#include namespace Core { namespace Utils { @@ -55,7 +57,8 @@ namespace Utils { #endif // ------------------ PathValidatingLineEdit -class PathValidatingLineEdit : public BaseValidatingLineEdit { +class PathValidatingLineEdit : public BaseValidatingLineEdit +{ public: explicit PathValidatingLineEdit(PathChooser *chooser, QWidget *parent = 0); @@ -70,7 +73,7 @@ PathValidatingLineEdit::PathValidatingLineEdit(PathChooser *chooser, QWidget *pa BaseValidatingLineEdit(parent), m_chooser(chooser) { - Q_ASSERT(chooser != NULL); + QTC_ASSERT(chooser, return); } bool PathValidatingLineEdit::validate(const QString &value, QString *errorMessage) const @@ -79,7 +82,8 @@ bool PathValidatingLineEdit::validate(const QString &value, QString *errorMessag } // ------------------ PathChooserPrivate -struct PathChooserPrivate { +struct PathChooserPrivate +{ PathChooserPrivate(PathChooser *chooser); PathValidatingLineEdit *m_lineEdit; @@ -160,9 +164,9 @@ void PathChooser::slotBrowse() // TODO make cross-platform // Delete trailing slashes unless it is "/", only - if (!newPath .isEmpty()) { - if (newPath .size() > 1 && newPath .endsWith(QDir::separator())) - newPath .truncate(newPath .size() - 1); + if (!newPath.isEmpty()) { + if (newPath.size() > 1 && newPath.endsWith(QDir::separator())) + newPath.truncate(newPath.size() - 1); setPath(newPath); } } @@ -174,7 +178,7 @@ bool PathChooser::isValid() const QString PathChooser::errorMessage() const { - return m_d->m_lineEdit->errorMessage(); + return m_d->m_lineEdit->errorMessage(); } bool PathChooser::validatePath(const QString &path, QString *errorMessage) @@ -207,17 +211,19 @@ bool PathChooser::validatePath(const QString &path, QString *errorMessage) // Check expected kind switch (m_d->m_acceptingKind) { case PathChooser::Directory: - if (!isDir) + if (!isDir) { if (errorMessage) *errorMessage = tr("The path '%1' is not a directory.").arg(path); return false; + } break; case PathChooser::File: - if (isDir) + if (isDir) { if (errorMessage) *errorMessage = tr("The path '%1' is not a file.").arg(path); return false; + } break; case PathChooser::Command: diff --git a/src/libs/utils/projectintropage.cpp b/src/libs/utils/projectintropage.cpp index 8d370571937..63123138730 100644 --- a/src/libs/utils/projectintropage.cpp +++ b/src/libs/utils/projectintropage.cpp @@ -117,7 +117,7 @@ void ProjectIntroPage::setDescription(const QString &description) void ProjectIntroPage::changeEvent(QEvent *e) { - switch(e->type()) { + switch (e->type()) { case QEvent::LanguageChange: m_d->m_ui.retranslateUi(this); break; diff --git a/src/plugins/debugger/assert.h b/src/libs/utils/qtcassert.h similarity index 84% rename from src/plugins/debugger/assert.h rename to src/libs/utils/qtcassert.h index 014bb3b25d3..f75d225f6e6 100644 --- a/src/plugins/debugger/assert.h +++ b/src/libs/utils/qtcassert.h @@ -31,16 +31,16 @@ ** ***************************************************************************/ -#ifndef DEBUGGER_QWB_ASSERT_H -#define DEBUGGER_QWB_ASSERT_H +#ifndef QTC_ASSERT_H +#define QTC_ASSERT_H -#ifdef Q_OS_UNIX -#define QWB_ASSERT(cond, action) \ +#include + +// we do not use the 'do {...} while (0)' idiom here to be able to use +// 'break' and 'continue' as 'actions'. + +#define QTC_ASSERT(cond, action) \ if(cond){}else{qDebug()<<"ASSERTION"<<#cond<<"FAILED"<<__FILE__<<__LINE__;action;} -#else -#define QWB_ASSERT(cond, action) \ - if(cond){}else{qDebug()<<"ASSERTION"<<#cond<<"FAILED";action;} -#endif -#endif // DEBUGGER_QWB_ASSERT_H +#endif // QTC_ASSERT_H diff --git a/src/libs/utils/submiteditorwidget.cpp b/src/libs/utils/submiteditorwidget.cpp index 85c11241490..4aa021e63ec 100644 --- a/src/libs/utils/submiteditorwidget.cpp +++ b/src/libs/utils/submiteditorwidget.cpp @@ -46,7 +46,8 @@ namespace Utils { // QActionPushButton: A push button tied to an action // (similar to a QToolButton) -class QActionPushButton : public QPushButton { +class QActionPushButton : public QPushButton +{ Q_OBJECT public: explicit QActionPushButton(QAction *a); @@ -319,7 +320,7 @@ void SubmitEditorWidget::fileSelectionChanged() void SubmitEditorWidget::changeEvent(QEvent *e) { - switch(e->type()) { + switch (e->type()) { case QEvent::LanguageChange: m_d->m_ui.retranslateUi(this); break; diff --git a/src/plugins/bineditor/bineditor.cpp b/src/plugins/bineditor/bineditor.cpp index 05e24a77b49..9ca1dbfb749 100644 --- a/src/plugins/bineditor/bineditor.cpp +++ b/src/plugins/bineditor/bineditor.cpp @@ -222,7 +222,7 @@ void BinEditor::scrollContentsBy(int dx, int dy) void BinEditor::changeEvent(QEvent *e) { QAbstractScrollArea::changeEvent(e); - if(e->type() == QEvent::ActivationChange) { + if (e->type() == QEvent::ActivationChange) { if (!isActiveWindow()) m_autoScrollTimer.stop(); } @@ -450,7 +450,7 @@ void BinEditor::paintEvent(QPaintEvent *e) for (int c = 0; c < 16; ++c) { int pos = line * 16 + c; if (pos >= m_data.size()) { - while(c < 16) { + while (c < 16) { itemStringData[c*3] = itemStringData[c*3+1] = ' '; ++c; } diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp index fd4541a01dd..a9377730fd8 100644 --- a/src/plugins/bookmarks/bookmarkmanager.cpp +++ b/src/plugins/bookmarks/bookmarkmanager.cpp @@ -32,6 +32,7 @@ ***************************************************************************/ #include "bookmarkmanager.h" + #include "bookmark.h" #include "bookmarksplugin.h" #include "bookmarks_global.h" @@ -41,12 +42,14 @@ #include #include #include +#include + +#include +#include #include -#include -#include -#include #include +#include Q_DECLARE_METATYPE(Bookmarks::Internal::Bookmark*) @@ -173,7 +176,7 @@ void BookmarkDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti // int idx; // forever { // idx = directory.lastIndexOf("/", pos-1); -// if(idx == -1) { +// if (idx == -1) { // // Can't happen, this means the string did fit after all? // break; // } @@ -272,7 +275,7 @@ void BookmarkView::removeAll() void BookmarkView::setModel(QAbstractItemModel *model) { BookmarkManager *manager = qobject_cast(model); - Q_ASSERT(manager); + QTC_ASSERT(manager, return); QListView::setModel(model); setSelectionModel(manager->selectionModel()); setSelectionMode(QAbstractItemView::SingleSelection); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 5569c900f2b..423fa2dcb3f 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -32,15 +32,20 @@ ***************************************************************************/ #include "cmakeproject.h" + #include "cmakeprojectconstants.h" #include "cmakeprojectnodes.h" +#include "cmakerunconfiguration.h" #include "cmakestep.h" #include "makestep.h" #include #include +#include #include +#include +#include using namespace CMakeProjectManager; using namespace CMakeProjectManager::Internal; @@ -48,20 +53,31 @@ using namespace CMakeProjectManager::Internal; CMakeProject::CMakeProject(CMakeManager *manager, const QString &fileName) : m_manager(manager), m_fileName(fileName), m_rootNode(new CMakeProjectNode(m_fileName)) { - //TODO + m_file = new CMakeFile(this, fileName); QDir dir = QFileInfo(m_fileName).absoluteDir(); QString cbpFile = findCbpFile(dir); if (cbpFile.isEmpty()) cbpFile = createCbpFile(dir); + //TODO move this parsing to a seperate method, which is also called if the CMakeList.txt is updated CMakeCbpParser cbpparser; if (cbpparser.parseCbpFile(cbpFile)) { + // TODO do a intelligent updating of the tree buildTree(m_rootNode, cbpparser.fileList()); - foreach(ProjectExplorer::FileNode *fn, cbpparser.fileList()) + foreach (ProjectExplorer::FileNode *fn, cbpparser.fileList()) m_files.append(fn->path()); m_files.sort(); + m_targets = cbpparser.targets(); + qDebug()<<"Printing targets"; + foreach(CMakeTarget ct, m_targets) { + qDebug()<getObject(); if (modelmanager) { CppTools::CppModelManagerInterface::ProjectInfo pinfo = modelmanager->projectInfo(this); @@ -69,6 +85,7 @@ CMakeProject::CMakeProject(CMakeManager *manager, const QString &fileName) // TODO we only want C++ files, not all other stuff that might be in the project pinfo.sourceFiles = m_files; // TODO defines + // TODO gcc preprocessor files modelmanager->updateProjectInfo(pinfo); } } else { @@ -87,25 +104,27 @@ QString CMakeProject::findCbpFile(const QDir &directory) // TODO the cbp file is named like the project() command in the CMakeList.txt file // so this method below could find the wrong cbp file, if the user changes the project() // name - foreach(const QString &cbpFile , directory.entryList()) - { - if (cbpFile.endsWith(".cbp")) { + foreach (const QString &cbpFile , directory.entryList()) { + if (cbpFile.endsWith(".cbp")) return directory.path() + "/" + cbpFile; - } } return QString::null; } - -QString CMakeProject::createCbpFile(const QDir &) +QString CMakeProject::createCbpFile(const QDir &directory) { - // TODO create a cbp file. - // Issue: Where to create it? We want to do that in the build directory - // but at this stage we don't know the build directory yet - // So create it in a temp directory? - // Issue: We want to reuse whatever CMakeCache.txt that is alread there, which - // would indicate, creating it in the build directory - // Or we could use a temp directory and use -C builddirectory + // We create a cbp file, only if we didn't find a cbp file in the base directory + // Yet that can still override cbp files in subdirectories + // And we are creating tons of files in the source directories + // All of that is not really nice. + // The mid term plan is to move away from the CodeBlocks Generator and use our own + // QtCreator generator, which actually can be very similar to the CodeBlock Generator + + // TODO we need to pass on the same paremeters as the cmakestep + QProcess cmake; + cmake.setWorkingDirectory(directory.absolutePath()); + cmake.start("cmake", QStringList() << "-GCodeBlocks - Unix Makefiles"); + return QString::null; } @@ -113,7 +132,7 @@ void CMakeProject::buildTree(CMakeProjectNode *rootNode, QListaddFileNodes(fileList, m_rootNode); qSort(list.begin(), list.end(), ProjectExplorer::ProjectNode::sortNodesByPath); - foreach( ProjectExplorer::FileNode *fn, list) { + foreach (ProjectExplorer::FileNode *fn, list) { // Get relative path to rootNode QString parentDir = QFileInfo(fn->path()).absolutePath(); ProjectExplorer::FolderNode *folder = findOrCreateFolder(rootNode, parentDir); @@ -127,10 +146,10 @@ ProjectExplorer::FolderNode *CMakeProject::findOrCreateFolder(CMakeProjectNode * QString relativePath = QDir(QFileInfo(rootNode->path()).path()).relativeFilePath(directory); QStringList parts = relativePath.split("/"); ProjectExplorer::FolderNode *parent = rootNode; - foreach(const QString &part, parts) { + foreach (const QString &part, parts) { // Find folder in subFolders bool found = false; - foreach(ProjectExplorer::FolderNode *folder, parent->subFolderNodes()) { + foreach (ProjectExplorer::FolderNode *folder, parent->subFolderNodes()) { if (QFileInfo(folder->path()).fileName() == part) { // yeah found something :) parent = folder; @@ -227,27 +246,35 @@ QStringList CMakeProject::files(FilesMode fileMode) const void CMakeProject::saveSettingsImpl(ProjectExplorer::PersistentSettingsWriter &writer) { // TODO - Q_UNUSED(writer); + Project::saveSettingsImpl(writer); } void CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader &reader) { // TODO - Q_UNUSED(reader); + Project::restoreSettingsImpl(reader); if (buildConfigurations().isEmpty()) { // No build configuration, adding those - - // TODO do we want to create one build configuration per target? - // or how do we want to handle that? - CMakeStep *cmakeStep = new CMakeStep(this); MakeStep *makeStep = new MakeStep(this); insertBuildStep(0, cmakeStep); insertBuildStep(1, makeStep); - addBuildConfiguration("all"); + // Create build configurations of m_targets + qDebug()<<"Create build configurations of m_targets"; + foreach(const CMakeTarget &ct, m_targets) { + addBuildConfiguration(ct.title); + makeStep->setValue(ct.title, "makeCommand", ct.makeCommand); + makeStep->setValue(ct.title, "makeCleanCommand", ct.makeCleanCommand); + + QSharedPointer rc(new CMakeRunConfiguration(this, ct.executable, ct.workingDirectory)); + // TODO set build configuration to build before it can be run + addRunConfiguration(rc); + setActiveRunConfiguration(rc); // TODO what exactly shall be the active run configuration? + } setActiveBuildConfiguration("all"); + } // Restoring is fine } @@ -332,7 +359,7 @@ bool CMakeCbpParser::parseCbpFile(const QString &fileName) if (fi.exists() && fi.open(QFile::ReadOnly)) { setDevice(&fi); - while(!atEnd()) { + while (!atEnd()) { readNext(); if (name() == "CodeBlocks_project_file") { parseCodeBlocks_project_file(); @@ -350,7 +377,7 @@ bool CMakeCbpParser::parseCbpFile(const QString &fileName) void CMakeCbpParser::parseCodeBlocks_project_file() { - while(!atEnd()) { + while (!atEnd()) { readNext(); if (isEndElement()) { return; @@ -364,7 +391,7 @@ void CMakeCbpParser::parseCodeBlocks_project_file() void CMakeCbpParser::parseProject() { - while(!atEnd()) { + while (!atEnd()) { readNext(); if (isEndElement()) { return; @@ -380,7 +407,7 @@ void CMakeCbpParser::parseProject() void CMakeCbpParser::parseBuild() { - while(!atEnd()) { + while (!atEnd()) { readNext(); if (isEndElement()) { return; @@ -394,14 +421,16 @@ void CMakeCbpParser::parseBuild() void CMakeCbpParser::parseTarget() { - m_targetOutput.clear(); m_targetType = false; - while(!atEnd()) { + m_target.clear(); + + if (attributes().hasAttribute("title")) + m_target.title = attributes().value("title").toString(); + while (!atEnd()) { readNext(); if (isEndElement()) { - if (m_targetType && !m_targetOutput.isEmpty()) { - qDebug()<<"found target "< CMakeCbpParser::targets() +{ + return m_targets; +} + +void CMakeTarget::clear() +{ + executable = QString::null; + makeCommand = QString::null; + makeCleanCommand = QString::null; + workingDirectory = QString::null; + title = QString::null; +} + diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index a0c821ada5e..2a0314fda1a 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -49,6 +49,16 @@ namespace Internal{ class CMakeFile; +struct CMakeTarget +{ + QString title; + QString executable; + QString workingDirectory; + QString makeCommand; + QString makeCleanCommand; + void clear(); +}; + class CMakeProject : public ProjectExplorer::Project { Q_OBJECT @@ -105,6 +115,7 @@ private: // TODO probably need a CMake specific node structure CMakeProjectNode* m_rootNode; QStringList m_files; + QList m_targets; protected: virtual void saveSettingsImpl(ProjectExplorer::PersistentSettingsWriter &writer); @@ -118,23 +129,27 @@ public: bool parseCbpFile(const QString &fileName); QList fileList(); QStringList includeFiles(); + QList targets(); private: void parseCodeBlocks_project_file(); void parseProject(); void parseBuild(); void parseTarget(); void parseTargetOption(); + void parseMakeCommand(); + void parseTargetBuild(); + void parseTargetClean(); void parseCompiler(); void parseAdd(); void parseUnit(); void parseUnknownElement(); - QSet m_targets; QList m_fileList; QStringList m_includeFiles; - QString m_targetOutput; + CMakeTarget m_target; bool m_targetType; + QList m_targets; }; class CMakeFile : public Core::IFile diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h b/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h index 4832f17f263..71300589915 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h @@ -41,6 +41,7 @@ const char * const PROJECTCONTEXT = "CMakeProject.ProjectContext"; const char * const CMAKEMIMETYPE = "text/x-cmake"; // TOOD check that this is correct const char * const CMAKESTEP = "CMakeProjectManager.CMakeStep"; const char * const MAKESTEP = "CMakeProjectManager.MakeStep"; +const char * const CMAKERUNCONFIGURATION = "CMakeProjectManager.CMakeRunConfiguration"; } // namespace Constants diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro index afca26b265b..74f69fea4ab 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro @@ -8,11 +8,13 @@ HEADERS = cmakeproject.h \ cmakeprojectconstants.h \ cmakeprojectnodes.h \ cmakestep.h \ - makestep.h + makestep.h \ + cmakerunconfiguration.h SOURCES = cmakeproject.cpp \ cmakeprojectplugin.cpp \ cmakeprojectmanager.cpp \ cmakeprojectnodes.cpp \ cmakestep.cpp \ - makestep.cpp + makestep.cpp \ + cmakerunconfiguration.cpp RESOURCES += cmakeproject.qrc diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index 2b59a47c8e2..932278a32c0 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -33,6 +33,7 @@ #include "cmakeprojectplugin.h" #include "cmakeprojectmanager.h" +#include "cmakerunconfiguration.h" #include #include @@ -57,6 +58,7 @@ bool CMakeProjectPlugin::initialize(const QStringList & /*arguments*/, QString * if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":cmakeproject/CMakeProject.mimetypes.xml"), errorMessage)) return false; addAutoReleasedObject(new CMakeManager()); + addAutoReleasedObject(new CMakeRunConfigurationFactory()); return true; } diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp new file mode 100644 index 00000000000..d8bc8e795ba --- /dev/null +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -0,0 +1,157 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.2, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#include "cmakerunconfiguration.h" + +#include "cmakeproject.h" +#include "cmakeprojectconstants.h" + +#include +#include + +using namespace CMakeProjectManager; +using namespace CMakeProjectManager::Internal; + +CMakeRunConfiguration::CMakeRunConfiguration(CMakeProject *pro, const QString &target, const QString &workingDirectory) + : ProjectExplorer::ApplicationRunConfiguration(pro), m_target(target), m_workingDirectory(workingDirectory) +{ + setName(target); +} + +CMakeRunConfiguration::~CMakeRunConfiguration() +{ +} + +QString CMakeRunConfiguration::type() const +{ + return Constants::CMAKERUNCONFIGURATION; +} + +QString CMakeRunConfiguration::executable() const +{ + return m_target; +} + +ProjectExplorer::ApplicationRunConfiguration::RunMode CMakeRunConfiguration::runMode() const +{ + return ProjectExplorer::ApplicationRunConfiguration::Gui; +} + +QString CMakeRunConfiguration::workingDirectory() const +{ + return m_workingDirectory; +} + +QStringList CMakeRunConfiguration::commandLineArguments() const +{ + // TODO + return QStringList(); +} + +ProjectExplorer::Environment CMakeRunConfiguration::environment() const +{ + // TODO + return ProjectExplorer::Environment::systemEnvironment(); +} + +void CMakeRunConfiguration::save(ProjectExplorer::PersistentSettingsWriter &writer) const +{ + ProjectExplorer::ApplicationRunConfiguration::save(writer); +} + +void CMakeRunConfiguration::restore(const ProjectExplorer::PersistentSettingsReader &reader) +{ + ProjectExplorer::ApplicationRunConfiguration::restore(reader); +} + +QWidget *CMakeRunConfiguration::configurationWidget() +{ + //TODO + return new QWidget(); +} + +// Factory +CMakeRunConfigurationFactory::CMakeRunConfigurationFactory() +{ + +} + +CMakeRunConfigurationFactory::~CMakeRunConfigurationFactory() +{ + +} + +// used to recreate the runConfigurations when restoring settings +bool CMakeRunConfigurationFactory::canCreate(const QString &type) const +{ + if (type.startsWith(Constants::CMAKERUNCONFIGURATION)) + return true; + return false; +} + +// used to show the list of possible additons to a project, returns a list of types +QStringList CMakeRunConfigurationFactory::canCreate(ProjectExplorer::Project *project) const +{ + CMakeProject *pro = qobject_cast(project); + if (!pro) + return QStringList(); + // TODO gather all targets and return them here + return QStringList(); +} + +// used to translate the types to names to display to the user +QString CMakeRunConfigurationFactory::nameForType(const QString &type) const +{ + QTC_ASSERT(type.startsWith(Constants::CMAKERUNCONFIGURATION), /**/); + + if (type == Constants::CMAKERUNCONFIGURATION) + return "CMake"; // Doesn't happen + else + return type.mid(QString(Constants::CMAKERUNCONFIGURATION).length()); +} + +QSharedPointer CMakeRunConfigurationFactory::create(ProjectExplorer::Project *project, const QString &type) +{ + CMakeProject *pro = qobject_cast(project); + QTC_ASSERT(pro, /**/); + if (type == Constants::CMAKERUNCONFIGURATION) { + // Restoring, filename will be added by restoreSettings + QSharedPointer rc(new CMakeRunConfiguration(pro, QString::null, QString::null)); + return rc; + } else { + // Adding new + QString file = type.mid(QString(Constants::CMAKERUNCONFIGURATION).length()); + QSharedPointer rc(new CMakeRunConfiguration(pro, file, QString::null)); + return rc; + } +} diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h new file mode 100644 index 00000000000..082364e3042 --- /dev/null +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h @@ -0,0 +1,93 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.2, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#ifndef CMAKERUNCONFIGURATION_H +#define CMAKERUNCONFIGURATION_H + +#include +#include +#include + +namespace CMakeProjectManager { +namespace Internal { + +class CMakeProject; + +class CMakeRunConfiguration : public ProjectExplorer::ApplicationRunConfiguration +{ +public: + CMakeRunConfiguration(CMakeProject *pro, const QString &target, const QString &workingDirectory); + virtual ~CMakeRunConfiguration(); + virtual QString type() const; + virtual QString executable() const; + virtual RunMode runMode() const; + virtual QString workingDirectory() const; + virtual QStringList commandLineArguments() const; + virtual ProjectExplorer::Environment environment() const; + virtual QWidget *configurationWidget(); + + virtual void save(ProjectExplorer::PersistentSettingsWriter &writer) const; + virtual void restore(const ProjectExplorer::PersistentSettingsReader &reader); +private: + QString m_target; + QString m_workingDirectory; +}; + +/* The run configuration factory is used for restoring run configurations from + * settings. And used to create new runconfigurations in the "Run Settings" Dialog. + * For the first case bool canCreate(const QString &type) and + * QSharedPointer create(Project *project, QString type) are used. + * For the second type the functions QStringList canCreate(Project *pro) and + * QString nameForType(const QString&) are used to generate a list of creatable + * RunConfigurations, and create(..) is used to create it. + */ +class CMakeRunConfigurationFactory : public QObject +{ + Q_OBJECT; +public: + CMakeRunConfigurationFactory(); + virtual ~CMakeRunConfigurationFactory(); + // used to recreate the runConfigurations when restoring settings + virtual bool canCreate(const QString &type) const; + // used to show the list of possible additons to a project, returns a list of types + virtual QStringList canCreate(ProjectExplorer::Project *pro) const; + // used to translate the types to names to display to the user + virtual QString nameForType(const QString &type) const; + virtual QSharedPointer create(ProjectExplorer::Project *project, const QString &type); +}; + + +} +} + +#endif // CMAKERUNCONFIGURATION_H diff --git a/src/plugins/cmakeprojectmanager/cmakestep.cpp b/src/plugins/cmakeprojectmanager/cmakestep.cpp index 0c267ca2c4c..045fa46a241 100644 --- a/src/plugins/cmakeprojectmanager/cmakestep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakestep.cpp @@ -32,8 +32,11 @@ ***************************************************************************/ #include "cmakestep.h" -#include "cmakeprojectconstants.h" + #include "cmakeproject.h" +#include "cmakeprojectconstants.h" + +#include using namespace CMakeProjectManager; using namespace CMakeProjectManager::Internal; @@ -41,12 +44,10 @@ using namespace CMakeProjectManager::Internal; CMakeStep::CMakeStep(CMakeProject *pro) : AbstractProcessStep(pro), m_pro(pro) { - } CMakeStep::~CMakeStep() { - } bool CMakeStep::init(const QString &buildConfiguration) @@ -61,6 +62,11 @@ bool CMakeStep::init(const QString &buildConfiguration) void CMakeStep::run(QFutureInterface &fi) { + // TODO we want to only run cmake if the command line arguments or + // the CmakeLists.txt has actually changed + // And we want all of them to share the SAME command line arguments + // Shadow building ruins this, hmm, hmm + // AbstractProcessStep::run(fi); } @@ -109,9 +115,9 @@ bool CMakeBuildStepFactory::canCreate(const QString &name) const ProjectExplorer::BuildStep *CMakeBuildStepFactory::create(ProjectExplorer::Project *project, const QString &name) const { - Q_ASSERT(name == Constants::CMAKESTEP); + QTC_ASSERT(name == Constants::CMAKESTEP, /**/); CMakeProject *pro = qobject_cast(project); - Q_ASSERT(pro); + QTC_ASSERT(pro, /**/); return new CMakeStep(pro); } diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index 6bb5b59cdf8..3cdc0726e8c 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -35,18 +35,18 @@ #include "cmakeprojectconstants.h" #include "cmakeproject.h" +#include + using namespace CMakeProjectManager; using namespace CMakeProjectManager::Internal; MakeStep::MakeStep(CMakeProject *pro) : AbstractProcessStep(pro), m_pro(pro) { - } MakeStep::~MakeStep() { - } bool MakeStep::init(const QString &buildConfiguration) @@ -109,9 +109,9 @@ bool MakeBuildStepFactory::canCreate(const QString &name) const ProjectExplorer::BuildStep *MakeBuildStepFactory::create(ProjectExplorer::Project *project, const QString &name) const { - Q_ASSERT(name == Constants::MAKESTEP); + QTC_ASSERT(name == Constants::MAKESTEP, return 0); CMakeProject *pro = qobject_cast(project); - Q_ASSERT(pro); + QTC_ASSERT(pro, return 0); return new MakeStep(pro); } diff --git a/src/plugins/coreplugin/basefilewizard.cpp b/src/plugins/coreplugin/basefilewizard.cpp index 58030ba20c9..bb7adb99620 100644 --- a/src/plugins/coreplugin/basefilewizard.cpp +++ b/src/plugins/coreplugin/basefilewizard.cpp @@ -456,7 +456,7 @@ QStringList BaseFileWizard::runWizard(const QString &path, QWidget *parent) } } if (firstExtensionPageHit) - foreach(IFileWizardExtension *ex, extensions) + foreach (IFileWizardExtension *ex, extensions) ex->firstExtensionPageShown(files); if (accepted) break; @@ -486,7 +486,7 @@ QStringList BaseFileWizard::runWizard(const QString &path, QWidget *parent) } } // Run the extensions - foreach(IFileWizardExtension *ex, extensions) + foreach (IFileWizardExtension *ex, extensions) if (!ex->process(files, &errorMessage)) { QMessageBox::critical(parent, tr("File Generation Failure"), errorMessage); return QStringList(); diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index 696a7ddbdf9..0f9758b1429 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -47,6 +47,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, const QString &initialCategory, setupUi(this); buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); + splitter->setCollapsible(1, false); pageTree->header()->setVisible(false); connect(pageTree, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), @@ -58,8 +59,8 @@ SettingsDialog::SettingsDialog(QWidget *parent, const QString &initialCategory, CoreImpl::instance()->pluginManager()->getObjects(); int index = 0; - foreach(IOptionsPage *page, pages) { - QTreeWidgetItem *item = new QTreeWidgetItem(); + foreach (IOptionsPage *page, pages) { + QTreeWidgetItem *item = new QTreeWidgetItem; item->setText(0, page->name()); item->setData(0, Qt::UserRole, index); @@ -77,7 +78,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, const QString &initialCategory, int catCount = 1; while (catCount < categoriesId.count()) { - if(!categories.contains(currentCategory + QLatin1Char('|') + categoriesId.at(catCount))) { + if (!categories.contains(currentCategory + QLatin1Char('|') + categoriesId.at(catCount))) { treeitem = new QTreeWidgetItem(categories.value(currentCategory)); currentCategory += QLatin1Char('|') + categoriesId.at(catCount); treeitem->setText(0, trCategories.at(catCount)); @@ -123,14 +124,14 @@ void SettingsDialog::pageSelected(QTreeWidgetItem *) void SettingsDialog::accept() { - foreach(IOptionsPage *page, m_pages) + foreach (IOptionsPage *page, m_pages) page->finished(true); done(QDialog::Accepted); } void SettingsDialog::reject() { - foreach(IOptionsPage *page, m_pages) + foreach (IOptionsPage *page, m_pages) page->finished(false); done(QDialog::Rejected); } diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index c00e6cc6838..b5c98643b42 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -123,7 +123,7 @@ QWidget *ShortcutSettings::createPage(QWidget *parent) void ShortcutSettings::finished(bool accepted) { if (accepted) { - foreach(ShortcutItem *item, m_scitems) { + foreach (ShortcutItem *item, m_scitems) { item->m_cmd->setKeySequence(item->m_key); } } @@ -196,7 +196,7 @@ bool ShortcutSettings::filter(const QString &f, const QTreeWidgetItem *item) if (f.isEmpty()) return false; for (int i = 0; i < item->columnCount(); ++i) { - if(item->text(i).contains(f, Qt::CaseInsensitive)) + if (item->text(i).contains(f, Qt::CaseInsensitive)) return false; } return true; @@ -242,7 +242,7 @@ void ShortcutSettings::importAction() CommandsFile cf(fileName); QMap mapping = cf.importCommands(); - foreach(ShortcutItem *item, m_scitems) { + foreach (ShortcutItem *item, m_scitems) { QString sid = uidm->stringForUniqueIdentifier(item->m_cmd->id()); if (mapping.contains(sid)) { item->m_key = mapping.value(sid); @@ -256,7 +256,7 @@ void ShortcutSettings::importAction() void ShortcutSettings::defaultAction() { - foreach(ShortcutItem *item, m_scitems) { + foreach (ShortcutItem *item, m_scitems) { item->m_key = item->m_cmd->defaultKeySequence(); item->m_item->setText(2, item->m_key); if (item->m_item == m_page->commandList->currentItem()) diff --git a/src/plugins/coreplugin/editormanager/editorgroup.cpp b/src/plugins/coreplugin/editormanager/editorgroup.cpp index 58c867b02c4..c146a09f256 100644 --- a/src/plugins/coreplugin/editormanager/editorgroup.cpp +++ b/src/plugins/coreplugin/editormanager/editorgroup.cpp @@ -32,15 +32,18 @@ ***************************************************************************/ #include "editorgroup.h" + #include "editormanager.h" #include +#include #include +#include + #include #include #include -#include #ifdef Q_WS_MAC #include #endif @@ -107,20 +110,20 @@ QVariant EditorModel::data(const QModelIndex &index, int role) const if (!index.isValid()) return QVariant(); IEditor *editor = m_editors.at(index.row()); - Q_ASSERT(editor); + QTC_ASSERT(editor, return QVariant()); switch (role) { case Qt::DisplayRole: return editor->file()->isModified() - ?editor->displayName()+QLatin1String("*") - :editor->displayName(); + ? editor->displayName() + QLatin1String("*") + : editor->displayName(); case Qt::DecorationRole: return editor->file()->isReadOnly() - ?QIcon(QLatin1String(":/qworkbench/images/locked.png")) - :QIcon(); + ? QIcon(QLatin1String(":/qworkbench/images/locked.png")) + : QIcon(); case Qt::ToolTipRole: return editor->file()->fileName().isEmpty() - ?editor->displayName() - :QDir::toNativeSeparators(editor->file()->fileName()); + ? editor->displayName() + : QDir::toNativeSeparators(editor->file()->fileName()); case Qt::UserRole: return qVariantFromValue(editor); default: @@ -145,6 +148,7 @@ EditorGroupContext::EditorGroupContext(EditorGroup *editorGroup) m_editorGroup(editorGroup) { } + QList EditorGroupContext::context() const { return m_context; diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 29798b25c01..1b4f04093fd 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -53,21 +53,23 @@ #include #include -#include -#include -#include -#include -#include +#include + #include +#include +#include +#include +#include +#include #include -#include #include -#include #include +#include #include #include #include +#include using namespace Core; using namespace Core::Internal; @@ -961,11 +963,10 @@ bool EditorManager::hasEditor(const QString &fileName) const void EditorManager::restoreEditorState(IEditor *editor) { - Q_ASSERT(editor); + QTC_ASSERT(editor, return); QString fileName = editor->file()->fileName(); - if (m_d->m_editorStates.contains(fileName)) { + if (m_d->m_editorStates.contains(fileName)) editor->restoreState(m_d->m_editorStates.value(fileName).toByteArray()); - } } bool EditorManager::saveEditor(IEditor *editor) @@ -1089,7 +1090,7 @@ bool EditorManager::saveFileAs(IEditor *editor) const bool success = editor->file()->save(absoluteFilePath); m_d->m_core->fileManager()->unblockFileChange(editor->file()); - if(success) + if (success) m_d->m_core->fileManager()->addToRecentFiles(editor->file()->fileName()); updateActions(); diff --git a/src/plugins/coreplugin/editormanager/editorsplitter.cpp b/src/plugins/coreplugin/editormanager/editorsplitter.cpp index f0e7f82bf9a..48ec7e0e45a 100644 --- a/src/plugins/coreplugin/editormanager/editorsplitter.cpp +++ b/src/plugins/coreplugin/editormanager/editorsplitter.cpp @@ -32,16 +32,19 @@ ***************************************************************************/ #include "editorsplitter.h" + #include "editormanager.h" +#include "minisplitter.h" #include "openeditorswindow.h" #include "stackededitorgroup.h" -#include "minisplitter.h" #include #include #include #include +#include + #include #include #include @@ -160,7 +163,7 @@ void EditorSplitter::registerActions() void EditorSplitter::updateActions() { const bool hasMultipleGroups = (qobject_cast(m_root) != 0); - Q_ASSERT(currentGroup()); + QTC_ASSERT(currentGroup(), return); const bool hasEditors = (currentGroup()->editorCount() != 0); m_unsplitAction->setEnabled(hasMultipleGroups); #if 0 @@ -245,7 +248,7 @@ void EditorSplitter::collectGroups(QWidget *widget, QList &groups) return; } QSplitter *splitter = qobject_cast(widget); - Q_ASSERT(splitter); + QTC_ASSERT(splitter, return); collectGroups(splitter->widget(LEFT), groups); collectGroups(splitter->widget(RIGHT), groups); } @@ -330,7 +333,7 @@ void EditorSplitter::unsplit() if (!curGroup) return; QWidget *curGroupWidget = curGroup->widget(); - Q_ASSERT(curGroupWidget); + QTC_ASSERT(curGroupWidget, return); IEditor *selectedEditor = curGroup->currentEditor(); QSplitter *parentSplitter = qobject_cast(curGroupWidget->parentWidget()); @@ -454,25 +457,25 @@ EditorGroup *EditorSplitter::groupFarthestOnSide(QWidget *node, Side side) const void EditorSplitter::selectNextGroup() { EditorGroup *curGroup = currentGroup(); - Q_ASSERT(curGroup); + QTC_ASSERT(curGroup, return); setCurrentGroup(nextGroup(curGroup, RIGHT)); } void EditorSplitter::selectPreviousGroup() { EditorGroup *curGroup = currentGroup(); - Q_ASSERT(curGroup); + QTC_ASSERT(curGroup, return); setCurrentGroup(nextGroup(curGroup, LEFT)); } EditorGroup *EditorSplitter::nextGroup(EditorGroup *curGroup, Side side) const { - Q_ASSERT(curGroup); + QTC_ASSERT(curGroup, return 0); QWidget *curWidget = curGroup->widget(); QWidget *parent = curWidget->parentWidget(); while (curWidget != m_root) { QSplitter *splitter = qobject_cast(parent); - Q_ASSERT(splitter); + QTC_ASSERT(splitter, return 0); if (splitter->widget(side) != curWidget) { curWidget = splitter->widget(side); break; @@ -486,7 +489,7 @@ EditorGroup *EditorSplitter::nextGroup(EditorGroup *curGroup, Side side) const void EditorSplitter::moveDocToAdjacentGroup(Side side) { EditorGroup *curGroup = currentGroup(); - Q_ASSERT(curGroup); + QTC_ASSERT(curGroup, return); IEditor *editor = curGroup->currentEditor(); if (!editor) return; @@ -510,7 +513,7 @@ QWidget *EditorSplitter::recreateGroupTree(QWidget *node) QSplitter *splitter = qobject_cast(node); if (!splitter) { EditorGroup *group = qobject_cast(node); - Q_ASSERT(group); + QTC_ASSERT(group, return 0); IEditor *currentEditor = group->currentEditor(); EditorGroup *newGroup = createGroup(); bool block = newGroup->widget()->blockSignals(true); @@ -588,7 +591,7 @@ void EditorSplitter::saveState(QWidget *current, QDataStream &stream) const saveState(splitter->widget(1), stream); } else { EditorGroup *group = qobject_cast(current); - Q_ASSERT(group); + QTC_ASSERT(group, /**/); if (group != currentGroup()) type = 1; else @@ -639,7 +642,7 @@ void EditorSplitter::fillPathGroupMap(QWidget *current, QString currentPath, map.insert(currentPath, group); } else { QSplitter *splitter = qobject_cast(current); - Q_ASSERT(splitter); + QTC_ASSERT(splitter, return); fillPathGroupMap(splitter->widget(0), currentPath+"0", map); fillPathGroupMap(splitter->widget(1), currentPath+"1", map); } diff --git a/src/plugins/coreplugin/editormanager/openeditorsview.cpp b/src/plugins/coreplugin/editormanager/openeditorsview.cpp index 79e912e6e04..8fadf753064 100644 --- a/src/plugins/coreplugin/editormanager/openeditorsview.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorsview.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -70,7 +71,7 @@ OpenEditorsWidget::OpenEditorsWidget() m_ui.editorList->installEventFilter(this); m_ui.editorList->setFrameStyle(QFrame::NoFrame); EditorManager *em = EditorManager::instance(); - foreach(IEditor *editor, em->openedEditors()) { + foreach (IEditor *editor, em->openedEditors()) { registerEditor(editor); } connect(em, SIGNAL(editorOpened(Core::IEditor*)), @@ -197,7 +198,7 @@ void OpenEditorsWidget::selectEditor(QTreeWidgetItem *item) void OpenEditorsWidget::updateEditor() { IEditor *editor = qobject_cast(sender()); - Q_ASSERT(editor); + QTC_ASSERT(editor, return); int num = m_ui.editorList->topLevelItemCount(); for (int i = 0; i < num; ++i) { QTreeWidgetItem *item = m_ui.editorList->topLevelItem(i); diff --git a/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp b/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp index 35c4abca29c..c4dcffe91d5 100644 --- a/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp +++ b/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp @@ -35,21 +35,24 @@ #include "editormanager.h" #include "coreimpl.h" -#include +#include + +#include #include +#include #include + +#include #include #include +#include +#include #include +#include #include #include -#include -#include #include #include -#include -#include -#include #ifdef Q_WS_MAC #include #endif @@ -240,7 +243,7 @@ void StackedEditorGroup::sendCloseRequest() void StackedEditorGroup::removeEditor(IEditor *editor) { - Q_ASSERT(editor); + QTC_ASSERT(editor, return); EditorGroup::removeEditor(editor); const int index = m_container->indexOf(editor->widget()); if (index != -1) { @@ -280,7 +283,7 @@ void StackedEditorGroup::setCurrentEditor(IEditor *editor) return; m_toplevel->setVisible(true); const int idx = m_container->indexOf(editor->widget()); - Q_ASSERT(idx >= 0); + QTC_ASSERT(idx >= 0, return); if (m_container->currentIndex() != idx) { m_container->setCurrentIndex(idx); @@ -298,10 +301,11 @@ void StackedEditorGroup::setCurrentEditor(IEditor *editor) } } -void StackedEditorGroup::updateEditorStatus(IEditor *editor) { +void StackedEditorGroup::updateEditorStatus(IEditor *editor) +{ if (!editor) editor = qobject_cast(sender()); - Q_ASSERT(editor); + QTC_ASSERT(editor, return); static const QIcon lockedIcon(QLatin1String(":/qworkbench/images/locked.png")); static const QIcon unlockedIcon(QLatin1String(":/qworkbench/images/unlocked.png")); @@ -371,6 +375,6 @@ int StackedEditorGroup::indexOf(IEditor *editor) if (editor == model->data(model->index(i, 0), Qt::UserRole).value()) return i; } - Q_ASSERT(false); + QTC_ASSERT(false, /**/); return 0; } diff --git a/src/plugins/coreplugin/fileiconprovider.cpp b/src/plugins/coreplugin/fileiconprovider.cpp index 243e5dd64de..571a49e8ed3 100644 --- a/src/plugins/coreplugin/fileiconprovider.cpp +++ b/src/plugins/coreplugin/fileiconprovider.cpp @@ -96,7 +96,7 @@ void FileIconProvider::registerIconForSuffix(const QIcon &icon, const QString &s { // delete old icon, if it exists QList >::iterator iter = m_cache.begin(); - for(; iter != m_cache.end(); ++iter) { + for (; iter != m_cache.end(); ++iter) { if ((*iter).first == suffix) { iter = m_cache.erase(iter); break; @@ -118,7 +118,7 @@ QIcon FileIconProvider::iconForSuffix(const QString &suffix) const return icon; QList >::const_iterator iter = m_cache.constBegin(); - for(; iter != m_cache.constEnd(); ++iter) { + for (; iter != m_cache.constEnd(); ++iter) { if ((*iter).first == suffix) { icon = (*iter).second; break; diff --git a/src/plugins/coreplugin/filemanager.cpp b/src/plugins/coreplugin/filemanager.cpp index 9e4e6704380..48ae15dd951 100644 --- a/src/plugins/coreplugin/filemanager.cpp +++ b/src/plugins/coreplugin/filemanager.cpp @@ -32,6 +32,7 @@ ***************************************************************************/ #include "filemanager.h" + #include "ifile.h" #include "mainwindow.h" #include "saveitemsdialog.h" @@ -40,6 +41,8 @@ #include "mimedatabase.h" #include "iversioncontrol.h" +#include + #include #include #include @@ -177,22 +180,20 @@ bool FileManager::removeFile(IFile *file) void FileManager::addWatch(const QString &filename) { - if (!filename.isEmpty() && managedFiles(filename).isEmpty()) { + if (!filename.isEmpty() && managedFiles(filename).isEmpty()) m_fileWatcher->addPath(filename); - } } void FileManager::removeWatch(const QString &filename) { - if (!filename.isEmpty() && managedFiles(filename).isEmpty()) { + if (!filename.isEmpty() && managedFiles(filename).isEmpty()) m_fileWatcher->removePath(filename); - } } void FileManager::checkForNewFileName() { IFile *file = qobject_cast(sender()); - Q_ASSERT(file); + QTC_ASSERT(file, return); const QString newfilename = fixFileName(file->fileName()); const QString oldfilename = m_managedFiles.value(file).fileName; if (!newfilename.isEmpty() && newfilename != oldfilename) { diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 1d905070549..4eab3fb5571 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -896,7 +896,7 @@ void MainWindow::removeContextObject(IContext *context) return; m_contextWidgets.remove(widget); - if(m_activeContext == context) + if (m_activeContext == context) updateContextObject(0); } @@ -957,10 +957,11 @@ void MainWindow::resetContext() updateContextObject(0); } -QMenu *MainWindow::createPopupMenu() { +QMenu *MainWindow::createPopupMenu() +{ QMenu *menu = new QMenu(this); QList containers = m_actionManager->containers(); - foreach(ActionContainer *c, containers) { + foreach (ActionContainer *c, containers) { if (c->toolBar()) menu->addAction(c->toolBar()->toggleViewAction()); } diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index a39e68baad6..1b018c66d13 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -33,30 +33,34 @@ #include "manhattanstyle.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include "stylehelper.h" #include "styleanimator.h" -#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include // We define a currently unused state for indicating animations #define State_Animating 0x00000040 @@ -97,7 +101,7 @@ public: ManhattanStylePrivate(const QString &baseStyleName) { style = QStyleFactory::create(baseStyleName); - Q_ASSERT(style); + QTC_ASSERT(style, /**/); buttonImage_pressed = QImage(":/qworkbench/images/pushbutton_pressed.png"); buttonImage = QImage(":/qworkbench/images/pushbutton.png"); @@ -105,12 +109,15 @@ public: lineeditImage_disabled = QImage(":/qworkbench/images/inputfield_disabled.png"); } - ~ManhattanStylePrivate() { + ~ManhattanStylePrivate() + { delete style; style = 0; } void init(); + +public: QStyle *style; QImage buttonImage; QImage buttonImage_pressed; @@ -140,7 +147,7 @@ void drawCornerImage(const QImage &img, QPainter *painter, QRect rect, if (top > 0) { //top painter->drawImage(QRect(rect.left() + left, rect.top(), rect.width() -right - left, top), img, QRect(left, 0, size.width() -right - left, top)); - if(left > 0) //top-left + if (left > 0) //top-left painter->drawImage(QRect(rect.left(), rect.top(), left, top), img, QRect(0, 0, left, top)); if (right > 0) //top-right diff --git a/src/plugins/coreplugin/mimedatabase.cpp b/src/plugins/coreplugin/mimedatabase.cpp index 0c6d1d4cdde..26e6858c983 100644 --- a/src/plugins/coreplugin/mimedatabase.cpp +++ b/src/plugins/coreplugin/mimedatabase.cpp @@ -33,19 +33,22 @@ #include "mimedatabase.h" -#include +#include + +#include +#include +#include #include +#include +#include #include #include -#include #include -#include -#include -#include #include #include +#include #include -#include + #include enum { debugMimeDB = 0 }; @@ -299,7 +302,7 @@ void MimeTypeData::debug(QTextStream &str, int indent) const str << indentS << "SubClassesOf: " << subClassesOf.join(comma) << '\n'; if (!globPatterns.empty()) { str << indentS << "Glob: "; - foreach(const QRegExp &r, globPatterns) + foreach (const QRegExp &r, globPatterns) str << r.pattern() << ' '; str << '\n'; if (!suffixes.empty()) { @@ -574,7 +577,7 @@ BaseMimeTypeParser:: BaseMimeTypeParser() : // "*.log[1-9]" m_suffixPattern(QLatin1String("^\\*\\.[\\w]+$")) { - Q_ASSERT(m_suffixPattern.isValid()); + QTC_ASSERT(m_suffixPattern.isValid(), /**/); } void BaseMimeTypeParser::addGlobPattern(const QString &pattern, MimeTypeData *d) const diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 3ea82b42433..31221a343c2 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -32,11 +32,13 @@ ***************************************************************************/ #include "modemanager.h" + #include "fancytabwidget.h" #include "fancyactionbar.h" #include "mainwindow.h" #include + #include #include #include @@ -44,9 +46,12 @@ #include #include +#include + #include #include #include + #include #include #include @@ -225,7 +230,7 @@ void ModeManager::currentTabChanged(int index) void ModeManager::setFocusToCurrentMode() { IMode *mode = currentMode(); - Q_ASSERT(mode); + QTC_ASSERT(mode, return); QWidget *widget = mode->widget(); if (widget) { QWidget *focusWidget = widget->focusWidget(); diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index 5ce8e7498d0..82ed13a29e8 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -87,8 +87,8 @@ void NavigationWidgetPlaceHolder::applyStoredSize(int width) QList sizes = splitter->sizes(); int index = splitter->indexOf(this); int diff = width - sizes.at(index); - int adjust = sizes.count() > 1? ( diff / (sizes.count() - 1)) : 0; - for(int i=0; i 1 ? (diff / (sizes.count() - 1)) : 0; + for (int i = 0; i < sizes.count(); ++i) { if (i != index) sizes[i] += adjust; } diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp index ca60d674ff0..11c0a1c4a0c 100644 --- a/src/plugins/coreplugin/outputpane.cpp +++ b/src/plugins/coreplugin/outputpane.cpp @@ -277,7 +277,7 @@ void OutputPane::init(ICore *core, ExtensionSystem::PluginManager *pm) connect(cmd->action(), SIGNAL(triggered()), this, SLOT(shortcutTriggered())); connect(cmd->action(), SIGNAL(changed()), this, SLOT(updateToolTip())); - } while(it != begin); + } while (it != begin); changePage(); } @@ -293,7 +293,7 @@ void OutputPane::shortcutTriggered() // but the outputpane doesn't have focus // then just give it focus // else do the same as clicking on the button does - if(OutputPanePlaceHolder::m_current + if (OutputPanePlaceHolder::m_current && OutputPanePlaceHolder::m_current->isVisible() && m_widgetComboBox->itemData(m_widgetComboBox->currentIndex()).toInt() == idx) { if (!outputPane->hasFocus() && outputPane->canFocus()) diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp index e74198d897a..be851f52677 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp +++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp @@ -40,11 +40,13 @@ #include "uniqueidmanager.h" #include "viewmanagerinterface.h" +#include + using namespace Core; using namespace Core::Internal; -ProgressManager::ProgressManager(QObject *parent) : - ProgressManagerInterface(parent) +ProgressManager::ProgressManager(QObject *parent) + : ProgressManagerInterface(parent) { m_progressView = new ProgressView; ICore *core = CoreImpl::instance(); @@ -103,7 +105,7 @@ QWidget *ProgressManager::progressView() void ProgressManager::taskFinished() { QObject *taskObject = sender(); - Q_ASSERT(taskObject); + QTC_ASSERT(taskObject, return); QFutureWatcher *task = static_cast *>(taskObject); m_runningTasks.remove(task); delete task; diff --git a/src/plugins/coreplugin/progressmanager/progresspie.cpp b/src/plugins/coreplugin/progressmanager/progresspie.cpp index b6f34d36b41..f3aac399709 100644 --- a/src/plugins/coreplugin/progressmanager/progresspie.cpp +++ b/src/plugins/coreplugin/progressmanager/progresspie.cpp @@ -101,9 +101,9 @@ void ProgressBar::paintEvent(QPaintEvent *) double percent = 0.50; if (range != 0) percent = (value() - minimum()) / range; - if(percent > 1) + if (percent > 1) percent = 1; - else if(percent < 0) + else if (percent < 0) percent = 0; QPainter p(this); diff --git a/src/plugins/coreplugin/progressmanager/progressview.cpp b/src/plugins/coreplugin/progressmanager/progressview.cpp index 274eae8bdb6..c589b4b689a 100644 --- a/src/plugins/coreplugin/progressmanager/progressview.cpp +++ b/src/plugins/coreplugin/progressmanager/progressview.cpp @@ -34,6 +34,8 @@ #include "progressview.h" #include "futureprogress.h" +#include + #include using namespace Core; @@ -136,7 +138,7 @@ void ProgressView::removeTask(FutureProgress *task) void ProgressView::slotFinished() { FutureProgress *progress = qobject_cast(sender()); - Q_ASSERT(progress); + QTC_ASSERT(progress, return); if (m_keep.contains(progress) && !m_keep.value(progress) && !progress->hasError()) removeTask(progress); removeOldTasks(m_type.value(progress), true); diff --git a/src/plugins/coreplugin/rightpane.cpp b/src/plugins/coreplugin/rightpane.cpp index 3c17b255833..1465164d187 100644 --- a/src/plugins/coreplugin/rightpane.cpp +++ b/src/plugins/coreplugin/rightpane.cpp @@ -76,8 +76,8 @@ void RightPanePlaceHolder::applyStoredSize(int width) QList sizes = splitter->sizes(); int index = splitter->indexOf(this); int diff = width - sizes.at(index); - int adjust = sizes.count() > 1? ( diff / (sizes.count() - 1)) : 0; - for(int i=0; i 1 ? (diff / (sizes.count() - 1)) : 0; + for (int i = 0; i < sizes.count(); ++i) { if (i != index) sizes[i] -= adjust; } @@ -125,7 +125,7 @@ void RightPanePlaceHolder::currentModeChanged(Core::IMode *mode) RightPaneWidget *RightPaneWidget::m_instance = 0; RightPaneWidget::RightPaneWidget() - :m_shown(true), m_width(0) + : m_shown(true), m_width(0) { m_instance = this; diff --git a/src/plugins/coreplugin/scriptmanager/qworkbench_wrapper.cpp b/src/plugins/coreplugin/scriptmanager/qworkbench_wrapper.cpp index 28c3c658e66..81e0f77b564 100644 --- a/src/plugins/coreplugin/scriptmanager/qworkbench_wrapper.cpp +++ b/src/plugins/coreplugin/scriptmanager/qworkbench_wrapper.cpp @@ -38,12 +38,15 @@ #include #include +#include + #include #include #include #include #include + #include namespace { @@ -107,7 +110,7 @@ QString CorePrototype::toString() const CorePrototype::ICore *CorePrototype::callee() const { ICore *rc = qscriptvalue_cast(thisObject()); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); return rc; } @@ -121,14 +124,14 @@ MessageManagerPrototype::MessageManagerPrototype(QObject *parent) : void MessageManagerPrototype::displayStatusBarMessage(const QString &text, int ms) { MessageManager *mm = qscriptvalue_cast(thisObject()); - Q_ASSERT(mm); + QTC_ASSERT(mm, return); mm->displayStatusBarMessage(text, ms); } void MessageManagerPrototype::printToOutputPane(const QString &text, bool bringToForeground) { MessageManager *mm = qscriptvalue_cast(thisObject()); - Q_ASSERT(mm); + QTC_ASSERT(mm, return); mm->printToOutputPane(text, bringToForeground); } @@ -147,28 +150,66 @@ FileManagerPrototype::FileManagerPrototype(QObject *parent) : FileManager *FileManagerPrototype::callee() const { FileManager *rc = qscriptvalue_cast(thisObject()); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); return rc; } -bool FileManagerPrototype::addFiles(const QList &files) { return callee()->addFiles(files); } -bool FileManagerPrototype::addFile(Core::IFile *file) { return callee()->addFile(file); } -bool FileManagerPrototype::removeFile(Core::IFile *file) { return callee()->removeFile(file); } +bool FileManagerPrototype::addFiles(const QList &files) +{ + return callee()->addFiles(files); +} + +bool FileManagerPrototype::addFile(Core::IFile *file) +{ + return callee()->addFile(file); +} + +bool FileManagerPrototype::removeFile(Core::IFile *file) +{ + return callee()->removeFile(file); +} QList - FileManagerPrototype::saveModifiedFilesSilently(const QList &files) { return callee()->saveModifiedFilesSilently(files); } +FileManagerPrototype::saveModifiedFilesSilently(const QList &files) +{ + return callee()->saveModifiedFilesSilently(files); +} -QString FileManagerPrototype::getSaveAsFileName(Core::IFile *file) { return callee()->getSaveAsFileName(file); } +QString FileManagerPrototype::getSaveAsFileName(Core::IFile *file) +{ + return callee()->getSaveAsFileName(file); +} + +bool FileManagerPrototype::isFileManaged(const QString &fileName) const +{ + return callee()->isFileManaged(fileName); +} -bool FileManagerPrototype::isFileManaged(const QString &fileName) const { return callee()->isFileManaged(fileName); } QList - FileManagerPrototype::managedFiles(const QString &fileName) const { return callee()->managedFiles(fileName); } +FileManagerPrototype::managedFiles(const QString &fileName) const +{ + return callee()->managedFiles(fileName); +} -void FileManagerPrototype::blockFileChange(Core::IFile *file) { callee()->blockFileChange(file); } -void FileManagerPrototype::unblockFileChange(Core::IFile *file) { return callee()->unblockFileChange(file); } +void FileManagerPrototype::blockFileChange(Core::IFile *file) +{ + callee()->blockFileChange(file); +} -void FileManagerPrototype::addToRecentFiles(const QString &fileName) { return callee()->addToRecentFiles(fileName); } -QStringList FileManagerPrototype::recentFiles() const { return callee()->recentFiles(); } +void FileManagerPrototype::unblockFileChange(Core::IFile *file) +{ + return callee()->unblockFileChange(file); +} + +void FileManagerPrototype::addToRecentFiles(const QString &fileName) +{ + return callee()->addToRecentFiles(fileName); +} + +QStringList FileManagerPrototype::recentFiles() const +{ + return callee()->recentFiles(); +} QString FileManagerPrototype::toString() const { @@ -185,7 +226,7 @@ FilePrototype::FilePrototype(QObject *parent) : IFile *FilePrototype::callee() const { IFile *rc = qscriptvalue_cast(thisObject()); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); return rc; } @@ -270,39 +311,66 @@ QString EditorManagerPrototype::toString() const EditorManagerPrototype::EditorManager *EditorManagerPrototype::callee() const { EditorManager *rc = qscriptvalue_cast(thisObject()); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); return rc; - } // ------------- EditorPrototype -EditorPrototype::EditorPrototype(QObject *parent) : - QObject(parent) +EditorPrototype::EditorPrototype(QObject *parent) + : QObject(parent) { } -QString EditorPrototype::displayName() const { return callee()->displayName(); } -void EditorPrototype::setDisplayName(const QString &title) { callee()->setDisplayName(title); } +QString EditorPrototype::displayName() const +{ + return callee()->displayName(); +} -QString EditorPrototype::kind() const { return QLatin1String(callee()->kind()); } -bool EditorPrototype::duplicateSupported() const { return callee()->duplicateSupported(); } +void EditorPrototype::setDisplayName(const QString &title) +{ + callee()->setDisplayName(title); +} -bool EditorPrototype::createNew(const QString &contents) { return callee()->createNew(contents); } -bool EditorPrototype::open(const QString &fileName) { return callee()->open(fileName); } +QString EditorPrototype::kind() const +{ + return QLatin1String(callee()->kind()); +} + +bool EditorPrototype::duplicateSupported() const +{ + return callee()->duplicateSupported(); +} + +bool EditorPrototype::createNew(const QString &contents) +{ + return callee()->createNew(contents); +} + +bool EditorPrototype::open(const QString &fileName) +{ + return callee()->open(fileName); +} Core::IEditor *EditorPrototype::duplicate(QWidget *parent) { return callee()->duplicate(parent); } -Core::IFile *EditorPrototype::file() const { return callee()->file(); } -QToolBar* EditorPrototype::toolBar() const { return callee()->toolBar();} +Core::IFile *EditorPrototype::file() const +{ + return callee()->file(); +} + +QToolBar* EditorPrototype::toolBar() const +{ + return callee()->toolBar(); +} Core::IEditor *EditorPrototype::callee() const { IEditor *rc = qscriptvalue_cast(thisObject()); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); return rc; } @@ -375,7 +443,7 @@ QString EditorGroupPrototype::toString() const Core::EditorGroup *EditorGroupPrototype::callee() const { EditorGroup *rc = qscriptvalue_cast(thisObject()); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); return rc; } diff --git a/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp b/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp index 5613bd6781a..a3761a17fe1 100644 --- a/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp +++ b/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp @@ -36,8 +36,10 @@ #include "metatypedeclarations.h" #include +#include #include #include + #include #include @@ -154,7 +156,7 @@ static QScriptValue inputDialogGetItem(QScriptContext *context, QScriptEngine *e // Script function template to pop up a file box // with a certain icon and buttons. template - static QScriptValue fileBox(QScriptContext *context, QScriptEngine *engine) +static QScriptValue fileBox(QScriptContext *context, QScriptEngine *engine) { const int argumentCount = context->argumentCount(); if (argumentCount < 2) @@ -170,7 +172,7 @@ template if (fileDialog.exec() == QDialog::Rejected) return QScriptValue(engine, QScriptValue::NullValue); const QStringList rc = fileDialog.selectedFiles(); - Q_ASSERT(!rc.empty()); + QTC_ASSERT(!rc.empty(), /**/); return TFileMode == QFileDialog::ExistingFiles ? engine->toScriptValue(rc) : engine->toScriptValue(rc.front()); } @@ -249,7 +251,7 @@ void ScriptManager::ensureEngineInitialized() { if (m_initialized) return; - Q_ASSERT(m_core); + QTC_ASSERT(m_core, return); // register QObjects that occur as properties SharedTools::registerQObject(m_engine); SharedTools::registerQObject(m_engine); diff --git a/src/plugins/coreplugin/styleanimator.cpp b/src/plugins/coreplugin/styleanimator.cpp index e69c48200d0..8ca453278b2 100644 --- a/src/plugins/coreplugin/styleanimator.cpp +++ b/src/plugins/coreplugin/styleanimator.cpp @@ -52,7 +52,8 @@ void Animation::paint(QPainter *painter, const QStyleOption *option) Q_UNUSED(painter); } -void Animation::drawBlendedImage(QPainter *painter, QRect rect, float alpha) { +void Animation::drawBlendedImage(QPainter *painter, QRect rect, float alpha) +{ if (_secondaryImage.isNull() || _primaryImage.isNull()) return; @@ -64,7 +65,7 @@ void Animation::drawBlendedImage(QPainter *painter, QRect rect, float alpha) { const int sw = _primaryImage.width(); const int sh = _primaryImage.height(); const int bpl = _primaryImage.bytesPerLine(); - switch(_primaryImage.depth()) { + switch (_primaryImage.depth()) { case 32: { uchar *mixed_data = _tempImage.bits(); diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index 02475a0d0e6..5980879ab1a 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -77,7 +77,7 @@ void VCSManager::setVCSEnabled(const QString &directory) qDebug() << Q_FUNC_INFO << directory; IVersionControl* managingVCS = findVersionControlForDirectory(directory); const VersionControlList versionControls = allVersionControls(); - foreach(IVersionControl *versionControl, versionControls) { + foreach (IVersionControl *versionControl, versionControls) { const bool newEnabled = versionControl == managingVCS; if (newEnabled != versionControl->isEnabled()) versionControl->setEnabled(newEnabled); @@ -89,7 +89,7 @@ void VCSManager::setAllVCSEnabled() if (debug) qDebug() << Q_FUNC_INFO; const VersionControlList versionControls = allVersionControls(); - foreach(IVersionControl *versionControl, versionControls) + foreach (IVersionControl *versionControl, versionControls) if (!versionControl->isEnabled()) versionControl->setEnabled(true); } @@ -106,7 +106,7 @@ IVersionControl* VCSManager::findVersionControlForDirectory(const QString &direc int pos = 0; const QChar slash = QLatin1Char('/'); - while(true) { + while (true) { int index = directory.indexOf(slash, pos); if (index == -1) break; @@ -119,7 +119,7 @@ IVersionControl* VCSManager::findVersionControlForDirectory(const QString &direc // ah nothing so ask the IVersionControls directly const VersionControlList versionControls = allVersionControls(); - foreach(IVersionControl * versionControl, versionControls) { + foreach (IVersionControl * versionControl, versionControls) { if (versionControl->managesDirectory(directory)) { m_d->m_cachedMatches.insert(versionControl->findTopLevelForDirectory(directory), versionControl); return versionControl; diff --git a/src/plugins/coreplugin/versiondialog.cpp b/src/plugins/coreplugin/versiondialog.cpp index d2ad590ef69..0decae6cf18 100644 --- a/src/plugins/coreplugin/versiondialog.cpp +++ b/src/plugins/coreplugin/versiondialog.cpp @@ -32,21 +32,25 @@ ***************************************************************************/ #include "versiondialog.h" + #include "coreconstants.h" #include "coreimpl.h" +#include + +#include +#include + +#include +#include +#include +#include +#include + using namespace Core; using namespace Core::Internal; using namespace Core::Constants; -#include -#include -#include -#include -#include -#include -#include - VersionDialog::VersionDialog(QWidget *parent) : QDialog(parent) { @@ -90,7 +94,7 @@ VersionDialog::VersionDialog(QWidget *parent) QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close); QPushButton *closeButton = buttonBox->button(QDialogButtonBox::Close); - Q_ASSERT(closeButton); + QTC_ASSERT(closeButton, /**/); buttonBox->addButton(closeButton, QDialogButtonBox::ButtonRole(QDialogButtonBox::RejectRole | QDialogButtonBox::AcceptRole)); connect(buttonBox , SIGNAL(rejected()), this, SLOT(reject())); @@ -118,7 +122,7 @@ void VersionDialog::popupLicense() // Read file into string ICore * core = CoreImpl::instance(); - Q_ASSERT(core != NULL); + QTC_ASSERT(core, return); QString fileName = core->resourcePath() + "/license.txt"; QFile file(fileName); diff --git a/src/plugins/cppeditor/cppclasswizard.cpp b/src/plugins/cppeditor/cppclasswizard.cpp index 652eec535f1..7babfc45ad8 100644 --- a/src/plugins/cppeditor/cppclasswizard.cpp +++ b/src/plugins/cppeditor/cppclasswizard.cpp @@ -36,12 +36,14 @@ #include #include +#include -#include -#include #include -#include +#include +#include + #include +#include #include #include #include @@ -196,7 +198,7 @@ bool CppClassWizard::generateHeaderAndSource(const CppClassWizardParameters &par << "\n#define " << guard << '\n' << '\n'; const QRegExp qtClassExpr(QLatin1String("^Q[A-Z3].+")); - Q_ASSERT(qtClassExpr.isValid()); + QTC_ASSERT(qtClassExpr.isValid(), /**/); const bool superIsQtClass = qtClassExpr.exactMatch(params.baseClass); if (superIsQtClass) { Core::Utils::writeIncludeFileDirective(params.baseClass, true, headerStr); diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index ff68bd0bac2..8d4a36178ce 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -520,6 +520,15 @@ void CPPEditor::jumpToDefinition() #endif } } else { + foreach (const Document::MacroUse use, doc->macroUses()) { + if (use.contains(endOfName - 1)) { + const Macro ¯o = use.macro(); + const QString fileName = QString::fromUtf8(macro.fileName); + if (TextEditor::BaseTextEditor::openEditorAt(fileName, macro.line, 0)) + return; // done + } + } + qDebug() << "No results for expression:" << expression; } } diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index d24f5a5f81d..35206c2633b 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -32,6 +32,7 @@ ***************************************************************************/ #include "cppcodecompletion.h" + #include "cppmodelmanager.h" #include @@ -45,6 +46,7 @@ #include #include #include + #include #include #include @@ -55,6 +57,7 @@ #include #include #include +#include #include #include @@ -540,7 +543,7 @@ bool CppCodeCompletion::completeMember(FullySpecifiedType, const QList &results, const LookupContext &context) { - Q_ASSERT(! results.isEmpty()); + QTC_ASSERT(!results.isEmpty(), return false); QList classObjectCandidates; @@ -938,7 +941,7 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item) if (m_completionOperator == T_LPAREN) { if (symbol) { Function *function = symbol->type()->asFunction(); - Q_ASSERT(function != 0); + QTC_ASSERT(function, return); m_functionArgumentWidget = new FunctionArgumentWidget(m_core); m_functionArgumentWidget->showFunctionHint(function); diff --git a/src/plugins/cpptools/cppfunctionsfilter.cpp b/src/plugins/cpptools/cppfunctionsfilter.cpp new file mode 100644 index 00000000000..61bb8e2d00d --- /dev/null +++ b/src/plugins/cpptools/cppfunctionsfilter.cpp @@ -0,0 +1,50 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.2, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#include "cppfunctionsfilter.h" + +using namespace CppTools::Internal; + +CppFunctionsFilter::CppFunctionsFilter(CppModelManager *manager, Core::EditorManager *editorManager) + : CppQuickOpenFilter(manager, editorManager) +{ + setShortcutString("m"); + setIncludedByDefault(false); + + search.setSymbolsToSearchFor(SearchSymbols::Functions); + search.setSeparateScope(true); +} + +CppFunctionsFilter::~CppFunctionsFilter() +{ +} diff --git a/src/plugins/cpptools/cppfunctionsfilter.h b/src/plugins/cpptools/cppfunctionsfilter.h new file mode 100644 index 00000000000..6e48d65b26f --- /dev/null +++ b/src/plugins/cpptools/cppfunctionsfilter.h @@ -0,0 +1,58 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.2, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#ifndef CPPFUNCTIONSFILTER_H +#define CPPFUNCTIONSFILTER_H + +#include + +namespace CppTools { +namespace Internal { + +class CppFunctionsFilter : public CppQuickOpenFilter +{ + Q_OBJECT + +public: + CppFunctionsFilter(CppModelManager *manager, Core::EditorManager *editorManager); + ~CppFunctionsFilter(); + + QString trName() const { return tr("Methods"); } + QString name() const { return QLatin1String("Methods"); } + Priority priority() const { return Medium; } +}; + +} // namespace Internal +} // namespace CppTools + +#endif // CPPFUNCTIONSFILTER_H diff --git a/src/plugins/cpptools/cpphoverhandler.cpp b/src/plugins/cpptools/cpphoverhandler.cpp index 16ed8a92150..338123bc5e6 100644 --- a/src/plugins/cpptools/cpphoverhandler.cpp +++ b/src/plugins/cpptools/cpphoverhandler.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -51,13 +52,13 @@ #include #include -#include #include #include #include #include using namespace CppTools::Internal; +using namespace CPlusPlus; CppHoverHandler::CppHoverHandler(CppModelManager *manager, QObject *parent) : QObject(parent), m_manager(manager), m_helpEngineNeedsSetup(false) @@ -104,11 +105,9 @@ void CppHoverHandler::showToolTip(TextEditor::ITextEditor *editor, const QPoint } } -static QString buildHelpId(const CPlusPlus::FullySpecifiedType &type, - const CPlusPlus::Symbol *symbol) +static QString buildHelpId(const FullySpecifiedType &type, + const Symbol *symbol) { - using namespace CPlusPlus; - Name *name = 0; Scope *scope = 0; @@ -156,12 +155,10 @@ static QString buildHelpId(const CPlusPlus::FullySpecifiedType &type, void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, int pos) { - using namespace CPlusPlus; - m_helpId.clear(); m_toolTip.clear(); - QPlainTextEdit *edit = qobject_cast(editor->widget()); + TextEditor::BaseTextEditor *edit = qobject_cast(editor->widget()); if (!edit) return; @@ -169,8 +166,7 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in tc.setPosition(pos); const int lineNumber = tc.block().blockNumber() + 1; - - QString fileName = editor->file()->fileName(); + const QString fileName = editor->file()->fileName(); Document::Ptr doc = m_manager->document(fileName); if (doc) { foreach (Document::DiagnosticMessage m, doc->diagnosticMessages()) { @@ -235,6 +231,16 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in } } + if (doc && m_toolTip.isEmpty()) { + foreach (const Document::MacroUse &use, doc->macroUses()) { + if (use.contains(pos)) { + m_toolTip = use.macro().toString(); + m_helpId = use.macro().name; + break; + } + } + } + if (m_helpEngineNeedsSetup && m_helpEngine->registeredDocumentations().count() > 0) { m_helpEngine->setupData(); @@ -243,7 +249,8 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in if (!m_helpId.isEmpty() && !m_helpEngine->linksForIdentifier(m_helpId).isEmpty()) { m_toolTip = QString(QLatin1String("" - "
%1
")).arg(Qt::escape(m_toolTip)); + "")) + .arg(Qt::escape(m_toolTip)); editor->setContextHelpId(m_helpId); } else if (!m_toolTip.isEmpty()) { m_toolTip = QString(QLatin1String("%1")).arg(Qt::escape(m_toolTip)); diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index a165614a594..40888d99f3f 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -52,6 +52,8 @@ #include #include +#include + #include #include #include @@ -64,10 +66,11 @@ #include #include -#include -#include -#include -#include +#include +#include +#include + +//#include using namespace CppTools; using namespace CppTools::Internal; @@ -299,14 +302,14 @@ void CppPreprocessor::macroAdded(const Macro ¯o) } void CppPreprocessor::startExpandingMacro(unsigned offset, - const Macro &, + const Macro ¯o, const QByteArray &originalText) { if (! m_currentDoc) return; //qDebug() << "start expanding:" << macro.name << "text:" << originalText; - m_currentDoc->addMacroUse(offset, originalText.length()); + m_currentDoc->addMacroUse(macro, offset, originalText.length()); } void CppPreprocessor::stopExpandingMacro(unsigned, const Macro &) @@ -387,17 +390,17 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type) } else { Document::Ptr previousDoc = switchDocument(Document::create(fileName)); - const QByteArray previousFile = env.current_file; + const QByteArray previousFile = env.currentFile; const unsigned previousLine = env.currentLine; - env.current_file = QByteArray(m_currentDoc->translationUnit()->fileName(), - m_currentDoc->translationUnit()->fileNameLength()); + env.currentFile = QByteArray(m_currentDoc->translationUnit()->fileName(), + m_currentDoc->translationUnit()->fileNameLength()); QByteArray preprocessedCode; m_proc(contents, &preprocessedCode); //qDebug() << preprocessedCode; - env.current_file = previousFile; + env.currentFile = previousFile; env.currentLine = previousLine; m_currentDoc->setSource(preprocessedCode); @@ -439,10 +442,10 @@ CppModelManager::CppModelManager(QObject *parent) : m_projectExplorer = ExtensionSystem::PluginManager::instance() ->getObject(); - Q_ASSERT(m_projectExplorer); + QTC_ASSERT(m_projectExplorer, return); ProjectExplorer::SessionManager *session = m_projectExplorer->session(); - Q_ASSERT(session != 0); + QTC_ASSERT(session, return); connect(session, SIGNAL(projectAdded(ProjectExplorer::Project*)), this, SLOT(onProjectAdded(ProjectExplorer::Project*))); @@ -626,7 +629,7 @@ void CppModelManager::editorOpened(Core::IEditor *editor) { if (isCppEditor(editor)) { TextEditor::ITextEditor *textEditor = qobject_cast(editor); - Q_ASSERT(textEditor != 0); + QTC_ASSERT(textEditor, return); CppEditorSupport *editorSupport = new CppEditorSupport(this); editorSupport->setTextEditor(textEditor); @@ -646,7 +649,7 @@ void CppModelManager::editorAboutToClose(Core::IEditor *editor) { if (isCppEditor(editor)) { TextEditor::ITextEditor *textEditor = qobject_cast(editor); - Q_ASSERT(textEditor != 0); + QTC_ASSERT(textEditor, return); CppEditorSupport *editorSupport = m_editorSupport.value(textEditor); m_editorSupport.remove(textEditor); @@ -785,7 +788,7 @@ void CppModelManager::parse(QFutureInterface &future, CppPreprocessor *preproc, QStringList files) { - Q_ASSERT(! files.isEmpty()); + QTC_ASSERT(!files.isEmpty(), return); // Change the priority of the background parser thread to idle. QThread::currentThread()->setPriority(QThread::IdlePriority); diff --git a/src/plugins/cpptools/cppquickopenfilter.cpp b/src/plugins/cpptools/cppquickopenfilter.cpp index a1f1a9b3713..ac69c9cc6df 100644 --- a/src/plugins/cpptools/cppquickopenfilter.cpp +++ b/src/plugins/cpptools/cppquickopenfilter.cpp @@ -75,6 +75,12 @@ void CppQuickOpenFilter::refresh(QFutureInterface &future) Q_UNUSED(future); } +static bool compareLexigraphically(const QuickOpen::FilterEntry &a, + const QuickOpen::FilterEntry &b) +{ + return a.displayName < b.displayName; +} + QList CppQuickOpenFilter::matchesFor(const QString &origEntry) { QString entry = trimWildcards(origEntry); @@ -109,6 +115,9 @@ QList CppQuickOpenFilter::matchesFor(const QString &orig } } + if (entries.size() < 1000) + qSort(entries.begin(), entries.end(), compareLexigraphically); + return entries; } diff --git a/src/plugins/cpptools/cpptools.cpp b/src/plugins/cpptools/cpptools.cpp index 957f0cae9b0..5e9f6dca45f 100644 --- a/src/plugins/cpptools/cpptools.cpp +++ b/src/plugins/cpptools/cpptools.cpp @@ -34,6 +34,7 @@ #include "cpptools.h" #include "cppclassesfilter.h" #include "cppcodecompletion.h" +#include "cppfunctionsfilter.h" #include "cpphoverhandler.h" #include "cppmodelmanager.h" #include "cpptoolsconstants.h" @@ -89,6 +90,7 @@ bool CppToolsPlugin::initialize(const QStringList & /*arguments*/, QString *) m_core->editorManager()); addAutoReleasedObject(quickOpenFilter); addAutoReleasedObject(new CppClassesFilter(m_modelManager, m_core->editorManager())); + addAutoReleasedObject(new CppFunctionsFilter(m_modelManager, m_core->editorManager())); // Menus Core::IActionContainer *mtools = am->actionContainer(Core::Constants::M_TOOLS); diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro index 92905e42ef9..74112379e39 100644 --- a/src/plugins/cpptools/cpptools.pro +++ b/src/plugins/cpptools/cpptools.pro @@ -10,15 +10,16 @@ unix:QMAKE_CXXFLAGS_DEBUG += -O3 INCLUDEPATH += . DEFINES += CPPTOOLS_LIBRARY CONFIG += help - HEADERS += cpptools_global.h \ cppquickopenfilter.h \ cppclassesfilter.h \ - searchsymbols.h + searchsymbols.h \ + cppfunctionsfilter.h SOURCES += cppquickopenfilter.cpp \ cpptoolseditorsupport.cpp \ cppclassesfilter.cpp \ - searchsymbols.cpp + searchsymbols.cpp \ + cppfunctionsfilter.cpp # Input SOURCES += cpptools.cpp \ diff --git a/src/plugins/cpptools/searchsymbols.cpp b/src/plugins/cpptools/searchsymbols.cpp index 308449ab581..2669ea7bc79 100644 --- a/src/plugins/cpptools/searchsymbols.cpp +++ b/src/plugins/cpptools/searchsymbols.cpp @@ -35,6 +35,7 @@ #include #include +#include using namespace CPlusPlus; using namespace CppTools::Internal; @@ -97,12 +98,24 @@ bool SearchSymbols::visit(Function *symbol) if (!(symbolsToSearchFor & Functions)) return false; + QString extraScope; + if (Name *name = symbol->name()) { + if (QualifiedNameId *nameId = name->asQualifiedNameId()) { + if (nameId->nameCount() > 1) { + extraScope = overview.prettyName(nameId->nameAt(nameId->nameCount() - 2)); + } + } + } + QString fullScope = _scope; + if (!_scope.isEmpty() && !extraScope.isEmpty()) + fullScope += QLatin1String("::"); + fullScope += extraScope; QString name = symbolName(symbol); QString scopedName = scopedSymbolName(name); QString type = overview.prettyType(symbol->type(), - separateScope ? symbol->name() : 0); + separateScope ? symbol->identity() : 0); appendItem(separateScope ? type : scopedName, - separateScope ? _scope : type, + separateScope ? fullScope : type, ModelItemInfo::Method, symbol); return false; } @@ -153,7 +166,7 @@ bool SearchSymbols::visit(Class *symbol) QString SearchSymbols::scopedSymbolName(const QString &symbolName) const { QString name = _scope; - if (! name.isEmpty()) + if (!name.isEmpty()) name += QLatin1String("::"); name += symbolName; return name; @@ -196,6 +209,9 @@ void SearchSymbols::appendItem(const QString &name, ModelItemInfo::ItemType type, const Symbol *symbol) { + if (!symbol->name()) + return; + const QIcon icon = icons.iconForSymbol(symbol); items.append(ModelItemInfo(name, info, type, QString::fromUtf8(symbol->fileName(), symbol->fileNameLength()), diff --git a/src/plugins/debugger/attachexternaldialog.cpp b/src/plugins/debugger/attachexternaldialog.cpp index 1a376b3373f..f5d2101cc95 100644 --- a/src/plugins/debugger/attachexternaldialog.cpp +++ b/src/plugins/debugger/attachexternaldialog.cpp @@ -152,13 +152,12 @@ void AttachExternalDialog::rebuildProcessList() #ifdef Q_OS_WINDOWS -// Forward declarations: -BOOL GetProcessList( ); -BOOL ListProcessModules( DWORD dwPID ); -BOOL ListProcessThreads( DWORD dwOwnerPID ); -void printError( TCHAR* msg ); +BOOL GetProcessList(); +BOOL ListProcessModules(DWORD dwPID); +BOOL ListProcessThreads(DWORD dwOwnerPID); +void printError(TCHAR *msg); -BOOL GetProcessList( ) +BOOL GetProcessList() { HANDLE hProcessSnap; HANDLE hProcess; @@ -167,7 +166,7 @@ BOOL GetProcessList( ) // Take a snapshot of all processes in the system. hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); - if( hProcessSnap == INVALID_HANDLE_VALUE ) + if (hProcessSnap == INVALID_HANDLE_VALUE) { printError( TEXT("CreateToolhelp32Snapshot (of processes)") ); return( FALSE ); @@ -178,7 +177,7 @@ BOOL GetProcessList( ) // Retrieve information about the first process, // and exit if unsuccessful - if( !Process32First( hProcessSnap, &pe32 ) ) + if (!Process32First( hProcessSnap, &pe32 )) { printError( TEXT("Process32First") ); // show cause of failure CloseHandle( hProcessSnap ); // clean the snapshot object @@ -196,12 +195,12 @@ BOOL GetProcessList( ) // Retrieve the priority class. dwPriorityClass = 0; hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID ); - if( hProcess == NULL ) + if (hProcess == NULL) printError( TEXT("OpenProcess") ); else { dwPriorityClass = GetPriorityClass( hProcess ); - if( !dwPriorityClass ) + if (!dwPriorityClass) printError( TEXT("GetPriorityClass") ); CloseHandle( hProcess ); } @@ -210,31 +209,30 @@ BOOL GetProcessList( ) printf( "\n Thread count = %d", pe32.cntThreads ); printf( "\n Parent process ID = 0x%08X", pe32.th32ParentProcessID ); printf( "\n Priority base = %d", pe32.pcPriClassBase ); - if( dwPriorityClass ) + if (dwPriorityClass) printf( "\n Priority class = %d", dwPriorityClass ); // List the modules and threads associated with this process ListProcessModules( pe32.th32ProcessID ); ListProcessThreads( pe32.th32ProcessID ); - } while( Process32Next( hProcessSnap, &pe32 ) ); + } while (Process32Next(hProcessSnap, &pe32)); - CloseHandle( hProcessSnap ); - return( TRUE ); + CloseHandle(hProcessSnap); + return TRUE; } -BOOL ListProcessModules( DWORD dwPID ) +BOOL ListProcessModules(DWORD dwPID) { HANDLE hModuleSnap = INVALID_HANDLE_VALUE; MODULEENTRY32 me32; // Take a snapshot of all modules in the specified process. hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID ); - if( hModuleSnap == INVALID_HANDLE_VALUE ) - { - printError( TEXT("CreateToolhelp32Snapshot (of modules)") ); - return( FALSE ); + if (hModuleSnap == INVALID_HANDLE_VALUE) { + printError(TEXT("CreateToolhelp32Snapshot (of modules)")); + return FALSE; } // Set the size of the structure before using it. @@ -242,7 +240,7 @@ BOOL ListProcessModules( DWORD dwPID ) // Retrieve information about the first module, // and exit if unsuccessful - if( !Module32First( hModuleSnap, &me32 ) ) + if (!Module32First( hModuleSnap, &me32)) { printError( TEXT("Module32First") ); // show cause of failure CloseHandle( hModuleSnap ); // clean the snapshot object @@ -261,10 +259,10 @@ BOOL ListProcessModules( DWORD dwPID ) printf( "\n Base address = 0x%08X", (DWORD) me32.modBaseAddr ); printf( "\n Base size = %d", me32.modBaseSize ); - } while( Module32Next( hModuleSnap, &me32 ) ); + } while (Module32Next(hModuleSnap, &me32)); - CloseHandle( hModuleSnap ); - return( TRUE ); + CloseHandle(hModuleSnap); + return TRUE; } BOOL ListProcessThreads( DWORD dwOwnerPID ) @@ -274,7 +272,7 @@ BOOL ListProcessThreads( DWORD dwOwnerPID ) // Take a snapshot of all running threads hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 ); - if( hThreadSnap == INVALID_HANDLE_VALUE ) + if (hThreadSnap == INVALID_HANDLE_VALUE) return( FALSE ); // Fill in the size of the structure before using it. @@ -282,7 +280,7 @@ BOOL ListProcessThreads( DWORD dwOwnerPID ) // Retrieve information about the first thread, // and exit if unsuccessful - if( !Thread32First( hThreadSnap, &te32 ) ) + if (!Thread32First( hThreadSnap, &te32 )) { printError( TEXT("Thread32First") ); // show cause of failure CloseHandle( hThreadSnap ); // clean the snapshot object @@ -294,13 +292,13 @@ BOOL ListProcessThreads( DWORD dwOwnerPID ) // associated with the specified process do { - if( te32.th32OwnerProcessID == dwOwnerPID ) + if (te32.th32OwnerProcessID == dwOwnerPID) { printf( "\n\n THREAD ID = 0x%08X", te32.th32ThreadID ); printf( "\n Base priority = %d", te32.tpBasePri ); printf( "\n Delta priority = %d", te32.tpDeltaPri ); } - } while( Thread32Next(hThreadSnap, &te32 ) ); + } while (Thread32Next(hThreadSnap, &te32)); CloseHandle( hThreadSnap ); return( TRUE ); @@ -308,22 +306,24 @@ BOOL ListProcessThreads( DWORD dwOwnerPID ) void printError( TCHAR* msg ) { - DWORD eNum; - TCHAR sysMsg[256]; - TCHAR* p; + DWORD eNum; + TCHAR sysMsg[256]; + TCHAR* p; - eNum = GetLastError( ); - FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + eNum = GetLastError( ); + FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, eNum, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language sysMsg, 256, NULL ); - // Trim the end of the line and terminate it with a null - p = sysMsg; - while( ( *p > 31 ) || ( *p == 9 ) ) - ++p; - do { *p-- = 0; } while( ( p >= sysMsg ) && - ( ( *p == '.' ) || ( *p < 33 ) ) ); + // Trim the end of the line and terminate it with a null + p = sysMsg; + while (*p > 31 || *p == 9 ) + ++p; + + do { + *p-- = 0; + } while( p >= sysMsg && (*p == '.' || *p < 33)); // Display the message _tprintf( TEXT("\n WARNING: %s failed with error %d (%s)"), msg, eNum, sysMsg ); @@ -331,7 +331,6 @@ void printError( TCHAR* msg ) #endif - void AttachExternalDialog::procSelected(const QModelIndex &index0) { QModelIndex index = index0.sibling(index0.row(), 0); diff --git a/src/plugins/debugger/attachremotedialog.cpp b/src/plugins/debugger/attachremotedialog.cpp index 65b02f37f10..a409ceba03a 100644 --- a/src/plugins/debugger/attachremotedialog.cpp +++ b/src/plugins/debugger/attachremotedialog.cpp @@ -150,10 +150,10 @@ void AttachRemoteDialog::rebuildProcessList() #include // Forward declarations: -BOOL GetProcessList( ); -BOOL ListProcessModules( DWORD dwPID ); -BOOL ListProcessThreads( DWORD dwOwnerPID ); -void printError( TCHAR* msg ); +BOOL GetProcessList(); +BOOL ListProcessModules(DWORD dwPID); +BOOL ListProcessThreads(DWORD dwOwnerPID); +void printError(TCHAR* msg); BOOL GetProcessList( ) { @@ -164,7 +164,7 @@ BOOL GetProcessList( ) // Take a snapshot of all processes in the system. hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); - if( hProcessSnap == INVALID_HANDLE_VALUE ) + if (hProcessSnap == INVALID_HANDLE_VALUE) { printError( TEXT("CreateToolhelp32Snapshot (of processes)") ); return( FALSE ); @@ -175,7 +175,7 @@ BOOL GetProcessList( ) // Retrieve information about the first process, // and exit if unsuccessful - if( !Process32First( hProcessSnap, &pe32 ) ) + if (!Process32First( hProcessSnap, &pe32 )) { printError( TEXT("Process32First") ); // show cause of failure CloseHandle( hProcessSnap ); // clean the snapshot object @@ -193,12 +193,12 @@ BOOL GetProcessList( ) // Retrieve the priority class. dwPriorityClass = 0; hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID ); - if( hProcess == NULL ) + if (hProcess == NULL) printError( TEXT("OpenProcess") ); else { dwPriorityClass = GetPriorityClass( hProcess ); - if( !dwPriorityClass ) + if (!dwPriorityClass) printError( TEXT("GetPriorityClass") ); CloseHandle( hProcess ); } @@ -207,7 +207,7 @@ BOOL GetProcessList( ) printf( "\n Thread count = %d", pe32.cntThreads ); printf( "\n Parent process ID = 0x%08X", pe32.th32ParentProcessID ); printf( "\n Priority base = %d", pe32.pcPriClassBase ); - if( dwPriorityClass ) + if (dwPriorityClass) printf( "\n Priority class = %d", dwPriorityClass ); // List the modules and threads associated with this process @@ -228,7 +228,7 @@ BOOL ListProcessModules( DWORD dwPID ) // Take a snapshot of all modules in the specified process. hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID ); - if( hModuleSnap == INVALID_HANDLE_VALUE ) + if (hModuleSnap == INVALID_HANDLE_VALUE) { printError( TEXT("CreateToolhelp32Snapshot (of modules)") ); return( FALSE ); @@ -239,7 +239,7 @@ BOOL ListProcessModules( DWORD dwPID ) // Retrieve information about the first module, // and exit if unsuccessful - if( !Module32First( hModuleSnap, &me32 ) ) + if (!Module32First( hModuleSnap, &me32 )) { printError( TEXT("Module32First") ); // show cause of failure CloseHandle( hModuleSnap ); // clean the snapshot object @@ -271,7 +271,7 @@ BOOL ListProcessThreads( DWORD dwOwnerPID ) // Take a snapshot of all running threads hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 ); - if( hThreadSnap == INVALID_HANDLE_VALUE ) + if (hThreadSnap == INVALID_HANDLE_VALUE) return( FALSE ); // Fill in the size of the structure before using it. @@ -279,7 +279,7 @@ BOOL ListProcessThreads( DWORD dwOwnerPID ) // Retrieve information about the first thread, // and exit if unsuccessful - if( !Thread32First( hThreadSnap, &te32 ) ) + if (!Thread32First( hThreadSnap, &te32 )) { printError( TEXT("Thread32First") ); // show cause of failure CloseHandle( hThreadSnap ); // clean the snapshot object @@ -291,7 +291,7 @@ BOOL ListProcessThreads( DWORD dwOwnerPID ) // associated with the specified process do { - if( te32.th32OwnerProcessID == dwOwnerPID ) + if (te32.th32OwnerProcessID == dwOwnerPID) { printf( "\n\n THREAD ID = 0x%08X", te32.th32ThreadID ); printf( "\n Base priority = %d", te32.tpBasePri ); diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index f4b528c50fa..e27aa5ec41d 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -33,9 +33,10 @@ #include "breakhandler.h" -#include "assert.h" #include "imports.h" // TextEditor::BaseTextMark +#include + #include #include @@ -371,7 +372,7 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const static const QIcon icon2(":/gdbdebugger/images/breakpoint_pending.svg"); static const QString empty = QString(QLatin1Char('-')); - QWB_ASSERT(mi.isValid(), return QVariant()); + QTC_ASSERT(mi.isValid(), return QVariant()); if (mi.row() >= size()) return QVariant(); @@ -550,7 +551,7 @@ void BreakHandler::breakByFunction(const QString &functionName) // One per function is enough for now for (int index = size(); --index >= 0;) { const BreakpointData *data = at(index); - QWB_ASSERT(data, break); + QTC_ASSERT(data, break); if (data->funcName == functionName && data->condition.isEmpty() && data->ignoreCount.isEmpty()) return; diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro index d21eb7cdc01..3d67e19c6aa 100644 --- a/src/plugins/debugger/debugger.pro +++ b/src/plugins/debugger/debugger.pro @@ -13,8 +13,7 @@ include(../../libs/cplusplus/cplusplus.pri) # DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII QT += gui network script -HEADERS += assert.h \ - attachexternaldialog.h \ +HEADERS += attachexternaldialog.h \ attachremotedialog.h \ breakhandler.h \ breakwindow.h \ diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index 11e7ef6c82d..a01a3ddc57e 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -352,6 +352,15 @@ void DebuggerManager::init() m_useFastStartAction->setCheckable(true); m_useFastStartAction->setChecked(true); + m_useToolTipsAction = new QAction(this); + m_useToolTipsAction->setText(tr("Use Tooltips While Debugging")); + m_useToolTipsAction->setToolTip(tr("Checking this will make enable " + "tooltips for variable values during debugging. Since this can slow " + "down debugging and does not provide reliable information as it does " + "not use scope information, it is switched off by default.")); + m_useToolTipsAction->setCheckable(true); + m_useToolTipsAction->setChecked(false); + // FIXME m_useFastStartAction->setChecked(false); m_useFastStartAction->setEnabled(false); @@ -943,6 +952,8 @@ void DebuggerManager::loadSessionData() QVariant value; querySessionValue(QLatin1String("UseFastStart"), &value); m_useFastStartAction->setChecked(value.toBool()); + querySessionValue(QLatin1String("UseToolTips"), &value); + m_useToolTipsAction->setChecked(value.toBool()); querySessionValue(QLatin1String("UseCustomDumpers"), &value); m_useCustomDumpersAction->setChecked(!value.isValid() || value.toBool()); querySessionValue(QLatin1String("SkipKnownFrames"), &value); @@ -956,6 +967,8 @@ void DebuggerManager::saveSessionData() setSessionValue(QLatin1String("UseFastStart"), m_useFastStartAction->isChecked()); + setSessionValue(QLatin1String("UseToolTips"), + m_useToolTipsAction->isChecked()); setSessionValue(QLatin1String("UseCustomDumpers"), m_useCustomDumpersAction->isChecked()); setSessionValue(QLatin1String("SkipKnownFrames"), diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index 63c225411fc..64dee6957f7 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -308,6 +308,7 @@ private: ThreadsHandler *threadsHandler() { return m_threadsHandler; } WatchHandler *watchHandler() { return m_watchHandler; } QAction *useCustomDumpersAction() const { return m_useCustomDumpersAction; } + QAction *useToolTipsAction() const { return m_useToolTipsAction; } QAction *debugDumpersAction() const { return m_debugDumpersAction; } bool skipKnownFrames() const; bool debugDumpers() const; @@ -431,6 +432,7 @@ private: QAction *m_debugDumpersAction; QAction *m_useCustomDumpersAction; QAction *m_useFastStartAction; + QAction *m_useToolTipsAction; QAction *m_dumpLogAction; QWidget *m_breakWindow; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index feb63fa0c30..37406f70cc1 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -33,7 +33,6 @@ #include "debuggerplugin.h" -#include "assert.h" #include "debuggerconstants.h" #include "debuggermanager.h" #include "debuggerrunner.h" @@ -48,20 +47,27 @@ #include #include #include + #include + #include + #include #include + +#include #include #include #include -#include + +#include #include #include #include #include #include + #include #include #include @@ -91,6 +97,7 @@ const char * const DEBUG_DUMPERS = "Debugger.DebugDumpers"; const char * const ADD_TO_WATCH = "Debugger.AddToWatch"; const char * const USE_CUSTOM_DUMPERS = "Debugger.UseCustomDumpers"; const char * const USE_FAST_START = "Debugger.UseFastStart"; +const char * const USE_TOOL_TIPS = "Debugger.UseToolTips"; const char * const SKIP_KNOWN_FRAMES = "Debugger.SkipKnownFrames"; const char * const DUMP_LOG = "Debugger.DumpLog"; @@ -188,7 +195,7 @@ void DebuggerPlugin::shutdown() { if (m_debugMode) m_debugMode->shutdown(); // saves state including manager information - QWB_ASSERT(m_manager, /**/); + QTC_ASSERT(m_manager, /**/); if (m_manager) m_manager->shutdown(); @@ -225,13 +232,13 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes m_pm = ExtensionSystem::PluginManager::instance(); ICore *core = m_pm->getObject(); - QWB_ASSERT(core, return false); + QTC_ASSERT(core, return false); Core::ActionManagerInterface *actionManager = core->actionManager(); - QWB_ASSERT(actionManager, return false); + QTC_ASSERT(actionManager, return false); Core::UniqueIDManager *uidm = core->uniqueIDManager(); - QWB_ASSERT(uidm, return false); + QTC_ASSERT(uidm, return false); QList globalcontext; globalcontext << Core::Constants::C_GLOBAL_ID; @@ -374,13 +381,17 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes Constants::USE_FAST_START, globalcontext); mdebug->addAction(cmd); + cmd = actionManager->registerAction(m_manager->m_useToolTipsAction, + Constants::USE_TOOL_TIPS, globalcontext); + mdebug->addAction(cmd); + +#ifdef QT_DEBUG cmd = actionManager->registerAction(m_manager->m_dumpLogAction, Constants::DUMP_LOG, globalcontext); //cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+D,Ctrl+L"))); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+F11"))); mdebug->addAction(cmd); -#ifdef QT_DEBUG cmd = actionManager->registerAction(m_manager->m_debugDumpersAction, Constants::DEBUG_DUMPERS, debuggercontext); mdebug->addAction(cmd); @@ -549,6 +560,9 @@ void DebuggerPlugin::requestMark(TextEditor::ITextEditor *editor, int lineNumber void DebuggerPlugin::showToolTip(TextEditor::ITextEditor *editor, const QPoint &point, int pos) { + if (!m_manager->useToolTipsAction()->isChecked()) + return; + QPlainTextEdit *plaintext = qobject_cast(editor->widget()); if (!plaintext) return; @@ -590,13 +604,13 @@ void DebuggerPlugin::querySessionValue(const QString &name, QVariant *value) void DebuggerPlugin::setConfigValue(const QString &name, const QVariant &value) { - QWB_ASSERT(m_debugMode, return); + QTC_ASSERT(m_debugMode, return); m_debugMode->settings()->setValue(name, value); } void DebuggerPlugin::queryConfigValue(const QString &name, QVariant *value) { - QWB_ASSERT(m_debugMode, return); + QTC_ASSERT(m_debugMode, return); *value = m_debugMode->settings()->value(name); } diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 90c8c4e9f7d..ddf21ad652e 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -33,7 +33,6 @@ #include "debuggerrunner.h" -#include "assert.h" #include "debuggermanager.h" #include @@ -41,9 +40,12 @@ #include #include +#include + #include #include #include + #include using namespace Debugger::Internal; @@ -76,11 +78,10 @@ QString DebuggerRunner::displayName() const RunControl* DebuggerRunner::run(RunConfigurationPtr runConfiguration, const QString &mode) { - Q_UNUSED(mode); - Q_ASSERT(mode == ProjectExplorer::Constants::DEBUGMODE); + QTC_ASSERT(mode == ProjectExplorer::Constants::DEBUGMODE, return 0); ApplicationRunConfigurationPtr rc = qSharedPointerCast(runConfiguration); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); //qDebug() << "***** Debugging" << rc->name() << rc->executable(); return new DebuggerRunControl(m_manager, rc); } @@ -118,9 +119,9 @@ void DebuggerRunControl::start() m_running = true; ApplicationRunConfigurationPtr rc = qSharedPointerCast(runConfiguration()); - QWB_ASSERT(rc, return); + QTC_ASSERT(rc, return); ProjectExplorer::Project *project = rc->project(); - QWB_ASSERT(project, return); + QTC_ASSERT(project, return); m_manager->m_executable = rc->executable(); m_manager->m_environment = rc->environment().toStringList(); diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index f1042c4faf5..d7ac5b1aaa1 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -33,7 +33,6 @@ #include "gdbengine.h" -#include "assert.h" #include "debuggerconstants.h" #include "debuggermanager.h" #include "gdbmi.h" @@ -49,6 +48,8 @@ #include "startexternaldialog.h" #include "attachexternaldialog.h" +#include + #include #include #include @@ -278,25 +279,8 @@ void GdbEngine::init() connect(&m_gdbProc, SIGNAL(finished(int, QProcess::ExitStatus)), q, SLOT(exitDebugger())); - // Custom dumpers - //m_dumperServerConnection = 0; - //m_dumperServer = new DumperServer(this); - //QString name = "gdb-" + - // QDateTime::currentDateTime().toString("yyyy_MM_dd-hh_mm_ss_zzz"); - //m_dumperServer->listen(name); - //connect(m_dumperServer, SIGNAL(newConnection()), - // this, SLOT(acceptConnection())); - - //if (!m_dumperServer->isListening()) { - // QMessageBox::critical(q->mainWindow(), tr("Dumper Server Setup Failed"), - // tr("Unable to create server listening for data: %1.\n" - // "Server name: %2").arg(m_dumperServer->errorString(), name), - // QMessageBox::Retry | QMessageBox::Cancel); - // } - connect(qq->debugDumpersAction(), SIGNAL(toggled(bool)), this, SLOT(setDebugDumpers(bool))); - connect(qq->useCustomDumpersAction(), SIGNAL(toggled(bool)), this, SLOT(setCustomDumpersWanted(bool))); @@ -442,8 +426,7 @@ void GdbEngine::handleResponse() break; } - if (token == -1 && *from != '&' && *from != '~' && *from != '*' - && *from != '=') { + if (token == -1 && *from != '&' && *from != '~' && *from != '*') { // FIXME: On Linux the application's std::out is merged in here. // High risk of falsely interpreting this as MI output. // We assume that we _always_ use tokens, so not finding a token @@ -452,7 +435,7 @@ void GdbEngine::handleResponse() while (from != to && *from != '\n') s += *from++; //qDebug() << "UNREQUESTED DATA " << s << " TAKEN AS APPLICATION OUTPUT"; - s += '\n'; + //s += '\n'; m_inbuffer = QByteArray(from, to - from); emit applicationOutputAvailable("app-stdout: ", s); @@ -648,7 +631,7 @@ void GdbEngine::readGdbStandardOutput() #endif m_inbuffer.append(out); - //QWB_ASSERT(!m_inbuffer.isEmpty(), return); + //QTC_ASSERT(!m_inbuffer.isEmpty(), return); char c = m_inbuffer[m_inbuffer.size() - 1]; static const QByteArray termArray("(gdb) "); @@ -1416,7 +1399,7 @@ void GdbEngine::handleFileExecAndSymbols QString msg = response.data.findChild("msg").data(); QMessageBox::critical(q->mainWindow(), tr("Error"), tr("Starting executable failed:\n") + msg); - QWB_ASSERT(q->status() == DebuggerInferiorRunning, /**/); + QTC_ASSERT(q->status() == DebuggerInferiorRunning, /**/); interruptInferior(); } } @@ -1437,7 +1420,7 @@ void GdbEngine::handleExecRun(const GdbResultRecord &response) } else { QMessageBox::critical(q->mainWindow(), tr("Error"), tr("Starting executable failed:\n") + msg); - QWB_ASSERT(q->status() == DebuggerInferiorRunning, /**/); + QTC_ASSERT(q->status() == DebuggerInferiorRunning, /**/); interruptInferior(); } } @@ -2432,7 +2415,7 @@ void GdbEngine::selectThread(int index) threadsHandler->setCurrentThread(index); QList threads = threadsHandler->threads(); - QWB_ASSERT(index < threads.size(), return); + QTC_ASSERT(index < threads.size(), return); int id = threads.at(index).id; q->showStatusMessage(tr("Retrieving data for stack view..."), 10000); sendCommand(QLatin1String("-thread-select ") + QString::number(id), @@ -2449,7 +2432,7 @@ void GdbEngine::activateFrame(int frameIndex) //qDebug() << "ACTIVATE FRAME: " << frameIndex << oldIndex // << stackHandler->currentIndex(); - QWB_ASSERT(frameIndex < stackHandler->stackSize(), return); + QTC_ASSERT(frameIndex < stackHandler->stackSize(), return); if (oldIndex != frameIndex) { // Assuming this always succeeds saves a roundtrip. @@ -2970,7 +2953,7 @@ bool GdbEngine::isCustomValueDumperAvailable(const QString &type) const void GdbEngine::runCustomDumper(const WatchData & data0, bool dumpChildren) { WatchData data = data0; - QWB_ASSERT(!data.exp.isEmpty(), return); + QTC_ASSERT(!data.exp.isEmpty(), return); QString tmplate; QString inner; bool isTemplate = extractTemplate(data.type, &tmplate, &inner); @@ -3111,7 +3094,7 @@ void GdbEngine::updateSubItem(const WatchData &data0) #if DEBUG_SUBITEM qDebug() << "UPDATE SUBITEM: " << data.toString(); #endif - QWB_ASSERT(data.isValid(), return); + QTC_ASSERT(data.isValid(), return); // in any case we need the type first if (data.isTypeNeeded()) { @@ -3139,7 +3122,7 @@ void GdbEngine::updateSubItem(const WatchData &data0) } // we should have a type now. this is relied upon further below - QWB_ASSERT(!data.type.isEmpty(), return); + QTC_ASSERT(!data.type.isEmpty(), return); // a common case that can be easily solved if (data.isChildrenNeeded() && isPointerType(data.type) @@ -3197,7 +3180,7 @@ void GdbEngine::updateSubItem(const WatchData &data0) } if (data.isValueNeeded()) { - QWB_ASSERT(!data.variable.isEmpty(), return); // tested above + QTC_ASSERT(!data.variable.isEmpty(), return); // tested above #if DEBUG_SUBITEM qDebug() << "UPDATE SUBITEM: VALUE"; #endif @@ -3226,7 +3209,7 @@ void GdbEngine::updateSubItem(const WatchData &data0) } if (data.isChildrenNeeded()) { - QWB_ASSERT(!data.variable.isEmpty(), return); // tested above + QTC_ASSERT(!data.variable.isEmpty(), return); // tested above QString cmd = "-var-list-children --all-values \"" + data.variable + "\""; sendSynchronizedCommand(cmd, WatchVarListChildren, QVariant::fromValue(data)); return; @@ -3251,14 +3234,14 @@ void GdbEngine::updateSubItem(const WatchData &data0) } if (data.isChildCountNeeded()) { - QWB_ASSERT(!data.variable.isEmpty(), return); // tested above + QTC_ASSERT(!data.variable.isEmpty(), return); // tested above QString cmd = "-var-list-children --all-values \"" + data.variable + "\""; sendCommand(cmd, WatchVarListChildren, QVariant::fromValue(data)); return; } qDebug() << "FIXME: UPDATE SUBITEM: " << data.toString(); - QWB_ASSERT(false, return); + QTC_ASSERT(false, return); } void GdbEngine::updateWatchModel() @@ -3272,7 +3255,7 @@ void GdbEngine::updateWatchModel2() { PENDING_DEBUG("UPDATE WATCH MODEL"); QList incomplete = qq->watchHandler()->takeCurrentIncompletes(); - //QWB_ASSERT(incomplete.isEmpty(), /**/); + //QTC_ASSERT(incomplete.isEmpty(), /**/); if (!incomplete.isEmpty()) { #if DEBUG_PENDING qDebug() << "##############################################"; @@ -3437,7 +3420,7 @@ void GdbEngine::handleEvaluateExpression(const GdbResultRecord &record, const WatchData &data0) { WatchData data = data0; - QWB_ASSERT(data.isValid(), qDebug() << "HUH?"); + QTC_ASSERT(data.isValid(), qDebug() << "HUH?"); if (record.resultClass == GdbResultDone) { //if (col == 0) // data.name = record.data.findChild("value").data(); @@ -3465,7 +3448,7 @@ void GdbEngine::handleDumpCustomValue1(const GdbResultRecord &record, const WatchData &data0) { WatchData data = data0; - QWB_ASSERT(data.isValid(), return); + QTC_ASSERT(data.isValid(), return); if (record.resultClass == GdbResultDone) { // ignore this case, data will follow } else if (record.resultClass == GdbResultError) { @@ -3499,7 +3482,7 @@ void GdbEngine::handleDumpCustomValue2(const GdbResultRecord &record, const WatchData &data0) { WatchData data = data0; - QWB_ASSERT(data.isValid(), return); + QTC_ASSERT(data.isValid(), return); //qDebug() << "CUSTOM VALUE RESULT: " << record.toString(); //qDebug() << "FOR DATA: " << data.toString() << record.resultClass; if (record.resultClass == GdbResultDone) { @@ -3660,10 +3643,20 @@ void GdbEngine::setLocals(const QList &locals) QHash seen; foreach (const GdbMi &item, locals) { + // Local variables of inlined code are reported as + // 26^done,locals={varobj={exp="this",value="",name="var4",exp="this", + // numchild="1",type="const QtSharedPointer::Basic 1) + continue; + QString name = item.findChild("exp").data(); #else - QString name = item.findChild("name").data(); + QString name = item.findChild("name").data(); #endif int n = seen.value(name); if (n) { diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h index b3e13233526..56106a75244 100644 --- a/src/plugins/debugger/gdbengine.h +++ b/src/plugins/debugger/gdbengine.h @@ -34,6 +34,9 @@ #ifndef DEBUGGER_GDBENGINE_H #define DEBUGGER_GDBENGINE_H +#include "idebuggerengine.h" +#include "gdbmi.h" + #include #include #include @@ -48,9 +51,6 @@ class QAbstractItemModel; class QWidget; QT_END_NAMESPACE -#include "idebuggerengine.h" -#include "gdbmi.h" - namespace Debugger { namespace Internal { diff --git a/src/plugins/debugger/gdbmi.cpp b/src/plugins/debugger/gdbmi.cpp index ff976eff798..f14bb752e3e 100644 --- a/src/plugins/debugger/gdbmi.cpp +++ b/src/plugins/debugger/gdbmi.cpp @@ -32,10 +32,10 @@ ***************************************************************************/ #include "gdbmi.h" -#include "assert.h" + +#include #include -#include #include namespace Debugger { @@ -138,7 +138,7 @@ void GdbMi::parseValue(const Char *&from, const Char *to) void GdbMi::parseTuple(const Char *&from, const Char *to) { //qDebug() << "parseTuple: " << QByteArray::fromUtf16(from, to - from); - QWB_ASSERT(*from == '{', /**/); + QTC_ASSERT(*from == '{', /**/); ++from; parseTuple_helper(from, to); } @@ -166,7 +166,7 @@ void GdbMi::parseTuple_helper(const Char *&from, const Char *to) void GdbMi::parseList(const Char *&from, const Char *to) { //qDebug() << "parseList: " << QByteArray::fromUtf16(from, to - from); - QWB_ASSERT(*from == '[', /**/); + QTC_ASSERT(*from == '[', /**/); ++from; m_type = List; while (from < to) { diff --git a/src/plugins/debugger/gdbtypemacros.cpp b/src/plugins/debugger/gdbtypemacros.cpp index a445a336324..8610d01e39d 100644 --- a/src/plugins/debugger/gdbtypemacros.cpp +++ b/src/plugins/debugger/gdbtypemacros.cpp @@ -59,10 +59,10 @@ TypeMacroPage::TypeMacroPage(GdbSettings *settings) //insert qt4 defaults m_settings->m_scriptFile = coreIFace->resourcePath() + QLatin1String("/gdb/qt4macros"); - for (int i=0; i<3; ++i) { + for (int i = 0; i < 3; ++i) { QByteArray data; QDataStream stream(&data, QIODevice::WriteOnly); - switch(i) { + switch (i) { case 0: stream << QString("printqstring") << (int)1; m_settings->m_typeMacros.insert(QLatin1String("QString"), data); @@ -154,7 +154,7 @@ void TypeMacroPage::finished(bool accepted) m_settings->m_typeMacros.clear(); m_settings->m_scriptFile = m_ui.scriptEdit->text(); - for (int i=0; itopLevelItemCount(); ++i) { + for (int i = 0; i < m_ui.treeWidget->topLevelItemCount(); ++i) { QTreeWidgetItem *item = m_ui.treeWidget->topLevelItem(i); QByteArray data; QDataStream stream(&data, QIODevice::WriteOnly); diff --git a/src/plugins/debugger/idebuggerengine.h b/src/plugins/debugger/idebuggerengine.h index 22ed3ca1845..8c7f2d2b2e8 100644 --- a/src/plugins/debugger/idebuggerengine.h +++ b/src/plugins/debugger/idebuggerengine.h @@ -36,6 +36,11 @@ #include +QT_BEGIN_NAMESPACE +class QPoint; +class QString; +QT_END_NAMESPACE + namespace Debugger { namespace Internal { diff --git a/src/plugins/debugger/mode.cpp b/src/plugins/debugger/mode.cpp index 2229cbfe6f5..234f09c2079 100644 --- a/src/plugins/debugger/mode.cpp +++ b/src/plugins/debugger/mode.cpp @@ -33,7 +33,6 @@ #include "mode.h" -#include "assert.h" #include "debuggerconstants.h" #include "debuggermanager.h" @@ -48,10 +47,14 @@ #include #include #include + #include +#include + #include #include + #include #include #include @@ -213,8 +216,8 @@ void DebugMode::focusCurrentEditor(IMode *mode) void DebugMode::writeSettings() const { QSettings *s = settings(); - QWB_ASSERT(m_manager, return); - QWB_ASSERT(m_manager->mainWindow(), return); + QTC_ASSERT(m_manager, return); + QTC_ASSERT(m_manager->mainWindow(), return); s->beginGroup(QLatin1String("DebugMode")); s->setValue(QLatin1String("State"), m_manager->mainWindow()->saveState()); s->setValue(QLatin1String("Locked"), m_toggleLockedAction->isChecked()); diff --git a/src/plugins/debugger/scriptengine.cpp b/src/plugins/debugger/scriptengine.cpp index 28722b37dd2..e6387bfdda9 100644 --- a/src/plugins/debugger/scriptengine.cpp +++ b/src/plugins/debugger/scriptengine.cpp @@ -33,19 +33,18 @@ #include "scriptengine.h" -#include "assert.h" +#include "attachexternaldialog.h" +#include "breakhandler.h" #include "debuggerconstants.h" #include "debuggermanager.h" - #include "disassemblerhandler.h" -#include "breakhandler.h" #include "moduleshandler.h" #include "registerhandler.h" #include "stackhandler.h" +#include "startexternaldialog.h" #include "watchhandler.h" -#include "startexternaldialog.h" -#include "attachexternaldialog.h" +#include #include #include @@ -574,7 +573,7 @@ void ScriptEngine::updateSubItem(const WatchData &data0) { WatchData data = data0; //qDebug() << "\nUPDATE SUBITEM: " << data.toString(); - QWB_ASSERT(data.isValid(), return); + QTC_ASSERT(data.isValid(), return); if (data.isTypeNeeded() || data.isValueNeeded()) { QScriptValue ob = data.scriptValue; @@ -667,7 +666,7 @@ void ScriptEngine::updateSubItem(const WatchData &data0) return; } - QWB_ASSERT(false, return); + QTC_ASSERT(false, return); } IDebuggerEngine *createScriptEngine(DebuggerManager *parent) diff --git a/src/plugins/debugger/stackhandler.cpp b/src/plugins/debugger/stackhandler.cpp index d2a468b07c6..fd70e1e1ab9 100644 --- a/src/plugins/debugger/stackhandler.cpp +++ b/src/plugins/debugger/stackhandler.cpp @@ -33,7 +33,7 @@ #include "stackhandler.h" -#include "assert.h" +#include #include #include @@ -128,8 +128,8 @@ Qt::ItemFlags StackHandler::flags(const QModelIndex &index) const StackFrame StackHandler::currentFrame() const { - QWB_ASSERT(m_currentIndex >= 0, return StackFrame()); - QWB_ASSERT(m_currentIndex < m_stackFrames.size(), return StackFrame()); + QTC_ASSERT(m_currentIndex >= 0, return StackFrame()); + QTC_ASSERT(m_currentIndex < m_stackFrames.size(), return StackFrame()); return m_stackFrames.at(m_currentIndex); } diff --git a/src/plugins/debugger/startexternaldialog.cpp b/src/plugins/debugger/startexternaldialog.cpp index 785757b7667..cca92ff3a3f 100644 --- a/src/plugins/debugger/startexternaldialog.cpp +++ b/src/plugins/debugger/startexternaldialog.cpp @@ -88,7 +88,7 @@ QString StartExternalDialog::executableArguments() const result << QLatin1String("--args"); result << execEdit->text(); - for(int i=0; i #include #include @@ -118,7 +118,7 @@ static QByteArray quoteUnprintable(const QByteArray &ba) QByteArray res; char buf[10]; for (int i = 0, n = ba.size(); i != n; ++i) { - char c = ba.at(i); + unsigned char c = ba.at(i); if (isprint(c)) { res += c; } else { @@ -426,7 +426,7 @@ QVariant WatchHandler::data(const QModelIndex &idx, int role) const int node = idx.internalId(); if (node < 0) return QVariant(); - QWB_ASSERT(node < m_displaySet.size(), return QVariant()); + QTC_ASSERT(node < m_displaySet.size(), return QVariant()); const WatchData &data = m_displaySet.at(node); @@ -702,10 +702,10 @@ void WatchHandler::rebuildModel() // Possibly append dummy items to prevent empty views bool ok = true; - QWB_ASSERT(m_displaySet.size() >= 2, ok = false); - QWB_ASSERT(m_displaySet.at(1).iname == "local", ok = false); - QWB_ASSERT(m_displaySet.at(2).iname == "tooltip", ok = false); - QWB_ASSERT(m_displaySet.at(3).iname == "watch", ok = false); + QTC_ASSERT(m_displaySet.size() >= 2, ok = false); + QTC_ASSERT(m_displaySet.at(1).iname == "local", ok = false); + QTC_ASSERT(m_displaySet.at(2).iname == "tooltip", ok = false); + QTC_ASSERT(m_displaySet.at(3).iname == "watch", ok = false); if (ok) { for (int i = 1; i <= 3; ++i) { WatchData &data = m_displaySet[i]; @@ -777,7 +777,7 @@ void WatchHandler::collapseChildren(const QModelIndex &idx) qDebug() << "WATCHHANDLER: COLLAPSE IGNORED" << idx; return; } - QWB_ASSERT(checkIndex(idx.internalId()), return); + QTC_ASSERT(checkIndex(idx.internalId()), return); #if 0 QString iname0 = m_displaySet.at(idx.internalId()).iname; MODEL_DEBUG("COLLAPSE NODE" << iname0); @@ -806,11 +806,11 @@ void WatchHandler::expandChildren(const QModelIndex &idx) int index = idx.internalId(); if (index == 0) return; - QWB_ASSERT(index >= 0, qDebug() << toString() << index; return); - QWB_ASSERT(index < m_completeSet.size(), qDebug() << toString() << index; return); + QTC_ASSERT(index >= 0, qDebug() << toString() << index; return); + QTC_ASSERT(index < m_completeSet.size(), qDebug() << toString() << index; return); const WatchData &display = m_displaySet.at(index); - QWB_ASSERT(index >= 0, qDebug() << toString() << index; return); - QWB_ASSERT(index < m_completeSet.size(), qDebug() << toString() << index; return); + QTC_ASSERT(index >= 0, qDebug() << toString() << index; return); + QTC_ASSERT(index < m_completeSet.size(), qDebug() << toString() << index; return); const WatchData &complete = m_completeSet.at(index); MODEL_DEBUG("\n\nEXPAND" << display.iname); if (display.iname.isEmpty()) { @@ -848,7 +848,7 @@ void WatchHandler::expandChildren(const QModelIndex &idx) void WatchHandler::insertData(const WatchData &data) { //MODEL_DEBUG("INSERTDATA: " << data.toString()); - QWB_ASSERT(data.isValid(), return); + QTC_ASSERT(data.isValid(), return); if (data.isSomethingNeeded()) insertDataHelper(m_incompleteSet, data); else @@ -977,7 +977,7 @@ bool WatchHandler::canFetchMore(const QModelIndex &parent) const // needs to be made synchronous to be useful. Busy loop is no good. if (!parent.isValid()) return false; - QWB_ASSERT(checkIndex(parent.internalId()), return false); + QTC_ASSERT(checkIndex(parent.internalId()), return false); const WatchData &data = m_displaySet.at(parent.internalId()); MODEL_DEBUG("CAN FETCH MORE: " << parent << " children: " << data.childCount << data.iname); @@ -990,7 +990,7 @@ void WatchHandler::fetchMore(const QModelIndex &parent) MODEL_DEBUG("FETCH MORE: " << parent); return; - QWB_ASSERT(checkIndex(parent.internalId()), return); + QTC_ASSERT(checkIndex(parent.internalId()), return); QString iname = m_displaySet.at(parent.internalId()).iname; if (m_inFetchMore) { @@ -1049,15 +1049,15 @@ QModelIndex WatchHandler::index(int row, int col, const QModelIndex &parent) con MODEL_DEBUG(" -> " << QModelIndex() << " (2) "); return QModelIndex(); } - QWB_ASSERT(checkIndex(parentIndex), return QModelIndex()); + QTC_ASSERT(checkIndex(parentIndex), return QModelIndex()); const WatchData &data = m_displaySet.at(parentIndex); - QWB_ASSERT(row >= 0, qDebug() << "ROW: " << row << "PARENT: " << parent + QTC_ASSERT(row >= 0, qDebug() << "ROW: " << row << "PARENT: " << parent << data.toString() << toString(); return QModelIndex()); - QWB_ASSERT(row < data.childIndex.size(), + QTC_ASSERT(row < data.childIndex.size(), MODEL_DEBUG("ROW: " << row << data.toString() << toString()); return QModelIndex()); QModelIndex idx = createIndex(row, col, data.childIndex.at(row)); - QWB_ASSERT(idx.row() == m_displaySet.at(idx.internalId()).row, + QTC_ASSERT(idx.row() == m_displaySet.at(idx.internalId()).row, return QModelIndex()); MODEL_DEBUG(" -> " << idx << " (A) "); return idx; @@ -1071,15 +1071,15 @@ QModelIndex WatchHandler::parent(const QModelIndex &idx) const } MODEL_DEBUG("PARENT " << idx); int currentIndex = idx.internalId(); - QWB_ASSERT(checkIndex(currentIndex), return QModelIndex()); - QWB_ASSERT(idx.row() == m_displaySet.at(currentIndex).row, + QTC_ASSERT(checkIndex(currentIndex), return QModelIndex()); + QTC_ASSERT(idx.row() == m_displaySet.at(currentIndex).row, MODEL_DEBUG("IDX: " << idx << toString(); return QModelIndex())); int parentIndex = m_displaySet.at(currentIndex).parentIndex; if (parentIndex < 0) { MODEL_DEBUG(" -> " << QModelIndex() << " (2) "); return QModelIndex(); } - QWB_ASSERT(checkIndex(parentIndex), return QModelIndex()); + QTC_ASSERT(checkIndex(parentIndex), return QModelIndex()); QModelIndex parent = createIndex(m_displaySet.at(parentIndex).row, 0, parentIndex); MODEL_DEBUG(" -> " << parent); @@ -1094,7 +1094,7 @@ int WatchHandler::rowCount(const QModelIndex &idx) const return 0; } int thisIndex = idx.internalId(); - QWB_ASSERT(checkIndex(thisIndex), return 0); + QTC_ASSERT(checkIndex(thisIndex), return 0); if (idx.row() == -1 && idx.column() == -1) { MODEL_DEBUG(" -> " << 3 << " (B) "); return 1; @@ -1129,7 +1129,7 @@ int WatchHandler::columnCount(const QModelIndex &idx) const return 0; } MODEL_DEBUG(" -> " << 3 << " (B) "); - QWB_ASSERT(checkIndex(idx.internalId()), return 3); + QTC_ASSERT(checkIndex(idx.internalId()), return 3); return 3; } @@ -1139,7 +1139,7 @@ bool WatchHandler::hasChildren(const QModelIndex &idx) const bool base = rowCount(idx) > 0 && columnCount(idx) > 0; MODEL_DEBUG("HAS CHILDREN: " << idx << base); return base; - QWB_ASSERT(checkIndex(idx.internalId()), return false); + QTC_ASSERT(checkIndex(idx.internalId()), return false); const WatchData &data = m_displaySet.at(idx.internalId()); MODEL_DEBUG("HAS CHILDREN: " << idx << data.toString()); return data.childCount > 0; // || data.childIndex.size() > 0; diff --git a/src/plugins/designer/cpp/formclasswizardparameters.cpp b/src/plugins/designer/cpp/formclasswizardparameters.cpp index 7dd0056186a..10dda881db9 100644 --- a/src/plugins/designer/cpp/formclasswizardparameters.cpp +++ b/src/plugins/designer/cpp/formclasswizardparameters.cpp @@ -156,7 +156,7 @@ bool FormClassWizardParameters::generateCpp(QString *header, QString *source, in if (languageChange) { sourceStr << '\n' << namespaceIndent << "void " << unqualifiedClassName << "::" << "changeEvent(QEvent *e)\n" << namespaceIndent << "{\n" - << namespaceIndent << indent << "switch(e->type()) {\n" << namespaceIndent << indent << "case QEvent::LanguageChange:\n" + << namespaceIndent << indent << "switch (e->type()) {\n" << namespaceIndent << indent << "case QEvent::LanguageChange:\n" << namespaceIndent << indent << indent; if (embedding != InheritedUiClass) sourceStr << uiMemberC << (embedding == PointerAggregatedUiClass ? "->" : "."); diff --git a/src/plugins/designer/editorwidget.cpp b/src/plugins/designer/editorwidget.cpp index 1a60dbb1715..794db9e0cb7 100644 --- a/src/plugins/designer/editorwidget.cpp +++ b/src/plugins/designer/editorwidget.cpp @@ -35,6 +35,7 @@ #include "formeditorw.h" #include +#include #include #include @@ -54,7 +55,7 @@ SharedSubWindow::SharedSubWindow(QWidget *shared, QWidget *parent) : m_shared(shared), m_layout(new QVBoxLayout) { - Q_ASSERT(m_shared); + QTC_ASSERT(m_shared, /**/); m_layout->setContentsMargins(0, 0, 0, 0); setLayout(m_layout); } @@ -62,14 +63,14 @@ SharedSubWindow::SharedSubWindow(QWidget *shared, QWidget *parent) : void SharedSubWindow::activate() { // Take the widget off the other parent - Q_ASSERT(m_shared); + QTC_ASSERT(m_shared, return); QWidget *currentParent = m_shared->parentWidget(); if (currentParent == this) return; if (currentParent) { QVBoxLayout *lt = qobject_cast(currentParent->layout()); - Q_ASSERT(lt); + QTC_ASSERT(lt, return); m_shared->setParent(0); delete lt->takeAt(0); } diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index c156dec1b7f..01f159f991e 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include @@ -169,9 +170,9 @@ FormEditorW::FormEditorW() : { if (debugFormEditor) qDebug() << Q_FUNC_INFO; - Q_ASSERT(!m_self); + QTC_ASSERT(!m_self, return); m_self = this; - Q_ASSERT(m_core); + QTC_ASSERT(m_core, return); qFill(m_designerSubWindows, m_designerSubWindows + Designer::Constants::DesignerSubWindowCount, static_cast(0)); @@ -180,7 +181,7 @@ FormEditorW::FormEditorW() : m_formeditor->setSettingsManager(new SettingsManager()); m_fwm = qobject_cast(m_formeditor->formWindowManager()); - Q_ASSERT(m_fwm); + QTC_ASSERT(m_fwm, return); const int uid = m_core->uniqueIDManager()->uniqueIdentifier(QLatin1String(C_FORMEDITOR)); m_context << uid; @@ -216,7 +217,7 @@ FormEditorW::~FormEditorW() void FormEditorW::fullInit() { - Q_ASSERT(m_initStage == RegisterPlugins); + QTC_ASSERT(m_initStage == RegisterPlugins, return); QTime *initTime = 0; if (debugFormEditor) { initTime = new QTime; @@ -410,7 +411,7 @@ void FormEditorW::setupActions() createSeparator(this, am, m_context, mformtools, QLatin1String("FormEditor.Menu.Tools.Separator2")); m_actionPreview = m_fwm->actionDefaultPreview(); - Q_ASSERT(m_actionPreview); + QTC_ASSERT(m_actionPreview, return); addToolAction(m_actionPreview, am, m_context, QLatin1String("FormEditor.Preview"), mformtools, tr("Ctrl+Alt+R")); @@ -445,8 +446,8 @@ QToolBar *FormEditorW::createEditorToolBar() const Core::ActionManagerInterface *am = m_core->actionManager(); const QStringList::const_iterator cend = m_toolActionIds.constEnd(); for (QStringList::const_iterator it = m_toolActionIds.constBegin(); it != cend; ++it) { - Core::ICommand *cmd = am->command(*it); - Q_ASSERT(cmd); + Core::ICommand *cmd = am->command(*it); + QTC_ASSERT(cmd, continue); QAction *action = cmd->action(); if (!action->icon().isNull()) // Simplify grid has no action yet rc->addAction(action); @@ -472,7 +473,7 @@ Core::IActionContainer *FormEditorW::createPreviewStyleMenu(Core::ActionManagerI const QString deviceProfilePrefix = QLatin1String("DeviceProfile"); const QChar dot = QLatin1Char('.'); - foreach(QAction* a, actions) { + foreach (QAction* a, actions) { QString name = menuId; name += dot; const QVariant data = a->data(); @@ -591,7 +592,7 @@ void FormEditorW::currentEditorChanged(Core::IEditor *editor) // Deactivate Designer if a non-form is being edited if (editor && !qstrcmp(editor->kind(), Constants::C_FORMWINDOW)) { FormWindowEditor *fw = qobject_cast(editor); - Q_ASSERT(fw); + QTC_ASSERT(fw, return); fw->activate(); m_fwm->setActiveFormWindow(fw->formWindow()); } else { diff --git a/src/plugins/find/basetextfind.cpp b/src/plugins/find/basetextfind.cpp index 6598a47e6f3..d6a2e9997e8 100644 --- a/src/plugins/find/basetextfind.cpp +++ b/src/plugins/find/basetextfind.cpp @@ -33,6 +33,8 @@ #include "basetextfind.h" +#include + #include using namespace Find; @@ -49,26 +51,26 @@ BaseTextFind::BaseTextFind(QPlainTextEdit *editor) QTextCursor BaseTextFind::textCursor() const { - Q_ASSERT(m_editor || m_plaineditor); + QTC_ASSERT(m_editor || m_plaineditor, return QTextCursor()); return m_editor ? m_editor->textCursor() : m_plaineditor->textCursor(); } void BaseTextFind::setTextCursor(const QTextCursor& cursor) { - Q_ASSERT(m_editor || m_plaineditor); + QTC_ASSERT(m_editor || m_plaineditor, return); m_editor ? m_editor->setTextCursor(cursor) : m_plaineditor->setTextCursor(cursor); } QTextDocument *BaseTextFind::document() const { - Q_ASSERT(m_editor || m_plaineditor); + QTC_ASSERT(m_editor || m_plaineditor, return 0); return m_editor ? m_editor->document() : m_plaineditor->document(); } bool BaseTextFind::isReadOnly() const { - Q_ASSERT(m_editor || m_plaineditor); + QTC_ASSERT(m_editor || m_plaineditor, return true); return m_editor ? m_editor->isReadOnly() : m_plaineditor->isReadOnly(); } @@ -101,7 +103,7 @@ QString BaseTextFind::currentFindString() const cursor.movePosition(QTextCursor::StartOfWord); cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); QString s = cursor.selectedText(); - foreach(QChar c, s) { + foreach (QChar c, s) { if (!c.isLetterOrNumber() && c != QLatin1Char('_')) { s.clear(); break; diff --git a/src/plugins/find/currentdocumentfind.cpp b/src/plugins/find/currentdocumentfind.cpp index 091c307d3d0..59d05919cf8 100644 --- a/src/plugins/find/currentdocumentfind.cpp +++ b/src/plugins/find/currentdocumentfind.cpp @@ -36,16 +36,17 @@ #include #include #include +#include +#include #include -#include using namespace Core; using namespace Find; using namespace Find::Internal; CurrentDocumentFind::CurrentDocumentFind(ICore *core) - : m_core(core), m_currentFind(0) + : m_core(core), m_currentFind(0) { connect(qApp, SIGNAL(focusChanged(QWidget*, QWidget*)), this, SLOT(updateCurrentFindFilter(QWidget*,QWidget*))); @@ -59,16 +60,14 @@ void CurrentDocumentFind::removeConnections() void CurrentDocumentFind::resetIncrementalSearch() { - Q_ASSERT(m_currentFind); - if (m_currentFind) - m_currentFind->resetIncrementalSearch(); + QTC_ASSERT(m_currentFind, return); + m_currentFind->resetIncrementalSearch(); } void CurrentDocumentFind::clearResults() { - Q_ASSERT(m_currentFind); - if (m_currentFind) - m_currentFind->clearResults(); + QTC_ASSERT(m_currentFind, return); + m_currentFind->clearResults(); } bool CurrentDocumentFind::isEnabled() const @@ -78,67 +77,64 @@ bool CurrentDocumentFind::isEnabled() const bool CurrentDocumentFind::supportsReplace() const { - Q_ASSERT(m_currentFind); - return m_currentFind ? m_currentFind->supportsReplace() : false; + QTC_ASSERT(m_currentFind, return false); + return m_currentFind->supportsReplace(); } QString CurrentDocumentFind::currentFindString() const { - Q_ASSERT(m_currentFind); - return m_currentFind ? m_currentFind->currentFindString() : QString(); + QTC_ASSERT(m_currentFind, return QString()); + return m_currentFind->currentFindString(); } QString CurrentDocumentFind::completedFindString() const { - Q_ASSERT(m_currentFind); - return m_currentFind ? m_currentFind->completedFindString() : QString(); + QTC_ASSERT(m_currentFind, return QString()); + return m_currentFind->completedFindString(); } void CurrentDocumentFind::highlightAll(const QString &txt, QTextDocument::FindFlags findFlags) { - Q_ASSERT(m_currentFind); - if (m_currentFind) - m_currentFind->highlightAll(txt, findFlags); + QTC_ASSERT(m_currentFind, return); + m_currentFind->highlightAll(txt, findFlags); } bool CurrentDocumentFind::findIncremental(const QString &txt, QTextDocument::FindFlags findFlags) { - Q_ASSERT(m_currentFind); - return (m_currentFind? m_currentFind->findIncremental(txt, findFlags) : false); + QTC_ASSERT(m_currentFind, return false); + return m_currentFind->findIncremental(txt, findFlags); } bool CurrentDocumentFind::findStep(const QString &txt, QTextDocument::FindFlags findFlags) { - Q_ASSERT(m_currentFind); - return (m_currentFind? m_currentFind->findStep(txt, findFlags) : false); + QTC_ASSERT(m_currentFind, return false); + return m_currentFind->findStep(txt, findFlags); } bool CurrentDocumentFind::replaceStep(const QString &before, const QString &after, QTextDocument::FindFlags findFlags) { - Q_ASSERT(m_currentFind); - return (m_currentFind? m_currentFind->replaceStep(before, after, findFlags) : false); + QTC_ASSERT(m_currentFind, return false); + return m_currentFind->replaceStep(before, after, findFlags); } int CurrentDocumentFind::replaceAll(const QString &before, const QString &after, QTextDocument::FindFlags findFlags) { - Q_ASSERT(m_currentFind); - return (m_currentFind? m_currentFind->replaceAll(before, after, findFlags) : 0); + QTC_ASSERT(m_currentFind, return 0); + return m_currentFind->replaceAll(before, after, findFlags); } void CurrentDocumentFind::defineFindScope() { - Q_ASSERT(m_currentFind); - if (m_currentFind) - m_currentFind->defineFindScope(); + QTC_ASSERT(m_currentFind, return); + m_currentFind->defineFindScope(); } void CurrentDocumentFind::clearFindScope() { - Q_ASSERT(m_currentFind); - if (m_currentFind) - m_currentFind->clearFindScope(); + QTC_ASSERT(m_currentFind, return); + m_currentFind->clearFindScope(); } void CurrentDocumentFind::updateCurrentFindFilter(QWidget *old, QWidget *now) diff --git a/src/plugins/find/findplugin.cpp b/src/plugins/find/findplugin.cpp index 344ee578e5b..766c435a503 100644 --- a/src/plugins/find/findplugin.cpp +++ b/src/plugins/find/findplugin.cpp @@ -30,6 +30,7 @@ ** version 1.2, included in the file GPL_EXCEPTION.txt in this package. ** ***************************************************************************/ + #include "findplugin.h" #include "textfindconstants.h" @@ -42,6 +43,8 @@ #include #include +#include + #include #include @@ -102,24 +105,18 @@ void FindPlugin::filterChanged() { IFindFilter *changedFilter = qobject_cast(sender()); QAction *action = m_filterActions.value(changedFilter); - Q_ASSERT(changedFilter); - Q_ASSERT(action); - if (!changedFilter || !action) - return; + QTC_ASSERT(changedFilter, return); + QTC_ASSERT(action, return); action->setEnabled(changedFilter->isEnabled()); } void FindPlugin::openFindFilter() { QAction *action = qobject_cast(sender()); - Q_ASSERT(action); - if (!action) - return; + QTC_ASSERT(action, return); IFindFilter *filter = action->data().value(); - Q_ASSERT(filter); - Q_ASSERT(filter->isEnabled()); - if (!filter || !filter->isEnabled()) - return; + QTC_ASSERT(filter, return); + QTC_ASSERT(filter->isEnabled(), return); QString currentFindString = (m_currentDocumentFind->isEnabled() ? m_currentDocumentFind->currentFindString() : ""); if (!currentFindString.isEmpty()) m_findDialog->setFindText(currentFindString); diff --git a/src/plugins/find/findwidget.ui b/src/plugins/find/findwidget.ui index c85f3362997..f4b0c82ed25 100644 --- a/src/plugins/find/findwidget.ui +++ b/src/plugins/find/findwidget.ui @@ -56,6 +56,9 @@ + + Qt::NoFocus + Qt::LeftArrow @@ -66,6 +69,9 @@ + + Qt::NoFocus + Qt::RightArrow @@ -103,6 +109,9 @@ + + Qt::NoFocus + Qt::LeftArrow @@ -113,6 +122,9 @@ + + Qt::NoFocus + Qt::RightArrow diff --git a/src/plugins/git/changeselectiondialog.cpp b/src/plugins/git/changeselectiondialog.cpp index 70004dbadfa..46eab385ac8 100644 --- a/src/plugins/git/changeselectiondialog.cpp +++ b/src/plugins/git/changeselectiondialog.cpp @@ -43,6 +43,7 @@ ChangeSelectionDialog::ChangeSelectionDialog(QWidget *parent) { m_ui.setupUi(this); connect(m_ui.repositoryButton, SIGNAL(clicked()), this, SLOT(selectWorkingDirectory())); + setWindowTitle(tr("Select a Git commit")); } void ChangeSelectionDialog::selectWorkingDirectory() @@ -59,7 +60,7 @@ void ChangeSelectionDialog::selectWorkingDirectory() // the head directory of the repository. QDir repository(location); do { - if (repository.entryList(QDir::AllDirs).contains(QLatin1String(".git"))) { + if (repository.entryList(QDir::AllDirs|QDir::Hidden).contains(QLatin1String(".git"))) { m_ui.repositoryEdit->setText(repository.absolutePath()); return; } diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index a1668e60ceb..ff0cdbde5e4 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -32,36 +32,38 @@ ***************************************************************************/ #include "gitclient.h" -#include "gitplugin.h" -#include "gitconstants.h" + #include "commitdata.h" +#include "gitconstants.h" +#include "gitplugin.h" #include "gitsubmiteditor.h" -#include -#include -#include -#include #include +#include #include +#include +#include #include -#include +#include #include +#include +#include +#include #include #include -#include #include -#include #include // for msg box parent +#include #include using namespace Git; using namespace Git::Internal; -const char* const kGitCommand = "git"; -const char* const kGitDirectoryC = ".git"; -const char* const kBranchIndicatorC = "# On branch"; +const char *const kGitCommand = "git"; +const char *const kGitDirectoryC = ".git"; +const char *const kBranchIndicatorC = "# On branch"; enum { untrackedFilesInCommit = 0 }; @@ -169,14 +171,14 @@ VCSBase::VCSBaseEditor // Exists already outputEditor->createNew(m_msgWait); rc = VCSBase::VCSBaseEditor::getVcsBaseEditor(outputEditor); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); m_core->editorManager()->setCurrentEditor(outputEditor); } else { // Create new, set wait message, set up with source and codec outputEditor = m_core->editorManager()->newFile(kind, &title, m_msgWait); outputEditor->setProperty(registerDynamicProperty, dynamicPropertyValue); rc = VCSBase::VCSBaseEditor::getVcsBaseEditor(outputEditor); - Q_ASSERT(rc); + QTC_ASSERT(rc, return 0); rc->setSource(source); if (setSourceCodec) rc->setCodec(VCSBase::VCSBaseEditor::getCodec(m_core, source)); @@ -394,11 +396,10 @@ void GitClient::executeGit(const QString &workingDirectory, const QStringList &a GitCommand* command = new GitCommand(); if (outputToWindow) { - Q_ASSERT(outputWindow); connect(command, SIGNAL(outputText(QString)), outputWindow, SLOT(append(QString))); connect(command, SIGNAL(outputData(QByteArray)), outputWindow, SLOT(appendData(QByteArray))); } else { - Q_ASSERT(editor); + QTC_ASSERT(editor, /**/); connect(command, SIGNAL(outputText(QString)), editor, SLOT(setPlainText(QString))); connect(command, SIGNAL(outputData(QByteArray)), editor, SLOT(setPlainTextData(QByteArray))); } @@ -515,7 +516,7 @@ static bool parseFiles(const QString &output, CommitData *d) State s = None; // Match added/changed-not-updated files: "#modified: foo.cpp" QRegExp filesPattern(QLatin1String("#\\t[^:]+:\\s+.+")); - Q_ASSERT(filesPattern.isValid()); + QTC_ASSERT(filesPattern.isValid(), return false); const QStringList::const_iterator cend = lines.constEnd(); for (QStringList::const_iterator it = lines.constBegin(); it != cend; ++it) { @@ -533,7 +534,7 @@ static bool parseFiles(const QString &output, CommitData *d) // Now match untracked: "#foo.cpp" s = UntrackedFiles; filesPattern = QRegExp(QLatin1String("#\\t.+")); - Q_ASSERT(filesPattern.isValid()); + QTC_ASSERT(filesPattern.isValid(), return false); } else { if (filesPattern.exactMatch(line)) { const QString fileSpec = line.mid(2).trimmed(); diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index 733a6abc0d5..a92e14eea19 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -32,22 +32,25 @@ ***************************************************************************/ #include "giteditor.h" + #include "annotationhighlighter.h" +#include "gitclient.h" #include "gitconstants.h" #include "gitplugin.h" -#include "gitclient.h" -#include #include +#include +#include -#include -#include -#include -#include -#include #include -#include +#include +#include +#include +#include +#include + #include +#include #define CHANGE_PATTERN_8C "[a-f0-9]{8,8}" #define CHANGE_PATTERN_40C "[a-f0-9]{40,40}" @@ -62,8 +65,8 @@ GitEditor::GitEditor(const VCSBase::VCSBaseEditorParameters *type, m_changeNumberPattern8(QLatin1String(CHANGE_PATTERN_8C)), m_changeNumberPattern40(QLatin1String(CHANGE_PATTERN_40C)) { - Q_ASSERT(m_changeNumberPattern8.isValid()); - Q_ASSERT(m_changeNumberPattern40.isValid()); + QTC_ASSERT(m_changeNumberPattern8.isValid(), return); + QTC_ASSERT(m_changeNumberPattern40.isValid(), return); if (Git::Constants::debug) qDebug() << "GitEditor::GitEditor" << type->type << type->kind; } @@ -76,11 +79,11 @@ QSet GitEditor::annotationChanges() const return changes; // Hunt for first change number in annotation: ":" QRegExp r(QLatin1String("^("CHANGE_PATTERN_8C") ")); - Q_ASSERT(r.isValid()); + QTC_ASSERT(r.isValid(), return changes); if (r.indexIn(txt) != -1) { changes.insert(r.cap(1)); r.setPattern(QLatin1String("\n("CHANGE_PATTERN_8C") ")); - Q_ASSERT(r.isValid()); + QTC_ASSERT(r.isValid(), return changes); int pos = 0; while ((pos = r.indexIn(txt, pos)) != -1) { pos += r.matchedLength(); diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index ebce0f7c452..d9187f542a9 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -32,13 +32,14 @@ ***************************************************************************/ #include "gitplugin.h" -#include "gitclient.h" -#include "gitversioncontrol.h" -#include "giteditor.h" -#include "gitconstants.h" + #include "changeselectiondialog.h" -#include "gitsubmiteditor.h" #include "commitdata.h" +#include "gitclient.h" +#include "gitconstants.h" +#include "giteditor.h" +#include "gitsubmiteditor.h" +#include "gitversioncontrol.h" #include #include @@ -47,20 +48,24 @@ #include #include #include + +#include + #include #include #include #include #include +#include #include #include -#include + #include +#include +#include #include #include -#include -#include static const VCSBase::VCSBaseEditorParameters editorParameters[] = { { @@ -142,7 +147,6 @@ GitPlugin::GitPlugin() : m_versionControl(0), m_changeTmpFile(0) { - Q_ASSERT(m_instance == 0); m_instance = this; } @@ -161,7 +165,7 @@ GitPlugin::~GitPlugin() } if (!m_editorFactories.empty()) { - foreach(Core::IEditorFactory* pf, m_editorFactories) + foreach (Core::IEditorFactory* pf, m_editorFactories) removeObject(pf); qDeleteAll(m_editorFactories); } @@ -212,10 +216,10 @@ static const VCSBase::VCSBaseSubmitEditorParameters submitParameters = { Git::Constants::DIFF_SELECTED }; -static inline Core::ICommand *createSeparator(Core::ActionManagerInterface *am, - const QList &context, - const QString &id, - QObject *parent) +static Core::ICommand *createSeparator(Core::ActionManagerInterface *am, + const QList &context, + const QString &id, + QObject *parent) { QAction *a = new QAction(parent); a->setSeparator(true); @@ -627,7 +631,7 @@ Core::IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const Commit qDebug() << Q_FUNC_INFO << fileName << editor; m_core->editorManager()->ensureEditorManagerVisible(); GitSubmitEditor *submitEditor = qobject_cast(editor); - Q_ASSERT(submitEditor); + QTC_ASSERT(submitEditor, return 0); // The actions are for some reason enabled by the context switching // mechanism. Disable them correctly. m_submitCurrentAction->setEnabled(!cd.stagedFiles.empty()); diff --git a/src/plugins/help/contentstoolwindow.cpp b/src/plugins/help/contentstoolwindow.cpp index ccd540bfef7..3c14d7f1b8e 100644 --- a/src/plugins/help/contentstoolwindow.cpp +++ b/src/plugins/help/contentstoolwindow.cpp @@ -126,7 +126,7 @@ void ContentsToolWindow::contentsDone() { m_widget->setCursor(QCursor(Qt::WaitCursor)); QList > contentList = helpEngine->contents(); - for(QList >::Iterator it = contentList.begin(); it != contentList.end(); ++it) { + for (QList >::Iterator it = contentList.begin(); it != contentList.end(); ++it) { QTreeWidgetItem *newEntry; QTreeWidgetItem *contentEntry; QStack stack; @@ -135,7 +135,7 @@ void ContentsToolWindow::contentsDone() bool root = false; QTreeWidgetItem *lastItem[64]; - for(int j = 0; j < 64; ++j) + for (int j = 0; j < 64; ++j) lastItem[j] = 0; ContentList lst = (*it).second; @@ -149,19 +149,18 @@ void ContentsToolWindow::contentsDone() stack.push(newEntry); depth = 1; root = true; - } - else{ - if((item.depth > depth) && root) { + } else { + if (item.depth > depth && root) { depth = item.depth; stack.push(contentEntry); } - if(item.depth == depth) { + if (item.depth == depth) { contentEntry = new QTreeWidgetItem(stack.top(), lastItem[ depth ]); lastItem[ depth ] = contentEntry; contentEntry->setText(0, item.title); contentEntry->setData(0, LinkRole, item.reference); } - else if(item.depth < depth) { + else if (item.depth < depth) { stack.pop(); depth--; item = *(--it); diff --git a/src/plugins/help/helpengine.cpp b/src/plugins/help/helpengine.cpp index db259f7aa03..44501d25abc 100644 --- a/src/plugins/help/helpengine.cpp +++ b/src/plugins/help/helpengine.cpp @@ -296,7 +296,7 @@ quint32 HelpEngine::getFileAges() QStringList::const_iterator i = addDocuFiles.begin(); quint32 fileAges = 0; - for(; i != addDocuFiles.end(); ++i) { + for (; i != addDocuFiles.end(); ++i) { QFileInfo fi(*i); if (fi.exists()) fileAges += fi.lastModified().toTime_t(); @@ -364,7 +364,7 @@ void TitleMapThread::run() bool needRebuild = false; if (Config::configuration()->profileName() == QLatin1String("default")) { const QStringList docuFiles = Config::configuration()->docFiles(); - for(QStringList::ConstIterator it = docuFiles.begin(); it != docuFiles.end(); it++) { + for (QStringList::ConstIterator it = docuFiles.begin(); it != docuFiles.end(); it++) { if (!QFile::exists(*it)) { Config::configuration()->saveProfile(Profile::createDefaultProfile()); Config::configuration()->loadDefaultProfile(); @@ -383,7 +383,7 @@ void TitleMapThread::run() getAllContents(); titleMap.clear(); - for(QList >::Iterator it = contentList.begin(); it != contentList.end(); ++it) { + for (QList >::Iterator it = contentList.begin(); it != contentList.end(); ++it) { ContentList lst = (*it).second; foreach (ContentItem item, lst) { titleMap[item.reference] = item.title.trimmed(); @@ -430,7 +430,7 @@ void TitleMapThread::buildContentDict() QStringList docuFiles = Config::configuration()->docFiles(); quint32 fileAges = 0; - for(QStringList::iterator it = docuFiles.begin(); it != docuFiles.end(); it++) { + for (QStringList::iterator it = docuFiles.begin(); it != docuFiles.end(); it++) { QFile file(*it); if (!file.exists()) { #ifdef _SHOW_ERRORS_ @@ -441,7 +441,7 @@ void TitleMapThread::buildContentDict() } fileAges += QFileInfo(file).lastModified().toTime_t(); DocuParser *handler = DocuParser::createParser(*it); - if(!handler) { + if (!handler) { #ifdef _SHOW_ERRORS_ emit errorOccured(tr("Documentation file %1 is not compatible!\n" "Skipping file.").arg(QFileInfo(file).absoluteFilePath())); @@ -450,7 +450,7 @@ void TitleMapThread::buildContentDict() } bool ok = handler->parse(&file); file.close(); - if(ok) { + if (ok) { contentList += qMakePair(*it, QList(handler->getContentItems())); delete handler; } else { @@ -469,7 +469,7 @@ void TitleMapThread::buildContentDict() if (contentOut.open(QFile::WriteOnly)) { QDataStream s(&contentOut); s << fileAges; - for(QList >::Iterator it = contentList.begin(); it != contentList.end(); ++it) { + for (QList >::Iterator it = contentList.begin(); it != contentList.end(); ++it) { s << *it; } contentOut.close(); @@ -542,12 +542,12 @@ void IndexThread::buildKeywordDB() QStringList::iterator i = addDocuFiles.begin(); int steps = 0; - for(; i != addDocuFiles.end(); i++) + for (; i != addDocuFiles.end(); i++) steps += QFileInfo(*i).size(); QList lst; quint32 fileAges = 0; - for(i = addDocuFiles.begin(); i != addDocuFiles.end(); i++){ + for (i = addDocuFiles.begin(); i != addDocuFiles.end(); i++) { QFile file(*i); if (!file.exists()) { #ifdef _SHOW_ERRORS_ @@ -560,7 +560,7 @@ void IndexThread::buildKeywordDB() DocuParser *handler = DocuParser::createParser(*i); bool ok = handler->parse(&file); file.close(); - if(!ok){ + if (!ok){ #ifdef _SHOW_ERRORS_ QString msg = QString::fromLatin1("In file %1:\n%2") .arg(QFileInfo(file).absoluteFilePath()) diff --git a/src/plugins/help/helpfindsupport.cpp b/src/plugins/help/helpfindsupport.cpp index 83ec2d1570d..a26032ec2f5 100644 --- a/src/plugins/help/helpfindsupport.cpp +++ b/src/plugins/help/helpfindsupport.cpp @@ -34,6 +34,8 @@ #include "helpfindsupport.h" #include "helpviewer.h" +#include + using namespace Help::Internal; HelpFindSupport::HelpFindSupport(CentralWidget *centralWidget) @@ -52,8 +54,8 @@ bool HelpFindSupport::isEnabled() const QString HelpFindSupport::currentFindString() const { - Q_ASSERT(m_centralWidget); - HelpViewer* viewer = m_centralWidget->currentHelpViewer(); + QTC_ASSERT(m_centralWidget, return QString()); + HelpViewer *viewer = m_centralWidget->currentHelpViewer(); if (!viewer) return QString(); #if !defined(QT_NO_WEBKIT) @@ -70,13 +72,13 @@ QString HelpFindSupport::completedFindString() const bool HelpFindSupport::findIncremental(const QString &txt, QTextDocument::FindFlags findFlags) { - Q_ASSERT(m_centralWidget); + QTC_ASSERT(m_centralWidget, return false); findFlags &= ~QTextDocument::FindBackward; return m_centralWidget->find(txt, findFlags, true); } bool HelpFindSupport::findStep(const QString &txt, QTextDocument::FindFlags findFlags) { - Q_ASSERT(m_centralWidget); + QTC_ASSERT(m_centralWidget, return false); return m_centralWidget->find(txt, findFlags, false); } diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index c96fcf28472..972ab7d6a6b 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -512,7 +512,7 @@ void HelpPlugin::activateContext() // case 1 sidebar shown and has focus, we show whatever we have in the // sidebar in big RightPanePlaceHolder* placeHolder = RightPanePlaceHolder::current(); - if(placeHolder && Core::RightPaneWidget::instance()->hasFocus()) { + if (placeHolder && Core::RightPaneWidget::instance()->hasFocus()) { switchToHelpMode(); return; } diff --git a/src/plugins/perforce/perforceeditor.cpp b/src/plugins/perforce/perforceeditor.cpp index 8eda71843f4..845f8b0f74d 100644 --- a/src/plugins/perforce/perforceeditor.cpp +++ b/src/plugins/perforce/perforceeditor.cpp @@ -32,26 +32,28 @@ ***************************************************************************/ #include "perforceeditor.h" + #include "annotationhighlighter.h" -#include "perforceplugin.h" #include "perforceconstants.h" #include "perforceplugin.h" -#include #include +#include +#include -#include -#include -#include -#include #include +#include +#include +#include +#include +#include + +#include #include #include -#include #include -#include #include -#include +#include namespace Perforce { namespace Internal { @@ -63,7 +65,7 @@ PerforceEditor::PerforceEditor(const VCSBase::VCSBaseEditorParameters *type, m_changeNumberPattern(QLatin1String("^\\d+$")), m_plugin(PerforcePlugin::perforcePluginInstance()) { - Q_ASSERT(m_changeNumberPattern.isValid()); + QTC_ASSERT(m_changeNumberPattern.isValid(), /**/); if (Perforce::Constants::debug) qDebug() << "PerforceEditor::PerforceEditor" << type->type << type->kind; } @@ -76,11 +78,11 @@ QSet PerforceEditor::annotationChanges() const return changes; // Hunt for first change number in annotation: ":" QRegExp r(QLatin1String("^(\\d+):")); - Q_ASSERT(r.isValid()); + QTC_ASSERT(r.isValid(), return changes); if (r.indexIn(txt) != -1) { changes.insert(r.cap(1)); r.setPattern(QLatin1String("\n(\\d+):")); - Q_ASSERT(r.isValid()); + QTC_ASSERT(r.isValid(), return changes); int pos = 0; while ((pos = r.indexIn(txt, pos)) != -1) { pos += r.matchedLength(); diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index dc28901b705..c609c35bf0e 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -31,25 +31,27 @@ ** ***************************************************************************/ -#include "p4.h" #include "perforceplugin.h" -#include "perforceoutputwindow.h" -#include "settingspage.h" -#include "perforcesubmiteditor.h" -#include "changenumberdialog.h" -#include "perforceconstants.h" -#include "perforceversioncontrol.h" -#include "perforceeditor.h" -#include "pendingchangesdialog.h" -#include -#include -#include -#include -#include -#include +#include "changenumberdialog.h" +#include "p4.h" +#include "pendingchangesdialog.h" +#include "perforceconstants.h" +#include "perforceeditor.h" +#include "perforceoutputwindow.h" +#include "perforcesubmiteditor.h" +#include "perforceversioncontrol.h" +#include "settingspage.h" + #include +#include #include +#include +#include +#include +#include +#include +#include #include #include #include @@ -57,16 +59,17 @@ #include #include -#include -#include #include +#include #include +#include #include + #include +#include +#include #include #include -#include -#include using namespace Perforce::Internal; @@ -420,7 +423,7 @@ void PerforcePlugin::deleteCurrentFile() void PerforcePlugin::revertCurrentFile() { - Q_ASSERT(m_coreInstance); + QTC_ASSERT(m_coreInstance, return); const QString fileName = currentFileName(); QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, fileName); @@ -460,7 +463,7 @@ void PerforcePlugin::diffCurrentFile() void PerforcePlugin::diffCurrentProject() { - Q_ASSERT(m_projectExplorer); + QTC_ASSERT(m_projectExplorer, return); QStringList files; QString name; ProjectExplorer::Project *currentProject = m_projectExplorer->currentProject(); @@ -502,7 +505,8 @@ void PerforcePlugin::resolve() void PerforcePlugin::submit() { - Q_ASSERT(m_coreInstance); + QTC_ASSERT(m_coreInstance, return); + if (!checkP4Command()) { showOutput(tr("No p4 executable specified!")); return; @@ -534,7 +538,7 @@ void PerforcePlugin::submit() m_changeTmpFile->seek(0); // Assemble file list of project - Q_ASSERT(m_projectExplorer); + QTC_ASSERT(m_projectExplorer, return); QStringList files; QString name; ProjectExplorer::Project *currentProject = m_projectExplorer->currentProject(); @@ -561,10 +565,9 @@ void PerforcePlugin::submit() QStringList stdOutLines = result2.stdOut.split(QLatin1Char('\n')); QStringList depotFileNames; - foreach(const QString &line, stdOutLines) { - if (line.startsWith("... depotFile")) { + foreach (const QString &line, stdOutLines) { + if (line.startsWith("... depotFile")) depotFileNames.append(line.mid(14)); - } } if (depotFileNames.isEmpty()) { showOutput(tr("Project has no files")); @@ -582,7 +585,7 @@ Core::IEditor *PerforcePlugin::openPerforceSubmitEditor(const QString &fileName, m_coreInstance->editorManager()->openEditor(fileName, Constants::PERFORCESUBMITEDITOR_KIND); m_coreInstance->editorManager()->ensureEditorManagerVisible(); PerforceSubmitEditor *submitEditor = dynamic_cast(editor); - Q_ASSERT(submitEditor); + QTC_ASSERT(submitEditor, return 0); submitEditor->restrictToProjectFiles(depotFileNames); connect(submitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(slotDiff(QStringList))); // The actions are for some reason enabled by the context switching @@ -736,7 +739,7 @@ QString PerforcePlugin::findTopLevelForDirectory(const QString & /* dir */) cons return QString::null; QRegExp regExp(QLatin1String("(\\n|\\r\\n|\\r)Root:\\s*(.*)(\\n|\\r\\n|\\r)")); - Q_ASSERT(regExp.isValid()); + QTC_ASSERT(regExp.isValid(), /**/); regExp.setMinimal(true); if (regExp.indexIn(result.stdOut) != -1) { QString file = regExp.cap(2).trimmed(); @@ -785,7 +788,7 @@ PerforceResponse PerforcePlugin::runP4Cmd(const QStringList &args, qDebug() << "PerforcePlugin::runP4Cmd" << args << extraArgs << debugCodec(outputCodec); PerforceResponse response; response.error = true; - Q_ASSERT(m_coreInstance); + QTC_ASSERT(m_coreInstance, return response); if (!checkP4Command()) { response.message = tr("No p4 executable specified!"); m_perforceOutputWindow->append(response.message, true); @@ -875,7 +878,7 @@ Core::IEditor * PerforcePlugin::showOutputInEditor(const QString& title, const Q int editorType, QTextCodec *codec) { const VCSBase::VCSBaseEditorParameters *params = findType(editorType); - Q_ASSERT(params); + QTC_ASSERT(params, return 0); const QString kind = QLatin1String(params->kind); if (Perforce::Constants::debug) qDebug() << "PerforcePlugin::showOutputInEditor" << title << kind << "Size= " << output.size() << " Type=" << editorType << debugCodec(codec); @@ -1048,10 +1051,9 @@ void PerforcePlugin::openFiles(const QStringList &files) QString PerforcePlugin::clientFilePath(const QString &serverFilePath) { - QString path; - Q_ASSERT(m_coreInstance); + QTC_ASSERT(m_coreInstance, return QString()); if (!checkP4Command()) - return path; + return QString(); QApplication::setOverrideCursor(Qt::WaitCursor); QProcess proc; @@ -1059,6 +1061,7 @@ QString PerforcePlugin::clientFilePath(const QString &serverFilePath) proc.start(m_settings.p4Command, basicP4Args() << QLatin1String("fstat") << serverFilePath); + QString path; if (proc.waitForFinished(3000)) { QString output = QString::fromUtf8(proc.readAllStandardOutput()); if (!output.isEmpty()) { @@ -1225,7 +1228,7 @@ PerforcePlugin::~PerforcePlugin() } if (!m_editorFactories.empty()) { - foreach(Core::IEditorFactory* pf, m_editorFactories) + foreach (Core::IEditorFactory *pf, m_editorFactories) removeObject(pf); qDeleteAll(m_editorFactories); m_editorFactories.clear(); @@ -1285,5 +1288,17 @@ QString PerforcePlugin::fileNameFromPerforceName(const QString& perforceName, return rc; } +Core::ICore *PerforcePlugin::coreInstance() +{ + QTC_ASSERT(m_coreInstance, return 0); + return m_coreInstance; +} + +PerforcePlugin *PerforcePlugin::perforcePluginInstance() +{ + QTC_ASSERT(m_perforcePluginInstance, return 0); + return m_perforcePluginInstance; +} + Q_EXPORT_PLUGIN(PerforcePlugin) diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h index 7a4e2307779..11301853b9d 100644 --- a/src/plugins/perforce/perforceplugin.h +++ b/src/plugins/perforce/perforceplugin.h @@ -100,7 +100,7 @@ public: ~PerforcePlugin(); QStringList basicP4Args() const; - inline SettingsPage *settingsPage() const { return m_settingsPage; } + SettingsPage *settingsPage() const { return m_settingsPage; } bool initialize(const QStringList &arguments, QString *error_message); void extensionsInitialized(); @@ -117,8 +117,8 @@ public: Core::IEditor *openPerforceSubmitEditor(const QString &fileName, const QStringList &depotFileNames); - static Core::ICore *coreInstance() {Q_ASSERT(m_coreInstance); return m_coreInstance;} - static PerforcePlugin *perforcePluginInstance() {Q_ASSERT(m_perforcePluginInstance); return m_perforcePluginInstance;} + static Core::ICore *coreInstance(); + static PerforcePlugin *perforcePluginInstance(); PerforceSettings settings() const; void setSettings(const PerforceSettings &s); diff --git a/src/plugins/perforce/perforcesubmiteditor.cpp b/src/plugins/perforce/perforcesubmiteditor.cpp index 4dc41e7fa5e..035ffe24621 100644 --- a/src/plugins/perforce/perforcesubmiteditor.cpp +++ b/src/plugins/perforce/perforcesubmiteditor.cpp @@ -36,6 +36,8 @@ #include "perforceplugin.h" #include "perforceconstants.h" +#include + #include namespace Perforce { @@ -153,7 +155,7 @@ void PerforceSubmitEditor::updateFields() lines.removeLast(); // that is the empty line at the end const QRegExp leadingTabPattern = QRegExp(QLatin1String("^\\t")); - Q_ASSERT(leadingTabPattern.isValid()); + QTC_ASSERT(leadingTabPattern.isValid(), /**/); lines.replaceInStrings(leadingTabPattern, QString()); widget->setDescriptionText(lines.join(newLine)); diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index 06b40135c12..965a8b4c0c4 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -112,7 +112,7 @@ bool AbstractProcessStep::init(const QString &name) void AbstractProcessStep::run(QFutureInterface & fi) { m_futureInterface = &fi; - if(!m_enabled) { + if (!m_enabled) { fi.reportResult(true); return; } @@ -136,7 +136,7 @@ void AbstractProcessStep::run(QFutureInterface & fi) Qt::DirectConnection); m_process->start(m_command, m_arguments); - if(!m_process->waitForStarted()) { + if (!m_process->waitForStarted()) { processStartupFailed(); delete m_process; m_process = 0; @@ -188,8 +188,7 @@ void AbstractProcessStep::processStartupFailed() void AbstractProcessStep::processReadyReadStdOutput() { m_process->setReadChannel(QProcess::StandardOutput); - while(m_process->canReadLine()) - { + while (m_process->canReadLine()) { QString line = QString::fromLocal8Bit(m_process->readLine()).trimmed(); stdOut(line); } @@ -203,8 +202,7 @@ void AbstractProcessStep::stdOut(const QString &line) void AbstractProcessStep::processReadyReadStdError() { m_process->setReadChannel(QProcess::StandardError); - while (m_process->canReadLine()) - { + while (m_process->canReadLine()) { QString line = QString::fromLocal8Bit(m_process->readLine()).trimmed(); stdError(line); } @@ -217,7 +215,7 @@ void AbstractProcessStep::stdError(const QString &line) void AbstractProcessStep::checkForCancel() { - if(m_futureInterface->isCanceled() && m_timer->isActive()) { + if (m_futureInterface->isCanceled() && m_timer->isActive()) { m_timer->stop(); m_process->terminate(); m_process->waitForFinished(5000); @@ -228,13 +226,12 @@ void AbstractProcessStep::checkForCancel() void AbstractProcessStep::slotProcessFinished(int, QProcess::ExitStatus) { QString line = QString::fromLocal8Bit(m_process->readAllStandardError()).trimmed(); - if (!line.isEmpty()) { + if (!line.isEmpty()) stdOut(line); - } line = QString::fromLocal8Bit(m_process->readAllStandardOutput()).trimmed(); - if (!line.isEmpty()) { + if (!line.isEmpty()) stdError(line); - } + m_eventLoop->exit(0); } diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp index be7d9d96ee4..a7832ca6796 100644 --- a/src/plugins/projectexplorer/allprojectsfind.cpp +++ b/src/plugins/projectexplorer/allprojectsfind.cpp @@ -32,10 +32,13 @@ ***************************************************************************/ #include "allprojectsfind.h" -#include "projectexplorer.h" -#include "project.h" -#include +#include "project.h" +#include "projectexplorer.h" + +#include + +#include #include #include @@ -71,9 +74,7 @@ QKeySequence AllProjectsFind::defaultShortcut() const QStringList AllProjectsFind::files() { - Q_ASSERT(m_plugin->session()); - if (!m_plugin->session()) - return QStringList(); + QTC_ASSERT(m_plugin->session(), return QStringList()); QList filterRegs; QStringList nameFilters = fileNameFilters(); foreach (const QString &filter, nameFilters) { diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.cpp b/src/plugins/projectexplorer/applicationrunconfiguration.cpp index 30b9a7f7caa..88bbd641164 100644 --- a/src/plugins/projectexplorer/applicationrunconfiguration.cpp +++ b/src/plugins/projectexplorer/applicationrunconfiguration.cpp @@ -36,6 +36,7 @@ #include "environment.h" #include +#include #include #include @@ -94,8 +95,8 @@ QString ApplicationRunConfigurationRunner::displayName() const RunControl* ApplicationRunConfigurationRunner::run(QSharedPointer runConfiguration, const QString &mode) { QSharedPointer rc = qSharedPointerCast(runConfiguration); - Q_ASSERT(rc); - Q_ASSERT(mode == ProjectExplorer::Constants::RUNMODE); + QTC_ASSERT(rc, return 0); + QTC_ASSERT(mode == ProjectExplorer::Constants::RUNMODE, return 0); ApplicationRunControl *runControl = new ApplicationRunControl(rc); return runControl; @@ -112,10 +113,10 @@ QWidget *ApplicationRunConfigurationRunner::configurationWidget(QSharedPointer runConfiguration) : RunControl(runConfiguration), m_applicationLauncher() { - connect(&m_applicationLauncher, SIGNAL(applicationError(const QString &)), - this, SLOT(slotError(const QString &))); - connect(&m_applicationLauncher, SIGNAL(appendOutput(const QString &)), - this, SLOT(slotAddToOutputWindow(const QString &))); + connect(&m_applicationLauncher, SIGNAL(applicationError(QString)), + this, SLOT(slotError(QString))); + connect(&m_applicationLauncher, SIGNAL(appendOutput(QString)), + this, SLOT(slotAddToOutputWindow(QString))); connect(&m_applicationLauncher, SIGNAL(processExited(int)), this, SLOT(processExited(int))); connect(&m_applicationLauncher, SIGNAL(bringToForegroundRequested(qint64)), @@ -129,7 +130,7 @@ ApplicationRunControl::~ApplicationRunControl() void ApplicationRunControl::start() { QSharedPointer rc = qSharedPointerCast(runConfiguration()); - Q_ASSERT(rc); + QTC_ASSERT(rc, return); m_applicationLauncher.setEnvironment(rc->environment().toStringList()); m_applicationLauncher.setWorkingDirectory(rc->workingDirectory()); diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index c9090723a19..c960cb0e34c 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -42,9 +42,8 @@ BuildConfiguration::BuildConfiguration(const QString &name) } BuildConfiguration::BuildConfiguration(const QString &name, BuildConfiguration *source) - :m_values(source->m_values), m_name(name) + : m_values(source->m_values), m_name(name) { - } QString BuildConfiguration::name() const @@ -71,7 +70,7 @@ void BuildConfiguration::setDisplayName(const QString &name) QVariant BuildConfiguration::getValue(const QString & key) const { QHash::const_iterator it = m_values.find(key); - if(it != m_values.constEnd()) + if (it != m_values.constEnd()) return *it; else return QVariant(); @@ -86,7 +85,7 @@ void BuildConfiguration::setValuesFromMap(QMap map) { QMap::const_iterator it, end; end = map.constEnd(); - for(it = map.constBegin(); it != end; ++it) + for (it = map.constBegin(); it != end; ++it) setValue(it.key(), it.value()); } @@ -95,7 +94,7 @@ QMap BuildConfiguration::toMap() const QMap result; QHash::const_iterator it, end; end = m_values.constEnd(); - for(it = m_values.constBegin(); it != end; ++it) + for (it = m_values.constBegin(); it != end; ++it) result.insert(it.key(), it.value()); return result; } diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 98002f88270..c6f386fa413 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -32,16 +32,18 @@ ***************************************************************************/ #include "buildmanager.h" + +#include "buildprogress.h" #include "buildstep.h" #include "compileoutputwindow.h" -#include "taskwindow.h" -#include "projectexplorer.h" #include "projectexplorerconstants.h" -#include "buildprogress.h" +#include "projectexplorer.h" +#include "taskwindow.h" -#include #include #include +#include +#include #include #include @@ -300,7 +302,7 @@ void BuildManager::buildQueueAppend(BuildStep * bs, const QString &configuration void BuildManager::buildProjects(const QList &projects, const QList &configurations) { - Q_ASSERT(projects.count() == configurations.count()); + QTC_ASSERT(projects.count() == configurations.count(), /**/); QList::const_iterator cit = configurations.constBegin(); QList::const_iterator it, end; end = projects.constEnd(); @@ -316,7 +318,7 @@ void BuildManager::buildProjects(const QList &projects, const QList &projects, const QList &configurations) { - Q_ASSERT(projects.count() == configurations.count()); + QTC_ASSERT(projects.count() == configurations.count(), /**/); QList::const_iterator cit = configurations.constBegin(); QList::const_iterator it, end; end = projects.constEnd(); @@ -376,7 +378,7 @@ void BuildManager::decrementActiveBuildSteps(Project *pro) QHash::iterator it = m_activeBuildSteps.find(pro); QHash::iterator end = m_activeBuildSteps.end(); if (it == end) { - Q_ASSERT(false && "BuildManager m_activeBuildSteps says project is not building, but apparently a build step was still in the queue."); + QTC_ASSERT(false && "BuildManager m_activeBuildSteps says project is not building, but apparently a build step was still in the queue.", return); } else if (*it == 1) { --*it; emit buildStateChanged(pro); diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index a713fdc773e..2c1434534be 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -142,7 +142,7 @@ BuildSettingsWidget::BuildSettingsWidget(Project *project) void BuildSettingsWidget::buildConfigurationDisplayNameChanged(const QString &buildConfiguration) { QTreeWidgetItem *rootItem = m_ui.buildSettingsList->invisibleRootItem(); - for(int i = 0; i < rootItem->childCount(); ++i) { + for (int i = 0; i < rootItem->childCount(); ++i) { QTreeWidgetItem *child = rootItem->child(i); if (child->data(0, Qt::UserRole).toString() == buildConfiguration) { child->setText(0, m_project->displayNameFor(buildConfiguration)); @@ -334,7 +334,7 @@ void BuildSettingsWidget::createConfiguration() { bool ok; QString newBuildConfiguration = QInputDialog::getText(this, tr("New configuration"), tr("New Configuration Name:"), QLineEdit::Normal, QString(), &ok); - if(!ok || newBuildConfiguration.isEmpty()) + if (!ok || newBuildConfiguration.isEmpty()) return; QString newDisplayName = newBuildConfiguration; @@ -342,22 +342,20 @@ void BuildSettingsWidget::createConfiguration() const QStringList &buildConfigurations = m_project->buildConfigurations(); if (buildConfigurations.contains(newBuildConfiguration)) { int i = 2; - while(buildConfigurations.contains(newBuildConfiguration + QString::number(i))) { + while (buildConfigurations.contains(newBuildConfiguration + QString::number(i))) ++i; - } newBuildConfiguration += QString::number(i); } // Check that we don't have a configuration with the same displayName QStringList displayNames; - foreach(const QString &bc, buildConfigurations) + foreach (const QString &bc, buildConfigurations) displayNames << m_project->displayNameFor(bc); if (displayNames.contains(newDisplayName)) { int i = 2; - while(displayNames.contains(newDisplayName + QString::number(i))) { + while (displayNames.contains(newDisplayName + QString::number(i))) ++i; - } newDisplayName += QString::number(i); } @@ -407,11 +405,11 @@ void BuildSettingsWidget::setActiveConfiguration(const QString &configuration) void BuildSettingsWidget::cloneConfiguration(const QString &sourceConfiguration) { - if(sourceConfiguration.isEmpty()) + if (sourceConfiguration.isEmpty()) return; QString newBuildConfiguration = QInputDialog::getText(this, tr("Clone configuration"), tr("New Configuration Name:")); - if(newBuildConfiguration.isEmpty()) + if (newBuildConfiguration.isEmpty()) return; QString newDisplayName = newBuildConfiguration; @@ -419,22 +417,20 @@ void BuildSettingsWidget::cloneConfiguration(const QString &sourceConfiguration) const QStringList &buildConfigurations = m_project->buildConfigurations(); if (buildConfigurations.contains(newBuildConfiguration)) { int i = 2; - while(buildConfigurations.contains(newBuildConfiguration + QString::number(i))) { + while (buildConfigurations.contains(newBuildConfiguration + QString::number(i))) ++i; - } newBuildConfiguration += QString::number(i); } // Check that we don't have a configuration with the same displayName QStringList displayNames; - foreach(const QString &bc, buildConfigurations) + foreach (const QString &bc, buildConfigurations) displayNames << m_project->displayNameFor(bc); if (displayNames.contains(newDisplayName)) { int i = 2; - while(displayNames.contains(newDisplayName + QString::number(i))) { + while (displayNames.contains(newDisplayName + QString::number(i))) ++i; - } newDisplayName += QString::number(i); } diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index 474306dd57a..ef1dec4d2cb 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -34,6 +34,8 @@ #include "buildstep.h" #include "buildconfiguration.h" +#include + namespace ProjectExplorer { BuildStep::BuildStep(Project * pro) @@ -60,8 +62,8 @@ void BuildStep::addBuildConfiguration(const QString &name) void BuildStep::removeBuildConfiguration(const QString &name) { - for(int i = 0; i != m_buildConfigurations.size(); ++i) - if(m_buildConfigurations.at(i)->name() == name) { + for (int i = 0; i != m_buildConfigurations.size(); ++i) + if (m_buildConfigurations.at(i)->name() == name) { delete m_buildConfigurations.at(i); m_buildConfigurations.removeAt(i); break; @@ -70,15 +72,15 @@ void BuildStep::removeBuildConfiguration(const QString &name) void BuildStep::copyBuildConfiguration(const QString &source, const QString &dest) { - for(int i = 0; i != m_buildConfigurations.size(); ++i) - if(m_buildConfigurations.at(i)->name() == source) + for (int i = 0; i != m_buildConfigurations.size(); ++i) + if (m_buildConfigurations.at(i)->name() == source) m_buildConfigurations.push_back(new BuildConfiguration(dest, m_buildConfigurations.at(i))); } void BuildStep::setValue(const QString &buildConfiguration, const QString &name, const QVariant &value) { BuildConfiguration *bc = getBuildConfiguration(buildConfiguration); - Q_ASSERT(bc); + QTC_ASSERT(bc, return); bc->setValue(name, value); } diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 6578d76e351..a0e103ebca5 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -32,10 +32,12 @@ ***************************************************************************/ #include "buildstepspage.h" + #include "ui_buildstepspage.h" #include "project.h" #include +#include using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; @@ -119,17 +121,16 @@ void BuildStepsPage::init(const QString &buildConfiguration) /* switch from one tree item / build step to another */ void BuildStepsPage::updateBuildStepWidget(QTreeWidgetItem *newItem, QTreeWidgetItem *oldItem) { - if(oldItem == newItem) + if (oldItem == newItem) return; - Q_ASSERT(m_pro); + QTC_ASSERT(m_pro, return); - if(newItem) { + if (newItem) { int row = m_ui->buildSettingsList->indexOfTopLevelItem(newItem); m_ui->buildSettingsWidget->setCurrentIndex(row); BuildStepConfigWidget *widget = qobject_cast(m_ui->buildSettingsWidget->currentWidget()); - Q_ASSERT(widget); - if (widget) - widget->init(m_configuration); + QTC_ASSERT(widget, return); + widget->init(m_configuration); } updateBuildStepButtonsState(); } @@ -151,11 +152,11 @@ void BuildStepsPage::updateAddBuildStepMenu() QMenu *menu = m_ui->buildStepAddButton->menu(); m_addBuildStepHash.clear(); menu->clear(); - if(!map.isEmpty()) { + if (!map.isEmpty()) { QStringList names; QMap >::const_iterator it, end; end = map.constEnd(); - for(it = map.constBegin(); it != end; ++it) { + for (it = map.constBegin(); it != end; ++it) { QAction *action = menu->addAction(it.key()); connect(action, SIGNAL(triggered()), this, SLOT(addBuildStep())); @@ -167,7 +168,7 @@ void BuildStepsPage::updateAddBuildStepMenu() void BuildStepsPage::addBuildStep() { - if(QAction *action = qobject_cast(sender())) { + if (QAction *action = qobject_cast(sender())) { QPair pair = m_addBuildStepHash.value(action); BuildStep *newStep = pair.second->create(m_pro, pair.first); m_pro->insertBuildStep(0, newStep); @@ -182,7 +183,7 @@ void BuildStepsPage::addBuildStep() void BuildStepsPage::removeBuildStep() { int pos = m_ui->buildSettingsList->currentIndex().row(); - if(m_pro->buildSteps().at(pos)->immutable()) + if (m_pro->buildSteps().at(pos)->immutable()) return; bool blockSignals = m_ui->buildSettingsList->blockSignals(true); delete m_ui->buildSettingsList->invisibleRootItem()->takeChild(pos); @@ -190,7 +191,7 @@ void BuildStepsPage::removeBuildStep() QWidget *widget = m_ui->buildSettingsWidget->widget(pos); m_ui->buildSettingsWidget->removeWidget(widget); delete widget; - if(pos < m_ui->buildSettingsList->invisibleRootItem()->childCount()) + if (pos < m_ui->buildSettingsList->invisibleRootItem()->childCount()) m_ui->buildSettingsList->setCurrentItem(m_ui->buildSettingsList->invisibleRootItem()->child(pos)); else m_ui->buildSettingsList->setCurrentItem(m_ui->buildSettingsList->invisibleRootItem()->child(pos - 1)); @@ -201,11 +202,11 @@ void BuildStepsPage::removeBuildStep() void BuildStepsPage::upBuildStep() { int pos = m_ui->buildSettingsList->currentIndex().row(); - if(pos < 1) + if (pos < 1) return; - if(pos > m_ui->buildSettingsList->invisibleRootItem()->childCount()-1) + if (pos > m_ui->buildSettingsList->invisibleRootItem()->childCount()-1) return; - if(m_pro->buildSteps().at(pos)->immutable() && m_pro->buildSteps().at(pos-1)->immutable()) + if (m_pro->buildSteps().at(pos)->immutable() && m_pro->buildSteps().at(pos-1)->immutable()) return; bool blockSignals = m_ui->buildSettingsList->blockSignals(true); @@ -220,11 +221,11 @@ void BuildStepsPage::upBuildStep() void BuildStepsPage::downBuildStep() { int pos = m_ui->buildSettingsList->currentIndex().row() + 1; - if(pos < 1) + if (pos < 1) return; - if(pos > m_ui->buildSettingsList->invisibleRootItem()->childCount() - 1) + if (pos > m_ui->buildSettingsList->invisibleRootItem()->childCount() - 1) return; - if(m_pro->buildSteps().at(pos)->immutable() && m_pro->buildSteps().at(pos - 1)->immutable()) + if (m_pro->buildSteps().at(pos)->immutable() && m_pro->buildSteps().at(pos - 1)->immutable()) return; bool blockSignals = m_ui->buildSettingsList->blockSignals(true); @@ -238,7 +239,7 @@ void BuildStepsPage::downBuildStep() void BuildStepsPage::changeEvent(QEvent *e) { - switch(e->type()) { + switch (e->type()) { case QEvent::LanguageChange: m_ui->retranslateUi(this); break; diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index fb55df3e0fd..bcef3183b9c 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -32,10 +32,13 @@ ***************************************************************************/ #include "currentprojectfind.h" + #include "projectexplorer.h" #include "project.h" -#include +#include + +#include #include #include @@ -71,9 +74,7 @@ QKeySequence CurrentProjectFind::defaultShortcut() const QStringList CurrentProjectFind::files() { Project *project = m_plugin->currentProject(); - Q_ASSERT(project); - if (!project) - return QStringList(); + QTC_ASSERT(project, return QStringList()); QList filterRegs; QStringList nameFilters = fileNameFilters(); foreach (const QString &filter, nameFilters) { diff --git a/src/plugins/projectexplorer/environment.cpp b/src/plugins/projectexplorer/environment.cpp index a8470d3df5d..b428ed3a92d 100644 --- a/src/plugins/projectexplorer/environment.cpp +++ b/src/plugins/projectexplorer/environment.cpp @@ -45,7 +45,7 @@ QList EnvironmentItem::fromStringList(QStringList list) QList result; foreach (const QString &string, list) { int pos = string.indexOf(QLatin1Char('=')); - if(pos == -1) { + if (pos == -1) { EnvironmentItem item(string, ""); item.unset = true; result.append(item); @@ -61,7 +61,7 @@ QStringList EnvironmentItem::toStringList(QList list) { QStringList result; foreach (const EnvironmentItem &item, list) { - if(item.unset) + if (item.unset) result << QString(item.name); else result << QString(item.name + '=' + item.value); @@ -71,14 +71,13 @@ QStringList EnvironmentItem::toStringList(QList list) Environment::Environment() { - } Environment::Environment(QStringList env) { - foreach(QString s, env) { + foreach (const QString &s, env) { int i = s.indexOf("="); - if (i >=0 ) { + if (i >= 0) { #ifdef Q_OS_WIN m_values.insert(s.left(i).toUpper(), s.mid(i+1)); #else @@ -196,13 +195,13 @@ QString Environment::searchInPath(QString executable) executable.append(QLatin1String(".exe")); #endif const QChar slash = QLatin1Char('/'); - foreach(const QString &p, path()) { + foreach (const QString &p, path()) { // qDebug()<<"trying"<::const_iterator it = m_values.constFind(name); - if(it == m_values.constEnd()) + if (it == m_values.constEnd()) return constEnd(); else return it; @@ -263,24 +262,24 @@ void Environment::modify(const QList & list) { Environment resultEnvironment = *this; foreach (const EnvironmentItem &item, list) { - if(item.unset) { + if (item.unset) { resultEnvironment.unset(item.name); } else { // TODO use variable expansion QString value = item.value; - for(int i=0; i < value.size(); ++i) { - if(value.at(i) == QLatin1Char('$')) { - if((i + 1) < value.size()) { + for (int i=0; i < value.size(); ++i) { + if (value.at(i) == QLatin1Char('$')) { + if ((i + 1) < value.size()) { const QChar &c = value.at(i+1); int end = -1; if (c == '(') end = value.indexOf(')', i); - else if (c=='{') + else if (c == '{') end = value.indexOf('}', i); - if(end != -1) { + if (end != -1) { const QString &name = value.mid(i+2, end-i-2); Environment::const_iterator it = find(name); - if(it != constEnd()) + if (it != constEnd()) value.replace(i, end-i+1, it.value()); } } @@ -334,7 +333,7 @@ QStringList Environment::parseCombinedArgString(const QString &program) QString Environment::joinArgumentList(const QStringList &arguments) { QString result; - foreach(QString arg, arguments) { + foreach (QString arg, arguments) { if (!result.isEmpty()) result += QLatin1Char(' '); arg.replace(QLatin1String("\""), QLatin1String("\"\"\"")); diff --git a/src/plugins/projectexplorer/environmenteditmodel.cpp b/src/plugins/projectexplorer/environmenteditmodel.cpp index 2405d86998e..68bb6f5fdfb 100644 --- a/src/plugins/projectexplorer/environmenteditmodel.cpp +++ b/src/plugins/projectexplorer/environmenteditmodel.cpp @@ -38,11 +38,13 @@ using namespace ProjectExplorer; EnvironmentModel::EnvironmentModel() : m_mergedEnvironments(false) {} -EnvironmentModel::~EnvironmentModel() {} + +EnvironmentModel::~EnvironmentModel() +{} QString EnvironmentModel::indexToVariable(const QModelIndex &index) const { - if(m_mergedEnvironments) + if (m_mergedEnvironments) return m_resultEnvironment.key(m_resultEnvironment.constBegin() + index.row()); else return m_items.at(index.row()).name; @@ -53,7 +55,7 @@ void EnvironmentModel::updateResultEnvironment() m_resultEnvironment = m_baseEnvironment; m_resultEnvironment.modify(m_items); foreach (const EnvironmentItem &item, m_items) { - if(item.unset) { + if (item.unset) { m_resultEnvironment.set(item.name, ""); } } @@ -68,10 +70,10 @@ void EnvironmentModel::setBaseEnvironment(const ProjectExplorer::Environment &en void EnvironmentModel::setMergedEnvironments(bool b) { - if(m_mergedEnvironments == b) + if (m_mergedEnvironments == b) return; m_mergedEnvironments = b; - if(b) + if (b) updateResultEnvironment(); reset(); } @@ -96,48 +98,46 @@ int EnvironmentModel::columnCount(const QModelIndex &parent) const bool EnvironmentModel::changes(const QString &name) const { - foreach(const EnvironmentItem& item, m_items) { - if(item.name == name) { + foreach (const EnvironmentItem& item, m_items) + if (item.name == name) return true; - } - } return false; } QVariant EnvironmentModel::data(const QModelIndex &index, int role) const { - if((role == Qt::DisplayRole || role == Qt::EditRole) && index.isValid()) { - if((m_mergedEnvironments && index.row() >= m_resultEnvironment.size()) || + if ((role == Qt::DisplayRole || role == Qt::EditRole) && index.isValid()) { + if ((m_mergedEnvironments && index.row() >= m_resultEnvironment.size()) || (!m_mergedEnvironments && index.row() >= m_items.count())) { return QVariant(); } - if(index.column() == 0) { - if(m_mergedEnvironments) { + if (index.column() == 0) { + if (m_mergedEnvironments) { return m_resultEnvironment.key(m_resultEnvironment.constBegin() + index.row()); } else { return m_items.at(index.row()).name; } - } else if(index.column() == 1) { - if(m_mergedEnvironments) { - if(role == Qt::EditRole) { + } else if (index.column() == 1) { + if (m_mergedEnvironments) { + if (role == Qt::EditRole) { int pos = findInChanges(indexToVariable(index)); - if(pos != -1) + if (pos != -1) return m_items.at(pos).value; } return m_resultEnvironment.value(m_resultEnvironment.constBegin() + index.row()); } else { - if(m_items.at(index.row()).unset) + if (m_items.at(index.row()).unset) return ""; else return m_items.at(index.row()).value; } } } - if(role == Qt::FontRole) { - if(m_mergedEnvironments) { + if (role == Qt::FontRole) { + if (m_mergedEnvironments) { // check wheter this environment variable exists in m_items - if(changes(m_resultEnvironment.key(m_resultEnvironment.constBegin() + index.row()))) { + if (changes(m_resultEnvironment.key(m_resultEnvironment.constBegin() + index.row()))) { QFont f; f.setBold(true); return QVariant(f); @@ -157,7 +157,7 @@ Qt::ItemFlags EnvironmentModel::flags(const QModelIndex &index) const bool EnvironmentModel::hasChildren(const QModelIndex &index) const { - if(!index.isValid()) + if (!index.isValid()) return true; else return false; @@ -165,14 +165,14 @@ bool EnvironmentModel::hasChildren(const QModelIndex &index) const QVariant EnvironmentModel::headerData(int section, Qt::Orientation orientation, int role) const { - if(orientation == Qt::Vertical || role != Qt::DisplayRole) + if (orientation == Qt::Vertical || role != Qt::DisplayRole) return QVariant(); return section == 0 ? tr("Variable") : tr("Value"); } QModelIndex EnvironmentModel::index(int row, int column, const QModelIndex &parent) const { - if(!parent.isValid()) + if (!parent.isValid()) return createIndex(row, column, 0); return QModelIndex(); } @@ -188,16 +188,16 @@ QModelIndex EnvironmentModel::parent(const QModelIndex &index) const /// ***************** int EnvironmentModel::findInChanges(const QString &name) const { - for(int i=0; i name) + for (int i=0; i name) return i; return m_items.size(); } @@ -206,8 +206,8 @@ int EnvironmentModel::findInResult(const QString &name) const { Environment::const_iterator it; int i = 0; - for(it = m_resultEnvironment.constBegin(); it != m_resultEnvironment.constEnd(); ++it, ++i) - if(m_resultEnvironment.key(it) == name) + for (it = m_resultEnvironment.constBegin(); it != m_resultEnvironment.constEnd(); ++it, ++i) + if (m_resultEnvironment.key(it) == name) return i; return -1; } @@ -216,28 +216,28 @@ int EnvironmentModel::findInResultInsertPosition(const QString &name) const { Environment::const_iterator it; int i = 0; - for(it = m_resultEnvironment.constBegin(); it != m_resultEnvironment.constEnd(); ++it, ++i) - if(m_resultEnvironment.key(it) > name) + for (it = m_resultEnvironment.constBegin(); it != m_resultEnvironment.constEnd(); ++it, ++i) + if (m_resultEnvironment.key(it) > name) return i; return m_resultEnvironment.size(); } bool EnvironmentModel::setData(const QModelIndex &index, const QVariant &value, int role) { - if(role == Qt::EditRole && index.isValid()) { - if(index.column() == 0) { + if (role == Qt::EditRole && index.isValid()) { + if (index.column() == 0) { //fail if a variable with the same name already exists #ifdef Q_OS_WIN - if(findInChanges(value.toString().toUpper()) != -1) + if (findInChanges(value.toString().toUpper()) != -1) return false; #else - if(findInChanges(value.toString()) != -1) + if (findInChanges(value.toString()) != -1) return false; #endif EnvironmentItem old("", ""); - if(m_mergedEnvironments) { + if (m_mergedEnvironments) { int pos = findInChanges(indexToVariable(index)); - if(pos != -1) { + if (pos != -1) { old = m_items.at(pos); } else { old.name = m_resultEnvironment.key(m_resultEnvironment.constBegin() + index.row()); @@ -252,16 +252,16 @@ bool EnvironmentModel::setData(const QModelIndex &index, const QVariant &value, #else const QString &newName = value.toString(); #endif - if(changes(old.name)) + if (changes(old.name)) removeVariable(old.name); old.name = newName; addVariable(old); return true; - } else if(index.column() == 1) { - if(m_mergedEnvironments) { + } else if (index.column() == 1) { + if (m_mergedEnvironments) { const QString &name = indexToVariable(index); int pos = findInChanges(name); - if(pos != -1) { + if (pos != -1) { m_items[pos].value = value.toString(); m_items[pos].unset = false; updateResultEnvironment(); @@ -287,13 +287,13 @@ bool EnvironmentModel::setData(const QModelIndex &index, const QVariant &value, QModelIndex EnvironmentModel::addVariable() { const QString &name = ""; - if(m_mergedEnvironments) { + if (m_mergedEnvironments) { int i = findInResult(name); - if(i != -1) + if (i != -1) return index(i, 0, QModelIndex()); } else { int i = findInChanges(name); - if(i != -1) + if (i != -1) return index(i, 0, QModelIndex()); } // Don't exist, really add them @@ -302,10 +302,10 @@ QModelIndex EnvironmentModel::addVariable() QModelIndex EnvironmentModel::addVariable(const EnvironmentItem &item) { - if(m_mergedEnvironments) { + if (m_mergedEnvironments) { bool existsInBaseEnvironment = (m_baseEnvironment.find(item.name) != m_baseEnvironment.constEnd()); int rowInResult; - if(existsInBaseEnvironment) + if (existsInBaseEnvironment) rowInResult = findInResult(item.name); else rowInResult = findInResultInsertPosition(item.name); @@ -313,7 +313,7 @@ QModelIndex EnvironmentModel::addVariable(const EnvironmentItem &item) qDebug()<<"addVariable "<currentWidget()) + if (m_tabWidget->currentWidget()) m_tabWidget->currentWidget()->setFocus(); } @@ -199,7 +199,7 @@ void OutputPane::createNewOutputWindow(RunControl *rc) // First look if we can reuse a tab bool found = false; - for(int i=0; icount(); ++i) { + for (int i=0; icount(); ++i) { RunControl *old = runControlForTab(i); if (old->runConfiguration() == rc->runConfiguration() && !old->isRunning()) { // Reuse this tab diff --git a/src/plugins/projectexplorer/persistentsettings.cpp b/src/plugins/projectexplorer/persistentsettings.cpp index 38253f3ae0d..0939dc17850 100644 --- a/src/plugins/projectexplorer/persistentsettings.cpp +++ b/src/plugins/projectexplorer/persistentsettings.cpp @@ -152,7 +152,7 @@ void PersistentSettingsWriter::writeValue(QDomElement &ps, const QVariant &varia QDomElement values = ps.ownerDocument().createElement("valuelist"); values.setAttribute("type", QVariant::typeToName(QVariant::List)); QList varList = variant.toList(); - foreach(QVariant var, varList) { + foreach (QVariant var, varList) { writeValue(values, var); } ps.appendChild(values); diff --git a/src/plugins/projectexplorer/pluginfilefactory.cpp b/src/plugins/projectexplorer/pluginfilefactory.cpp index a3d712ff5ee..723d5dbaf51 100644 --- a/src/plugins/projectexplorer/pluginfilefactory.cpp +++ b/src/plugins/projectexplorer/pluginfilefactory.cpp @@ -90,7 +90,7 @@ QList ProjectFileFactory::createFactories(const Core::ICore const QString filterSeparator = QLatin1String(";;"); filterString->clear(); - foreach(IProjectManager *manager, projectManagers) { + foreach (IProjectManager *manager, projectManagers) { rc.push_back(new ProjectFileFactory(core, manager)); if (!filterString->isEmpty()) *filterString += filterSeparator; diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp index 4a24efa7069..f2e2a8ac543 100644 --- a/src/plugins/projectexplorer/processstep.cpp +++ b/src/plugins/projectexplorer/processstep.cpp @@ -54,7 +54,7 @@ bool ProcessStep::init(const QString &buildConfiguration) setEnvironment(buildConfiguration, project()->environment(buildConfiguration)); QVariant wd = value(buildConfiguration, "workingDirectory").toString(); QString workingDirectory; - if(!wd.isValid() || wd.toString().isEmpty()) + if (!wd.isValid() || wd.toString().isEmpty()) workingDirectory = "$BUILDDIR"; else workingDirectory = wd.toString(); @@ -161,7 +161,7 @@ QString ProcessStepConfigWidget::displayName() const void ProcessStepConfigWidget::workingDirBrowseButtonClicked() { QString workingDirectory = QFileDialog::getExistingDirectory(this, "Select the working directory", m_ui.workingDirectoryLineEdit->text()); - if(workingDirectory.isEmpty()) + if (workingDirectory.isEmpty()) return; m_ui.workingDirectoryLineEdit->setText(workingDirectory); workingDirectoryLineEditTextEdited(); @@ -170,7 +170,7 @@ void ProcessStepConfigWidget::workingDirBrowseButtonClicked() void ProcessStepConfigWidget::commandBrowseButtonClicked() { QString filename = QFileDialog::getOpenFileName(this, "Select the executable"); - if(filename.isEmpty()) + if (filename.isEmpty()) return; m_ui.commandLineEdit->setText(filename); commandLineEditTextEdited(); @@ -179,7 +179,7 @@ void ProcessStepConfigWidget::commandBrowseButtonClicked() void ProcessStepConfigWidget::init(const QString &buildConfiguration) { m_buildConfiguration = buildConfiguration; - if(buildConfiguration != QString::null) { + if (buildConfiguration != QString::null) { m_ui.commandLineEdit->setText(m_step->command(buildConfiguration)); QString workingDirectory = m_step->value(buildConfiguration, "workingDirectory").toString(); diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 8c74fe6e564..2aaed472dd4 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -40,9 +40,10 @@ #include #include +#include -#include #include +#include using namespace ProjectExplorer; using ExtensionSystem::PluginManager; @@ -57,11 +58,9 @@ void Project::insertBuildStep(int position, BuildStep *step) { m_buildSteps.insert(position, step); // check that the step has all the configurations - foreach(const QString & name, buildConfigurations()) - { + foreach (const QString &name, buildConfigurations()) if (!step->getBuildConfiguration(name)) step->addBuildConfiguration(name); - } } void Project::removeBuildStep(int position) @@ -80,11 +79,9 @@ void Project::insertCleanStep(int position, BuildStep *step) { m_cleanSteps.insert(position, step); // check that the step has all the configurations - foreach(const QString & name, buildConfigurations()) - { + foreach (const QString &name, buildConfigurations()) if (!step->getBuildConfiguration(name)) step->addBuildConfiguration(name); - } } void Project::removeCleanStep(int position) @@ -100,10 +97,10 @@ void Project::addBuildConfiguration(const QString &name) m_buildConfigurationValues.push_back(new BuildConfiguration(name)); - for (int i = 0; i!=m_buildSteps.size(); ++i) + for (int i = 0; i != m_buildSteps.size(); ++i) m_buildSteps.at(i)->addBuildConfiguration(name); - for (int i = 0; i!=m_cleanSteps.size(); ++i) + for (int i = 0; i != m_cleanSteps.size(); ++i) m_cleanSteps.at(i)->addBuildConfiguration(name); } @@ -113,15 +110,15 @@ void Project::removeBuildConfiguration(const QString &name) return; for (int i = 0; i != m_buildConfigurationValues.size(); ++i) - if(m_buildConfigurationValues.at(i)->name() == name) { + if (m_buildConfigurationValues.at(i)->name() == name) { delete m_buildConfigurationValues.at(i); m_buildConfigurationValues.removeAt(i); break; } - for (int i = 0; i!=m_buildSteps.size(); ++i) + for (int i = 0; i != m_buildSteps.size(); ++i) m_buildSteps.at(i)->removeBuildConfiguration(name); - for (int i = 0; i!=m_cleanSteps.size(); ++i) + for (int i = 0; i != m_cleanSteps.size(); ++i) m_cleanSteps.at(i)->removeBuildConfiguration(name); } @@ -132,22 +129,21 @@ void Project::copyBuildConfiguration(const QString &source, const QString &dest) return; for (int i = 0; i != m_buildConfigurationValues.size(); ++i) - if(m_buildConfigurationValues.at(i)->name() == source) + if (m_buildConfigurationValues.at(i)->name() == source) m_buildConfigurationValues.push_back(new BuildConfiguration(dest, m_buildConfigurationValues.at(i))); - for (int i = 0; i!= m_buildSteps.size(); ++i) + for (int i = 0; i != m_buildSteps.size(); ++i) m_buildSteps.at(i)->copyBuildConfiguration(source, dest); - for (int i = 0; i!= m_cleanSteps.size(); ++i) + for (int i = 0; i != m_cleanSteps.size(); ++i) m_cleanSteps.at(i)->copyBuildConfiguration(source, dest); } QStringList Project::buildConfigurations() const { QStringList result; - foreach (BuildConfiguration *bc, m_buildConfigurationValues) { + foreach (BuildConfiguration *bc, m_buildConfigurationValues) result << bc->name(); - } return result; } @@ -195,39 +191,36 @@ void Project::saveSettingsImpl(PersistentSettingsWriter &writer) writer.saveValue("project", m_values); //save buildsettings - foreach(const QString & buildConfigurationName, buildConfigurations()) { + foreach (const QString &buildConfigurationName, buildConfigurations()) { QMap temp = getBuildConfiguration(buildConfigurationName)->toMap(); writer.saveValue("buildConfiguration-" + buildConfigurationName, temp); } QStringList buildStepNames; - foreach(BuildStep * buildStep, buildSteps()) { + foreach (BuildStep *buildStep, buildSteps()) buildStepNames << buildStep->name(); - } writer.saveValue("buildsteps", buildStepNames); QStringList cleanStepNames; - foreach(BuildStep * cleanStep, cleanSteps()) { + foreach (BuildStep *cleanStep, cleanSteps()) cleanStepNames << cleanStep->name(); - } writer.saveValue("cleansteps", cleanStepNames); QStringList buildConfigurationNames = buildConfigurations(); writer.saveValue("buildconfigurations", buildConfigurationNames ); //save buildstep configuration int buildstepnr = 0; - foreach(BuildStep * buildStep, buildSteps()) - { + foreach (BuildStep *buildStep, buildSteps()) { QMap buildConfiguration = buildStep->valuesToMap(); writer.saveValue("buildstep" + QString().setNum(buildstepnr), buildConfiguration); ++buildstepnr; } // save each buildstep/buildConfiguration combination - foreach(const QString & buildConfigurationName, buildConfigurationNames) { + foreach (const QString &buildConfigurationName, buildConfigurationNames) { buildstepnr = 0; - foreach(BuildStep * buildStep, buildSteps()) { + foreach (BuildStep *buildStep, buildSteps()) { QMap temp = buildStep->valuesToMap(buildConfigurationName); writer.saveValue("buildconfiguration-" + buildConfigurationName + "-buildstep" + QString().setNum(buildstepnr), temp); @@ -237,17 +230,16 @@ void Project::saveSettingsImpl(PersistentSettingsWriter &writer) //save cleansteps buildconfiguration int cleanstepnr = 0; - foreach(BuildStep * cleanStep, cleanSteps()) - { + foreach (BuildStep *cleanStep, cleanSteps()) { QMap buildConfiguration = cleanStep->valuesToMap(); writer.saveValue("cleanstep" + QString().setNum(cleanstepnr), buildConfiguration); ++cleanstepnr; } // save each cleanstep/buildConfiguration combination - foreach(const QString & buildConfigurationName, buildConfigurationNames) { + foreach (const QString &buildConfigurationName, buildConfigurationNames) { cleanstepnr = 0; - foreach(BuildStep * cleanStep, cleanSteps()) { + foreach (BuildStep *cleanStep, cleanSteps()) { QMap temp = cleanStep->valuesToMap(buildConfigurationName); writer.saveValue("buildconfiguration-" + buildConfigurationName + "-cleanstep" + QString().setNum(cleanstepnr), temp); ++cleanstepnr; @@ -279,7 +271,7 @@ void Project::restoreSettingsImpl(PersistentSettingsReader &reader) //Build Settings const QStringList buildConfigurationNames = reader.restoreValue("buildconfigurations").toStringList(); - foreach(const QString & buildConfigurationName, buildConfigurationNames) { + foreach (const QString &buildConfigurationName, buildConfigurationNames) { addBuildConfiguration(buildConfigurationName); QMap temp = reader.restoreValue("buildConfiguration-" + buildConfigurationName).toMap(); @@ -287,16 +279,16 @@ void Project::restoreSettingsImpl(PersistentSettingsReader &reader) } QVariant buildStepsVariant = reader.restoreValue("buildsteps"); - if(buildStepsVariant.isValid()) { + if (buildStepsVariant.isValid()) { // restoring BuildSteps from settings int pos = 0; const QList buildStepFactories = ExtensionSystem::PluginManager::instance()->getObjects(); QStringList buildStepNames = buildStepsVariant.toStringList(); - foreach(const QString & buildStepName, buildStepNames) { - foreach(IBuildStepFactory * factory, buildStepFactories) { - if(factory->canCreate(buildStepName)) { - BuildStep * buildStep = factory->create(this, buildStepName); + foreach (const QString &buildStepName, buildStepNames) { + foreach (IBuildStepFactory *factory, buildStepFactories) { + if (factory->canCreate(buildStepName)) { + BuildStep *buildStep = factory->create(this, buildStepName); insertBuildStep(pos, buildStep); ++pos; break; @@ -307,10 +299,10 @@ void Project::restoreSettingsImpl(PersistentSettingsReader &reader) QStringList cleanStepNames = reader.restoreValue("cleansteps").toStringList(); // restoring BuildSteps from settings pos = 0; - foreach(const QString & cleanStepName, cleanStepNames) { - foreach(IBuildStepFactory * factory, buildStepFactories) { - if(factory->canCreate(cleanStepName)) { - BuildStep * cleanStep = factory->create(this, cleanStepName); + foreach (const QString &cleanStepName, cleanStepNames) { + foreach (IBuildStepFactory *factory, buildStepFactories) { + if (factory->canCreate(cleanStepName)) { + BuildStep *cleanStep = factory->create(this, cleanStepName); insertCleanStep(pos, cleanStep); ++pos; break; @@ -324,15 +316,15 @@ void Project::restoreSettingsImpl(PersistentSettingsReader &reader) // restore BuildSteps configuration int buildstepnr = 0; - foreach(BuildStep * buildStep, buildSteps()) { + foreach (BuildStep *buildStep, buildSteps()) { QMap buildConfiguration = reader.restoreValue("buildstep" + QString().setNum(buildstepnr)).toMap(); buildStep->setValuesFromMap(buildConfiguration); ++buildstepnr; } - foreach(const QString & buildConfigurationName, buildConfigurationNames) { + foreach (const QString &buildConfigurationName, buildConfigurationNames) { buildstepnr = 0; - foreach(BuildStep * buildStep, buildSteps()) { + foreach (BuildStep *buildStep, buildSteps()) { //get the buildconfiguration for this build step QMap buildConfiguration = reader.restoreValue("buildconfiguration-" + buildConfigurationName + "-buildstep" + QString().setNum(buildstepnr)).toMap(); @@ -343,16 +335,15 @@ void Project::restoreSettingsImpl(PersistentSettingsReader &reader) // restore CleanSteps configuration int cleanstepnr = 0; - foreach(BuildStep * cleanStep, cleanSteps()) - { + foreach (BuildStep *cleanStep, cleanSteps()) { QMap buildConfiguration = reader.restoreValue("cleanstep" + QString().setNum(cleanstepnr)).toMap(); cleanStep->setValuesFromMap(buildConfiguration); ++cleanstepnr; } - foreach(const QString & buildConfigurationName, buildConfigurationNames) { + foreach (const QString &buildConfigurationName, buildConfigurationNames) { cleanstepnr = 0; - foreach(BuildStep * cleanStep, cleanSteps()) { + foreach (BuildStep *cleanStep, cleanSteps()) { //get the buildconfiguration for this clean step QMap buildConfiguration = reader.restoreValue("buildconfiguration-" + buildConfigurationName + "-cleanstep" + QString().setNum(cleanstepnr)).toMap(); @@ -373,7 +364,7 @@ void Project::restoreSettingsImpl(PersistentSettingsReader &reader) if (!typeVariant.isValid()) break; const QString &type = typeVariant.toString(); - foreach (IRunConfigurationFactory * factory, factories) { + foreach (IRunConfigurationFactory *factory, factories) { if (factory->canCreate(type)) { QSharedPointer rc = factory->create(this, type); rc->restore(reader); @@ -403,7 +394,7 @@ QVariant Project::value(const QString &name) const { QMap::const_iterator it = m_values.find(name); - if(it != m_values.constEnd()) + if (it != m_values.constEnd()) return it.value(); else return QVariant(); @@ -420,7 +411,7 @@ BuildConfiguration * Project::getBuildConfiguration(const QString &name) const void Project::setValue(const QString &buildConfiguration, const QString &name, const QVariant &value) { BuildConfiguration *bc = getBuildConfiguration(buildConfiguration); - Q_ASSERT(bc); + QTC_ASSERT(bc, return); bc->setValue(name, value); } @@ -454,13 +445,13 @@ QList > Project::runConfigurations() const void Project::addRunConfiguration(QSharedPointer runConfiguration) { - Q_ASSERT(!m_runConfigurations.contains(runConfiguration)); + QTC_ASSERT(!m_runConfigurations.contains(runConfiguration), return); m_runConfigurations.push_back(runConfiguration); } void Project::removeRunConfiguration(QSharedPointer runConfiguration) { - Q_ASSERT(m_runConfigurations.contains(runConfiguration)); + QTC_ASSERT(m_runConfigurations.contains(runConfiguration), /**/); m_runConfigurations.removeOne(runConfiguration); if (m_activeRunConfiguration == runConfiguration) { if (m_runConfigurations.isEmpty()) @@ -479,7 +470,7 @@ void Project::setActiveRunConfiguration(QSharedPointer runConf { if (runConfiguration == m_activeRunConfiguration) return; - Q_ASSERT(m_runConfigurations.contains(runConfiguration) || runConfiguration == 0); + QTC_ASSERT(m_runConfigurations.contains(runConfiguration) || runConfiguration == 0, return); m_activeRunConfiguration = runConfiguration; emit activeRunConfigurationChanged(); } @@ -497,7 +488,7 @@ QString Project::displayNameFor(const QString &buildConfiguration) void Project::setDisplayNameFor(const QString &buildConfiguration, const QString &displayName) { QStringList displayNames; - foreach(const QString &bc, buildConfigurations()) { + foreach (const QString &bc, buildConfigurations()) { if (bc != buildConfiguration) displayNames << displayNameFor(bc); } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index f67984f0da8..f9149786bea 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -78,23 +78,24 @@ #include #include #include +#include #include +#include #include #include -#include -#include -#include -#include + #include #include -#include -#include #include -#include -#include +#include +#include #include #include +#include +#include +#include +#include Q_DECLARE_METATYPE(QSharedPointer); Q_DECLARE_METATYPE(Core::IEditorFactory *); @@ -734,7 +735,7 @@ void ProjectExplorerPlugin::clearSession() void ProjectExplorerPlugin::extensionsInitialized() { m_fileFactories = ProjectFileFactory::createFactories(m_core, &m_projectFilterString); - foreach(ProjectFileFactory *pf, m_fileFactories) { + foreach (ProjectFileFactory *pf, m_fileFactories) { m_profileMimeTypes += pf->mimeTypes(); addAutoReleasedObject(pf); } @@ -788,7 +789,7 @@ void ProjectExplorerPlugin::setStartupProject(Project *project) if (!project) project = m_currentProject; - Q_ASSERT(project); + QTC_ASSERT(project, return); m_session->setStartupProject(project); // NPE: Visually mark startup project updateActions(); @@ -1212,7 +1213,7 @@ QStringList ProjectExplorerPlugin::allFilesWithDependencies(Project *pro) qDebug() << "ProjectExplorerPlugin::allFilesWithDependencies(" << pro->file()->fileName() << ")"; QStringList filesToSave; - foreach(Project *p, m_session->projectOrder(pro)) { + foreach (Project *p, m_session->projectOrder(pro)) { FindAllFilesVisitor filesVisitor; p->rootProjectNode()->accept(&filesVisitor); filesToSave << filesVisitor.filePaths(); @@ -1537,7 +1538,7 @@ void ProjectExplorerPlugin::updateContextMenuActions() void ProjectExplorerPlugin::addNewFile() { - Q_ASSERT(m_currentNode && m_currentNode->nodeType() == ProjectNodeType); + QTC_ASSERT(m_currentNode && m_currentNode->nodeType() == ProjectNodeType, return); const QString location = QFileInfo(m_currentNode->path()).dir().absolutePath(); m_core->showNewItemDialog(tr("New File", "Title of dialog"), Core::BaseFileWizard::findWizardsOfKind(Core::IWizard::FileWizard) @@ -1547,7 +1548,7 @@ void ProjectExplorerPlugin::addNewFile() void ProjectExplorerPlugin::addExistingFiles() { - Q_ASSERT(m_currentNode && m_currentNode->nodeType() == ProjectNodeType); + QTC_ASSERT(m_currentNode && m_currentNode->nodeType() == ProjectNodeType, return); ProjectNode *projectNode = qobject_cast(m_currentNode); const QString dir = QFileInfo(m_currentNode->path()).dir().absolutePath(); QStringList fileNames = QFileDialog::getOpenFileNames(m_core->mainWindow(), tr("Add Existing Files"), dir); @@ -1599,14 +1600,14 @@ void ProjectExplorerPlugin::addExistingFiles() void ProjectExplorerPlugin::openFile() { - Q_ASSERT(m_currentNode); + QTC_ASSERT(m_currentNode, return); m_core->editorManager()->openEditor(m_currentNode->path()); m_core->editorManager()->ensureEditorManagerVisible(); } void ProjectExplorerPlugin::removeFile() { - Q_ASSERT(m_currentNode && m_currentNode->nodeType() == FileNodeType); + QTC_ASSERT(m_currentNode && m_currentNode->nodeType() == FileNodeType, return); FileNode *fileNode = qobject_cast(m_currentNode); const QString filePath = m_currentNode->path(); @@ -1618,7 +1619,7 @@ void ProjectExplorerPlugin::removeFile() // remove from project ProjectNode *projectNode = fileNode->projectNode(); - Q_ASSERT(projectNode); + QTC_ASSERT(projectNode, return); if (!projectNode->removeFiles(fileNode->fileType(), QStringList(filePath))) { QMessageBox::warning(m_core->mainWindow(), tr("Remove file failed"), @@ -1770,11 +1771,11 @@ void ProjectExplorerPlugin::populateOpenWithMenu() void ProjectExplorerPlugin::openWithMenuTriggered(QAction *action) { - Q_ASSERT(action != NULL); + QTC_ASSERT(action, return); Core::IEditorFactory * const editorFactory = qVariantValue(action->data()); - Q_ASSERT(m_core != NULL); - Q_ASSERT(m_core->editorManager() != NULL); - Q_ASSERT(editorFactory != NULL); + QTC_ASSERT(m_core, return); + QTC_ASSERT(m_core->editorManager(), return); + QTC_ASSERT(editorFactory, return); m_core->editorManager()->openEditor(currentNode()->path(), editorFactory->kind()); m_core->editorManager()->ensureEditorManagerVisible(); } @@ -1783,7 +1784,7 @@ void ProjectExplorerPlugin::updateSessionMenu() { m_sessionMenu->clear(); const QString &activeSession = m_session->activeSession(); - foreach(const QString &session, m_session->sessions()) { + foreach (const QString &session, m_session->sessions()) { QAction *act = m_sessionMenu->addAction(session, this, SLOT(setSession())); act->setCheckable(true); if (session == activeSession) diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 3e04069408c..e5a2e702650 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -31,19 +31,22 @@ ** ***************************************************************************/ -#include "project.h" #include "projectmodels.h" + +#include "project.h" #include "projectexplorerconstants.h" #include +#include + +#include +#include #include #include -#include #include #include -#include -#include +#include using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; @@ -173,7 +176,7 @@ QModelIndex DetailedModel::index(int row, int column, const QModelIndex &parent) result = createIndex(0, 0, m_rootNode); } else if (column == 0) { FolderNode *parentNode = qobject_cast(nodeForIndex(parent)); - Q_ASSERT(parentNode); + QTC_ASSERT(parentNode, return result); result = createIndex(row, 0, m_childNodes.value(parentNode).at(row)); } return result; @@ -186,7 +189,7 @@ QModelIndex DetailedModel::parent(const QModelIndex &index) const if (Node *node = nodeForIndex(index)) { if (FolderNode *parentFolderNode = node->parentFolderNode()) { if (FolderNode *grandParentFolderNode = parentFolderNode->parentFolderNode()) { - Q_ASSERT(m_childNodes.contains(grandParentFolderNode)); + QTC_ASSERT(m_childNodes.contains(grandParentFolderNode), return parentIndex); int row = m_childNodes.value(grandParentFolderNode).indexOf(parentFolderNode); parentIndex = createIndex(row, 0, parentFolderNode); } else { @@ -348,8 +351,8 @@ bool DetailedModel::canFetchMore(const QModelIndex & parent) const void DetailedModel::fetchMore(const QModelIndex & parent) { FolderNode *folderNode = qobject_cast(nodeForIndex(parent)); - Q_ASSERT(folderNode); - Q_ASSERT(!m_childNodes.contains(folderNode)); + QTC_ASSERT(folderNode, return); + QTC_ASSERT(!m_childNodes.contains(folderNode), return); m_childNodes.insert(folderNode, childNodeList(folderNode)); } @@ -365,7 +368,7 @@ void DetailedModel::foldersAboutToBeAdded(FolderNode *parentFolder, const QList &newFolders) { Q_UNUSED(newFolders); - Q_ASSERT(parentFolder); + QTC_ASSERT(parentFolder, return); if (m_childNodes.contains(parentFolder)) m_folderToAddTo = parentFolder; @@ -383,7 +386,7 @@ void DetailedModel::foldersAdded() void DetailedModel::foldersAboutToBeRemoved(FolderNode *parentFolder, const QList &staleFolders) { - Q_ASSERT(parentFolder); + QTC_ASSERT(parentFolder, return); if (m_childNodes.contains(parentFolder)) { QList newChildNodes = m_childNodes.value(parentFolder); @@ -413,7 +416,7 @@ void DetailedModel::filesAboutToBeAdded(FolderNode *parentFolder, const QList &newFiles) { Q_UNUSED(newFiles); - Q_ASSERT(parentFolder); + QTC_ASSERT(parentFolder, return); if (m_childNodes.contains(parentFolder)) m_folderToAddTo = parentFolder; @@ -431,7 +434,7 @@ void DetailedModel::filesAdded() void DetailedModel::filesAboutToBeRemoved(FolderNode *parentFolder, const QList &staleFiles) { - Q_ASSERT(parentFolder); + QTC_ASSERT(parentFolder, return); if (m_childNodes.contains(parentFolder)) { QList newChildNodes = m_childNodes.value(parentFolder); @@ -470,7 +473,7 @@ QModelIndex DetailedModel::indexForNode(const Node *node) // update internal cache if (canFetchMore(parentIndex)) fetchMore(parentIndex); - Q_ASSERT(m_childNodes.contains(parentFolder)); + QTC_ASSERT(m_childNodes.contains(parentFolder), return QModelIndex()); int row = m_childNodes.value(parentFolder).indexOf(const_cast(node)); if (row >= 0) @@ -503,7 +506,7 @@ void DetailedModel::addToChildNodes(FolderNode *parentFolder, QList newCh { QList childNodes = m_childNodes.value(parentFolder); QModelIndex parentIndex = indexForNode(parentFolder); - Q_ASSERT(parentIndex.isValid()); + QTC_ASSERT(parentIndex.isValid(), return); // position -> nodes, with positions in decreasing order QList > > insertions; @@ -547,14 +550,14 @@ void DetailedModel::addToChildNodes(FolderNode *parentFolder, QList newCh endInsertRows(); } - Q_ASSERT(childNodes == newChildNodes); + QTC_ASSERT(childNodes == newChildNodes, /**/); } void DetailedModel::removeFromChildNodes(FolderNode *parentFolder, QList newChildNodes) { QList childNodes = m_childNodes.value(parentFolder); QModelIndex parentIndex = indexForNode(parentFolder); - Q_ASSERT(parentIndex.isValid()); + QTC_ASSERT(parentIndex.isValid(), return); // position -> nodes, with positions in decreasing order QList > > deletions; @@ -597,7 +600,7 @@ void DetailedModel::removeFromChildNodes(FolderNode *parentFolder, QList endRemoveRows(); } - Q_ASSERT(childNodes == newChildNodes); + QTC_ASSERT(childNodes == newChildNodes, /**/); } QList DetailedModel::recursiveSubFolders(FolderNode *parentFolder) @@ -660,7 +663,7 @@ QModelIndex FlatModel::index(int row, int column, const QModelIndex &parent) con result = createIndex(0, 0, m_rootNode); } else if (parent.isValid() && column == 0) { FolderNode *parentNode = qobject_cast(nodeForIndex(parent)); - Q_ASSERT(parentNode); + QTC_ASSERT(parentNode, return QModelIndex()); QHash >::const_iterator it = m_childNodes.constFind(parentNode); if (it == m_childNodes.constEnd()) { fetchMore(parentNode); @@ -687,9 +690,9 @@ QModelIndex FlatModel::parent(const QModelIndex &idx) const fetchMore(grandParentNode); it = m_childNodes.constFind(grandParentNode); } - Q_ASSERT(it != m_childNodes.constEnd()); + QTC_ASSERT(it != m_childNodes.constEnd(), return QModelIndex()); const int row = it.value().indexOf(parentNode); - Q_ASSERT(row >= 0); + QTC_ASSERT(row >= 0, return QModelIndex()); parentIndex = createIndex(row, 0, parentNode); } else { // top level node, parent is session @@ -847,8 +850,8 @@ QList FlatModel::childNodes(FolderNode *parentNode, const QSet &bl void FlatModel::fetchMore(FolderNode *folderNode) const { - Q_ASSERT(folderNode); - Q_ASSERT(!m_childNodes.contains(folderNode)); + QTC_ASSERT(folderNode, return); + QTC_ASSERT(!m_childNodes.contains(folderNode), return); QList nodeList = childNodes(folderNode); m_childNodes.insert(folderNode, nodeList); @@ -857,7 +860,7 @@ void FlatModel::fetchMore(FolderNode *folderNode) const void FlatModel::fetchMore(const QModelIndex &parent) { FolderNode *folderNode = qobject_cast(nodeForIndex(parent)); - Q_ASSERT(folderNode); + QTC_ASSERT(folderNode, return); fetchMore(folderNode); } @@ -988,10 +991,9 @@ void FlatModel::added(FolderNode* parentNode, const QList &newNodeList) return; } - while(true) - { + while (true) { // Skip all that are the same - while(*oldIter == *newIter) { + while (*oldIter == *newIter) { ++oldIter; ++newIter; if (oldIter == oldNodeList.constEnd()) { @@ -1002,7 +1004,7 @@ void FlatModel::added(FolderNode* parentNode, const QList &newNodeList) int count = newIter - startOfBlock; if (count > 0) { beginInsertRows(parentIndex, pos, pos+count-1); - while(startOfBlock != newIter) { + while (startOfBlock != newIter) { oldNodeList.insert(pos, *startOfBlock); ++pos; ++startOfBlock; @@ -1015,7 +1017,7 @@ void FlatModel::added(FolderNode* parentNode, const QList &newNodeList) } QList::const_iterator startOfBlock = newIter; - while(*oldIter != *newIter) + while (*oldIter != *newIter) ++newIter; // startOfBlock is the first that was diffrent // newIter points to the new position of oldIter @@ -1024,7 +1026,7 @@ void FlatModel::added(FolderNode* parentNode, const QList &newNodeList) int pos = oldIter - oldNodeList.constBegin(); int count = newIter - startOfBlock; beginInsertRows(parentIndex, pos, pos + count - 1); - while(startOfBlock != newIter) { + while (startOfBlock != newIter) { oldNodeList.insert(pos, *startOfBlock); ++pos; ++startOfBlock; @@ -1059,10 +1061,9 @@ void FlatModel::removed(FolderNode* parentNode, const QList &newNodeList) return; } - while(true) - { + while (true) { // Skip all that are the same - while(*oldIter == *newIter) { + while (*oldIter == *newIter) { ++oldIter; ++newIter; if (newIter == newNodeList.constEnd()) { @@ -1073,7 +1074,7 @@ void FlatModel::removed(FolderNode* parentNode, const QList &newNodeList) int count = oldIter - startOfBlock; if (count > 0) { beginRemoveRows(parentIndex, pos, pos+count-1); - while(startOfBlock != oldIter) { + while (startOfBlock != oldIter) { ++startOfBlock; oldNodeList.removeAt(pos); } @@ -1086,7 +1087,7 @@ void FlatModel::removed(FolderNode* parentNode, const QList &newNodeList) } QList::const_iterator startOfBlock = oldIter; - while(*oldIter != *newIter) + while (*oldIter != *newIter) ++oldIter; // startOfBlock is the first that was diffrent // oldIter points to the new position of newIter @@ -1095,7 +1096,7 @@ void FlatModel::removed(FolderNode* parentNode, const QList &newNodeList) int pos = startOfBlock - oldNodeList.constBegin(); int count = oldIter - startOfBlock; beginRemoveRows(parentIndex, pos, pos + count - 1); - while(startOfBlock != oldIter) { + while (startOfBlock != oldIter) { ++startOfBlock; oldNodeList.removeAt(pos); } @@ -1125,7 +1126,7 @@ void FlatModel::foldersAdded() void FlatModel::foldersAboutToBeRemoved(FolderNode *parentFolder, const QList &staleFolders) { QSet blackList; - foreach(FolderNode * node, staleFolders) + foreach (FolderNode *node, staleFolders) blackList.insert(node); FolderNode *folderNode = visibleFolderNode(parentFolder); @@ -1137,7 +1138,7 @@ void FlatModel::foldersAboutToBeRemoved(FolderNode *parentFolder, const QList list) { - foreach(FolderNode * fn, list) { + foreach (FolderNode *fn, list) { removeFromCache(fn->subFolderNodes()); m_childNodes.remove(fn); } @@ -1170,7 +1171,7 @@ void FlatModel::filesAboutToBeRemoved(FolderNode *folder, const QList FolderNode *folderNode = visibleFolderNode(folder); QSet blackList; - foreach(Node* node, staleFiles) + foreach(Node *node, staleFiles) blackList.insert(node); // Now get the new List for that folder diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index bf6174a4a36..7c85aae6ae3 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -31,11 +31,13 @@ ** ***************************************************************************/ -#include "nodesvisitor.h" #include "projectnodes.h" + +#include "nodesvisitor.h" #include "projectexplorerconstants.h" #include +#include #include #include @@ -312,8 +314,8 @@ void ProjectNode::addProjectNodes(const QList &subProjects) emit watcher->foldersAboutToBeAdded(this, folderNodes); foreach (ProjectNode *project, subProjects) { - Q_ASSERT_X(!project->parentFolderNode(), "addProjectNodes", - "Project node has already a parent"); + QTC_ASSERT(!project->parentFolderNode(), + qDebug("Project node has already a parent")); project->setParentFolderNode(this); foreach (NodesWatcher *watcher, m_watchers) project->registerWatcher(watcher); @@ -351,13 +353,13 @@ void ProjectNode::removeProjectNodes(const QList &subProjects) for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { while ((*projectIter)->path() != (*toRemoveIter)->path()) { ++projectIter; - Q_ASSERT_X(projectIter != m_subProjectNodes.end(), "removeProjectNodes", - "Project to remove is not part of specified folder!"); + QTC_ASSERT(projectIter != m_subProjectNodes.end(), + qDebug("Project to remove is not part of specified folder!")); } while ((*folderIter)->path() != (*toRemoveIter)->path()) { ++folderIter; - Q_ASSERT_X(folderIter != m_subFolderNodes.end(), "removeProjectNodes", - "Project to remove is not part of specified folder!"); + QTC_ASSERT(folderIter != m_subFolderNodes.end(), + qDebug("Project to remove is not part of specified folder!")); } delete *projectIter; projectIter = m_subProjectNodes.erase(projectIter); @@ -374,7 +376,7 @@ void ProjectNode::removeProjectNodes(const QList &subProjects) */ void ProjectNode::addFolderNodes(const QList &subFolders, FolderNode *parentFolder) { - Q_ASSERT(parentFolder); + QTC_ASSERT(parentFolder, return); if (!subFolders.isEmpty()) { const bool emitSignals = (parentFolder->projectNode() == this); @@ -384,15 +386,15 @@ void ProjectNode::addFolderNodes(const QList &subFolders, FolderNod watcher->foldersAboutToBeAdded(parentFolder, subFolders); foreach (FolderNode *folder, subFolders) { - Q_ASSERT_X(!folder->parentFolderNode(), "addFolderNodes", - "Project node has already a parent folder"); + QTC_ASSERT(!folder->parentFolderNode(), + qDebug("Project node has already a parent folder")); folder->setParentFolderNode(parentFolder); folder->setProjectNode(this); parentFolder->m_subFolderNodes.append(folder); // project nodes have to be added via addProjectNodes - Q_ASSERT_X(folder->nodeType() != ProjectNodeType, "addFolderNodes", - "project nodes have to be added via addProjectNodes"); + QTC_ASSERT(folder->nodeType() != ProjectNodeType, + qDebug("project nodes have to be added via addProjectNodes")); } qSort(parentFolder->m_subFolderNodes.begin(), parentFolder->m_subFolderNodes.end(), sortNodesByPath); @@ -410,7 +412,7 @@ void ProjectNode::addFolderNodes(const QList &subFolders, FolderNod void ProjectNode::removeFolderNodes(const QList &subFolders, FolderNode *parentFolder) { - Q_ASSERT(parentFolder); + QTC_ASSERT(parentFolder, return); if (!subFolders.isEmpty()) { const bool emitSignals = (parentFolder->projectNode() == this); @@ -425,12 +427,12 @@ void ProjectNode::removeFolderNodes(const QList &subFolders, QList::const_iterator toRemoveIter = toRemove.constBegin(); QList::iterator folderIter = parentFolder->m_subFolderNodes.begin(); for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { - Q_ASSERT_X(((*toRemoveIter)->nodeType() != ProjectNodeType), "removeFolderNodes", - "project nodes have to be removed via removeProjectNodes"); + QTC_ASSERT((*toRemoveIter)->nodeType() != ProjectNodeType, + qDebug("project nodes have to be removed via removeProjectNodes")); while ((*folderIter)->path() != (*toRemoveIter)->path()) { ++folderIter; - Q_ASSERT_X(folderIter != parentFolder->m_subFolderNodes.end(), "removeFileNodes", - "Folder to remove is not part of specified folder!"); + QTC_ASSERT(folderIter != parentFolder->m_subFolderNodes.end(), + qDebug("Folder to remove is not part of specified folder!")); } delete *folderIter; folderIter = parentFolder->m_subFolderNodes.erase(folderIter); @@ -448,7 +450,7 @@ void ProjectNode::removeFolderNodes(const QList &subFolders, */ void ProjectNode::addFileNodes(const QList &files, FolderNode *folder) { - Q_ASSERT(folder); + QTC_ASSERT(folder, return); if (!files.isEmpty()) { const bool emitSignals = (folder->projectNode() == this); @@ -458,8 +460,8 @@ void ProjectNode::addFileNodes(const QList &files, FolderNode *folder emit watcher->filesAboutToBeAdded(folder, files); foreach (FileNode *file, files) { - Q_ASSERT_X(!file->parentFolderNode(), "addFileNodes", - "File node has already a parent folder"); + QTC_ASSERT(!file->parentFolderNode(), + qDebug("File node has already a parent folder")); file->setParentFolderNode(folder); file->setProjectNode(this); @@ -480,7 +482,7 @@ void ProjectNode::addFileNodes(const QList &files, FolderNode *folder */ void ProjectNode::removeFileNodes(const QList &files, FolderNode *folder) { - Q_ASSERT(folder); + QTC_ASSERT(folder, return); if (!files.isEmpty()) { const bool emitSignals = (folder->projectNode() == this); @@ -497,8 +499,8 @@ void ProjectNode::removeFileNodes(const QList &files, FolderNode *fol for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { while ((*filesIter)->path() != (*toRemoveIter)->path()) { ++filesIter; - Q_ASSERT_X(filesIter != folder->m_fileNodes.end(), "removeFileNodes", - "File to remove is not part of specified folder!"); + QTC_ASSERT(filesIter != folder->m_fileNodes.end(), + qDebug("File to remove is not part of specified folder!")); } delete *filesIter; filesIter = folder->m_fileNodes.erase(filesIter); @@ -589,8 +591,8 @@ void SessionNode::addProjectNodes(const QList &projectNodes) emit watcher->foldersAboutToBeAdded(this, folderNodes); foreach (ProjectNode *project, projectNodes) { - Q_ASSERT_X(!project->parentFolderNode(), "addProjectNodes", - "Project node has already a parent folder"); + QTC_ASSERT(!project->parentFolderNode(), + qDebug("Project node has already a parent folder")); project->setParentFolderNode(this); foreach (NodesWatcher *watcher, m_watchers) project->registerWatcher(watcher); @@ -619,13 +621,13 @@ void SessionNode::removeProjectNodes(const QList &projectNodes) for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { while ((*projectIter)->path() != (*toRemoveIter)->path()) { ++projectIter; - Q_ASSERT_X(projectIter != m_projectNodes.end(), "removeProjectNodes", - "Project to remove is not part of specified folder!"); + QTC_ASSERT(projectIter != m_projectNodes.end(), + qDebug("Project to remove is not part of specified folder!")); } while ((*folderIter)->path() != (*toRemoveIter)->path()) { ++folderIter; - Q_ASSERT_X(folderIter != m_subFolderNodes.end(), "removeProjectNodes", - "Project to remove is not part of specified folder!"); + QTC_ASSERT(folderIter != m_subFolderNodes.end(), + qDebug("Project to remove is not part of specified folder!")); } projectIter = m_projectNodes.erase(projectIter); folderIter = m_subFolderNodes.erase(folderIter); diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index 50882e67d9e..6285bb81dee 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -32,18 +32,21 @@ ***************************************************************************/ #include "projecttreewidget.h" + #include "projectexplorer.h" #include "projectexplorerconstants.h" #include "projectmodels.h" #include #include +#include + +#include #include #include #include #include -#include using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; @@ -208,7 +211,7 @@ void ProjectTreeWidget::setCurrentItem(Node *node, Project *project) void ProjectTreeWidget::handleCurrentItemChange(const QModelIndex ¤t) { Node *node = m_model->nodeForIndex(current); - Q_ASSERT(node); + QTC_ASSERT(node, return); bool autoSync = autoSynchronization(); setAutoSynchronization(false); diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 38aa7f958a1..c725c915c9e 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -230,13 +230,11 @@ void ProjectWindow::updateTreeWidget() Project *ProjectWindow::findProject(const QString &path) const { QList projects = m_session->projects(); - foreach(Project* project, projects) { - if (project->file()->fileName() == path) { + foreach (Project* project, projects) + if (project->file()->fileName() == path) return project; - } - } return 0; - } +} void ProjectWindow::handleCurrentItemChanged(QTreeWidgetItem *current) @@ -244,7 +242,6 @@ void ProjectWindow::handleCurrentItemChanged(QTreeWidgetItem *current) if (current) { QString path = current->text(2); if (Project *project = findProject(path)) { - m_projectExplorer->setCurrentFile(project, path); showProperties(project, QModelIndex()); return; diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp index 8912fbb9e94..f7022158bc8 100644 --- a/src/plugins/projectexplorer/projectwizardpage.cpp +++ b/src/plugins/projectexplorer/projectwizardpage.cpp @@ -99,7 +99,7 @@ void ProjectWizardPage::setAddToVersionControlEnabled(bool b) void ProjectWizardPage::changeEvent(QEvent *e) { - switch(e->type()) { + switch (e->type()) { case QEvent::LanguageChange: m_ui->retranslateUi(this); break; @@ -115,7 +115,8 @@ void ProjectWizardPage::setVCSDisplay(const QString &vcsName) void ProjectWizardPage::setFilesDisplay(const QStringList &files) { - QString fileMessage; { + QString fileMessage; + { QTextStream str(&fileMessage); str << "Files to be added:
";
         const QStringList::const_iterator cend = files.constEnd();
diff --git a/src/plugins/projectexplorer/removefiledialog.cpp b/src/plugins/projectexplorer/removefiledialog.cpp
index 3d8f11345a2..32f573b5f62 100644
--- a/src/plugins/projectexplorer/removefiledialog.cpp
+++ b/src/plugins/projectexplorer/removefiledialog.cpp
@@ -59,7 +59,7 @@ bool RemoveFileDialog::isDeleteFileChecked() const
 
 void RemoveFileDialog::changeEvent(QEvent *e)
 {
-    switch(e->type()) {
+    switch (e->type()) {
     case QEvent::LanguageChange:
         m_ui->retranslateUi(this);
         break;
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index 8d2e7b45d6a..def848765d0 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -80,6 +80,7 @@ public:
     void setName(const QString &name);
 
     // Returns the widget used to configure this run configuration. Ownership is transferred to the caller
+    // rename to createConfigurationWidget
     virtual QWidget *configurationWidget() = 0;
 
     virtual void save(PersistentSettingsWriter &writer) const;
@@ -112,7 +113,6 @@ public:
     // used to translate the types to names to display to the user
     virtual QString nameForType(const QString &type) const = 0;
     virtual QSharedPointer create(Project *project, const QString &type) = 0;
-    
 };
 
 class PROJECTEXPLORER_EXPORT IRunConfigurationRunner : public QObject
diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
index abbfd8c1d15..ce26ce4da92 100644
--- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
@@ -37,19 +37,22 @@
 #include "ui_runsettingspropertiespage.h"
 
 #include 
+#include 
 
-#include 
+#include 
 #include 
 
 namespace ProjectExplorer {
 namespace Internal {
+
 struct FactoryAndType
 {
     ProjectExplorer::IRunConfigurationFactory *factory;
     QString type;
 };
-} // namespace
-} // namespace
+
+} // namespace Internal
+} // namespace ProjectExplorer
 
 Q_DECLARE_METATYPE(ProjectExplorer::Internal::FactoryAndType);
 
@@ -170,9 +173,9 @@ void RunConfigurationsModel::setRunConfigurations(const QListsetupUi(this);
@@ -214,8 +217,9 @@ RunSettingsWidget::~RunSettingsWidget()
 void RunSettingsWidget::aboutToShowAddMenu()
 {
     m_addMenu->clear();
-    QList factories = ExtensionSystem::PluginManager::instance()->getObjects();
-    foreach (IRunConfigurationFactory * factory, factories) {
+    QList factories =
+        ExtensionSystem::PluginManager::instance()->getObjects();
+    foreach (IRunConfigurationFactory *factory, factories) {
         QStringList types = factory->canCreate(m_project);
         foreach (const QString &type, types) {
             QAction *action = m_addMenu->addAction(factory->nameForType(type));;
@@ -243,16 +247,14 @@ void RunSettingsWidget::addRunConfiguration()
     m_project->addRunConfiguration(newRC);
     m_project->setActiveRunConfiguration(newRC);
     initRunConfigurationComboBox();
-    connect(newRC.data(), SIGNAL(nameChanged()),
-            this, SLOT(nameChanged()));
+    connect(newRC.data(), SIGNAL(nameChanged()), this, SLOT(nameChanged()));
 }
 
 void RunSettingsWidget::removeRunConfiguration()
 {
     int index = m_ui->runConfigurationCombo->currentIndex();
     QSharedPointer rc = m_project->runConfigurations().at(index);
-    disconnect(rc.data(), SIGNAL(nameChanged()),
-               this, SLOT(nameChanged()));
+    disconnect(rc.data(), SIGNAL(nameChanged()), this, SLOT(nameChanged()));
     m_project->removeRunConfiguration(rc);
     initRunConfigurationComboBox();
 }
@@ -272,9 +274,9 @@ void RunSettingsWidget::initRunConfigurationComboBox()
 
 void RunSettingsWidget::activateRunConfiguration(int index)
 {
-    Q_ASSERT(m_project);
+    QTC_ASSERT(m_project, return);
     const QList > runConfigurations = m_project->runConfigurations();
-    Q_ASSERT(index < runConfigurations.size());
+    QTC_ASSERT(index < runConfigurations.size(), return);
     QSharedPointer selectedRunConfiguration = runConfigurations.at(index);
 
     // Change the active run configuration of the project
diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp
index 71057473046..a9bded02c61 100644
--- a/src/plugins/projectexplorer/session.cpp
+++ b/src/plugins/projectexplorer/session.cpp
@@ -47,17 +47,20 @@
 #include 
 #include 
 #include 
-#include 
 
 #include 
 
-#include 
+#include 
+#include 
+
 #include 
+#include 
 #include 
-#include 
 #include 
-#include 
+#include 
+
 #include 
+#include 
 
 namespace {
     bool debug = false;
@@ -138,21 +141,17 @@ QString SessionFile::mimeType() const
 
 bool SessionFile::load(const QString &fileName)
 {
-    Q_ASSERT(!fileName.isEmpty());
+    QTC_ASSERT(!fileName.isEmpty(), return false);
 
     if (debug)
         qDebug() << "SessionFile::load " << fileName;
 
-
-
     m_fileName = fileName;
 
     // NPE: Load the session in the background?
     // NPE: Let FileManager monitor filename
     QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
 
-
-
     PersistentSettingsReader reader;
     if (!reader.load(m_fileName)) {
         qWarning() << "SessionManager::load failed!" << fileName;
@@ -161,8 +160,8 @@ bool SessionFile::load(const QString &fileName)
     }
 
     m_core->progressManager()->addTask(future.future(), tr("Session"),
-                                       QLatin1String("ProjectExplorer.SessionFile.Load"),
-                                       Core::ProgressManagerInterface::CloseOnSuccess);
+       QLatin1String("ProjectExplorer.SessionFile.Load"),
+       Core::ProgressManagerInterface::CloseOnSuccess);
 
     const QStringList &keys = reader.restoreValue(QLatin1String("valueKeys")).toStringList();
     foreach (const QString &key, keys) {
@@ -184,7 +183,6 @@ bool SessionFile::load(const QString &fileName)
         }
     }
 
-
     int openEditorsCount = reader.restoreValue(QLatin1String("OpenEditors")).toInt();
 
     future.setProgressRange(0, fileList.count() + openEditorsCount + 2);
@@ -248,7 +246,7 @@ bool SessionFile::save(const QString &fileName)
     if (!fileName.isEmpty())
         m_fileName = fileName;
 
-    Q_ASSERT(!m_fileName.isEmpty());
+    QTC_ASSERT(!m_fileName.isEmpty(), return false);
 
     if (debug)
         qDebug() << "SessionFile - saving " << m_fileName;
@@ -387,10 +385,10 @@ SessionManager::SessionManager(Core::ICore *core, QObject *parent)
         dir.mkpath(configDir + "/qtcreator");
 
         // Move sessions to that directory
-        foreach(const QString &session, sessions()) {
+        foreach (const QString &session, sessions()) {
             QFile file(configDir + "/" + session + ".qws");
             if (file.exists())
-                if(file.copy(configDir + "/qtcreator/" + session + ".qws"))
+                if (file.copy(configDir + "/qtcreator/" + session + ".qws"))
                     file.remove();
         }
     }
@@ -413,15 +411,15 @@ SessionManager::~SessionManager()
 
 bool SessionManager::isDefaultVirgin() const
 {
-    return (isDefaultSession(m_sessionName)
+    return isDefaultSession(m_sessionName)
             && projects().isEmpty()
-            && m_core->editorManager()->openedEditors().isEmpty());
+            && m_core->editorManager()->openedEditors().isEmpty();
 }
 
 
 bool SessionManager::isDefaultSession(const QString &session) const
 {
-    return (session == QLatin1String("default"));
+    return session == QLatin1String("default");
 }
 
 
@@ -495,7 +493,7 @@ void SessionManager::setStartupProject(Project *startupProject)
         qDebug() << Q_FUNC_INFO << (startupProject ? startupProject->name() : "0");
 
     if (startupProject) {
-        Q_ASSERT(m_file->m_projects.contains(startupProject));
+        QTC_ASSERT(m_file->m_projects.contains(startupProject), return);
     }
 
     m_file->m_startupProject = startupProject;
@@ -568,7 +566,7 @@ void SessionManager::removeProject(Project *project)
 
 bool SessionManager::createImpl(const QString &fileName)
 {
-    Q_ASSERT(!fileName.isEmpty());
+    QTC_ASSERT(!fileName.isEmpty(), return false);
 
     if (debug)
         qDebug() << "SessionManager - creating new session " << fileName << " ...";
@@ -576,9 +574,8 @@ bool SessionManager::createImpl(const QString &fileName)
     bool success = true;
 
     if (!m_file->fileName().isEmpty()) {
-        if (!save() || !clear()) {
+        if (!save() || !clear())
             success = false;
-        }
     }
 
     if (success) {
@@ -600,7 +597,7 @@ bool SessionManager::createImpl(const QString &fileName)
 
 bool SessionManager::loadImpl(const QString &fileName)
 {
-    Q_ASSERT(!fileName.isEmpty());
+    QTC_ASSERT(!fileName.isEmpty(), return false);
 
     if (debug)
         qDebug() << "SessionManager - loading session " << fileName << " ...";
@@ -804,7 +801,7 @@ Project *SessionManager::projectForNode(Node *node) const
     while (rootProjectNode && rootProjectNode->parentFolderNode() != m_sessionNode)
         rootProjectNode = rootProjectNode->parentFolderNode();
 
-    Q_ASSERT(rootProjectNode);
+    QTC_ASSERT(rootProjectNode, return 0);
 
     QList projectList = projects();
     foreach (Project *p, projectList) {
@@ -1082,7 +1079,7 @@ bool SessionManager::loadSession(const QString &session)
         }
     } else {
         // Create a new session with that name
-        if(!createImpl(sessionNameToFileName(session)))
+        if (!createImpl(sessionNameToFileName(session)))
             return false;
         updateName(session);
         return true;
diff --git a/src/plugins/projectexplorer/sessiondialog.cpp b/src/plugins/projectexplorer/sessiondialog.cpp
index f00697597ed..b264ac11a9a 100644
--- a/src/plugins/projectexplorer/sessiondialog.cpp
+++ b/src/plugins/projectexplorer/sessiondialog.cpp
@@ -128,7 +128,7 @@ SessionDialog::SessionDialog(SessionManager *sessionManager, const QString &last
             this, SLOT(updateActions()));
 
     QStringList sessions = sessionManager->sessions();
-    foreach(const QString &session, sessions) {
+    foreach (const QString &session, sessions) {
         m_ui.sessionList->addItem(session);
         if (session == lastSession)
             m_ui.sessionList->setCurrentRow(m_ui.sessionList->count() - 1);
diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp
index 309e8ab9836..2e3131e36fc 100644
--- a/src/plugins/projectexplorer/taskwindow.cpp
+++ b/src/plugins/projectexplorer/taskwindow.cpp
@@ -257,7 +257,7 @@ TaskWindow::TaskWindow()
 
     m_listview->setModel(m_model);
     m_listview->setFrameStyle(QFrame::NoFrame);
-    m_listview->setWindowTitle(tr("Problems"));
+    m_listview->setWindowTitle(tr("Build Issues"));
     m_listview->setSelectionMode(QAbstractItemView::SingleSelection);
     TaskDelegate *tld = new TaskDelegate(this);
     m_listview->setItemDelegate(tld);
@@ -441,7 +441,7 @@ QSize TaskDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelInd
         int height = 0;
         QTextLayout tl(description);
         tl.beginLayout();
-        while(true) {
+        while (true) {
             QTextLine line = tl.createLine();
             if (!line.isValid())
                 break;
@@ -528,7 +528,7 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
         int height = 0;
         QTextLayout tl(description);
         tl.beginLayout();
-        while(true) {
+        while (true) {
             QTextLine line = tl.createLine();
             if (!line.isValid())
                 break;
diff --git a/src/plugins/projectexplorer/taskwindow.h b/src/plugins/projectexplorer/taskwindow.h
index 70253411530..a3bdf47621d 100644
--- a/src/plugins/projectexplorer/taskwindow.h
+++ b/src/plugins/projectexplorer/taskwindow.h
@@ -63,7 +63,7 @@ public:
     QWidget *outputWidget(QWidget *);
     QList toolBarWidgets(void) const;
 
-    QString name() const { return tr("Problems"); }
+    QString name() const { return tr("Build Issues"); }
     int priorityInStatusBar() const;
     void clearContents();
     void visibilityChanged(bool visible);
diff --git a/src/plugins/qt4projectmanager/cesdkhandler.cpp b/src/plugins/qt4projectmanager/cesdkhandler.cpp
index cb10cba5011..25200c3ab27 100644
--- a/src/plugins/qt4projectmanager/cesdkhandler.cpp
+++ b/src/plugins/qt4projectmanager/cesdkhandler.cpp
@@ -41,13 +41,13 @@ using namespace Qt4ProjectManager::Internal;
 using ProjectExplorer::Environment;
 
 CeSdkInfo::CeSdkInfo()
-    : m_major(0) , m_minor(0)
+    : m_major(0), m_minor(0)
 {
 }
 
 Environment CeSdkInfo::addToEnvironment(const Environment &env)
 {
-    qDebug()<<"adding "<= 0) {
+                if (index >= 0) {
                     CE_SDK = line.mid(index + 1).trimmed();
                 }
-            } else if(line.startsWith("CE_ARCH")) {
+            } else if (line.startsWith("CE_ARCH")) {
                 int index = line.indexOf('=');
-                if(index >= 0) {
+                if (index >= 0) {
                     CE_ARCH = line.mid(index + 1).trimmed();
                 }
             }
-            if(!CE_SDK.isEmpty() && !CE_ARCH.isEmpty()) {
+            if (!CE_SDK.isEmpty() && !CE_ARCH.isEmpty()) {
                 platformName = CE_SDK + " (" + CE_ARCH + ")";
                 break;
             }
@@ -146,9 +146,9 @@ bool CeSdkHandler::parse(const QString &vsdir)
 
 CeSdkInfo CeSdkHandler::find(const QString &name)
 {
-    qDebug()<<"looking for platform "<::iterator it = m_list.begin(); it != m_list.end(); ++it) {
-        qDebug()<<"...."<name();
+        qDebug() << "...." << it->name();
         if (it->name() == name)
             return *it;
     }
diff --git a/src/plugins/qt4projectmanager/deployhelper.cpp b/src/plugins/qt4projectmanager/deployhelper.cpp
index 57386afd2ef..cf48604ad20 100644
--- a/src/plugins/qt4projectmanager/deployhelper.cpp
+++ b/src/plugins/qt4projectmanager/deployhelper.cpp
@@ -60,9 +60,9 @@ bool DeployHelperRunStep::init(const QString &configuration)
     //find target
     m_exec = "";
     QStringList targets = QStringList(); //TODO fix m_pro->qmakeTarget();
-    foreach(const QString& target, targets) {
+    foreach (const QString &target, targets) {
         QFileInfo fi(m_appdir + QLatin1Char('/') + target);
-        if(fi.exists())
+        if (fi.exists())
             m_exec = target;
         break;
     }
diff --git a/src/plugins/qt4projectmanager/directorywatcher.cpp b/src/plugins/qt4projectmanager/directorywatcher.cpp
index 689cd0dfd03..daf47834838 100644
--- a/src/plugins/qt4projectmanager/directorywatcher.cpp
+++ b/src/plugins/qt4projectmanager/directorywatcher.cpp
@@ -203,5 +203,59 @@ void DirectoryWatcher::updateFileList(const QString &dir)
     }
 }
 
+int FileWatcher::m_objectCount = 0;
+QHash FileWatcher::m_fileCount;
+QFileSystemWatcher *FileWatcher::m_watcher = 0;
+
+FileWatcher::FileWatcher(QObject *parent)
+{
+    if (!m_watcher)
+        m_watcher = new QFileSystemWatcher();
+    ++m_objectCount;
+    connect(m_watcher, SIGNAL(fileChanged(QString)),
+            this, SLOT(slotFileChanged(QString)));
+}
+
+FileWatcher::~FileWatcher()
+{
+    foreach (const QString &file, m_files)
+        removeFile(file);
+    if (--m_objectCount == 0) {
+        delete m_watcher;
+        m_watcher = 0;
+    }
+}
+
+void FileWatcher::slotFileChanged(const QString &file)
+{
+    if (m_files.contains(file))
+        emit fileChanged(file);
+}
+
+QStringList FileWatcher::files()
+{
+    return m_files;
+}
+
+void FileWatcher::addFile(const QString &file)
+{
+    if (m_files.contains(file))
+        return;
+    m_files += file;
+    if (m_fileCount[file] == 0)
+        m_watcher->addPath(file);
+    m_fileCount[file] += 1;
+}
+
+void FileWatcher::removeFile(const QString &file)
+{
+    m_files.removeOne(file);
+    m_fileCount[file] -= 1;
+    if (m_fileCount[file] == 0)
+      m_watcher->removePath(file);
+}
+
+
+
 } // namespace Internal
 } // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/directorywatcher.h b/src/plugins/qt4projectmanager/directorywatcher.h
index 3f5f5a846fa..b529ec07e78 100644
--- a/src/plugins/qt4projectmanager/directorywatcher.h
+++ b/src/plugins/qt4projectmanager/directorywatcher.h
@@ -87,6 +87,31 @@ private:
     FileModificationTimeMap m_files;
 };
 
+class FileWatcher : public QObject
+{
+    Q_DISABLE_COPY(FileWatcher)
+    Q_OBJECT
+public:
+    explicit FileWatcher(QObject *parent = 0);
+    virtual ~FileWatcher();
+
+    QStringList files();
+    void addFile(const QString &file);
+    void removeFile(const QString &file);
+signals:
+    void fileChanged(const QString &path);
+    void debugOutout(const QString &path);
+
+private slots:
+    void slotFileChanged(const QString&);
+
+private:
+    static int m_objectCount;
+    static QHash m_fileCount;
+    static QFileSystemWatcher *m_watcher;
+    QStringList m_files;
+};
+
 } // namespace Internal
 } // namespace Qt4ProjectManager
 
diff --git a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp
index 0046a9e4acf..d7f55ba7114 100644
--- a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp
+++ b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp
@@ -33,10 +33,12 @@
 
 #include "gdbmacrosbuildstep.h"
 
-#include "qt4projectmanagerconstants.h"
-#include "qt4project.h"
-#include "qmakestep.h"
 #include "makestep.h"
+#include "qmakestep.h"
+#include "qt4project.h"
+#include "qt4projectmanagerconstants.h"
+
+#include 
 
 using namespace Qt4ProjectManager;
 using namespace Qt4ProjectManager::Internal;
@@ -74,7 +76,7 @@ void GdbMacrosBuildStep::run(QFutureInterface & fi)
     QString destDir = m_buildDirectory + "/qtc-gdbmacros/";
     QDir dir;
     dir.mkpath(destDir);
-    foreach(const QString &file, files) {
+    foreach (const QString &file, files) {
         QFile destination(destDir + file);
         if (destination.exists())
             destination.remove();
@@ -116,7 +118,7 @@ void GdbMacrosBuildStep::run(QFutureInterface & fi)
         QStringList makeargs = ms->value(m_buildConfiguration, "makeargs").toStringList();
         if (makeargs.contains("debug")) {
             makeArguments <<  "debug";
-        } else if(makeargs.contains("release")) {
+        } else if (makeargs.contains("release")) {
             makeArguments << "release";
         }
     }
@@ -160,9 +162,9 @@ bool GdbMacrosBuildStepFactory::canCreate(const QString &name) const
 
 ProjectExplorer::BuildStep *GdbMacrosBuildStepFactory::create(ProjectExplorer::Project *pro, const QString &name) const
 {
-    Q_ASSERT(name == Constants::GDBMACROSBUILDSTEP);
+    QTC_ASSERT(name == Constants::GDBMACROSBUILDSTEP, return 0);
     Qt4Project *qt4project = qobject_cast(pro);
-    Q_ASSERT(qt4project);
+    QTC_ASSERT(qt4project, return 0);
     return new GdbMacrosBuildStep(qt4project);
 }
 
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index d88281ce596..55ef402fb97 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -37,9 +37,10 @@
 #include "qt4projectmanagerconstants.h"
 
 #include 
+#include 
 
-#include 
-#include 
+#include 
+#include 
 
 using ProjectExplorer::IBuildParserFactory;
 using ProjectExplorer::BuildParserInterface;
@@ -69,7 +70,7 @@ ProjectExplorer::BuildParserInterface *MakeStep::buildParser(const QtVersion * c
 {
     QString buildParser;
     QtVersion::ToolchainType type = version->toolchainType();
-    if( type == QtVersion::MSVC || type == QtVersion::WINCE)
+    if ( type == QtVersion::MSVC || type == QtVersion::WINCE)
         buildParser = Constants::BUILD_PARSER_MSVC;
     else
         buildParser = Constants::BUILD_PARSER_GCC;
@@ -92,18 +93,18 @@ bool MakeStep::init(const QString &name)
     QString workingDirectory;
     if (project()->value(name, "useShadowBuild").toBool())
         workingDirectory = project()->value(name, "buildDirectory").toString();
-    if(workingDirectory.isEmpty())
+    if (workingDirectory.isEmpty())
         workingDirectory = QFileInfo(project()->file()->fileName()).absolutePath();
     setWorkingDirectory(name, workingDirectory);
 
     //NBS only dependency on Qt4Project, we probably simply need a MakeProject from which Qt4Project derives
     QString makeCmd = qobject_cast(project())->qtVersion(name)->makeCommand();
-    if(!value(name, "makeCmd").toString().isEmpty())
+    if (!value(name, "makeCmd").toString().isEmpty())
         makeCmd = value(name, "makeCmd").toString();
     if (!QFileInfo(makeCmd).isAbsolute()) {
         // Try to detect command in environment
         QString tmp = environment.searchInPath(makeCmd);
-        if(tmp == QString::null) {
+        if (tmp == QString::null) {
             emit addToOutputWindow(tr("Could not find make command: %1 "\
                                       "in the build environment").arg(makeCmd));
             return false;
@@ -289,10 +290,11 @@ void MakeStepConfigWidget::init(const QString &buildConfiguration)
 {
     m_buildConfiguration = buildConfiguration;
     bool showPage0 = buildConfiguration.isNull();
-    m_ui.stackedWidget->setCurrentIndex(showPage0? 0 : 1);
+    m_ui.stackedWidget->setCurrentIndex(showPage0 ? 0 : 1);
 
-    if(!showPage0) {
+    if (!showPage0) {
         Qt4Project *pro = qobject_cast(m_makeStep->project());
+        QTC_ASSERT(pro, return);
         m_ui.makeLabel->setText(tr("Override %1:").arg(pro->qtVersion(buildConfiguration)->makeCommand()));
 
         const QString &makeCmd = m_makeStep->value(buildConfiguration, "makeCmd").toString();
@@ -307,12 +309,12 @@ void MakeStepConfigWidget::init(const QString &buildConfiguration)
 
 void MakeStepConfigWidget::makeLineEditTextEdited()
 {
-    Q_ASSERT(!m_buildConfiguration.isNull());
+    QTC_ASSERT(!m_buildConfiguration.isNull(), return);
     m_makeStep->setValue(m_buildConfiguration, "makeCmd", m_ui.makeLineEdit->text());
 }
 
 void MakeStepConfigWidget::makeArgumentsLineEditTextEdited()
 {
-    Q_ASSERT(!m_buildConfiguration.isNull());
+    QTC_ASSERT(!m_buildConfiguration.isNull(), return);
     m_makeStep->setValue(m_buildConfiguration, "makeargs", ProjectExplorer::Environment::parseCombinedArgString(m_ui.makeArgumentsLineEdit->text()));
 }
diff --git a/src/plugins/qt4projectmanager/msvcenvironment.cpp b/src/plugins/qt4projectmanager/msvcenvironment.cpp
index 1c3a158d72f..48d751f0f25 100644
--- a/src/plugins/qt4projectmanager/msvcenvironment.cpp
+++ b/src/plugins/qt4projectmanager/msvcenvironment.cpp
@@ -66,7 +66,7 @@ QList MSVCEnvironment::availableVersions()
     QSettings registry("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7", 
                        QSettings::NativeFormat);
     QStringList versions = registry.allKeys();
-    foreach(const QString &version, versions) {
+    foreach (const QString &version, versions) {
         QString dir = registry.value(version).toString();
         result << MSVCEnvironment(version, dir);
     }
@@ -92,7 +92,7 @@ Environment MSVCEnvironment::addToEnvironment(const Environment &env) const
         QString varsbat = m_path + "Common7\\Tools\\vsvars32.bat";
         if (QFileInfo(varsbat).exists()) {
             QTemporaryFile tf(QDir::tempPath() + "\\XXXXXX.bat");
-            if(!tf.open())
+            if (!tf.open())
                 return e;
             QString filename = tf.fileName();
             tf.write("call \"" + varsbat.toLocal8Bit()+"\"\r\n");
@@ -107,13 +107,13 @@ Environment MSVCEnvironment::addToEnvironment(const Environment &env) const
             tf.close();
 
             QFile vars(QDir::tempPath() + "\\qtcreator-msvc-environment.txt");
-            if(vars.exists() && vars.open(QIODevice::ReadOnly)) {
-                while(!vars.atEnd()) {
+            if (vars.exists() && vars.open(QIODevice::ReadOnly)) {
+                while (!vars.atEnd()) {
                     QByteArray line = vars.readLine();
                     QString line2 = QString::fromLocal8Bit(line);
                     line2 = line2.trimmed();
                     QRegExp regexp("(\\w*)=(.*)");
-                    if(regexp.exactMatch(line2)) {
+                    if (regexp.exactMatch(line2)) {
                         QString variable = regexp.cap(1);
                         QString value = regexp.cap(2);
                         value.replace('%' + variable + '%', e.value(variable));
@@ -137,13 +137,13 @@ Environment MSVCEnvironment::addToEnvironment(const Environment &env) const
 
 
 //    QFile varsbat(m_path + "Common7\\Tools\\vsvars32.bat");
-//    if(varsbat.exists() && varsbat.open(QIODevice::ReadOnly)) {
-//        while(!varsbat.atEnd()) {
+//    if (varsbat.exists() && varsbat.open(QIODevice::ReadOnly)) {
+//        while (!varsbat.atEnd()) {
 //            QByteArray line = varsbat.readLine();
 //            QString line2 = QString::fromLocal8Bit(line);
 //            line2 = line2.trimmed();
 //            QRegExp regexp("\\s*@?(S|s)(E|e)(T|t)\\s*(\\w*)=(.*)");
-//            if(regexp.exactMatch(line2)) {
+//            if (regexp.exactMatch(line2)) {
 //                QString variable = regexp.cap(4);
 //                QString value = regexp.cap(5);
 //                value.replace('%' + variable + '%', e.value(variable));
diff --git a/src/plugins/qt4projectmanager/profilereader.cpp b/src/plugins/qt4projectmanager/profilereader.cpp
index 9f65cc890d0..2b4c817928f 100644
--- a/src/plugins/qt4projectmanager/profilereader.cpp
+++ b/src/plugins/qt4projectmanager/profilereader.cpp
@@ -45,7 +45,7 @@ ProFileReader::ProFileReader()
 
 ProFileReader::~ProFileReader()
 {
-    foreach(ProFile *pf, m_proFiles)
+    foreach (ProFile *pf, m_proFiles)
         delete pf;
 }
 
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 44780a7dcc5..85852f01885 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -40,6 +40,7 @@
 #include "qtversionmanager.h"
 
 #include 
+#include 
 
 #include 
 #include 
@@ -65,7 +66,7 @@ QStringList QMakeStep::arguments(const QString &buildConfiguration)
     QStringList arguments;
     arguments << project()->file()->fileName();
     if (!additonalArguments.contains("-spec")) {
-        if(m_pro->value("useVBOX").toBool()) { //NBS TODO don't special case VBOX like this
+        if (m_pro->value("useVBOX").toBool()) { //NBS TODO don't special case VBOX like this
             arguments << "-spec" << "linux-i686fb-g++";
             arguments << "-unix";
         } else {
@@ -116,7 +117,7 @@ bool QMakeStep::init(const QString &name)
     QString workingDirectory = m_pro->buildDirectory(name);
 
     Environment environment = m_pro->environment(name);
-    if(!environment.value("QMAKESPEC").isEmpty() && environment.value("QMAKESPEC") != qtVersion->mkspec())
+    if (!environment.value("QMAKESPEC").isEmpty() && environment.value("QMAKESPEC") != qtVersion->mkspec())
         emit addToOutputWindow(tr("QMAKESPEC set to ") + environment.value("QMAKESPEC") +
                                tr(" overrides mkspec of selected qt ")+qtVersion->mkspec());
 
@@ -233,7 +234,7 @@ QMakeStepConfigWidget::QMakeStepConfigWidget(QMakeStep *step)
 
 void QMakeStepConfigWidget::qmakeArgumentsLineEditTextEdited()
 {
-    Q_ASSERT(!m_buildConfiguration.isNull());
+    QTC_ASSERT(!m_buildConfiguration.isNull(), return);
     m_step->setValue(m_buildConfiguration, "qmakeArgs", ProjectExplorer::Environment::parseCombinedArgString(m_ui.qmakeAdditonalArgumentsLineEdit->text()));
     m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(m_buildConfiguration)));
 }
diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp
index a9d7753cfbb..75ea55097c1 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp
@@ -118,31 +118,31 @@ void Qt4BuildConfigWidget::setupQtVersionsComboBox()
     if (m_buildConfiguration.isEmpty()) // not yet initialized
         return;
 
-    disconnect(m_ui->qtVersionComboBox, SIGNAL(currentIndexChanged(const QString &)),
-        this, SLOT(qtVersionComboBoxCurrentIndexChanged(const QString &)));
+    disconnect(m_ui->qtVersionComboBox, SIGNAL(currentIndexChanged(QString)),
+        this, SLOT(qtVersionComboBoxCurrentIndexChanged(QString)));
 
     m_ui->qtVersionComboBox->clear();
     m_ui->qtVersionComboBox->addItem(tr("Default Qt Version"), 0);
 
-    if(m_pro->qtVersionId(m_buildConfiguration) == 0) {
+    if (m_pro->qtVersionId(m_buildConfiguration) == 0) {
         m_ui->qtVersionComboBox->setCurrentIndex(0);
         m_ui->invalidQtWarningLabel->setVisible(false);
     }
     // Add Qt Versions to the combo box
     QtVersionManager *vm = m_pro->qt4ProjectManager()->versionManager();
     const QList &versions = vm->versions();
-    for(int i=0; iqtVersionComboBox->addItem(versions.at(i)->name(), versions.at(i)->uniqueId());
 
-        if(versions.at(i)->uniqueId() == m_pro->qtVersionId(m_buildConfiguration)) {
-            m_ui->qtVersionComboBox->setCurrentIndex(i+1);
+        if (versions.at(i)->uniqueId() == m_pro->qtVersionId(m_buildConfiguration)) {
+            m_ui->qtVersionComboBox->setCurrentIndex(i + 1);
             m_ui->invalidQtWarningLabel->setVisible(!versions.at(i)->isValid());
         }
     }
 
     // And connect again
-    connect(m_ui->qtVersionComboBox, SIGNAL(currentIndexChanged(const QString &)),
-        this, SLOT(qtVersionComboBoxCurrentIndexChanged(const QString &)));
+    connect(m_ui->qtVersionComboBox, SIGNAL(currentIndexChanged(QString)),
+        this, SLOT(qtVersionComboBoxCurrentIndexChanged(QString)));
 }
 
 void Qt4BuildConfigWidget::shadowBuildButtonClicked()
@@ -180,7 +180,7 @@ void Qt4BuildConfigWidget::shadowBuildLineEditTextChanged()
     m_ui->importLabel->setVisible(false);
     if (m_ui->shadowBuildCheckBox->isChecked()) {
         QString qtPath = m_pro->qt4ProjectManager()->versionManager()->findQtVersionFromMakefile(m_ui->shadowBuildLineEdit->text());
-        if(!qtPath.isEmpty()) {
+        if (!qtPath.isEmpty()) {
             m_ui->importLabel->setVisible(true);
         }
     }
@@ -252,7 +252,7 @@ void Qt4BuildConfigWidget::qtVersionComboBoxCurrentIndexChanged(const QString &)
     }
     bool isValid = m_pro->qt4ProjectManager()->versionManager()->version(newQtVersion)->isValid();
     m_ui->invalidQtWarningLabel->setVisible(!isValid);
-    if(newQtVersion != m_pro->qtVersionId(m_buildConfiguration)) {
+    if (newQtVersion != m_pro->qtVersionId(m_buildConfiguration)) {
         m_pro->setQtVersion(m_buildConfiguration, newQtVersion);
         m_pro->update();
     }
diff --git a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp
index 98dbd196a1d..84ae6744a45 100644
--- a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp
@@ -127,7 +127,7 @@ void Qt4BuildEnvironmentWidget::removeEnvironmentButtonClicked()
 void Qt4BuildEnvironmentWidget::unsetEnvironmentButtonClicked()
 {
     const QString &name = m_environmentModel->indexToVariable(m_ui->environmentTreeView->currentIndex());
-    if(!m_environmentModel->isInBaseEnvironment(name) && m_environmentModel->mergedEnvironments())
+    if (!m_environmentModel->isInBaseEnvironment(name) && m_environmentModel->mergedEnvironments())
         m_environmentModel->removeVariable(name);
     else
         m_environmentModel->unset(name);
@@ -138,7 +138,7 @@ void Qt4BuildEnvironmentWidget::switchEnvironmentTab(int newTab)
 {
     bool mergedEnvironments = (newTab == 0);
     m_environmentModel->setMergedEnvironments(mergedEnvironments);
-    if(mergedEnvironments) {
+    if (mergedEnvironments) {
         m_ui->removeButton->setText(tr("Reset"));
     } else {
         m_ui->removeButton->setText(tr("Remove"));
@@ -153,8 +153,8 @@ void Qt4BuildEnvironmentWidget::updateButtonsEnabled()
 void Qt4BuildEnvironmentWidget::environmentCurrentIndexChanged(const QModelIndex ¤t, const QModelIndex &previous)
 {
     Q_UNUSED(previous)
-    if(current.isValid()) {
-        if(m_environmentModel->mergedEnvironments()) {
+    if (current.isValid()) {
+        if (m_environmentModel->mergedEnvironments()) {
             const QString &name = m_environmentModel->indexToVariable(current);
             bool modified = m_environmentModel->isInBaseEnvironment(name) && m_environmentModel->changes(name);
             bool unset = m_environmentModel->isUnset(name);
diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index 73e3620f9bc..dc004580b2b 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -33,12 +33,12 @@
 
 #include "proeditormodel.h"
 
+#include "directorywatcher.h"
 #include "profilereader.h"
 #include "prowriter.h"
 #include "qt4nodes.h"
 #include "qt4project.h"
 #include "qt4projectmanager.h"
-#include "directorywatcher.h"
 
 #include 
 
@@ -50,11 +50,14 @@
 
 #include 
 
+#include 
+
 #include 
 #include 
 #include 
 #include 
 #include 
+
 #include 
 #include 
 #include 
@@ -84,17 +87,26 @@ Qt4PriFileNode::Qt4PriFileNode(Qt4Project *project, Qt4ProFileNode* qt4ProFileNo
           m_project(project),
           m_qt4ProFileNode(qt4ProFileNode),
           m_projectFilePath(QDir::fromNativeSeparators(filePath)),
-          m_projectDir(QFileInfo(filePath).absolutePath())
+          m_projectDir(QFileInfo(filePath).absolutePath()),
+          m_fileWatcher(new FileWatcher(this))
 {
-    Q_ASSERT(project);
+    QTC_ASSERT(project, return);
     setFolderName(QFileInfo(filePath).baseName());
     setIcon(QIcon(":/qt4projectmanager/images/qt_project.png"));
+    m_fileWatcher->addFile(filePath);
+    connect(m_fileWatcher, SIGNAL(fileChanged(QString)),
+            this, SLOT(scheduleUpdate()));
+}
+
+void Qt4PriFileNode::scheduleUpdate()
+{
+    m_qt4ProFileNode->scheduleUpdate();
 }
 
 void Qt4PriFileNode::update(ProFile *includeFile, ProFileReader *reader)
 {
-    Q_ASSERT(includeFile);
-    Q_ASSERT(reader);
+    QTC_ASSERT(includeFile, return);
+    QTC_ASSERT(reader, return);
 
     // add project file node
     if (m_fileNodes.isEmpty())
@@ -167,7 +179,7 @@ QList Qt4PriFileNode::supportedActions() const
     const Qt4ProFileNode *proFileNode;
     while (!(proFileNode = qobject_cast(folderNode)))
         folderNode = folderNode->parentFolderNode();
-    Q_ASSERT(proFileNode);
+    QTC_ASSERT(proFileNode, return actions);
 
     switch (proFileNode->projectType()) {
     case ApplicationTemplate:
@@ -321,7 +333,7 @@ void Qt4PriFileNode::changeFiles(const FileType fileType,
     }
 
     ProFile *includeFile = reader->proFileFor(m_projectFilePath);
-    if(!includeFile) {
+    if (!includeFile) {
         m_project->proFileParseError(tr("Error while changing pro file %1.").arg(m_projectFilePath));
     }
 
@@ -418,7 +430,7 @@ void Qt4PriFileNode::save(ProFile *includeFile)
     Core::FileManager *fileManager = core->fileManager();
     QList allFileHandles = fileManager->managedFiles(includeFile->fileName());
     Core::IFile *modifiedFileHandle = 0;
-    foreach(Core::IFile *file, allFileHandles)
+    foreach (Core::IFile *file, allFileHandles)
         if (file->fileName() == includeFile->fileName())
             modifiedFileHandle = file;
 
@@ -492,12 +504,17 @@ Qt4ProFileNode::Qt4ProFileNode(Qt4Project *project,
     if (parent)
         setParent(parent);
 
+    m_updateTimer.setInterval(100);
+    m_updateTimer.setSingleShot(true);
+
     connect(m_dirWatcher, SIGNAL(directoryChanged(const QString&)),
-            this, SLOT(update()));
+            this, SLOT(updateGeneratedFiles()));
     connect(m_dirWatcher, SIGNAL(fileChanged(const QString&)),
             this, SLOT(fileChanged(const QString&)));
     connect(m_project, SIGNAL(activeBuildConfigurationChanged()),
             this, SLOT(update()));
+    connect(&m_updateTimer, SIGNAL(timeout()),
+            this, SLOT(update()));
 }
 
 Qt4ProFileNode::~Qt4ProFileNode()
@@ -520,6 +537,11 @@ QStringList Qt4ProFileNode::variableValue(const Qt4Variable var) const
     return m_varValues.value(var);
 }
 
+void Qt4ProFileNode::scheduleUpdate()
+{
+    m_updateTimer.start();
+}
+
 void Qt4ProFileNode::update()
 {
     ProFileReader *reader = createProFileReader();
@@ -678,9 +700,11 @@ void Qt4ProFileNode::update()
 
 void Qt4ProFileNode::fileChanged(const QString &filePath)
 {
+    qDebug()<<"+++++"<getObject();
 
+    // TODO compress
     modelManager->updateSourceFiles(QStringList() << filePath);
 }
 
@@ -728,11 +752,16 @@ void Qt4ProFileNode::updateGeneratedFiles()
 
     // update generated files
 
+    // Already existing FileNodes
     QList existingFileNodes;
     foreach (FileNode *file, fileNodes()) {
         if (file->isGenerated())
             existingFileNodes << file;
     }
+
+
+    // Convert uiFile to uiHeaderFilePath, find all headers that correspond
+    // and try to find them in uicDirs
     QStringList newFilePaths;
     foreach (const QString &uicDir, m_varValues[UiDirVar]) {
         foreach (FileNode *uiFile, uiFiles) {
diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h
index 97bc06a08f4..6b858bc5259 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.h
+++ b/src/plugins/qt4projectmanager/qt4nodes.h
@@ -75,6 +75,7 @@ using ProjectExplorer::FileType;
 
 class ProFileReader;
 class DirectoryWatcher;
+class FileWatcher;
 
 //  Type of projects
 enum Qt4ProjectType {
@@ -142,6 +143,9 @@ protected:
     QString buildDir() const;
     ProFileReader *createProFileReader() const;
 
+private slots:
+    void scheduleUpdate();
+
 private:
     void save(ProFile *includeFile);
     bool priFileWritable(const QString &path);
@@ -151,7 +155,10 @@ private:
     Qt4ProFileNode *m_qt4ProFileNode;
     QString m_projectFilePath;
     QString m_projectDir;
-    QTimer *m_saveTimer;
+
+    // TODO we might be better off using an IFile* and the FileManager for
+    // watching changes to the .pro and .pri files on disk
+    FileWatcher *m_fileWatcher;
 
     // managed by Qt4ProFileNode
     friend class Qt4ProFileNode;
@@ -174,14 +181,13 @@ public:
     QStringList variableValue(const Qt4Variable var) const;
 
 public slots:
+    void scheduleUpdate();
     void update();
-
 private slots:
     void fileChanged(const QString &filePath);
-
-private:
     void updateGeneratedFiles();
 
+private:
     Qt4ProFileNode *createSubProFileNode(const QString &path);
 
     QStringList uiDirPaths(ProFileReader *reader) const;
@@ -197,9 +203,9 @@ private:
     Qt4ProjectType m_projectType;
     QHash m_varValues;
     bool m_isQBuildProject;
+    QTimer m_updateTimer;
 
     DirectoryWatcher *m_dirWatcher;
-
     friend class Qt4NodeHierarchy;
 };
 
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index b3950ab63b7..c9263201937 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -265,7 +265,7 @@ Qt4Project::~Qt4Project()
 void Qt4Project::defaultQtVersionChanged()
 {
     if (qtVersionId(activeBuildConfiguration()) == 0)
-        update();
+        m_rootProjectNode->update();
 }
 
 void Qt4Project::qtVersionsChanged()
@@ -273,8 +273,8 @@ void Qt4Project::qtVersionsChanged()
     foreach (QString bc, buildConfigurations()) {
         if (!qt4ProjectManager()->versionManager()->version(qtVersionId(bc))->isValid()) {
             setQtVersion(bc, 0);
-            if(bc == activeBuildConfiguration())
-                update();
+            if (bc == activeBuildConfiguration())
+                m_rootProjectNode->update();
         }
     }
 }
@@ -507,9 +507,9 @@ void Qt4Project::updateCodeModel()
 }
 
 
-/*!
-  Updates complete project
-  */
+///*!
+//  Updates complete project
+//  */
 void Qt4Project::update()
 {
     // TODO Maybe remove this method completely?
@@ -663,7 +663,7 @@ QString Qt4Project::buildDirectory(const QString &buildConfiguration) const
     QString workingDirectory;
     if (value(buildConfiguration, "useShadowBuild").toBool())
         workingDirectory = value(buildConfiguration, "buildDirectory").toString();
-    if(workingDirectory.isEmpty())
+    if (workingDirectory.isEmpty())
         workingDirectory = QFileInfo(file()->fileName()).absolutePath();
     return workingDirectory;
 }
@@ -698,7 +698,7 @@ int Qt4Project::qtVersionId(const QString &buildConfiguration) const
         qDebug()<<"Looking for qtVersion ID of "<versionManager()->version(id)->isValid()) {
             return id;
@@ -711,10 +711,10 @@ int Qt4Project::qtVersionId(const QString &buildConfiguration) const
         QString vname = value(buildConfiguration, "QtVersion").toString();
         if (debug)
             qDebug()<<"  Backward compatibility reading QtVersion"< &versions = m_manager->versionManager()->versions();
             foreach (const QtVersion * const version, versions) {
-                if(version->name() == vname) {
+                if (version->name() == vname) {
                     if (debug)
                         qDebug()<<"found name in versions";
                     const_cast(this)->setValue(buildConfiguration, "QtVersionId", version->uniqueId());
@@ -828,7 +828,7 @@ void Qt4Project::checkForDeletedApplicationProjects()
 
     bool resetActiveRunConfiguration = false;
     QSharedPointer rc(new ProjectExplorer::CustomExecutableRunConfiguration(this));
-    foreach(QSharedPointer qt4rc, removeList) {
+    foreach (QSharedPointer qt4rc, removeList) {
         removeRunConfiguration(qt4rc);
         if (activeRunConfiguration() == qt4rc)
             resetActiveRunConfiguration = true;
@@ -905,7 +905,7 @@ bool Qt4Project::hasSubNode(Qt4PriFileNode *root, const QString &path)
     foreach (FolderNode *fn, root->subFolderNodes()) {
         if (qobject_cast(fn)) {
             // we aren't interested in pro file nodes
-        } else if(Qt4PriFileNode *qt4prifilenode = qobject_cast(fn)) {
+        } else if (Qt4PriFileNode *qt4prifilenode = qobject_cast(fn)) {
             if (hasSubNode(qt4prifilenode, path))
                 return true;
         }
diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp
index 8ff73970d53..2e1281682ef 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp
@@ -102,9 +102,8 @@ void Qt4Manager::unregisterProject(Qt4Project *project)
 
 void Qt4Manager::notifyChanged(const QString &name)
 {
-    foreach(Qt4Project *pro, m_projects) {
+    foreach (Qt4Project *pro, m_projects)
         pro->notifyChanged(name);
-    }
 }
 
 void Qt4Manager::init()
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
index 28f7ca2a8c8..2c0b4f34697 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
@@ -33,15 +33,16 @@
 
 #include "qt4runconfiguration.h"
 
-#include "qt4project.h"
+#include "makestep.h"
 #include "profilereader.h"
 #include "qt4nodes.h"
-#include "makestep.h"
+#include "qt4project.h"
 
 #include 
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -148,7 +149,7 @@ QStringList Qt4RunConfiguration::commandLineArguments() const
 ProjectExplorer::Environment Qt4RunConfiguration::environment() const
 {
     Qt4Project *pro = qobject_cast(project());
-    Q_ASSERT(pro);
+    QTC_ASSERT(pro, return ProjectExplorer::Environment());
     return pro->environment(pro->activeBuildConfiguration());
 }
 
@@ -297,7 +298,7 @@ QString Qt4RunConfiguration::qmakeBuildConfigFromBuildConfiguration(const QStrin
     QStringList makeargs = ms->value(buildConfigurationName, "makeargs").toStringList();
     if (makeargs.contains("debug"))
         return "debug";
-    else if(makeargs.contains("release"))
+    else if (makeargs.contains("release"))
         return "release";
 
     // Oh we don't have an explicit make argument
@@ -369,11 +370,12 @@ bool Qt4RunConfigurationFactory::canCreate(const QString &type) const
     return type == "Qt4ProjectManager.Qt4RunConfiguration";
 }
 
-QSharedPointer Qt4RunConfigurationFactory::create(ProjectExplorer::Project *project, const QString &type)
+QSharedPointer Qt4RunConfigurationFactory::create
+    (ProjectExplorer::Project *project, const QString &type)
 {
     Qt4Project *p = qobject_cast(project);
-    Q_ASSERT(p);
-    Q_ASSERT(type == "Qt4ProjectManager.Qt4RunConfiguration");
+    QTC_ASSERT(p, /**/);
+    QTC_ASSERT(type == "Qt4ProjectManager.Qt4RunConfiguration", /**/);
     // The right path is set in restoreSettings
     QSharedPointer rc(new Qt4RunConfiguration(p, QString::null));
     return rc;
@@ -416,7 +418,7 @@ bool Qt4RunConfigurationFactoryUser::canCreate(const QString &type) const
 QSharedPointer Qt4RunConfigurationFactoryUser::create(ProjectExplorer::Project *project, const QString &type)
 {
     Qt4Project *p = qobject_cast(project);
-    Q_ASSERT(p);
+    QTC_ASSERT(p, /**/);
 
     QString fileName = type.mid(QString("Qt4RunConfiguration.").size());
     return QSharedPointer(new Qt4RunConfiguration(p, fileName));
@@ -428,7 +430,7 @@ QStringList Qt4RunConfigurationFactoryUser::canCreate(ProjectExplorer::Project *
     if (qt4project) {
         QStringList applicationProFiles;
         QList list = qt4project->applicationProFiles();
-        foreach(Qt4ProFileNode * node, list) {
+        foreach (Qt4ProFileNode * node, list) {
             applicationProFiles.append("Qt4RunConfiguration." + node->path());
         }
         return applicationProFiles;
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 421aa3b77ae..246d4737bd1 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -39,14 +39,16 @@
 
 #include 
 #include 
+#include 
 
+#include 
+#include 
 #include 
 #include 
 #include 
-#include 
-#include 
+
 #include 
-#include 
+#include 
 #include 
 
 using namespace Qt4ProjectManager::Internal;
@@ -114,9 +116,7 @@ void QtVersionManager::addVersion(QtVersion *version)
 void QtVersionManager::updateDocumentation()
 {
     Help::HelpManager *helpManager = m_core->pluginManager()->getObject();
-    Q_ASSERT(helpManager);
-    if (!helpManager)
-        return;
+    QTC_ASSERT(helpManager, return);
     QStringList fileEndings = QStringList() << "/qch/qt.qch" << "/qch/qmake.qch" << "/qch/designer.qch";
     QStringList files;
     foreach (QtVersion *version, m_versions) {
@@ -158,7 +158,7 @@ QWidget *QtVersionManager::createPage(QWidget *parent)
 void QtVersionManager::updateUniqueIdToIndexMap()
 {
     m_uniqueIdToIndex.clear();
-    for(int i=0; iuniqueId(), i);
 }
 
@@ -225,7 +225,7 @@ QtVersion *QtVersionManager::version(int id) const
     if (pos != -1)
         return m_versions.at(pos);
 
-    if(m_defaultVersion < m_versions.count())
+    if (m_defaultVersion < m_versions.count())
         return m_versions.at(m_defaultVersion);
     else
         return m_emptyVersion;
@@ -248,17 +248,17 @@ void QtVersionManager::addNewVersionsFromInstaller()
     bool defaultVersionWasReset = false;
     foreach (QString newVersion, newVersionsList) {
         QStringList newVersionData = newVersion.split('=');
-        if(newVersionData.count()>=2) {
+        if (newVersionData.count()>=2) {
             if (QDir(newVersionData[1]).exists()) {
                 QtVersion *version = new QtVersion(newVersionData[0], newVersionData[1], m_idcount++ );
-                if(newVersionData.count() >= 3)
+                if (newVersionData.count() >= 3)
                     version->setMingwDirectory(newVersionData[2]);
-                if(newVersionData.count() >= 4)
+                if (newVersionData.count() >= 4)
                     version->setPrependPath(newVersionData[3]);
 
                 bool versionWasAlreadyInList = false;
                 foreach(const QtVersion * const it, m_versions) {
-                    if(QDir(version->path()).canonicalPath() == QDir(it->path()).canonicalPath()) {
+                    if (QDir(version->path()).canonicalPath() == QDir(it->path()).canonicalPath()) {
                         versionWasAlreadyInList = true;
                         break;
                     }
@@ -314,7 +314,7 @@ QStringList QtVersionManager::possibleQMakeCommands()
     return result;
 }
 
-bool QtVersionManager::checkQMakeVersion(const QString &qmakePath)
+QString QtVersionManager::qtVersionForQMake(const QString &qmakePath)
 {
     QProcess qmake;
     qmake.start(qmakePath, QStringList()<<"--version");
@@ -323,9 +323,12 @@ bool QtVersionManager::checkQMakeVersion(const QString &qmakePath)
     QString output = qmake.readAllStandardOutput();
     QRegExp regexp("(QMake version|Qmake version:)[\\s]*([\\d.]*)");
     regexp.indexIn(output);
-    if (regexp.cap(2).startsWith("2."))
-        return true;
-    return false;
+    if (regexp.cap(2).startsWith("2.")) {
+        QRegExp regexp2("Using Qt version[\\s]*([\\d\\.]*)");
+        regexp2.indexIn(output);
+        return regexp2.cap(1);
+    }
+    return QString();
 }
 
 QString QtVersionManager::findSystemQt() const
@@ -336,7 +339,7 @@ QString QtVersionManager::findSystemQt() const
         foreach (const QString &possibleCommand, possibleQMakeCommands()) {
             QFileInfo qmake(path + "/" + possibleCommand);
             if (qmake.exists()) {
-                if (checkQMakeVersion(qmake.absoluteFilePath())) {
+                if (!qtVersionForQMake(qmake.absoluteFilePath()).isNull()) {
                     QDir dir(qmake.absoluteDir());
                     dir.cdUp();
                     return dir.absolutePath();
@@ -349,7 +352,7 @@ QString QtVersionManager::findSystemQt() const
 
 QtVersion *QtVersionManager::currentQtVersion() const
 {
-    if(m_defaultVersion < m_versions.count())
+    if (m_defaultVersion < m_versions.count())
         return m_versions.at(m_defaultVersion);
     else
         return m_emptyVersion;
@@ -465,27 +468,27 @@ void QtDirWidget::updateState()
 void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
 {
     m_ui.msvcComboBox->setVisible(false);
-    if(item) {
+    if (item) {
         int index = m_ui.qtdirList->indexOfTopLevelItem(item);
         m_ui.errorLabel->setText("");
         QtVersion::ToolchainType t = m_versions.at(index)->toolchainType();
-        if(t == QtVersion::MinGW) {
+        if (t == QtVersion::MinGW) {
             m_ui.msvcComboBox->setVisible(false);
             m_ui.msvcLabel->setVisible(false);
             m_ui.mingwLineEdit->setVisible(true);
             m_ui.mingwLabel->setVisible(true);
             m_ui.mingwBrowseButton->setVisible(true);
             m_ui.mingwLineEdit->setText(m_versions.at(index)->mingwDirectory());
-        } else if(t == QtVersion::MSVC || t == QtVersion::WINCE){
+        } else if (t == QtVersion::MSVC || t == QtVersion::WINCE){
             m_ui.msvcComboBox->setVisible(false);
             m_ui.msvcLabel->setVisible(true);
             m_ui.mingwLineEdit->setVisible(false);
             m_ui.mingwLabel->setVisible(false);
             m_ui.mingwBrowseButton->setVisible(false);
             QList msvcenvironments = MSVCEnvironment::availableVersions();
-            if(msvcenvironments.count() == 0) {
+            if (msvcenvironments.count() == 0) {
                 m_ui.msvcLabel->setText(tr("No Visual Studio Installation found"));
-            } else if(msvcenvironments.count() == 1) {
+            } else if (msvcenvironments.count() == 1) {
                 m_ui.msvcLabel->setText( msvcenvironments.at(0).description());
             } else {
                  m_ui.msvcComboBox->setVisible(true);
@@ -500,7 +503,7 @@ void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
                  }
                  m_ui.msvcComboBox->blockSignals(block);
             }
-        } else if(t == QtVersion::INVALID) {
+        } else if (t == QtVersion::INVALID) {
             m_ui.msvcComboBox->setVisible(false);
             m_ui.msvcLabel->setVisible(false);
             m_ui.mingwLineEdit->setVisible(false);
@@ -517,7 +520,10 @@ void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
             m_ui.mingwLineEdit->setVisible(false);
             m_ui.mingwLabel->setVisible(false);
             m_ui.mingwBrowseButton->setVisible(false);
-            m_ui.errorLabel->setText("Found qt version: " + m_versions.at(index)->mkspec());
+            m_ui.errorLabel->setText("Found Qt version "
+                                     + m_versions.at(index)->qtVersionString()
+                                     + " using mkspec "
+                                     + m_versions.at(index)->mkspec());
         }
     } else {
         m_ui.msvcComboBox->setVisible(false);
@@ -530,7 +536,7 @@ void QtDirWidget::showEnvironmentPage(QTreeWidgetItem *item)
 
 void QtDirWidget::versionChanged(QTreeWidgetItem *item, QTreeWidgetItem *old)
 {
-    if(old) {
+    if (old) {
         fixQtVersionName(m_ui.qtdirList->indexOfTopLevelItem(old));
     }
     if (item) {
@@ -590,7 +596,7 @@ void QtDirWidget::defaultChanged(int)
 void QtDirWidget::updateCurrentQtName()
 {
     QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem();
-    Q_ASSERT(currentItem);
+    QTC_ASSERT(currentItem, return);
     int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem);
     m_versions[currentItemIndex]->setName(m_ui.nameEdit->text());
     currentItem->setText(0, m_versions[currentItemIndex]->name());
@@ -601,7 +607,7 @@ void QtDirWidget::updateCurrentQtName()
 
 void QtDirWidget::finish()
 {
-    if(QTreeWidgetItem *item = m_ui.qtdirList->currentItem())
+    if (QTreeWidgetItem *item = m_ui.qtdirList->currentItem())
         fixQtVersionName(m_ui.qtdirList->indexOfTopLevelItem(item));
 }
 
@@ -612,9 +618,9 @@ void QtDirWidget::finish()
 void QtDirWidget::fixQtVersionName(int index)
 {
     int count = m_versions.count();
-    for(int i=0; iname() == m_versions.at(index)->name()) {
+    for (int i = 0; i < count; ++i) {
+        if (i != index) {
+            if (m_versions.at(i)->name() == m_versions.at(index)->name()) {
                 // Same name, find new name
                 QString name = m_versions.at(index)->name();
                 QRegExp regexp("^(.*)\\((\\d)\\)$");
@@ -639,7 +645,7 @@ void QtDirWidget::fixQtVersionName(int index)
 void QtDirWidget::updateCurrentQtPath()
 {
     QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem();
-    Q_ASSERT(currentItem);
+    QTC_ASSERT(currentItem, return);
     int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem);
     m_versions[currentItemIndex]->setPath(m_ui.pathEdit->text());
     currentItem->setText(1, m_versions[currentItemIndex]->path());
@@ -650,7 +656,7 @@ void QtDirWidget::updateCurrentQtPath()
 void QtDirWidget::updateCurrentMingwDirectory()
 {
     QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem();
-    Q_ASSERT(currentItem);
+    QTC_ASSERT(currentItem, return);
     int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem);
     m_versions[currentItemIndex]->setMingwDirectory(m_ui.mingwLineEdit->text());
 }
@@ -659,14 +665,14 @@ void QtDirWidget::msvcVersionChanged()
 {
     const QString &msvcVersion = m_ui.msvcComboBox->currentText();
     QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem();
-    Q_ASSERT(currentItem);
+    QTC_ASSERT(currentItem, return);
     int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem);
     m_versions[currentItemIndex]->setMsvcVersion(msvcVersion);
 
     //get descriptionx
     QList msvcEnvironments = MSVCEnvironment::availableVersions();
     foreach(const MSVCEnvironment &msvcEnv, msvcEnvironments) {
-        if(msvcEnv.name() == msvcVersion) {
+        if (msvcEnv.name() == msvcVersion) {
             m_ui.msvcLabel->setText(msvcEnv.description());
             break;
         }
@@ -691,7 +697,7 @@ QtVersion::QtVersion(const QString &name, const QString &path, int id, bool isSy
     : m_name(name), m_isSystemVersion(isSystemVersion), m_notInstalled(false), m_defaultConfigIsDebug(true), m_defaultConfigIsDebugAndRelease(true)
 {
     setPath(path);
-    if(id == -1)
+    if (id == -1)
         m_id = getUniqueId();
     else
         m_id = id;
@@ -734,6 +740,12 @@ QString QtVersion::mkspecPath() const
     return m_mkspecFullPath;
 }
 
+QString QtVersion::qtVersionString() const
+{
+    qmakeCommand();
+    return m_qtVersionString;
+}
+
 QHash QtVersion::versionInfo() const
 {
     updateVersionInfo();
@@ -860,7 +872,7 @@ QtVersion::QmakeBuildConfig QtVersionManager::scanMakefileForQmakeConfig(const Q
                     //Now chop into parts that are intresting
                     QStringList parts;
                     int lastpos = 0;
-                    for(int i=1; i= 17  && QStringRef(&part, i, 17) == "debug_and_release") {
                                         if (setFlags)
@@ -910,7 +922,7 @@ QtVersion::QmakeBuildConfig QtVersionManager::scanMakefileForQmakeConfig(const Q
                                             result = QtVersion::QmakeBuildConfig(result | QtVersion::DebugBuild);
                                         if (debugScan)
                                             qDebug()<<"found release new value"<= 5 && QStringRef(&part, i, 5) == "debug") {
                                         if (setFlags)
                                             result = QtVersion::QmakeBuildConfig(result  | QtVersion::DebugBuild);
@@ -918,7 +930,7 @@ QtVersion::QmakeBuildConfig QtVersionManager::scanMakefileForQmakeConfig(const Q
                                             result = QtVersion::QmakeBuildConfig(result  & ~QtVersion::DebugBuild);
                                         if (debugScan)
                                             qDebug()<<"found debug new value"< &temp = line.split('=');
-//                if(temp.size() == 2) {
+//                if (temp.size() == 2) {
 //                    mkspec = temp.at(1).trimmed();
 //                    if (mkspec.startsWith("$$QT_BUILD_TREE/mkspecs/"))
 //                        mkspec = mkspec.mid(QString("$$QT_BUILD_TREE/mkspecs/").length());
@@ -1058,9 +1070,9 @@ void QtVersion::updateMkSpec() const
 #ifdef Q_OS_WIN
         QFile f2(mkspecPath + "/qmake.conf");
         if (f2.exists() && f2.open(QIODevice::ReadOnly)) {
-            while(!f2.atEnd()) {
+            while (!f2.atEnd()) {
                 QByteArray line = f2.readLine();
-                if(line.startsWith("QMAKESPEC_ORIGINAL")) {
+                if (line.startsWith("QMAKESPEC_ORIGINAL")) {
                     const QList &temp = line.split('=');
                     if (temp.size() == 2) {
                         mkspec = temp.at(1);
@@ -1073,9 +1085,9 @@ void QtVersion::updateMkSpec() const
 #elif defined(Q_OS_MAC)
         QFile f2(mkspecPath + "/qmake.conf");
         if (f2.exists() && f2.open(QIODevice::ReadOnly)) {
-            while(!f2.atEnd()) {
+            while (!f2.atEnd()) {
                 QByteArray line = f2.readLine();
-                if(line.startsWith("MAKEFILE_GENERATOR")) {
+                if (line.startsWith("MAKEFILE_GENERATOR")) {
                     const QList &temp = line.split('=');
                     if (temp.size() == 2) {
                         const QByteArray &value = temp.at(1);
@@ -1106,7 +1118,7 @@ void QtVersion::updateMkSpec() const
 
     m_mkspecFullPath = mkspec;
     int index = mkspec.lastIndexOf('/');
-    if(index == -1)
+    if (index == -1)
         index = mkspec.lastIndexOf('\\');
     QString mkspecDir = QDir(m_path + "/mkspecs/").canonicalPath();
     if (index >= 0 && QDir(mkspec.left(index)).canonicalPath() == mkspecDir)
@@ -1123,7 +1135,7 @@ QString QtVersion::makeCommand() const
     const QString &spec = mkspec();
     if (spec.contains("win32-msvc") || spec.contains(QLatin1String("win32-icc")))
         return "nmake.exe";
-    else if(spec.startsWith("wince"))
+    else if (spec.startsWith("wince"))
         return "nmake.exe";
     else
         return "mingw32-make.exe";
@@ -1140,11 +1152,13 @@ QString QtVersion::qmakeCommand() const
         return m_qmakeCommand;
 
     QDir qtDir = path() + "/bin/";
-    foreach(const QString &possibleCommand, QtVersionManager::possibleQMakeCommands()) {
+    foreach (const QString &possibleCommand, QtVersionManager::possibleQMakeCommands()) {
         QString s = qtDir.absoluteFilePath(possibleCommand);
         QFileInfo qmake(s);
         if (qmake.exists() && qmake.isExecutable()) {
-            if (QtVersionManager::checkQMakeVersion(qmake.absoluteFilePath())) {
+            QString qtVersion = QtVersionManager::qtVersionForQMake(qmake.absoluteFilePath());
+            if (!qtVersion.isNull()) {
+                m_qtVersionString = qtVersion;
                 m_qmakeCommand = qmake.absoluteFilePath();
                 return qmake.absoluteFilePath();
             }
@@ -1158,13 +1172,13 @@ QtVersion::ToolchainType QtVersion::toolchainType() const
     if (!isValid())
         return INVALID;
     const QString &spec = mkspec();
-    if(spec.contains("win32-msvc") || spec.contains(QLatin1String("win32-icc")))
+    if (spec.contains("win32-msvc") || spec.contains(QLatin1String("win32-icc")))
         return MSVC;
-    else if(spec == "win32-g++")
+    else if (spec == "win32-g++")
         return MinGW;
-    else if(spec == QString::null)
+    else if (spec == QString::null)
         return INVALID;
-    else if(spec.startsWith("wince"))
+    else if (spec.startsWith("wince"))
         return WINCE;
     else
         return OTHER;
@@ -1210,32 +1224,32 @@ Environment QtVersion::addToEnvironment(const Environment &env)
     // or add Mingw dirs
     // or do nothing on other
     QtVersion::ToolchainType t = toolchainType();
-    if(t == QtVersion::MinGW) {
+    if (t == QtVersion::MinGW) {
         QFileInfo mingwFileInfo(m_mingwDirectory + "/bin");
-        if(mingwFileInfo.exists())
+        if (mingwFileInfo.exists())
             e.prependOrSetPath(m_mingwDirectory + "/bin");
-    } else if(t == QtVersion::MSVC) {
+    } else if (t == QtVersion::MSVC) {
         QList list = MSVCEnvironment::availableVersions();
-        if(list.count() == 1) {
+        if (list.count() == 1) {
             e = list.at(0).addToEnvironment(e);
         } else {
             foreach(const MSVCEnvironment &m, list) {
-                if(m.name() == m_msvcVersion) {
+                if (m.name() == m_msvcVersion) {
                     e = m.addToEnvironment(e);
                     break;
                 }
             }
         }
-    } else if(t == QtVersion::WINCE) {
+    } else if (t == QtVersion::WINCE) {
         QString msvcPath;
         // Find MSVC path
         QList list = MSVCEnvironment::availableVersions();
-        if(list.count() == 1) {
+        if (list.count() == 1) {
             msvcPath = list.at(0).path();
             e = list.at(0).addToEnvironment(e);
         } else {
             foreach(const MSVCEnvironment &m, list) {
-                if(m.name() == m_msvcVersion) {
+                if (m.name() == m_msvcVersion) {
                     e = m.addToEnvironment(e);
                     msvcPath = m.path();
                     break;
@@ -1254,8 +1268,8 @@ Environment QtVersion::addToEnvironment(const Environment &env)
         CeSdkHandler cesdkhandler;
         cesdkhandler.parse(msvcPath);
         e = cesdkhandler.find(platformName).addToEnvironment(e);
-    } else if(t == QtVersion::OTHER) {
-        if(!m_prependPath.isEmpty())
+    } else if (t == QtVersion::OTHER) {
+        if (!m_prependPath.isEmpty())
             e.prependOrSetPath(m_prependPath);
     }
     return e;
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index a8ca9570895..d13ba7c3e00 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -70,6 +70,7 @@ public:
     QString mkspecPath() const;
     QString makeCommand() const;
     QString qmakeCommand() const;
+    QString qtVersionString() const;
     // Returns the PREFIX, BINPREFIX, DOCPREFIX and similar information
     QHash versionInfo() const;
 
@@ -119,6 +120,9 @@ private:
     mutable bool m_defaultConfigIsDebug;
     mutable bool m_defaultConfigIsDebugAndRelease;
     mutable QString m_qmakeCommand;
+    // This is updated on first call to qmakeCommand
+    // That function is called from updateVersionInfo()
+    mutable QString m_qtVersionString;
     Q_DISABLE_COPY(QtVersion);
 };
 
@@ -189,7 +193,7 @@ public:
     // returns something like qmake4, qmake, qmake-qt4 or whatever distributions have chosen (used by QtVersion)
     static QStringList possibleQMakeCommands();
     // return true if the qmake at qmakePath is qt4 (used by QtVersion)
-    static bool checkQMakeVersion(const QString &qmakePath);
+    static QString qtVersionForQMake(const QString &qmakePath);
 signals:
     void defaultQtVersionChanged();
     void qtVersionsChanged();
diff --git a/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp
index 53972631c68..c95bea8217b 100644
--- a/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp
@@ -32,12 +32,14 @@
 ***************************************************************************/
 
 #include "librarywizarddialog.h"
+
 #include "consoleappwizard.h"
-#include "modulespage.h"
 #include "filespage.h"
 #include "libraryparameters.h"
+#include "modulespage.h"
 
 #include 
+#include 
 
 #include 
 #include 
@@ -93,7 +95,7 @@ static QString pluginDependencies(const PluginBaseClasses *plb)
                                QString(QLatin1String(plb->dependentModules)).split(blank) :
                                QStringList();
     pluginModules.push_back(QLatin1String(plb->module));
-    foreach(const QString &module, pluginModules) {
+    foreach (const QString &module, pluginModules) {
         if (!dependencies.isEmpty())
             dependencies += blank;
         dependencies += ModulesPage::idOfModule(module);
@@ -231,7 +233,7 @@ void LibraryWizardDialog::slotCurrentIdChanged(int id)
                 qDebug("initializing for plugins");
             QStringList baseClasses;
             const int pluginBaseClassCount = sizeof(pluginBaseClasses)/sizeof(PluginBaseClasses);
-            Q_ASSERT(defaultPluginBaseClass < pluginBaseClassCount);
+            QTC_ASSERT(defaultPluginBaseClass < pluginBaseClassCount, return);
             for (int i = 0; i < pluginBaseClassCount; i++)
                 baseClasses.push_back(QLatin1String(pluginBaseClasses[i].name));
             m_filesPage->setBaseClassChoices(baseClasses);
diff --git a/src/plugins/qt4projectmanager/wizards/modulespage.cpp b/src/plugins/qt4projectmanager/wizards/modulespage.cpp
index a2b5b3e4f09..7e11c50de9a 100644
--- a/src/plugins/qt4projectmanager/wizards/modulespage.cpp
+++ b/src/plugins/qt4projectmanager/wizards/modulespage.cpp
@@ -32,15 +32,18 @@
 ***************************************************************************/
 
 #include "modulespage.h"
+
 #include "speinfo.h"
 
-#include 
-#include 
-#include 
-#include 
+#include 
 
 #include 
 
+#include 
+#include 
+#include 
+#include 
+
 #include 
 
 using namespace Qt4ProjectManager::Internal;
@@ -101,17 +104,15 @@ QString ModulesPage::deselectedModules() const
 void ModulesPage::setModuleSelected(const QString &module, bool selected) const
 {
     QCheckBox *checkBox = m_moduleCheckBoxMap[module];
-    Q_ASSERT(checkBox);
-    if (checkBox)
-        checkBox->setCheckState(selected?Qt::Checked:Qt::Unchecked);
+    QTC_ASSERT(checkBox, return);
+    checkBox->setCheckState(selected?Qt::Checked:Qt::Unchecked);
 }
 
 void ModulesPage::setModuleEnabled(const QString &module, bool enabled) const
 {
     QCheckBox *checkBox = m_moduleCheckBoxMap[module];
-    Q_ASSERT(checkBox);
-    if (checkBox)
-        checkBox->setEnabled(enabled);
+    QTC_ASSERT(checkBox, return);
+    checkBox->setEnabled(enabled);
 }
 
 QString ModulesPage::modules(bool selected) const
diff --git a/src/plugins/qtscripteditor/qtscripteditor.cpp b/src/plugins/qtscripteditor/qtscripteditor.cpp
index fa10cdd5102..673c7a02fd8 100644
--- a/src/plugins/qtscripteditor/qtscripteditor.cpp
+++ b/src/plugins/qtscripteditor/qtscripteditor.cpp
@@ -159,14 +159,12 @@ void ScriptEditor::contextMenuEvent(QContextMenuEvent *e)
 
     if (Core::IActionContainer *mcontext = m_core->actionManager()->actionContainer(QtScriptEditor::Constants::M_CONTEXT)) {
         QMenu *contextMenu = mcontext->menu();
-        foreach(QAction *action, contextMenu->actions()) {
+        foreach (QAction *action, contextMenu->actions())
             menu->addAction(action);
-        }
     }
 
     menu->exec(e->globalPos());
     delete menu;
-
 }
 
 } // namespace Internal
diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
index 0cc69b82c45..9f724d4d09d 100644
--- a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
+++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
@@ -32,10 +32,11 @@
 ***************************************************************************/
 
 #include "qtscripteditorplugin.h"
+
+#include "qscripthighlighter.h"
+#include "qtscripteditor.h"
 #include "qtscripteditorconstants.h"
 #include "qtscripteditorfactory.h"
-#include "qtscripteditor.h"
-#include "qscripthighlighter.h"
 
 #include 
 #include 
@@ -47,6 +48,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -108,7 +110,7 @@ void QtScriptEditorPlugin::extensionsInitialized()
 
 void QtScriptEditorPlugin::initializeEditor(QtScriptEditor::Internal::ScriptEditor *editor)
 {
-    Q_ASSERT(m_instance);
+    QTC_ASSERT(m_instance, /**/);
 
     TextEditor::TextEditorSettings *settings = TextEditor::TextEditorSettings::instance();
     connect(settings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)),
diff --git a/src/plugins/qtscripteditor/qtscripthighlighter.cpp b/src/plugins/qtscripteditor/qtscripthighlighter.cpp
index b362f6a2ad6..0e7cd342cbd 100644
--- a/src/plugins/qtscripteditor/qtscripthighlighter.cpp
+++ b/src/plugins/qtscripteditor/qtscripthighlighter.cpp
@@ -33,6 +33,8 @@
 
 #include "qtscripthighlighter.h"
 
+#include 
+
 namespace QtScriptEditor {
 namespace Internal {
 
@@ -94,7 +96,7 @@ void QtScriptHighlighter::onBlockEnd(int state, int firstNonSpace)
         blockData->setCollapseMode(TextEditor::TextBlockUserData::NoCollapse);
     }
     if (!m_currentBlockParentheses.isEmpty()) {
-        Q_ASSERT(blockData);
+        QTC_ASSERT(blockData, return);
         int collapse = Parenthesis::collapseAtPos(m_currentBlockParentheses);
         if (collapse >= 0) {
             if (collapse == firstNonSpace)
diff --git a/src/plugins/quickopen/quickopenconstants.h b/src/plugins/quickopen/quickopenconstants.h
index 8ae0380f371..9cce4268770 100644
--- a/src/plugins/quickopen/quickopenconstants.h
+++ b/src/plugins/quickopen/quickopenconstants.h
@@ -38,7 +38,7 @@ namespace QuickOpen {
 namespace Constants {
 
 const char * const FILTER_OPTIONS_PAGE = "Filters";
-const char * const QUICKOPEN_CATEGORY = "QuickOpen";
+const char * const QUICKOPEN_CATEGORY = "Locator";
 const char * const TASK_INDEX = "QuickOpen.Task.Index";
 
 } // namespace Constants
diff --git a/src/plugins/quickopen/quickopenmanager.cpp b/src/plugins/quickopen/quickopenmanager.cpp
index 99e9bcc6f1d..1cabeb6bc2d 100644
--- a/src/plugins/quickopen/quickopenmanager.cpp
+++ b/src/plugins/quickopen/quickopenmanager.cpp
@@ -35,6 +35,7 @@
 #include "quickopentoolwindow.h"
 
 #include 
+#include 
 
 using namespace QuickOpen;
 using namespace QuickOpen::Internal;
@@ -57,6 +58,6 @@ QuickOpenManager::~QuickOpenManager()
 void QuickOpenManager::show(const QString &text,
                             int selectionStart, int selectionLength)
 {
-    Q_ASSERT(m_toolWindow);
+    QTC_ASSERT(m_toolWindow, return);
     m_toolWindow->show(text, selectionStart, selectionLength);
 }
diff --git a/src/plugins/quickopen/quickopentoolwindow.cpp b/src/plugins/quickopen/quickopentoolwindow.cpp
index 7184a05fa1f..211947be8d0 100644
--- a/src/plugins/quickopen/quickopentoolwindow.cpp
+++ b/src/plugins/quickopen/quickopentoolwindow.cpp
@@ -51,6 +51,7 @@ QT_END_NAMESPACE
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -263,7 +264,7 @@ QuickOpenToolWindow::QuickOpenToolWindow(QuickOpenPlugin *qop) :
     // Explcitly hide the completion list popup.
     m_completionList->hide();
 
-    setWindowTitle("Quick Open");
+    setWindowTitle("Locate...");
     resize(200, 90);
     QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
     sizePolicy.setHorizontalStretch(0);
@@ -280,7 +281,7 @@ QuickOpenToolWindow::QuickOpenToolWindow(QuickOpenPlugin *qop) :
     QPixmap image(Core::Constants::ICON_MAGNIFIER);
     m_fileLineEdit->setPixmap(image);
     m_fileLineEdit->setUseLayoutDirection(true);
-    m_fileLineEdit->setHintText(tr("Type to QuickOpen"));
+    m_fileLineEdit->setHintText(tr("Type to locate"));
     m_fileLineEdit->setFocusPolicy(Qt::ClickFocus);
 
     m_fileLineEdit->installEventFilter(this);
@@ -452,9 +453,9 @@ void QuickOpenToolWindow::filterSelected()
 {
     const char * const TEXT = "";
     QAction *action = qobject_cast(sender());
-    Q_ASSERT(action);
+    QTC_ASSERT(action, return);
     IQuickOpenFilter *filter = action->data().value();
-    Q_ASSERT(filter);
+    QTC_ASSERT(filter, return);
     show(filter->shortcutString() + " " + TEXT,
          filter->shortcutString().length() + 1,
          QString(TEXT).length());
diff --git a/src/plugins/quickopen/settingspage.cpp b/src/plugins/quickopen/settingspage.cpp
index 8fa032ffcac..76263c731ba 100644
--- a/src/plugins/quickopen/settingspage.cpp
+++ b/src/plugins/quickopen/settingspage.cpp
@@ -32,13 +32,15 @@
 ***************************************************************************/
 
 #include "settingspage.h"
+
 #include "quickopenplugin.h"
 #include "iquickopenfilter.h"
 #include "directoryfilter.h"
 
-#include 
-
 #include 
+#include 
+
+#include 
 
 Q_DECLARE_METATYPE(QuickOpen::IQuickOpenFilter*)
 
@@ -46,7 +48,7 @@ using namespace QuickOpen;
 using namespace QuickOpen::Internal;
 
 SettingsPage::SettingsPage(Core::ICore *core, QuickOpenPlugin *plugin)
-        : m_core(core), m_plugin(plugin), m_page(0)
+    : m_core(core), m_plugin(plugin), m_page(0)
 {
 }
 
@@ -144,9 +146,10 @@ void SettingsPage::configureFilter(QListWidgetItem *item)
 {
     if (!item)
         item = m_ui.filterList->currentItem();
-    Q_ASSERT(item);
+    QTC_ASSERT(item, return);
     IQuickOpenFilter *filter = item->data(Qt::UserRole).value();
-    Q_ASSERT(filter);
+    QTC_ASSERT(filter, return);
+
     if (!filter->isConfigurable())
         return;
     bool needsRefresh = false;
@@ -172,9 +175,9 @@ void SettingsPage::addCustomFilter()
 void SettingsPage::removeCustomFilter()
 {
     QListWidgetItem *item = m_ui.filterList->currentItem();
-    Q_ASSERT(item);
+    QTC_ASSERT(item, return);
     IQuickOpenFilter *filter = item->data(Qt::UserRole).value();
-    Q_ASSERT(m_customFilters.contains(filter));
+    QTC_ASSERT(m_customFilters.contains(filter), return);
     m_filters.removeAll(filter);
     m_customFilters.removeAll(filter);
     m_refreshFilters.removeAll(filter);
diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp
index 43ad4ddd90c..44284f06fd7 100644
--- a/src/plugins/resourceeditor/resourceeditorplugin.cpp
+++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp
@@ -32,6 +32,7 @@
 ***************************************************************************/
 
 #include "resourceeditorplugin.h"
+
 #include "resourceeditorw.h"
 #include "resourceeditorconstants.h"
 #include "resourcewizard.h"
@@ -44,6 +45,8 @@
 #include 
 #include 
 
+#include 
+
 #include 
 #include 
 
@@ -122,10 +125,11 @@ void ResourceEditorPlugin::onUndoStackChanged(ResourceEditorW const *editor,
     }
 }
 
-ResourceEditorW * ResourceEditorPlugin::currentEditor() const {
+ResourceEditorW * ResourceEditorPlugin::currentEditor() const
+{
     ResourceEditorW * const focusEditor = qobject_cast(
             m_core->editorManager()->currentEditor());
-    Q_ASSERT(focusEditor);
+    QTC_ASSERT(focusEditor, return 0);
     return focusEditor;
 }
 
diff --git a/src/plugins/snippets/snippetswindow.cpp b/src/plugins/snippets/snippetswindow.cpp
index d549a06cf7f..866e7535935 100644
--- a/src/plugins/snippets/snippetswindow.cpp
+++ b/src/plugins/snippets/snippetswindow.cpp
@@ -243,7 +243,7 @@ void SnippetsWindow::showInputWidget(bool canceled, const QString &value)
     } else {
         QString desc = m_currentSnippet->argumentDescription(m_requiredArgs.first());
         QString def = m_currentSnippet->argumentDefault(m_requiredArgs.first());
-        foreach(QString arg, m_args) {
+        foreach (const QString &arg, m_args) {
             desc = desc.arg(arg);
             def = def.arg(arg);
         }
diff --git a/src/plugins/subversion/subversioneditor.cpp b/src/plugins/subversion/subversioneditor.cpp
index 82f8fd55513..3552c0f9b49 100644
--- a/src/plugins/subversion/subversioneditor.cpp
+++ b/src/plugins/subversion/subversioneditor.cpp
@@ -32,9 +32,11 @@
 ***************************************************************************/
 
 #include "subversioneditor.h"
+
 #include "annotationhighlighter.h"
 #include "subversionconstants.h"
 
+#include 
 #include 
 
 #include 
@@ -49,8 +51,8 @@ SubversionEditor::SubversionEditor(const VCSBase::VCSBaseEditorParameters *type,
     m_changeNumberPattern(QLatin1String("^\\d+$")),
     m_revisionNumberPattern(QLatin1String("^r\\d+$"))
 {
-    Q_ASSERT(m_changeNumberPattern.isValid());
-    Q_ASSERT(m_revisionNumberPattern.isValid());
+    QTC_ASSERT(m_changeNumberPattern.isValid(), return);
+    QTC_ASSERT(m_revisionNumberPattern.isValid(), return);
 }
 
 QSet SubversionEditor::annotationChanges() const
@@ -61,11 +63,11 @@ QSet SubversionEditor::annotationChanges() const
         return changes;
     // Hunt for first change number in annotation: ":"
     QRegExp r(QLatin1String("^(\\d+):"));
-    Q_ASSERT(r.isValid());
+    QTC_ASSERT(r.isValid(), return changes);
     if (r.indexIn(txt) != -1) {
         changes.insert(r.cap(1));
         r.setPattern(QLatin1String("\n(\\d+):"));
-        Q_ASSERT(r.isValid());
+        QTC_ASSERT(r.isValid(), return changes);
         int pos = 0;
         while ((pos = r.indexIn(txt, pos)) != -1) {
             pos += r.matchedLength();
@@ -108,7 +110,7 @@ QString SubversionEditor::changeUnderCursor(const QTextCursor &c) const
 VCSBase::DiffHighlighter *SubversionEditor::createDiffHighlighter() const
 {
     const QRegExp filePattern(QLatin1String("^[-+][-+][-+] .*|^Index: .*|^==*$"));
-    Q_ASSERT(filePattern.isValid());
+    QTC_ASSERT(filePattern.isValid(), /**/);
     return new VCSBase::DiffHighlighter(filePattern);
 }
 
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index a24bb7d3d06..06929913806 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -56,6 +56,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -194,7 +195,7 @@ SubversionPlugin::~SubversionPlugin()
     }
 
     if (!m_editorFactories.empty()) {
-        foreach(Core::IEditorFactory* pf, m_editorFactories)
+        foreach (Core::IEditorFactory* pf, m_editorFactories)
             removeObject(pf);
         qDeleteAll(m_editorFactories);
         m_editorFactories.clear();
@@ -504,7 +505,7 @@ SubversionSubmitEditor *SubversionPlugin::openSubversionSubmitEditor(const QStri
 {
     Core::IEditor *editor = m_coreInstance->editorManager()->openEditor(fileName, QLatin1String(Constants::SUBVERSIONCOMMITEDITOR_KIND));
     SubversionSubmitEditor *submitEditor = qobject_cast(editor);
-    Q_ASSERT(submitEditor);
+    QTC_ASSERT(submitEditor, /**/);
     // The actions are for some reason enabled by the context switching
     // mechanism. Disable them correctly.
     m_submitDiffAction->setEnabled(false);
@@ -579,9 +580,8 @@ void SubversionPlugin::revertCurrentFile()
 
     Core::FileManager *fm = m_coreInstance->fileManager();
     QList files = fm->managedFiles(file);
-    foreach (Core::IFile *file, files) {
+    foreach (Core::IFile *file, files)
         fm->blockFileChange(file);
-    }
 
     // revert
     args.clear();
@@ -726,7 +726,7 @@ QStringList SubversionPlugin::parseStatusOutput(const QString &output) const
     QStringList changeSet;
     const QString newLine = QString(QLatin1Char('\n'));
     const QStringList list = output.split(newLine, QString::SkipEmptyParts);
-    foreach (const QString& l, list) {
+    foreach (const QString &l, list) {
         QString line(l.trimmed());
         if (line.startsWith(QLatin1Char('A')) || line.startsWith(QLatin1Char('D'))
             || line.startsWith(QLatin1Char('M')))
@@ -982,7 +982,7 @@ Core::IEditor * SubversionPlugin::showOutputInEditor(const QString& title, const
                                                      QTextCodec *codec)
 {
     const VCSBase::VCSBaseEditorParameters *params = findType(editorType);
-    Q_ASSERT(params);
+    QTC_ASSERT(params, return 0);
     const QString kind = QLatin1String(params->kind);
     if (Subversion::Constants::debug)
         qDebug() << "SubversionPlugin::showOutputInEditor" << title << kind <<  "Size= " << output.size() <<  " Type=" << editorType << debugCodec(codec);
@@ -1016,13 +1016,13 @@ void SubversionPlugin::setSettings(const SubversionSettings &s)
 
 Core::ICore *SubversionPlugin::coreInstance()
 {
-    Q_ASSERT(m_coreInstance);
+    QTC_ASSERT(m_coreInstance, return 0);
     return m_coreInstance;
 }
 
 SubversionPlugin *SubversionPlugin::subversionPluginInstance()
 {
-    Q_ASSERT(m_subversionPluginInstance);
+    QTC_ASSERT(m_subversionPluginInstance, m_subversionPluginInstance);
     return m_subversionPluginInstance;
 }
 
diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp
index 81427e7024a..3758b133278 100644
--- a/src/plugins/texteditor/basetextdocument.cpp
+++ b/src/plugins/texteditor/basetextdocument.cpp
@@ -45,8 +45,9 @@
 
 #ifndef TEXTEDITOR_STANDALONE
 #include 
-#include "coreplugin/icore.h"
+#include 
 #endif
+#include 
 
 using namespace TextEditor;
 
@@ -236,7 +237,7 @@ bool BaseTextDocument::open(const QString &fileName)
             m_document->setPlainText(text);
         m_document->setUndoRedoEnabled(true);
         TextEditDocumentLayout *documentLayout = qobject_cast(m_document->documentLayout());
-        Q_ASSERT(documentLayout);
+        QTC_ASSERT(documentLayout, return true);
         documentLayout->lastSaveRevision = 0;
         m_document->setModified(false);
         emit titleChanged(title);
@@ -247,7 +248,7 @@ bool BaseTextDocument::open(const QString &fileName)
 
 void BaseTextDocument::reload(QTextCodec *codec)
 {
-    Q_ASSERT(codec);
+    QTC_ASSERT(codec, return);
     m_codec = codec;
     reload();
 }
@@ -255,9 +256,8 @@ void BaseTextDocument::reload(QTextCodec *codec)
 void BaseTextDocument::reload()
 {
     emit aboutToReload();
-    if (open(m_fileName)) {
+    if (open(m_fileName))
         emit reloaded();
-    }
 }
 
 void BaseTextDocument::modified(Core::IFile::ReloadBehavior *behavior)
@@ -302,6 +302,18 @@ void BaseTextDocument::setSyntaxHighlighter(QSyntaxHighlighter *highlighter)
     m_highlighter->setDocument(m_document);
 }
 
+
+
+void BaseTextDocument::cleanWhitespace()
+{
+    QTextCursor cursor(m_document);
+    cursor.beginEditBlock();
+    cleanWhitespace(cursor, true);
+    if (m_storageSettings.m_addFinalNewLine)
+        ensureFinalNewLine(cursor);
+    cursor.endEditBlock();
+}
+
 void BaseTextDocument::cleanWhitespace(QTextCursor& cursor, bool inEntireDocument)
 {
 
diff --git a/src/plugins/texteditor/basetextdocument.h b/src/plugins/texteditor/basetextdocument.h
index ee8e5eb427a..b945129c474 100644
--- a/src/plugins/texteditor/basetextdocument.h
+++ b/src/plugins/texteditor/basetextdocument.h
@@ -118,6 +118,8 @@ public:
 
     void reload(QTextCodec *codec);
 
+    void cleanWhitespace();
+
 signals:
     void titleChanged(QString title);
     void changed();
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 82a4201b264..db5413c3446 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -53,6 +53,7 @@
 #include 
 #endif
 #include 
+#include 
 
 #include 
 #include 
@@ -415,10 +416,10 @@ UserCanceled:
 
 bool DocumentMarker::addMark(TextEditor::ITextMark *mark, int line)
 {
-    Q_ASSERT(line >= 1);
+    QTC_ASSERT(line >= 1, return false);
     int blockNumber = line - 1;
     TextEditDocumentLayout *documentLayout = qobject_cast(document->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return false);
     QTextBlock block = document->findBlockByNumber(blockNumber);
 
     if (block.isValid()) {
@@ -436,7 +437,7 @@ bool DocumentMarker::addMark(TextEditor::ITextMark *mark, int line)
 
 TextEditor::TextMarks DocumentMarker::marksAt(int line) const
 {
-    Q_ASSERT(line >= 1);
+    QTC_ASSERT(line >= 1, return TextMarks());
     int blockNumber = line - 1;
     QTextBlock block = document->findBlockByNumber(blockNumber);
 
@@ -531,9 +532,9 @@ void BaseTextEditor::selectEncoding()
 
 void DocumentMarker::updateMark(ITextMark *mark)
 {
-    TextEditDocumentLayout *documentLayout = qobject_cast(document->documentLayout());
-    Q_ASSERT(documentLayout);
     Q_UNUSED(mark);
+    TextEditDocumentLayout *documentLayout = qobject_cast(document->documentLayout());
+    QTC_ASSERT(documentLayout, return);
     documentLayout->requestUpdate();
 }
 
@@ -684,6 +685,10 @@ void BaseTextEditor::selectBlockDown()
 }
 
 
+void BaseTextEditor::cleanWhitespace()
+{
+        d->m_document->cleanWhitespace();
+}
 
 void BaseTextEditor::keyPressEvent(QKeyEvent *e)
 {
@@ -857,7 +862,7 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e)
             }
 #if 0
             TextEditDocumentLayout *documentLayout = qobject_cast(document()->documentLayout());
-            Q_ASSERT(documentLayout);
+            QTC_ASSERT(documentLayout, return);
             documentLayout->requestUpdate(); // a bit drastic
             e->accept();
 #endif
@@ -1628,13 +1633,27 @@ void BaseTextEditor::paintEvent(QPaintEvent *e)
     QPainter painter(viewport());
     QTextDocument *doc = document();
     TextEditDocumentLayout *documentLayout = qobject_cast(doc->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return);
 
     QPointF offset(contentOffset());
 
     QRect er = e->rect();
     QRect viewportRect = viewport()->rect();
 
+    const QColor baseColor = palette().base().color();
+    const int blendBase = (baseColor.value() > 128) ? 0 : 255;
+    // Darker backgrounds may need a bit more contrast
+    // (this calculation is temporary solution until we have a setting for this color)
+    const int blendFactor = (baseColor.value() > 128) ? 8 : 16;
+    const QColor blendColor(
+        (blendBase * blendFactor + baseColor.blue() * (256 - blendFactor)) / 256,
+        (blendBase * blendFactor + baseColor.green() * (256 - blendFactor)) / 256,
+        (blendBase * blendFactor + baseColor.blue() * (256 - blendFactor)) / 256);
+    if (d->m_visibleWrapColumn > 0) {
+        qreal lineX = fontMetrics().averageCharWidth() * d->m_visibleWrapColumn + offset.x() + 4;
+        painter.fillRect(QRectF(lineX, 0, viewportRect.width() - lineX, viewportRect.height()), blendColor);
+    }
+
     // keep right margin clean from full-width selection
     int maxX = offset.x() + qMax((qreal)viewportRect.width(), documentLayout->documentSize().width())
                - doc->documentMargin();
@@ -1647,7 +1666,6 @@ void BaseTextEditor::paintEvent(QPaintEvent *e)
 
     QAbstractTextDocumentLayout::PaintContext context = getPaintContext();
 
-
     if (!d->m_findScope.isNull()) {
         QAbstractTextDocumentLayout::Selection selection;
         selection.format.setBackground(d->m_searchScopeFormat.background());
@@ -1672,20 +1690,6 @@ void BaseTextEditor::paintEvent(QPaintEvent *e)
         blockSelection->lastColumn = qMax(columnA, columnB) + d->m_blockSelectionExtraX;
     }
 
-    const QColor baseColor = palette().base().color();
-    const int blendBase = (baseColor.value() > 128) ? 0 : 255;
-    // Darker backgrounds may need a bit more contrast
-    // (this calculation is temporary solution until we have a setting for this color)
-    const int blendFactor = (baseColor.value() > 128) ? 8 : 16;
-    const QColor blendColor(
-        (blendBase * blendFactor + baseColor.blue() * (256 - blendFactor)) / 256,
-        (blendBase * blendFactor + baseColor.green() * (256 - blendFactor)) / 256,
-        (blendBase * blendFactor + baseColor.blue() * (256 - blendFactor)) / 256);
-    if (d->m_visibleWrapColumn > 0) {
-        qreal lineX = fontMetrics().averageCharWidth() * d->m_visibleWrapColumn + offset.x() + 4;
-        painter.fillRect(QRectF(lineX, 0, viewportRect.width() - lineX, viewportRect.height()), blendColor);
-    }
-
     QTextBlock visibleCollapsedBlock;
     QPointF visibleCollapsedBlockOffset;
 
@@ -2056,7 +2060,7 @@ void BaseTextEditor::slotModificationChanged(bool m)
 
     QTextDocument *doc = document();
     TextEditDocumentLayout *documentLayout = qobject_cast(doc->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return);
     int oldLastSaveRevision = documentLayout->lastSaveRevision;
     documentLayout->lastSaveRevision = doc->revision();
 
@@ -2114,7 +2118,7 @@ void BaseTextEditor::extraAreaPaintEvent(QPaintEvent *e)
 {
     QTextDocument *doc = document();
     TextEditDocumentLayout *documentLayout = qobject_cast(doc->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return);
 
     QPalette pal = d->m_extraArea->palette();
     pal.setCurrentColorGroup(QPalette::Active);
@@ -2613,7 +2617,7 @@ void BaseTextEditor::ensureCursorVisible()
 void BaseTextEditor::toggleBlockVisible(const QTextBlock &block)
 {
     TextEditDocumentLayout *documentLayout = qobject_cast(document()->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return);
 
     bool visible = block.next().isVisible();
     TextBlockUserData::doCollapse(block, !visible);
@@ -2712,7 +2716,7 @@ void BaseTextEditor::handleHomeKey(bool anchor)
 void BaseTextEditor::handleBackspaceKey()
 {
     QTextCursor cursor = textCursor();
-    Q_ASSERT(!cursor.hasSelection());
+    QTC_ASSERT(!cursor.hasSelection(), return);
 
     const TextEditor::TabSettings &tabSettings = d->m_document->tabSettings();
     QTextBlock currentBlock = cursor.block();
@@ -2751,7 +2755,9 @@ void BaseTextEditor::handleBackspaceKey()
 void BaseTextEditor::format()
 {
     QTextCursor cursor = textCursor();
+    cursor.beginEditBlock();
     indent(document(), cursor, QChar::Null);
+    cursor.endEditBlock();
 }
 
 void BaseTextEditor::unCommentSelection()
@@ -3272,7 +3278,7 @@ void BaseTextEditor::setIfdefedOutBlocks(const QList
 {
     QTextDocument *doc = document();
     TextEditDocumentLayout *documentLayout = qobject_cast(doc->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return);
 
     bool needUpdate = false;
 
@@ -3317,18 +3323,15 @@ void BaseTextEditor::collapse()
 {
     QTextDocument *doc = document();
     TextEditDocumentLayout *documentLayout = qobject_cast(doc->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return);
     QTextBlock block = textCursor().block();
-    qDebug() << "collapse at block" << block.blockNumber();
     while (block.isValid()) {
-        qDebug() << "test block" << block.blockNumber();
         if (TextBlockUserData::canCollapse(block) && block.next().isVisible()) {
             if ((block.next().userState()) >> 8 <= (textCursor().block().userState() >> 8))
                 break;
         }
         block = block.previous();
     }
-    qDebug() << "found" << block.blockNumber();
     if (block.isValid()) {
         TextBlockUserData::doCollapse(block, false);
         d->moveCursorVisible();
@@ -3341,7 +3344,7 @@ void BaseTextEditor::expand()
 {
     QTextDocument *doc = document();
     TextEditDocumentLayout *documentLayout = qobject_cast(doc->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return);
     QTextBlock block = textCursor().block();
     while (block.isValid() && !block.isVisible())
         block = block.previous();
@@ -3355,7 +3358,7 @@ void BaseTextEditor::unCollapseAll()
 {
     QTextDocument *doc = document();
     TextEditDocumentLayout *documentLayout = qobject_cast(doc->documentLayout());
-    Q_ASSERT(documentLayout);
+    QTC_ASSERT(documentLayout, return);
 
     QTextBlock block = doc->firstBlock();
     bool makeVisible = true;
diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h
index 40454a9c7d4..1219439fc98 100644
--- a/src/plugins/texteditor/basetexteditor.h
+++ b/src/plugins/texteditor/basetexteditor.h
@@ -329,6 +329,8 @@ public slots:
     void selectBlockUp();
     void selectBlockDown();
 
+    void cleanWhitespace();
+
 signals:
     void changed();
 
diff --git a/src/plugins/texteditor/basetextmark.cpp b/src/plugins/texteditor/basetextmark.cpp
index 07af3577187..d3ec41eb293 100644
--- a/src/plugins/texteditor/basetextmark.cpp
+++ b/src/plugins/texteditor/basetextmark.cpp
@@ -60,9 +60,8 @@ void BaseTextMark::init()
     Core::EditorManager *em = ExtensionSystem::PluginManager::instance()->getObject()->editorManager();
     connect(em, SIGNAL(editorOpened(Core::IEditor *)), this, SLOT(editorOpened(Core::IEditor *)));
 
-    foreach(Core::IEditor *editor, em->openedEditors()) {
+    foreach (Core::IEditor *editor, em->openedEditors())
         editorOpened(editor);
-    }
 }
 
 void BaseTextMark::editorOpened(Core::IEditor *editor)
@@ -132,7 +131,6 @@ void BaseTextMark::moveMark(const QString & /* filename */, int /* line */)
     delete m_internalMark;
     m_internalMark = 0;
 
-    foreach(Core::IEditor *editor, em->openedEditors()) {
+    foreach (Core::IEditor *editor, em->openedEditors())
         editorOpened(editor);
-    }
 }
diff --git a/src/plugins/texteditor/codecselector.cpp b/src/plugins/texteditor/codecselector.cpp
index a8ff2e68bc3..3dcdf9f3735 100644
--- a/src/plugins/texteditor/codecselector.cpp
+++ b/src/plugins/texteditor/codecselector.cpp
@@ -87,15 +87,15 @@ CodecSelector::CodecSelector(QWidget *parent, BaseTextDocument *doc)
     QList mibs = QTextCodec::availableMibs();
     qSort(mibs);
     QList sortedMibs;
-    foreach(int mib, mibs)
+    foreach (int mib, mibs)
         if (mib >= 0)
             sortedMibs += mib;
-    foreach(int mib, mibs)
+    foreach (int mib, mibs)
         if (mib < 0)
             sortedMibs += mib;
 
     int currentIndex = -1;
-    foreach(int mib, sortedMibs) {
+    foreach (int mib, sortedMibs) {
         QTextCodec *c = QTextCodec::codecForMib(mib);
         if (!buf.isEmpty()) {
 
@@ -109,9 +109,8 @@ CodecSelector::CodecSelector(QWidget *parent, BaseTextDocument *doc)
                 continue;
         }
         QString names = QString::fromLatin1(c->name());
-        foreach(QByteArray alias, c->aliases()) {
+        foreach (QByteArray alias, c->aliases())
             names += QLatin1String(" / ") + QString::fromLatin1(alias);
-        }
         if (doc->codec() == c)
             currentIndex = encodings.count();
         encodings << names;
diff --git a/src/plugins/texteditor/completionsupport.cpp b/src/plugins/texteditor/completionsupport.cpp
index 38c017040e9..e7f6a5879a0 100644
--- a/src/plugins/texteditor/completionsupport.cpp
+++ b/src/plugins/texteditor/completionsupport.cpp
@@ -37,6 +37,7 @@
 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -103,7 +104,7 @@ void CompletionSupport::autoComplete(ITextEditable *editor, bool forced)
         m_startPosition = m_completionCollector->startCompletion(editor);
         completionItems = getCompletions();
 
-        Q_ASSERT(m_startPosition != -1 || completionItems.size() == 0);
+        QTC_ASSERT(m_startPosition != -1 || completionItems.size() == 0, return);
 
         if (completionItems.isEmpty()) {
             cleanupCompletions();
diff --git a/src/plugins/texteditor/completionwidget.cpp b/src/plugins/texteditor/completionwidget.cpp
index ae296dca557..be2a2091c37 100644
--- a/src/plugins/texteditor/completionwidget.cpp
+++ b/src/plugins/texteditor/completionwidget.cpp
@@ -36,6 +36,7 @@
 #include "icompletioncollector.h"
 
 #include 
+#include 
 
 #include 
 #include 
@@ -107,7 +108,7 @@ CompletionWidget::CompletionWidget(CompletionSupport *support, ITextEditable *ed
       m_model(0),
       m_support(support)
 {
-    Q_ASSERT(m_editorWidget);
+    QTC_ASSERT(m_editorWidget, return);
 
     setUniformItemSizes(true);
     setSelectionBehavior(QAbstractItemView::SelectItems);
diff --git a/src/plugins/texteditor/fontsettings.cpp b/src/plugins/texteditor/fontsettings.cpp
index bbde495f8dd..28181654174 100644
--- a/src/plugins/texteditor/fontsettings.cpp
+++ b/src/plugins/texteditor/fontsettings.cpp
@@ -34,6 +34,8 @@
 #include "fontsettings.h"
 #include "fontsettingspage.h"
 
+#include 
+
 #include 
 #include 
 
@@ -133,11 +135,13 @@ bool Format::equals(const Format &f) const
     return m_foreground ==  f.m_foreground && m_background == f.m_background &&
            m_bold == f.m_bold && m_italic == f.m_italic;
 }
+
 // -- FontSettings
-FontSettings::FontSettings(const FormatDescriptions & /* fd */) :
+FontSettings::FontSettings(const FormatDescriptions &fd) :
     m_family(defaultFixedFontFamily()),
     m_fontSize(DEFAULT_FONT_SIZE)
 {
+    Q_UNUSED(fd);
 }
 
 void FontSettings::clear()
@@ -152,7 +156,7 @@ void FontSettings::toSettings(const QString &category,
                               QSettings *s) const
 {
     const int numFormats = m_formats.size();
-    Q_ASSERT(descriptions.size() == numFormats);
+    QTC_ASSERT(descriptions.size() == numFormats, /**/);
     s->beginGroup(category);
     if (m_family != defaultFixedFontFamily() || s->contains(QLatin1String(fontFamilyKey)))
         s->setValue(QLatin1String(fontFamilyKey), m_family);
diff --git a/src/plugins/texteditor/tabsettings.cpp b/src/plugins/texteditor/tabsettings.cpp
index f87ab2ac8cf..19145a7cd97 100644
--- a/src/plugins/texteditor/tabsettings.cpp
+++ b/src/plugins/texteditor/tabsettings.cpp
@@ -132,7 +132,7 @@ bool TabSettings::isIndentationClean(const QString &text) const
 
         if (c == QLatin1Char(' ')) {
             ++spaceCount;
-            if (spaceCount == m_tabSize)
+            if (!m_spacesForTabs && spaceCount == m_tabSize)
                 return false;
         } else if (c == QLatin1Char('\t')) {
             if (m_spacesForTabs || spaceCount != m_indentSize)
diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp
index 635f9654576..12fc7d1fac5 100644
--- a/src/plugins/texteditor/texteditoractionhandler.cpp
+++ b/src/plugins/texteditor/texteditoractionhandler.cpp
@@ -42,6 +42,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -62,7 +63,7 @@ TextEditorActionHandler::TextEditorActionHandler(Core::ICore *core,
 {
     m_undoAction = m_redoAction = m_copyAction = m_cutAction = m_pasteAction
                  = m_selectAllAction = m_gotoAction = m_printAction = m_formatAction
-                 = m_visualizeWhitespaceAction = m_textWrappingAction
+                 = m_visualizeWhitespaceAction = m_cleanWhitespaceAction = m_textWrappingAction
                  = m_unCommentSelectionAction = m_unCollapseAllAction
                  = m_collapseAction = m_expandAction
                  = m_deleteLineAction = m_selectEncodingAction
@@ -127,17 +128,23 @@ void TextEditorActionHandler::createActions()
     connect(m_formatAction, SIGNAL(triggered(bool)), this, SLOT(formatAction()));
 
 
-    m_visualizeWhitespaceAction = new QAction(tr("Visualize &Whitespace"), this);
+    m_visualizeWhitespaceAction = new QAction(tr("&Visualize Whitespace"), this);
     m_visualizeWhitespaceAction->setCheckable(true);
     command = am->registerAction(m_visualizeWhitespaceAction,
                                                  TextEditor::Constants::VISUALIZE_WHITESPACE, m_contextId);
 #ifndef Q_OS_MAC
     command->setDefaultKeySequence(QKeySequence(tr("Ctrl+E, Ctrl+V")));
 #endif
-
     advancedMenu->addAction(command);
     connect(m_visualizeWhitespaceAction, SIGNAL(triggered(bool)), this, SLOT(setVisualizeWhitespace(bool)));
 
+    m_cleanWhitespaceAction = new QAction(tr("Clean Whitespace"), this);
+    command = am->registerAction(m_cleanWhitespaceAction,
+                                 TextEditor::Constants::CLEAN_WHITESPACE, m_contextId);
+
+    advancedMenu->addAction(command);
+    connect(m_cleanWhitespaceAction, SIGNAL(triggered()), this, SLOT(cleanWhitespace()));
+
     m_textWrappingAction = new QAction(tr("Enable Text &Wrapping"), this);
     m_textWrappingAction->setCheckable(true);
     command = am->registerAction(m_textWrappingAction,
@@ -284,6 +291,7 @@ void TextEditorActionHandler::updateActions(UpdateMode um)
     m_visualizeWhitespaceAction->setEnabled(um != NoEditor);
     if (m_currentEditor)
         m_visualizeWhitespaceAction->setChecked(m_currentEditor->displaySettings().m_visualizeWhitespace);
+    m_cleanWhitespaceAction->setEnabled(um != NoEditor);
     if (m_textWrappingAction) {
         m_textWrappingAction->setEnabled(um != NoEditor);
         if (m_currentEditor)
@@ -316,46 +324,10 @@ void TextEditorActionHandler::updateCopyAction()
         m_copyAction->setEnabled(hasCopyableText);
 }
 
-void TextEditorActionHandler::undoAction()
-{
-    if (m_currentEditor)
-        m_currentEditor->undo();
-}
-
-void TextEditorActionHandler::redoAction()
-{
-    if (m_currentEditor)
-        m_currentEditor->redo();
-}
-
-void TextEditorActionHandler::copyAction()
-{
-    if (m_currentEditor)
-        m_currentEditor->copy();
-}
-
-void TextEditorActionHandler::cutAction()
-{
-    if (m_currentEditor)
-        m_currentEditor->cut();
-}
-
-void TextEditorActionHandler::pasteAction()
-{
-    if (m_currentEditor)
-        m_currentEditor->paste();
-}
-
-void TextEditorActionHandler::selectAllAction()
-{
-    if (m_currentEditor)
-        m_currentEditor->selectAll();
-}
-
 void TextEditorActionHandler::gotoAction()
 {
     QuickOpen::QuickOpenManager *quickopen = QuickOpen::QuickOpenManager::instance();
-    Q_ASSERT(quickopen);
+    QTC_ASSERT(quickopen, return);
     QString shortcut = TextEditorPlugin::instance()->lineNumberFilter()->shortcutString();
     quickopen->show(shortcut + " ", 2, 13);
 }
@@ -366,13 +338,6 @@ void TextEditorActionHandler::printAction()
         m_currentEditor->print(m_core->printer());
 }
 
-void TextEditorActionHandler::formatAction()
-{
-    if (m_currentEditor)
-        m_currentEditor->format();
-}
-
-
 void TextEditorActionHandler::setVisualizeWhitespace(bool checked)
 {
     if (m_currentEditor) {
@@ -402,6 +367,15 @@ void TextEditorActionHandler::setTextWrapping(bool checked)
         m_currentEditor->funcname2 ();\
 }
 
+
+FUNCTION2(undoAction, undo)
+FUNCTION2(redoAction, redo)
+FUNCTION2(copyAction, copy)
+FUNCTION2(cutAction, cut)
+FUNCTION2(pasteAction, paste)
+FUNCTION2(formatAction, format)
+FUNCTION2(selectAllAction, selectAll)
+FUNCTION(cleanWhitespace)
 FUNCTION(unCommentSelection)
 FUNCTION(deleteLine)
 FUNCTION(unCollapseAll)
diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h
index 9a8c7b9f57c..520ae26ddf6 100644
--- a/src/plugins/texteditor/texteditoractionhandler.h
+++ b/src/plugins/texteditor/texteditoractionhandler.h
@@ -100,6 +100,7 @@ private slots:
     void printAction();
     void formatAction();
     void setVisualizeWhitespace(bool);
+    void cleanWhitespace();
     void setTextWrapping(bool);
     void unCommentSelection();
     void unCollapseAll();
@@ -128,6 +129,7 @@ private:
     QAction *m_printAction;
     QAction *m_formatAction;
     QAction *m_visualizeWhitespaceAction;
+    QAction *m_cleanWhitespaceAction;
     QAction *m_textWrappingAction;
     QAction *m_unCommentSelectionAction;
     QAction *m_unCollapseAllAction;
diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h
index 9ac9fdff0e4..192a07c257e 100644
--- a/src/plugins/texteditor/texteditorconstants.h
+++ b/src/plugins/texteditor/texteditorconstants.h
@@ -40,6 +40,7 @@ namespace Constants {
 const char * const C_TEXTEDITOR          = "Text Editor";
 const char * const COMPLETE_THIS         = "TextEditor.CompleteThis";
 const char * const VISUALIZE_WHITESPACE  = "TextEditor.VisualizeWhitespace";
+const char * const CLEAN_WHITESPACE      = "TextEditor.CleanWhitespace";
 const char * const TEXT_WRAPPING         = "TextEditor.TextWrapping";
 const char * const UN_COMMENT_SELECTION  = "TextEditor.UnCommentSelection";
 const char * const COLLAPSE              = "TextEditor.Collapse";
diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp
index f50d6dacc96..ff102b53117 100644
--- a/src/plugins/texteditor/texteditorplugin.cpp
+++ b/src/plugins/texteditor/texteditorplugin.cpp
@@ -50,6 +50,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -67,7 +68,7 @@ TextEditorPlugin::TextEditorPlugin() :
     m_editorFactory(0),
     m_lineNumberFilter(0)
 {
-    Q_ASSERT(!m_instance);
+    QTC_ASSERT(!m_instance, return);
     m_instance = this;
 }
 
diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp
index 3350e2bee16..20b4e1037fe 100644
--- a/src/plugins/texteditor/texteditorsettings.cpp
+++ b/src/plugins/texteditor/texteditorsettings.cpp
@@ -41,6 +41,8 @@
 #include "texteditorconstants.h"
 #include "texteditorplugin.h"
 
+#include 
+
 #include 
 
 using namespace TextEditor;
@@ -52,7 +54,7 @@ TextEditorSettings::TextEditorSettings(Internal::TextEditorPlugin *plugin,
                                        QObject *parent)
     : QObject(parent)
 {
-    Q_ASSERT(!m_instance);
+    QTC_ASSERT(!m_instance, return);
     m_instance = this;
 
     ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
diff --git a/src/plugins/vcsbase/diffhighlighter.cpp b/src/plugins/vcsbase/diffhighlighter.cpp
index 60f219842fc..f5fe9fff92d 100644
--- a/src/plugins/vcsbase/diffhighlighter.cpp
+++ b/src/plugins/vcsbase/diffhighlighter.cpp
@@ -33,6 +33,8 @@
 
 #include "diffhighlighter.h"
 
+#include 
+
 #include 
 #include 
 #include 
@@ -67,7 +69,7 @@ DiffHighlighterPrivate::DiffHighlighterPrivate(const QRegExp &filePattern) :
     m_diffInIndicator(QLatin1Char('+')),
     m_diffOutIndicator(QLatin1Char('-'))
 {
-    Q_ASSERT(filePattern.isValid());
+    QTC_ASSERT(filePattern.isValid(), /**/);
 }
 
 DiffFormats DiffHighlighterPrivate::analyzeLine(const QString &text) const
diff --git a/src/tools/makespy/main.cpp b/src/tools/makespy/main.cpp
index 9cce394f0a0..e8ebd7dea09 100644
--- a/src/tools/makespy/main.cpp
+++ b/src/tools/makespy/main.cpp
@@ -108,7 +108,6 @@ void MakeProcess::handleOutput()
     }
 }
 
-
 void MakeProcess::handleMakeLine(const QString &line)
 {
     int pos1 = line.indexOf('`');
diff --git a/tests/auto/profilereader/sync b/tests/auto/profilereader/sync
index f0950addcc8..9dcbc91dcae 100755
--- a/tests/auto/profilereader/sync
+++ b/tests/auto/profilereader/sync
@@ -53,7 +53,7 @@ while ( @ARGV ) {
     if ("$arg" eq "-h" || "$arg" eq "-help" || "$arg" eq "--help" || "$arg" eq "?" || "$arg" eq "/?" || "$arg" eq "-?") {
 	showUsage();
 	exit(0);
-    } elsif("$arg" eq "-qtdir") {
+    } elsif ("$arg" eq "-qtdir") {
 	$qtSrcTree = shift @ARGV;
     } else {
 	print "Unknown option: $arg\n";
diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp
index 234c9684a39..fd3c730f41d 100644
--- a/tests/manual/cplusplus/main.cpp
+++ b/tests/manual/cplusplus/main.cpp
@@ -31,17 +31,17 @@
 **
 ***************************************************************************/
 
-#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
 
 #include 
 #include 
 
-#include 
-#include 
-#include 
-#include 
-#include 
-
 int main(int, char *[])
 {
     Control control;