ui: Group graph nodes by file or namespace (issues #171, #439, #522)

* added buttons to enable grouping by file or namespace
* last used group settings saved to ApplicationSettings
* made groups hoverable/clickable on label only
* improved node hatching and override edge colors
* group overview lists

fortune cookie message = Seen with the eyes of love, everything gets a new meaning.
This commit is contained in:
Eberhard Graether
2018-04-09 00:09:22 +02:00
parent 20106d5ce1
commit 5303187bea
40 changed files with 956 additions and 197 deletions
@@ -109,7 +109,9 @@ private:
void addCharacterIndex();
bool hasCharacterIndex() const;
void groupTrailNodes(NodeType::GroupType groupType);
void groupNodesByParents(GroupType groupType);
DummyNode* groupAllNodes(GroupType groupType, Id groupNodeId);
void groupTrailNodes(GroupType groupType);
void layoutNesting();
void layoutNestingRecursive(DummyNode* node) const;
@@ -126,7 +128,8 @@ private:
DummyEdge* getDummyGraphEdgeById(Id tokenId) const;
void relayoutGraph(
MessageBase* message, bool centerActiveNode, bool animatedTransition, bool scrollToTop, bool withCharacterIndex);
MessageBase* message, bool centerActiveNode, bool animatedTransition, bool scrollToTop, bool withCharacterIndex,
const std::wstring& groupName);
void buildGraph(MessageBase* message, bool centerActiveNode, bool animatedTransition, bool scrollToTop);
void forEachDummyNodeRecursive(std::function<void(DummyNode*)> func);