Added constant values for enumerators in their tooltips.

Change-Id: I75c5dc43832d42588302bc0dadefcd4b6e2addc6
Reviewed-on: http://codereview.qt.nokia.com/414
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
This commit is contained in:
Erik Verbruggen
2011-06-09 09:30:32 +02:00
parent b9742018ee
commit f37e589e94
2 changed files with 54 additions and 23 deletions

View File

@@ -35,6 +35,7 @@
#include <coreplugin/ifile.h> #include <coreplugin/ifile.h>
#include <FullySpecifiedType.h> #include <FullySpecifiedType.h>
#include <Literals.h>
#include <Names.h> #include <Names.h>
#include <CoreTypes.h> #include <CoreTypes.h>
#include <Scope.h> #include <Scope.h>
@@ -192,8 +193,10 @@ void CppElementEvaluator::handleLookupItemMatch(const Snapshot &snapshot,
if (m_lookupBaseClasses) if (m_lookupBaseClasses)
cppClass->lookupBases(declaration, context); cppClass->lookupBases(declaration, context);
m_element = QSharedPointer<CppElement>(cppClass); m_element = QSharedPointer<CppElement>(cppClass);
} else if (declaration->isEnum() || declaration->enclosingScope()->isEnum()) { } else if (Enum *enumDecl = declaration->asEnum()) {
m_element = QSharedPointer<CppElement>(new CppEnum(declaration)); m_element = QSharedPointer<CppElement>(new CppEnum(enumDecl));
} else if (EnumeratorDeclaration *enumerator = dynamic_cast<EnumeratorDeclaration *>(declaration)) {
m_element = QSharedPointer<CppElement>(new CppEnumerator(enumerator));
} else if (declaration->isTypedef()) { } else if (declaration->isTypedef()) {
m_element = QSharedPointer<CppElement>(new CppTypedef(declaration)); m_element = QSharedPointer<CppElement>(new CppTypedef(declaration));
} else if (declaration->isFunction() || (type.isValid() && type->isFunctionType())) { } else if (declaration->isFunction() || (type.isValid() && type->isFunctionType())) {
@@ -449,18 +452,11 @@ CppFunction::~CppFunction()
{} {}
// CppEnum // CppEnum
CppEnum::CppEnum(Symbol *declaration) : CppDeclarableElement(declaration) CppEnum::CppEnum(Enum *declaration)
: CppDeclarableElement(declaration)
{ {
setHelpCategory(TextEditor::HelpItem::Enum); setHelpCategory(TextEditor::HelpItem::Enum);
if (declaration->enclosingScope()->isEnum()) {
Symbol *enumSymbol = declaration->enclosingScope()->asEnum();
Overview overview;
setHelpMark(overview.prettyName(enumSymbol->name()));
setTooltip(overview.prettyName(LookupContext::fullyQualifiedName(enumSymbol)));
} else {
setTooltip(qualifiedName()); setTooltip(qualifiedName());
}
} }
CppEnum::~CppEnum() CppEnum::~CppEnum()
@@ -546,3 +542,31 @@ bool CppTemplate::isFunctionTemplate() const
{ {
return !m_isClassTemplate; return !m_isClassTemplate;
} }
CppEnumerator::CppEnumerator(CPlusPlus::EnumeratorDeclaration *declaration)
: CppDeclarableElement(declaration)
{
setHelpCategory(TextEditor::HelpItem::Enum);
Overview overview;
Symbol *enumSymbol = declaration->enclosingScope()->asEnum();
const QString enumName = overview.prettyName(LookupContext::fullyQualifiedName(enumSymbol));
const QString enumeratorName = overview.prettyName(declaration->name());
QString enumeratorValue;
if (const StringLiteral *value = declaration->constantValue()) {
enumeratorValue = QString::fromUtf8(value->chars(), value->size());
}
setHelpMark(overview.prettyName(enumSymbol->name()));
QString tooltip = enumeratorName;
if (!enumName.isEmpty())
tooltip.prepend(enumName + QLatin1Char(' '));
if (!enumeratorValue.isEmpty())
tooltip.append(QLatin1String(" = ") + enumeratorValue);
setTooltip(tooltip);
}
CppEnumerator::~CppEnumerator()
{}

View File

@@ -64,7 +64,7 @@ class CppElement;
class CppElementEvaluator class CppElementEvaluator
{ {
public: public:
CppElementEvaluator(CPPEditorWidget *editor); explicit CppElementEvaluator(CPPEditorWidget *editor);
void setTextCursor(const QTextCursor &tc); void setTextCursor(const QTextCursor &tc);
void setLookupBaseClasses(const bool lookup); void setLookupBaseClasses(const bool lookup);
@@ -124,7 +124,7 @@ private:
class Unknown : public CppElement class Unknown : public CppElement
{ {
public: public:
Unknown(const QString &type); explicit Unknown(const QString &type);
virtual ~Unknown(); virtual ~Unknown();
const QString &type() const; const QString &type() const;
@@ -136,7 +136,7 @@ private:
class CppInclude : public CppElement class CppInclude : public CppElement
{ {
public: public:
CppInclude(const CPlusPlus::Document::Include &includeFile); explicit CppInclude(const CPlusPlus::Document::Include &includeFile);
virtual ~CppInclude(); virtual ~CppInclude();
const QString &path() const; const QString &path() const;
@@ -150,14 +150,14 @@ private:
class CppMacro : public CppElement class CppMacro : public CppElement
{ {
public: public:
CppMacro(const CPlusPlus::Macro &macro); explicit CppMacro(const CPlusPlus::Macro &macro);
virtual ~CppMacro(); virtual ~CppMacro();
}; };
class CppDeclarableElement : public CppElement class CppDeclarableElement : public CppElement
{ {
public: public:
CppDeclarableElement(CPlusPlus::Symbol *declaration); explicit CppDeclarableElement(CPlusPlus::Symbol *declaration);
virtual ~CppDeclarableElement(); virtual ~CppDeclarableElement();
const QString &name() const; const QString &name() const;
@@ -181,14 +181,14 @@ private:
class CppNamespace : public CppDeclarableElement class CppNamespace : public CppDeclarableElement
{ {
public: public:
CppNamespace(CPlusPlus::Symbol *declaration); explicit CppNamespace(CPlusPlus::Symbol *declaration);
virtual ~CppNamespace(); virtual ~CppNamespace();
}; };
class CppClass : public CppDeclarableElement class CppClass : public CppDeclarableElement
{ {
public: public:
CppClass(CPlusPlus::Symbol *declaration); explicit CppClass(CPlusPlus::Symbol *declaration);
virtual ~CppClass(); virtual ~CppClass();
void lookupBases(CPlusPlus::Symbol *declaration, const CPlusPlus::LookupContext &context); void lookupBases(CPlusPlus::Symbol *declaration, const CPlusPlus::LookupContext &context);
@@ -202,21 +202,21 @@ private:
class CppFunction : public CppDeclarableElement class CppFunction : public CppDeclarableElement
{ {
public: public:
CppFunction(CPlusPlus::Symbol *declaration); explicit CppFunction(CPlusPlus::Symbol *declaration);
virtual ~CppFunction(); virtual ~CppFunction();
}; };
class CppEnum : public CppDeclarableElement class CppEnum : public CppDeclarableElement
{ {
public: public:
CppEnum(CPlusPlus::Symbol *declaration); explicit CppEnum(CPlusPlus::Enum *declaration);
virtual ~CppEnum(); virtual ~CppEnum();
}; };
class CppTypedef : public CppDeclarableElement class CppTypedef : public CppDeclarableElement
{ {
public: public:
CppTypedef(CPlusPlus::Symbol *declaration); explicit CppTypedef(CPlusPlus::Symbol *declaration);
virtual ~CppTypedef(); virtual ~CppTypedef();
}; };
@@ -232,7 +232,7 @@ public:
class CppTemplate : public CppDeclarableElement class CppTemplate : public CppDeclarableElement
{ {
public: public:
CppTemplate(CPlusPlus::Symbol *declaration); explicit CppTemplate(CPlusPlus::Symbol *declaration);
virtual ~CppTemplate(); virtual ~CppTemplate();
bool isClassTemplate() const; bool isClassTemplate() const;
@@ -242,6 +242,13 @@ private:
bool m_isClassTemplate; bool m_isClassTemplate;
}; };
class CppEnumerator : public CppDeclarableElement
{
public:
explicit CppEnumerator(CPlusPlus::EnumeratorDeclaration *declaration);
virtual ~CppEnumerator();
};
} // namespace Internal } // namespace Internal
} // namespace CppEditor } // namespace CppEditor