forked from qt-creator/qt-creator
		
	Added ToolTip support for CDB.
Make debugger tooltip API more general, have the engines check the correct file type, figure out the expression and context from the text editor. Put common functionality in watchutils.cpp. In the CDB engine, check whether a tooltip expression is a known variable within the stack frame context. If so, retrieve via symbol group or dumpers. Cache by function and expression. Reviewed-by: hjk <qtc-committer@nokia.com>
This commit is contained in:
		
							
								
								
									
										74
									
								
								src/plugins/cpptools/abstracteditorsupport.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								src/plugins/cpptools/abstracteditorsupport.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| /************************************************************************** | ||||
| ** | ||||
| ** This file is part of Qt Creator | ||||
| ** | ||||
| ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). | ||||
| ** | ||||
| ** Contact:  Qt Software Information (qt-info@nokia.com) | ||||
| ** | ||||
| ** Commercial Usage | ||||
| ** | ||||
| ** Licensees holding valid Qt Commercial licenses may use this file in | ||||
| ** accordance with the Qt Commercial License Agreement provided with the | ||||
| ** Software or, alternatively, in accordance with the terms contained in | ||||
| ** a written agreement between you and Nokia. | ||||
| ** | ||||
| ** GNU Lesser General Public License Usage | ||||
| ** | ||||
| ** Alternatively, this file may be used under the terms of the GNU Lesser | ||||
| ** General Public License version 2.1 as published by the Free Software | ||||
| ** Foundation and appearing in the file LICENSE.LGPL included in the | ||||
| ** packaging of this file.  Please review the following information to | ||||
| ** ensure the GNU Lesser General Public License version 2.1 requirements | ||||
| ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | ||||
| ** | ||||
| ** If you are unsure which license is appropriate for your use, please | ||||
| ** contact the sales department at qt-sales@nokia.com. | ||||
| ** | ||||
| **************************************************************************/ | ||||
|  | ||||
| #include "cppmodelmanagerinterface.h" | ||||
|  | ||||
| #include <cplusplus/Overview.h> | ||||
| #include <cplusplus/CppDocument.h> | ||||
| #include <cplusplus/ExpressionUnderCursor.h> | ||||
| #include <CoreTypes.h> | ||||
| #include <Names.h> | ||||
| #include <Symbols.h> | ||||
| #include <Scope.h> | ||||
|  | ||||
| namespace CppTools { | ||||
|  | ||||
| AbstractEditorSupport::AbstractEditorSupport(CppModelManagerInterface *modelmanager) : | ||||
|     m_modelmanager(modelmanager) | ||||
| { | ||||
| } | ||||
|  | ||||
| AbstractEditorSupport::~AbstractEditorSupport() | ||||
| { | ||||
| } | ||||
|  | ||||
| void AbstractEditorSupport::updateDocument() | ||||
| { | ||||
|     m_modelmanager->updateSourceFiles(QStringList(fileName())); | ||||
| } | ||||
|  | ||||
| QString AbstractEditorSupport::functionAt(const CppModelManagerInterface *modelManager, | ||||
|                                           const QString &fileName, | ||||
|                                           int line, int column) | ||||
| { | ||||
|     const CPlusPlus::Snapshot snapshot = modelManager->snapshot(); | ||||
|     const CPlusPlus::Document::Ptr document = snapshot.value(fileName); | ||||
|     if (!document) | ||||
|         return QString(); | ||||
|     if (const CPlusPlus::Symbol *symbol = document->findSymbolAt(line, column)) | ||||
|         if (const CPlusPlus::Scope *scope = symbol->scope()) | ||||
|             if (const CPlusPlus::Scope *functionScope = scope->enclosingFunctionScope()) | ||||
|                 if (const CPlusPlus::Symbol *function = functionScope->owner()) { | ||||
|                     const CPlusPlus::Overview o; | ||||
|                     return o.prettyName(function->name()); | ||||
|                 } | ||||
|     return QString(); | ||||
| } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user