diff --git a/src/app/qt/view/QtGraphView.cpp b/src/app/qt/view/QtGraphView.cpp index 8bfb8ab4..5bdf8294 100644 --- a/src/app/qt/view/QtGraphView.cpp +++ b/src/app/qt/view/QtGraphView.cpp @@ -63,6 +63,7 @@ void QtGraphView::initView() void QtGraphView::refreshView() { + resizeView(); } void QtGraphView::rebuildGraph( diff --git a/src/lib/Application.cpp b/src/lib/Application.cpp index 5a021ceb..2a5c7d08 100644 --- a/src/lib/Application.cpp +++ b/src/lib/Application.cpp @@ -13,8 +13,7 @@ std::shared_ptr Application::create(ViewFactory* viewFactory) { - std::shared_ptr settings = ApplicationSettings::getInstance(); - settings->load("data/ApplicationSettings.xml"); + loadSettings(); std::shared_ptr ptr(new Application()); @@ -26,7 +25,7 @@ std::shared_ptr Application::create(ViewFactory* viewFactory) ptr->m_componentManager->setup(ptr->m_mainView.get()); ptr->m_mainView->loadLayout(); - std::string startupProjectFilePath = settings->getStartupProjectFilePath(); + std::string startupProjectFilePath = ApplicationSettings::getInstance()->getStartupProjectFilePath(); if (startupProjectFilePath.size()) { MessageLoadProject(startupProjectFilePath).dispatch(); @@ -40,6 +39,11 @@ std::shared_ptr Application::create(ViewFactory* viewFactory) return ptr; } +void Application::loadSettings() +{ + ApplicationSettings::getInstance()->load("data/ApplicationSettings.xml"); +} + Application::Application() { TaskScheduler::getInstance()->startSchedulerLoopThreaded(); @@ -124,6 +128,7 @@ void Application::handleMessage(MessageLoadSource* message) void Application::handleMessage(MessageRefresh* message) { + loadSettings(); reloadProject(); } diff --git a/src/lib/Application.h b/src/lib/Application.h index 89a34c6b..7c493a8c 100644 --- a/src/lib/Application.h +++ b/src/lib/Application.h @@ -25,6 +25,7 @@ class Application { public: static std::shared_ptr create(ViewFactory* viewFactory); + static void loadSettings(); ~Application(); diff --git a/src/lib/component/ComponentManager.cpp b/src/lib/component/ComponentManager.cpp index a7baa2d6..bd798aaf 100644 --- a/src/lib/component/ComponentManager.cpp +++ b/src/lib/component/ComponentManager.cpp @@ -49,3 +49,11 @@ void ComponentManager::setup(ViewLayout* viewLayout) ComponentManager::ComponentManager() { } + +void ComponentManager::handleMessage(MessageRefresh* message) +{ + for (std::shared_ptr component : m_components) + { + component->getView()->refreshView(); + } +} diff --git a/src/lib/component/ComponentManager.h b/src/lib/component/ComponentManager.h index 49b2cb43..18b26be0 100644 --- a/src/lib/component/ComponentManager.h +++ b/src/lib/component/ComponentManager.h @@ -4,6 +4,9 @@ #include #include +#include "utility/messaging/MessageListener.h" +#include "utility/messaging/type/MessageRefresh.h" + #include "component/Component.h" #include "component/ComponentFactory.h" @@ -14,6 +17,7 @@ class ViewFactory; class ViewLayout; class ComponentManager + : public MessageListener { public: static std::shared_ptr create(ViewFactory* viewFactory, StorageAccess* graphAccess); @@ -26,6 +30,8 @@ private: ComponentManager(); ComponentManager(const ComponentManager&); + void handleMessage(MessageRefresh* message); + std::shared_ptr m_componentFactory; std::vector> m_compositeViews; diff --git a/src/lib/component/controller/CodeController.cpp b/src/lib/component/controller/CodeController.cpp index bb2dfe9d..fdbc555c 100644 --- a/src/lib/component/controller/CodeController.cpp +++ b/src/lib/component/controller/CodeController.cpp @@ -110,11 +110,6 @@ void CodeController::handleMessage(MessageFocusOut* message) getView()->defocusToken(); } -void CodeController::handleMessage(MessageRefresh* message) -{ - getView()->refreshView(); -} - void CodeController::handleMessage(MessageShowFile* message) { CodeView::CodeSnippetParams params; diff --git a/src/lib/component/controller/CodeController.h b/src/lib/component/controller/CodeController.h index afd87fa8..cea32e8a 100644 --- a/src/lib/component/controller/CodeController.h +++ b/src/lib/component/controller/CodeController.h @@ -11,7 +11,6 @@ #include "utility/messaging/type/MessageFinishedParsing.h" #include "utility/messaging/type/MessageFocusIn.h" #include "utility/messaging/type/MessageFocusOut.h" -#include "utility/messaging/type/MessageRefresh.h" #include "utility/messaging/type/MessageShowFile.h" #include "utility/types.h" @@ -31,7 +30,6 @@ class CodeController , public MessageListener , public MessageListener , public MessageListener - , public MessageListener , public MessageListener { public: @@ -47,7 +45,6 @@ private: virtual void handleMessage(MessageFinishedParsing* message); virtual void handleMessage(MessageFocusIn* message); virtual void handleMessage(MessageFocusOut* message); - virtual void handleMessage(MessageRefresh* message); virtual void handleMessage(MessageShowFile* message); CodeView* getView(); diff --git a/src/lib/component/controller/GraphLayouter.cpp b/src/lib/component/controller/GraphLayouter.cpp index 60eef8ec..3700030a 100644 --- a/src/lib/component/controller/GraphLayouter.cpp +++ b/src/lib/component/controller/GraphLayouter.cpp @@ -181,12 +181,13 @@ MatrixDynamicBase GraphLayouter::buildLaplacianMatrix(const std::vector, int> weightsMap; for(unsigned int i = 0; i < edges.size(); i++) { - DummyNode ownerNode = nodesMap[edges[i].ownerId]; - DummyNode targetNode = nodesMap[edges[i].targetId]; + const DummyEdge& edge = edges[i]; + DummyNode ownerNode = nodesMap[edge.ownerId]; + DummyNode targetNode = nodesMap[edge.targetId]; if(ownerNode.topLevelAncestorId != targetNode.topLevelAncestorId) { - int weightIncrement = 1; + int weightIncrement = edge.getWeight(); Id ownerId = ownerNode.topLevelAncestorId; Id targetId = targetNode.topLevelAncestorId; diff --git a/src/lib/component/controller/SearchController.cpp b/src/lib/component/controller/SearchController.cpp index 97ec03e8..de604a3e 100644 --- a/src/lib/component/controller/SearchController.cpp +++ b/src/lib/component/controller/SearchController.cpp @@ -40,11 +40,6 @@ void SearchController::handleMessage(MessageFinishedParsing* message) getView()->setText(""); } -void SearchController::handleMessage(MessageRefresh* message) -{ - getView()->refreshView(); -} - void SearchController::handleMessage(MessageSearch* message) { const std::string& query = message->query; diff --git a/src/lib/component/controller/SearchController.h b/src/lib/component/controller/SearchController.h index 3912d55e..0558ec72 100644 --- a/src/lib/component/controller/SearchController.h +++ b/src/lib/component/controller/SearchController.h @@ -8,7 +8,6 @@ #include "utility/messaging/type/MessageActivateTokens.h" #include "utility/messaging/type/MessageFind.h" #include "utility/messaging/type/MessageFinishedParsing.h" -#include "utility/messaging/type/MessageRefresh.h" #include "utility/messaging/type/MessageSearch.h" #include "utility/messaging/type/MessageSearchAutocomplete.h" @@ -20,7 +19,6 @@ class SearchController , public MessageListener , public MessageListener , public MessageListener - , public MessageListener , public MessageListener , public MessageListener { @@ -32,7 +30,6 @@ private: virtual void handleMessage(MessageActivateTokens* message); virtual void handleMessage(MessageFind* message); virtual void handleMessage(MessageFinishedParsing* message); - virtual void handleMessage(MessageRefresh* message); virtual void handleMessage(MessageSearch* message); virtual void handleMessage(MessageSearchAutocomplete* message); diff --git a/src/lib/component/controller/helper/DummyEdge.h b/src/lib/component/controller/helper/DummyEdge.h index c9973e77..d64eecd0 100644 --- a/src/lib/component/controller/helper/DummyEdge.h +++ b/src/lib/component/controller/helper/DummyEdge.h @@ -3,6 +3,9 @@ #include "utility/types.h" +#include "data/graph/Edge.h" +#include "data/graph/token_component/TokenComponentAggregation.h" + class Edge; // temporary data structure for (visual) graph creation process @@ -17,6 +20,16 @@ struct DummyEdge { } + int getWeight() const + { + if (data->isType(Edge::EDGE_AGGREGATION)) + { + return data->getComponent()->getAggregationCount(); + } + + return 1; + } + Id ownerId; Id targetId; diff --git a/src/lib/component/view/CodeView.cpp b/src/lib/component/view/CodeView.cpp index 8eacea55..de3266de 100644 --- a/src/lib/component/view/CodeView.cpp +++ b/src/lib/component/view/CodeView.cpp @@ -15,11 +15,6 @@ CodeView::CodeSnippetParams::CodeSnippetParams() bool CodeView::CodeSnippetParams::sort(const CodeSnippetParams& a, const CodeSnippetParams& b) { - if(a.isActive && b.isActive) - { - return false; - } - // sort active snippet first if (a.isActive && !b.isActive) { @@ -40,6 +35,16 @@ bool CodeView::CodeSnippetParams::sort(const CodeSnippetParams& a, const CodeSni return false; } + // sort whole files + if (a.locationFile->isWholeCopy && !b.locationFile->isWholeCopy) + { + return true; + } + else if (!a.locationFile->isWholeCopy && b.locationFile->isWholeCopy) + { + return false; + } + const FilePath& aFilePath = a.locationFile->getFilePath(); const FilePath& bFilePath = b.locationFile->getFilePath(); diff --git a/src/lib/data/Storage.cpp b/src/lib/data/Storage.cpp index 83a5130f..2533124d 100644 --- a/src/lib/data/Storage.cpp +++ b/src/lib/data/Storage.cpp @@ -212,7 +212,7 @@ Id Storage::onClassParsed( ){ log("class", nameHierarchy.getFullName(), location); - Node* node = addNodeHierarchy(Node::NODE_CLASS, nameHierarchy); + Node* node = addNodeHierarchy(scopeLocation.isValid() ? Node::NODE_CLASS : Node::NODE_UNDEFINED_TYPE, nameHierarchy); addAccess(node, access); addTokenLocation(node, location); addTokenLocation(node, scopeLocation, true); @@ -226,7 +226,7 @@ Id Storage::onStructParsed( ){ log("struct", nameHierarchy.getFullName(), location); - Node* node = addNodeHierarchy(Node::NODE_STRUCT, nameHierarchy); + Node* node = addNodeHierarchy(scopeLocation.isValid() ? Node::NODE_STRUCT : Node::NODE_UNDEFINED_TYPE, nameHierarchy); addAccess(node, access); addTokenLocation(node, location); addTokenLocation(node, scopeLocation, true); @@ -818,28 +818,6 @@ std::shared_ptr Storage::getGraphForActiveTokenIds(const std::vector& Edge* edge = dynamic_cast(token); graph->addEdgeAndAllChildrenAsPlainCopy(edge); } - - for (const std::pair> nodePair : graph->getNodes()) - { - Node* node = m_graph.getNodeById(nodePair.first); - - node->forEachEdge( - [graph](Edge* edge) - { - if (edge->getType() != Edge::EdgeType::EDGE_MEMBER) - { - Node* from = edge->getFrom(); - Node* to = edge->getTo(); - - if (graph->findNode([from](Node* node){ return from->getId() == node->getId(); }) != NULL && - graph->findNode([to](Node* node){ return to->getId() == node->getId(); }) != NULL) - { - graph->addEdge(edge); - } - } - } - ); - } } if (ApplicationSettings::getInstance()->filterUndefinedNodesFromGraph())