ui: Added custom tooltipping to code and graph (issue #195)

* Tooltips show node type with access specifier, reference count and fully qualified name
* Fields and global variables include the type name
* Methods and functinos show whole signature. Gets broken into multiple lines if too long.

Included changes:

* Upgraded to C++14
* fixed clang warnings
* Pass location of .srctrlprj file to build.sh script to load on launch
* Split off QtCodeField for showing highlighted and annotated code fom QtCodeArea
* removed TokenComponentSignature
* added TaskDecoratorDelay

bug id = 195
This commit is contained in:
Eberhard Graether
2017-07-31 12:45:22 +02:00
parent 01b1e0d6f1
commit 01864b4d0c
79 changed files with 2340 additions and 1009 deletions
@@ -8,7 +8,6 @@
#include "utility/messaging/type/MessageGraphNodeMove.h"
#include "data/graph/token_component/TokenComponentFilePath.h"
#include "data/graph/token_component/TokenComponentSignature.h"
QtGraphNodeData::QtGraphNodeData(const Node* data, const std::string& name, bool hasParent, bool childVisible, bool hasQualifier)
: m_data(data)
@@ -18,39 +17,6 @@ QtGraphNodeData::QtGraphNodeData(const Node* data, const std::string& name, bool
this->setAcceptHoverEvents(true);
this->setName(name);
std::string toolTip = data->getReadableTypeString();
if (!data->isDefined() && data->isType(Node::NODE_FILE))
{
toolTip = "incomplete " + toolTip;
}
else if (!data->isDefined() && !data->isType(Node::NODE_NON_INDEXED))
{
toolTip = "non-indexed " + toolTip;
}
else if (data->isImplicit())
{
toolTip = "implicit " + toolTip;
}
if (data->isType(Node::NODE_FUNCTION | Node::NODE_METHOD))
{
TokenComponentSignature* sig = data->getComponent<TokenComponentSignature>();
if (sig)
{
toolTip += ": " + sig->getSignature();
}
}
else
{
FilePath path = getFilePath();
if (!path.empty())
{
toolTip += ": " + path.str();
}
}
this->setToolTip(QString::fromStdString(toolTip));
}
QtGraphNodeData::~QtGraphNodeData()
@@ -113,7 +79,7 @@ void QtGraphNodeData::updateStyle()
void QtGraphNodeData::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
MessageFocusIn(std::vector<Id>(1, m_data->getId())).dispatch();
MessageFocusIn(std::vector<Id>(1, m_data->getId()), TOOLTIP_ORIGIN_GRAPH).dispatch();
}
void QtGraphNodeData::hoverLeaveEvent(QGraphicsSceneHoverEvent* event)