diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2012-03-17 13:26:27 +0100 |
---|---|---|
committer | Leandro Melo <leandro.melo@nokia.com> | 2012-06-06 14:10:07 +0200 |
commit | 44a3a5e07024f365539b9ad977b195a458d5e61a (patch) | |
tree | eb548d2f9041e4fc33551bf70abe61fe68174e8e /src | |
parent | 6147419f8712fda79539b9a94305ff04a22f73e5 (diff) | |
download | qt-creator-44a3a5e07024f365539b9ad977b195a458d5e61a.tar.gz |
Implemented Rename Macro Usages
Works the same way as Rename Usages for C++ Symbols.
For now, no Search Again as this requieres further work.
Task-number: QTCREATORBUG-413
Change-Id: I09e85ea1e8c247f5ce0b6bc566aba8018c1569e4
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/cppeditor/cppeditor.cpp | 12 | ||||
-rw-r--r-- | src/plugins/cpptools/ModelManagerInterface.h | 1 | ||||
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.cpp | 19 | ||||
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.h | 3 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 5 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.h | 1 |
6 files changed, 36 insertions, 5 deletions
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 668886aafc..11d8360067 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -742,10 +742,14 @@ void CPPEditorWidget::renameUsagesNow(const QString &replacement) info.snapshot = CppModelManagerInterface::instance()->snapshot(); info.snapshot.insert(info.doc); - CanonicalSymbol cs(this, info); - if (Symbol *canonicalSymbol = cs(textCursor())) - if (canonicalSymbol->identifier() != 0) - m_modelManager->renameUsages(canonicalSymbol, cs.context(), replacement); + if (const Macro *macro = findCanonicalMacro(textCursor(), info.doc)) { + m_modelManager->renameMacroUsages(*macro, replacement); + } else { + CanonicalSymbol cs(this, info); + if (Symbol *canonicalSymbol = cs(textCursor())) + if (canonicalSymbol->identifier() != 0) + m_modelManager->renameUsages(canonicalSymbol, cs.context(), replacement); + } } void CPPEditorWidget::renameUsages() diff --git a/src/plugins/cpptools/ModelManagerInterface.h b/src/plugins/cpptools/ModelManagerInterface.h index 8bab7086e8..754579f93c 100644 --- a/src/plugins/cpptools/ModelManagerInterface.h +++ b/src/plugins/cpptools/ModelManagerInterface.h @@ -209,6 +209,7 @@ public: const QString &replacement = QString()) = 0; virtual void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context) = 0; + virtual void renameMacroUsages(const CPlusPlus::Macro ¯o, const QString &replacement = QString()) = 0; virtual void findMacroUsages(const CPlusPlus::Macro ¯o) = 0; virtual void setExtraDiagnostics(const QString &fileName, int key, diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 98a907b3f3..7b8a76a10d 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -646,11 +646,22 @@ static void findMacroUses_helper(QFutureInterface<Usage> &future, void CppFindReferences::findMacroUses(const Macro ¯o) { + findMacroUses(macro, QString(), false); +} + +void CppFindReferences::findMacroUses(const Macro ¯o, const QString &replacement, bool replace) +{ Find::SearchResult *search = Find::SearchResultWindow::instance()->startNewSearch( tr("C++ Macro Usages:"), QString(), macro.name(), - Find::SearchResultWindow::SearchOnly); + replace ? Find::SearchResultWindow::SearchAndReplace + : Find::SearchResultWindow::SearchOnly, + QLatin1String("CppEditor")); + + search->setTextToReplace(replacement); + connect(search, SIGNAL(replaceButtonClicked(QString,QList<Find::SearchResultItem>)), + SLOT(onReplaceButtonClicked(QString,QList<Find::SearchResultItem>))); Find::SearchResultWindow::instance()->popup(true); @@ -685,6 +696,12 @@ void CppFindReferences::findMacroUses(const Macro ¯o) connect(progress, SIGNAL(clicked()), search, SLOT(popup())); } +void CppFindReferences::renameMacroUses(const Macro ¯o, const QString &replacement) +{ + const QString textToReplace = replacement.isEmpty() ? macro.name() : replacement; + findMacroUses(macro, textToReplace, true); +} + DependencyTable CppFindReferences::updateDependencyTable(CPlusPlus::Snapshot snapshot) { DependencyTable oldDeps = dependencyTable(); diff --git a/src/plugins/cpptools/cppfindreferences.h b/src/plugins/cpptools/cppfindreferences.h index dfa7c114d0..4b4202297d 100644 --- a/src/plugins/cpptools/cppfindreferences.h +++ b/src/plugins/cpptools/cppfindreferences.h @@ -82,6 +82,7 @@ public: const QString &replacement = QString()); void findMacroUses(const CPlusPlus::Macro ¯o); + void renameMacroUses(const CPlusPlus::Macro ¯o, const QString &replacement = QString()); CPlusPlus::DependencyTable updateDependencyTable(CPlusPlus::Snapshot snapshot); @@ -97,6 +98,8 @@ private Q_SLOTS: private: void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context, const QString &replacement, bool replace); + void findMacroUses(const CPlusPlus::Macro ¯o, const QString &replacement, + bool replace); void findAll_helper(Find::SearchResult *search); CPlusPlus::DependencyTable dependencyTable() const; void setDependencyTable(const CPlusPlus::DependencyTable &newTable); diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 79f91cbea8..dbc5db3a4f 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -870,6 +870,11 @@ void CppModelManager::findMacroUsages(const CPlusPlus::Macro ¯o) m_findReferences->findMacroUses(macro); } +void CppModelManager::renameMacroUsages(const CPlusPlus::Macro ¯o, const QString &replacement) +{ + m_findReferences->renameMacroUses(macro, replacement); +} + CppModelManager::WorkingCopy CppModelManager::buildWorkingCopyList() { WorkingCopy workingCopy; diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index b0d08ff730..c165667a2f 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -129,6 +129,7 @@ public: virtual void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context); virtual void findMacroUsages(const CPlusPlus::Macro ¯o); + virtual void renameMacroUsages(const CPlusPlus::Macro ¯o, const QString &replacement); virtual void setExtraDiagnostics(const QString &fileName, int key, const QList<CPlusPlus::Document::DiagnosticMessage> &diagnostics); |