logic: Added namespaces to overview and fixed namespace activation
This commit is contained in:
@@ -88,18 +88,26 @@ void CodeController::handleMessage(MessageActivateAll* message)
|
||||
|
||||
void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
std::vector<Id> activeTokenIds = message->tokenIds;
|
||||
Id declarationId = 0; // 0 means that no token is found.
|
||||
|
||||
if (activeTokenIds.size() == 1)
|
||||
{
|
||||
activeTokenIds = m_storageAccess->getActiveTokenIdsForId(activeTokenIds[0], &declarationId);
|
||||
}
|
||||
// TODO: what about declarationId if more than 1 token is active? FIX THIS!
|
||||
|
||||
CodeView* view = getView();
|
||||
view->setErrorMessages(std::vector<std::string>());
|
||||
|
||||
std::vector<Id> activeTokenIds =
|
||||
(message->originalTokenIds.size() > 0 ? message->originalTokenIds : message->tokenIds);
|
||||
|
||||
if (activeTokenIds.size() != 1)
|
||||
{
|
||||
view->clear();
|
||||
return;
|
||||
}
|
||||
|
||||
Id declarationId = 0; // 0 means that no token is found.
|
||||
activeTokenIds = m_storageAccess->getActiveTokenIdsForId(activeTokenIds[0], &declarationId);
|
||||
|
||||
if (message->originalTokenIds.size() > 0)
|
||||
{
|
||||
declarationId = 0;
|
||||
}
|
||||
|
||||
if (message->isEdge)
|
||||
{
|
||||
view->showFirstActiveSnippet(activeTokenIds, message->isLast());
|
||||
|
||||
@@ -67,10 +67,16 @@ void GraphController::handleMessage(MessageActivateTokens* message)
|
||||
|
||||
std::vector<Id> tokenIds = utility::concat(m_activeNodeIds, m_activeEdgeIds);
|
||||
|
||||
std::shared_ptr<Graph> graph = m_storageAccess->getGraphForActiveTokenIds(tokenIds);
|
||||
std::shared_ptr<Graph> graph =
|
||||
m_storageAccess->getGraphForActiveTokenIds(tokenIds, message->originalTokenIds.size() > 0);
|
||||
|
||||
createDummyGraphForTokenIds(tokenIds, graph);
|
||||
|
||||
if (message->originalTokenIds.size() > 0)
|
||||
{
|
||||
deactivateNodesRecursive(&m_dummyNodes);
|
||||
}
|
||||
|
||||
bundleNodes();
|
||||
|
||||
layoutNesting();
|
||||
@@ -434,6 +440,15 @@ void GraphController::setNodeVisibilityRecursiveTopDown(DummyNode& node, bool pa
|
||||
}
|
||||
}
|
||||
|
||||
void GraphController::deactivateNodesRecursive(std::vector<DummyNode>* nodes) const
|
||||
{
|
||||
for (DummyNode& node : *nodes)
|
||||
{
|
||||
node.active = false;
|
||||
deactivateNodesRecursive(&node.subNodes);
|
||||
}
|
||||
}
|
||||
|
||||
void GraphController::bundleNodes()
|
||||
{
|
||||
bundleNodesMatching(
|
||||
@@ -762,6 +777,7 @@ bool GraphController::isTypeUserNode(const DummyNode& node) const
|
||||
|
||||
void GraphController::bundleNodesByType()
|
||||
{
|
||||
BUNDLE_BY_TYPE(Node::NODE_NAMESPACE, "Namespaces");
|
||||
BUNDLE_BY_TYPE(Node::NODE_CLASS, "Classes");
|
||||
BUNDLE_BY_TYPE(Node::NODE_STRUCT, "Structs");
|
||||
|
||||
@@ -782,7 +798,6 @@ void GraphController::bundleNodesByType()
|
||||
BUNDLE_BY_TYPE(Node::NODE_ENUM_CONSTANT, "Enum Constants");
|
||||
BUNDLE_BY_TYPE(Node::NODE_TEMPLATE_PARAMETER_TYPE, "Template Parameter Types");
|
||||
BUNDLE_BY_TYPE(Node::NODE_UNDEFINED, "Undefined Symbols");
|
||||
BUNDLE_BY_TYPE(Node::NODE_NAMESPACE, "Namespaces");
|
||||
|
||||
for (DummyNode& node : m_dummyNodes)
|
||||
{
|
||||
|
||||
@@ -65,6 +65,7 @@ private:
|
||||
void setNodeActiveRecursive(DummyNode& node, const std::vector<Id>& activeTokenIds) const;
|
||||
bool setNodeVisibilityRecursiveBottomUp(DummyNode& node, bool noActive) const;
|
||||
void setNodeVisibilityRecursiveTopDown(DummyNode& node, bool parentExpanded) const;
|
||||
void deactivateNodesRecursive(std::vector<DummyNode>* nodes) const;
|
||||
|
||||
void bundleNodes();
|
||||
void bundleNodesMatching(std::function<bool(const DummyNode&)> matcher, size_t count, const std::string& name);
|
||||
|
||||
@@ -22,7 +22,10 @@ void SearchController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
if (!message->keepContent() && !message->isFromSearch)
|
||||
{
|
||||
getView()->setMatches(m_storageAccess->getSearchMatchesForTokenIds(message->tokenIds));
|
||||
const std::vector<Id>& tokenIds =
|
||||
(message->originalTokenIds.size() > 0 ? message->originalTokenIds : message->tokenIds);
|
||||
|
||||
getView()->setMatches(m_storageAccess->getSearchMatchesForTokenIds(tokenIds));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,11 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
||||
}
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> m;
|
||||
m = std::make_shared<MessageActivateTokens>(message, nodeIds);
|
||||
m = std::make_shared<MessageActivateTokens>(message, m_storageAccess->getActiveTokenIdsForTokenIds(nodeIds));
|
||||
if (nodeIds != m->tokenIds)
|
||||
{
|
||||
m->originalTokenIds = nodeIds;
|
||||
}
|
||||
m->isFromSystem = message->isFromSystem;
|
||||
return m;
|
||||
}
|
||||
@@ -130,9 +134,13 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
||||
}
|
||||
|
||||
std::vector<Id> tokenIds = m_storageAccess->getTokenIdsForMatches(matches);
|
||||
tokenIds = m_storageAccess->getActiveTokenIdsForTokenIds(tokenIds);
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> m = std::make_shared<MessageActivateTokens>(message, tokenIds);
|
||||
std::shared_ptr<MessageActivateTokens> m =
|
||||
std::make_shared<MessageActivateTokens>(message, m_storageAccess->getActiveTokenIdsForTokenIds(tokenIds));
|
||||
if (tokenIds != m->tokenIds)
|
||||
{
|
||||
m->originalTokenIds = tokenIds;
|
||||
}
|
||||
if (message->isFresh())
|
||||
{
|
||||
m->isFromSearch = true;
|
||||
|
||||
@@ -85,6 +85,23 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
size_t getActiveSubNodeCount() const
|
||||
{
|
||||
size_t count = 0;
|
||||
|
||||
if (active)
|
||||
{
|
||||
count += 1;
|
||||
}
|
||||
|
||||
for (const DummyNode& node : subNodes)
|
||||
{
|
||||
count += node.getActiveSubNodeCount();
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
bool hasConnectedSubNode() const
|
||||
{
|
||||
if (connected)
|
||||
|
||||
@@ -26,6 +26,8 @@ public:
|
||||
|
||||
virtual std::string getName() const;
|
||||
|
||||
virtual void clear() = 0;
|
||||
|
||||
virtual void setActiveTokenIds(const std::vector<Id>& activeTokenIds) = 0;
|
||||
virtual void setErrorMessages(const std::vector<std::string>& errorMessages) = 0;
|
||||
|
||||
|
||||
@@ -130,8 +130,6 @@ size_t GraphViewStyle::getFontSizeForNodeType(Node::NodeType type)
|
||||
{
|
||||
case Node::NODE_UNDEFINED:
|
||||
case Node::NODE_NAMESPACE:
|
||||
return s_fontSize - 2;
|
||||
|
||||
case Node::NODE_TYPE:
|
||||
case Node::NODE_STRUCT:
|
||||
case Node::NODE_CLASS:
|
||||
@@ -189,18 +187,13 @@ GraphViewStyle::NodeMargins GraphViewStyle::getMarginsForNodeType(Node::NodeType
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case Node::NODE_UNDEFINED:
|
||||
case Node::NODE_NAMESPACE:
|
||||
margins.left = margins.right = 15;
|
||||
margins.top = 10;
|
||||
margins.bottom = 15;
|
||||
break;
|
||||
|
||||
case Node::NODE_ENUM:
|
||||
case Node::NODE_TYPEDEF:
|
||||
case Node::NODE_FILE:
|
||||
case Node::NODE_MACRO:
|
||||
margins.iconWidth = s_fontSize + 11;
|
||||
case Node::NODE_UNDEFINED:
|
||||
case Node::NODE_NAMESPACE:
|
||||
case Node::NODE_TYPE:
|
||||
case Node::NODE_STRUCT:
|
||||
case Node::NODE_CLASS:
|
||||
@@ -306,12 +299,6 @@ GraphViewStyle::NodeStyle GraphViewStyle::getStyleForNodeType(
|
||||
style.borderDashed = true;
|
||||
|
||||
case Node::NODE_NAMESPACE:
|
||||
style.cornerRadius = 20;
|
||||
|
||||
style.textOffset.x = 15;
|
||||
style.textOffset.y = 6;
|
||||
break;
|
||||
|
||||
case Node::NODE_TYPE:
|
||||
case Node::NODE_STRUCT:
|
||||
case Node::NODE_CLASS:
|
||||
|
||||
Reference in New Issue
Block a user