logic: Show overview of analyzed symbols after launch

* show analysed nodes as bundles in graph
* ellide node names longer than 50 chars
* sort nodes alphabetic in these bundles
* show stats of analysis in code
* error are displayed as well in overview
* added keywords overview and error
* project description can be set in .coatiproject file
* description can include links to symbols using [symbol] syntax
* updated documentation
* increased toc nesting in documentation
This commit is contained in:
Eberhard Graether
2016-01-25 17:02:48 +01:00
parent 8addbb2195
commit eb12d3cda1
45 changed files with 752 additions and 223 deletions
@@ -67,6 +67,18 @@ void UndoRedoController::handleMessage(MessageActivateNodes* message)
processCommand(command);
}
void UndoRedoController::handleMessage(MessageActivateTokenIds* message)
{
if (m_lastCommand.message && m_lastCommand.message->getType() == message->getType() && message->tokenIds.size() &&
static_cast<MessageActivateTokenIds*>(m_lastCommand.message.get())->tokenIds == message->tokenIds)
{
return;
}
Command command(std::make_shared<MessageActivateTokenIds>(*message), 0);
processCommand(command);
}
void UndoRedoController::handleMessage(MessageDeactivateEdge* message)
{
MessageBase* m = nullptr;
@@ -140,23 +152,9 @@ void UndoRedoController::handleMessage(MessageRefresh* message)
if (requiresActivateFallbackToken())
{
Id nodeId = m_storageAccess->getIdForNodeWithSearchNameHierarchy(NameHierarchy("main"));
if (!nodeId)
{
nodeId = m_storageAccess->getIdForFirstNode();
}
if (nodeId)
{
MessageActivateNodes m;
m.addNode(
nodeId,
m_storageAccess->getNodeTypeForNodeWithId(nodeId),
m_storageAccess->getNameHierarchyForNodeWithId(nodeId)
);
m.isFromSystem = true;
m.dispatch();
}
SearchMatch match = SearchMatch::createCommand(SearchMatch::COMMAND_ALL);
MessageSearch msg(std::vector<SearchMatch>(1, match));
msg.dispatch();
}
else
{